Patchwork gnu: wrap-python3: Use a bash wrapper for 'python3-config'. (was: python-pycairo in core-updates)

login
register
mail settings
Submitter =?utf-8?B?5a6L5paH5q2m?=
Date Oct. 16, 2016, 3:21 a.m.
Message ID <87k2d9ou6u.fsf_-_@member.fsf.org>
Download mbox | patch
Permalink /patch/16544/
State New
Headers show

Comments

=?utf-8?B?5a6L5paH5q2m?= - Oct. 16, 2016, 3:21 a.m.
The revert isn't in 'core-updates', python-pycairo is broken again for
the same reason.

ludo@gnu.org (Ludovic Courtès) writes:

> Hi,
>
> iyzsong@member.fsf.org (宋文武) skribis:
>
>> Hi, python-wrapper has a broken `python3-config', which
>> output cflags to the wrapper instead of the origin python3,
>> leading the build failure of python-pycairo.
>
> So it appears to resolve the CFLAGS it returns relative to its own
> argv[0] or /proc/self/exe, right?
>
> Eventually we should fix this and reinstate this commit, but reverting
> it was the right thing in the short term.
>

Here is a fix:
Leo Famulari - Oct. 16, 2016, 6:14 p.m.
On Sun, Oct 16, 2016 at 11:21:13AM +0800, 宋文武 wrote:
> >> Hi, python-wrapper has a broken `python3-config', which
> >> output cflags to the wrapper instead of the origin python3,
> >> leading the build failure of python-pycairo.
> >
> > So it appears to resolve the CFLAGS it returns relative to its own
> > argv[0] or /proc/self/exe, right?
> >
> > Eventually we should fix this and reinstate this commit, but reverting
> > it was the right thing in the short term.
> 
> Here is a fix: 
>
> From b7badcf695fcb245224ffdf51cdb016b45f9a2a5 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= <iyzsong@gmail.com>
> Date: Sun, 16 Oct 2016 10:44:29 +0800
> Subject: [PATCH] gnu: wrap-python3:  Use a bash wrapper for 'python3-config'.
> 
> See <http://lists.gnu.org/archive/html/guix-devel/2016-07/msg00008.html>
> for details.
> 
> * gnu/packages/python.scm (wrap-python3)[arguments]: Use a bash wrapper
> instead of a symlink for python3-config.

I can confirm that python-pycairo builds with this patch applied to
core-updates.
=?utf-8?B?5a6L5paH5q2m?= - Oct. 17, 2016, 10:58 a.m.
Leo Famulari <leo@famulari.name> writes:

> On Sun, Oct 16, 2016 at 11:21:13AM +0800, 宋文武 wrote:
>> >> Hi, python-wrapper has a broken `python3-config', which
>> >> output cflags to the wrapper instead of the origin python3,
>> >> leading the build failure of python-pycairo.
>> >
>> > So it appears to resolve the CFLAGS it returns relative to its own
>> > argv[0] or /proc/self/exe, right?
>> >
>> > Eventually we should fix this and reinstate this commit, but reverting
>> > it was the right thing in the short term.
>> 
>> Here is a fix: 
>>
>> From b7badcf695fcb245224ffdf51cdb016b45f9a2a5 Mon Sep 17 00:00:00 2001
>> From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= <iyzsong@gmail.com>
>> Date: Sun, 16 Oct 2016 10:44:29 +0800
>> Subject: [PATCH] gnu: wrap-python3:  Use a bash wrapper for 'python3-config'.
>> 
>> See <http://lists.gnu.org/archive/html/guix-devel/2016-07/msg00008.html>
>> for details.
>> 
>> * gnu/packages/python.scm (wrap-python3)[arguments]: Use a bash wrapper
>> instead of a symlink for python3-config.
>
> I can confirm that python-pycairo builds with this patch applied to
> core-updates.

Pushed, thanks for the confirming :-)

Patch

From b7badcf695fcb245224ffdf51cdb016b45f9a2a5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= <iyzsong@gmail.com>
Date: Sun, 16 Oct 2016 10:44:29 +0800
Subject: [PATCH] gnu: wrap-python3:  Use a bash wrapper for 'python3-config'.

See <http://lists.gnu.org/archive/html/guix-devel/2016-07/msg00008.html>
for details.

* gnu/packages/python.scm (wrap-python3)[arguments]: Use a bash wrapper
instead of a symlink for python3-config.
---
 gnu/packages/python.scm | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 02ec731..9aa704b 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -52,6 +52,7 @@ 
   #:use-module (gnu packages adns)
   #:use-module (gnu packages attr)
   #:use-module (gnu packages backup)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages django)
@@ -379,6 +380,7 @@  data types.")
     (source #f)
     (build-system trivial-build-system)
     (outputs '("out"))
+    (inputs `(("bash" ,bash)))
     (propagated-inputs `(("python" ,python)))
     (arguments
      `(#:modules ((guix build utils))
@@ -392,8 +394,20 @@  data types.")
                   (lambda (old new)
                     (symlink (string-append python old)
                              (string-append bin "/" new)))
-                  `("python3" ,"pydoc3" ,"idle3" ,"pip3" ,"python3-config")
-                  `("python"  ,"pydoc"  ,"idle"  ,"pip"  ,"python-config"))))))
+                  `("python3" ,"pydoc3" ,"idle3" ,"pip3")
+                  `("python"  ,"pydoc"  ,"idle"  ,"pip"))
+                ;; python-config outputs search paths based upon its location,
+                ;; use a bash wrapper to avoid changing its behavior.
+                (let ((bash (string-append (assoc-ref %build-inputs "bash")
+                                           "/bin/bash"))
+                      (old  (string-append python "python3-config"))
+                      (new  (string-append bin "/python-config")))
+                  (with-output-to-file new
+                    (lambda ()
+                      (format #t "#!~a~%" bash)
+                      (format #t "exec \"~a\" \"$@\"~%" old)
+                      (chmod new #o755)
+                      #t)))))))
     (synopsis "Wrapper for the Python 3 commands")
     (description
      "This package provides wrappers for the commands of Python@tie{}3.x such
-- 
2.10.0