From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 17 09:11:34 2018 Received: (at submit) by debbugs.gnu.org; 17 Dec 2018 14:11:34 +0000 Received: from localhost ([127.0.0.1]:50987 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gYtcM-0006gq-6w for submit@debbugs.gnu.org; Mon, 17 Dec 2018 09:11:34 -0500 Received: from eggs.gnu.org ([208.118.235.92]:58337) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gYtcK-0006gc-78 for submit@debbugs.gnu.org; Mon, 17 Dec 2018 09:11:32 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gYtc8-00028r-Oj for submit@debbugs.gnu.org; Mon, 17 Dec 2018 09:11:26 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: * X-Spam-Status: No, score=1.5 required=5.0 tests=BAYES_40,RCVD_IN_SORBS_WEB autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:58309) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gYtc3-00023v-JG for submit@debbugs.gnu.org; Mon, 17 Dec 2018 09:11:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39643) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gYtbx-0003F0-Cu for guix-patches@gnu.org; Mon, 17 Dec 2018 09:11:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gYtbs-0001tw-7e for guix-patches@gnu.org; Mon, 17 Dec 2018 09:11:09 -0500 Received: from vultr.systemreboot.net ([45.77.148.100]:50372) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gYtbr-0001oy-GV for guix-patches@gnu.org; Mon, 17 Dec 2018 09:11:04 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=systemreboot.net; s=default; h=Content-Type:MIME-Version:Message-ID:Date: Subject:To:From:Sender:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=HK+G99OXO3dMmf/2chOKqO1+IV2cj52bx4L4KXCPu0Q=; b=FoP+/x3fc+fxLrJJV9fUVzbvsJ yMUNjkI6EG0HS6GLEv3q4S6gljYt1WZzF/9lbMm+O62JMKLZP3fedr8ojdJtexchxDzoGr3OOJQA8 5I3c3/vuq0BgAJlvjrHKH1bMtKFm5+6eIPFrT5U7iwiai+2b8YdiSHxy5j17Y5KM0V74=; Received: from [103.5.134.173] (helo=steel) by systemreboot.net with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.91) (envelope-from ) id 1gYtbm-0004rf-G1 for guix-patches@gnu.org; Mon, 17 Dec 2018 19:40:59 +0530 From: Arun Isaac To: guix-patches@gnu.org Subject: ansible: Work around issues with Guix wrapper scripts Date: Mon, 17 Dec 2018 19:40:51 +0530 Message-ID: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -2.6 (--) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.6 (---) --=-=-= Content-Type: text/plain This patch works around ansible's issues with Guix wrapper scripts. The earlier system using ansible-wrap-program-hack.patch was not working as expected. --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-gnu-ansible-Work-around-issues-with-Guix-wrapper-scr.patch From 2a8d3b46aac378b077fb9ef296909c840fa9c42a Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Mon, 17 Dec 2018 19:32:05 +0530 Subject: [PATCH] gnu: ansible: Work around issues with Guix wrapper scripts. * gnu/packages/admin.scm (ansible)[source]: Remove ansible-wrap-program-hack.patch from patches. [arguments]: Add hide-wrapping and fix-symlinks phases. * gnu/packages/patches/ansible-wrap-program-hack.patch: Delete file. * gnu/local.mk (dist_patch_DATA): Unregister it. --- gnu/local.mk | 1 - gnu/packages/admin.scm | 38 ++++++++++++++++++- .../patches/ansible-wrap-program-hack.patch | 22 ----------- 3 files changed, 36 insertions(+), 25 deletions(-) delete mode 100644 gnu/packages/patches/ansible-wrap-program-hack.patch diff --git a/gnu/local.mk b/gnu/local.mk index 0e2316a69..0d60e9b75 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -579,7 +579,6 @@ dist_patch_DATA = \ %D%/packages/patches/aegisub-boost68.patch \ %D%/packages/patches/agg-am_c_prototype.patch \ %D%/packages/patches/amule-crypto-6.patch \ - %D%/packages/patches/ansible-wrap-program-hack.patch \ %D%/packages/patches/antiword-CVE-2014-8123.patch \ %D%/packages/patches/antlr3-3_1-fix-java8-compilation.patch \ %D%/packages/patches/antlr3-3_3-fix-java8-compilation.patch \ diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 3e41b456e..ec8da6dba 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -1608,8 +1608,7 @@ of supported upstream metrics systems simultaneously.") (uri (pypi-uri "ansible" version)) (sha256 (base32 - "1fsif2jmkrrgiawsd8r6sxrqvh01fvrmdhas0p540a6i9fby3yda")) - (patches (search-patches "ansible-wrap-program-hack.patch")))) + "1fsif2jmkrrgiawsd8r6sxrqvh01fvrmdhas0p540a6i9fby3yda")))) (build-system python-build-system) (native-inputs `(("python-bcrypt" ,python-bcrypt) @@ -1626,6 +1625,41 @@ of supported upstream metrics systems simultaneously.") ("python-jinja2" ,python-jinja2) ("python-pyyaml" ,python-pyyaml) ("python-paramiko" ,python-paramiko))) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; Several ansible commands (ansible-config, ansible-console, etc.) + ;; are just symlinks to a single ansible executable. The ansible + ;; executable behaves differently based on the value of + ;; sys.argv[0]. This does not work well with our wrap phase, and + ;; therefore the following two phases are required as a workaround. + (add-after 'unpack 'hide-wrapping + (lambda _ + ;; Overwrite sys.argv[0] to hide the wrapper script from it. + (substitute* "bin/ansible" + (("import traceback" all) + (string-append all " +import re +sys.argv[0] = re.sub(r'\\.([^/]*)-real$', r'\\1', sys.argv[0]) +"))) + #t)) + (add-after 'wrap 'fix-symlinks + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (for-each + (lambda (subprogram) + ;; The symlinks point to the ansible wrapper script. Make + ;; them point to the real executable (.ansible-real). + (delete-file (string-append out "/bin/.ansible-" subprogram "-real")) + (symlink (string-append out "/bin/.ansible-real") + (string-append out "/bin/.ansible-" subprogram "-real")) + ;; The wrapper scripts of the symlinks invoke the ansible + ;; wrapper script. Fix them to invoke the correct executable. + (substitute* (string-append out "/bin/ansible-" subprogram) + (("/bin/ansible") (string-append "/bin/.ansible-" subprogram "-real")))) + (list "config" "console" "doc" "galaxy" + "inventory" "playbook" "pull" "vault"))) + #t))))) (home-page "https://www.ansible.com/") (synopsis "Radically simple IT automation") (description "Ansible is a radically simple IT automation system. It diff --git a/gnu/packages/patches/ansible-wrap-program-hack.patch b/gnu/packages/patches/ansible-wrap-program-hack.patch deleted file mode 100644 index c2e102839..000000000 --- a/gnu/packages/patches/ansible-wrap-program-hack.patch +++ /dev/null @@ -1,22 +0,0 @@ -Ansible changes its behaviour depending on the name of the script that it is -called as. Make it deal with guix' .real wrapper scripts. - -FIXME: Remove once wrapping ansible works properly. -See http://lists.gnu.org/archive/html/bug-guix/2017-05/msg00015.html. ---- ansible-2.3.0.0/bin/ansible 2017-04-12 16:08:05.000000000 +0200 -+++ ansible-2.3.0.0-fixed/bin/ansible 2017-05-21 20:11:18.720872385 +0200 -@@ -75,7 +75,13 @@ - # sometimes add that - target = target[:-1] - -- if len(target) > 1: -+ if target[-1] == "real" and target[0].startswith('.'): -+ target = target[:-1] -+ target[0] = target[0][1:] -+ if len(target) > 1 and target[1] != "real" : -+ sub = target[1] -+ myclass = "%sCLI" % sub.capitalize() -+ elif len(target) > 2 and target[2] == "real" : - sub = target[1] - myclass = "%sCLI" % sub.capitalize() - elif target[0] == 'ansible': -- 2.19.2 --=-=-=--