Patchwork python: Use fixed path for sys.executable

login
register
mail settings
Submitter Jonathan Liu
Date Aug. 12, 2012, 12:06 p.m.
Message ID <1344773165-5165-1-git-send-email-net147@gmail.com>
Download mbox | patch
Permalink /patch/176780/
State Rejected
Headers show

Comments

Jonathan Liu - Aug. 12, 2012, 12:06 p.m.
The path to the Python interpreter is returned by sys.executable.
However, setuptools uses sys.executable to generate the shebang
interpreter directive used for entry point scripts that will run
on the target system. In this case, it will return the path of the
host Python interpreter when it should be the path of the Python
interpreter on the target.

To fix this, just return a fixed path of /usr/bin/python for
sys.executable.

Signed-off-by: Jonathan Liu <net147@gmail.com>
---
 package/python/python-2.7-114-sys-executable.patch | 32 ++++++++++++++++++++++
 1 file changed, 32 insertions(+)
 create mode 100644 package/python/python-2.7-114-sys-executable.patch
Thomas Petazzoni - Aug. 12, 2012, 4:18 p.m.
Le Sun, 12 Aug 2012 22:06:05 +1000,
Jonathan Liu <net147@gmail.com> a écrit :

> +Index: Python-2.7.2/Modules/getpath.c
> +===================================================================
> +--- Python-2.7.2.orig/Modules/getpath.c
> ++++ Python-2.7.2/Modules/getpath.c
> +@@ -686,9 +686,7 @@ Py_GetExecPrefix(void)
> + char *
> + Py_GetProgramFullPath(void)
> + {
> +-    if (!module_search_path)
> +-        calculate_path();
> +-    return progpath;
> ++    return "/usr/bin/python";
> + }

The 'python' package builds both a host variant and a target variant.
While this solves the problem for the target variant, it may now create
a problem for the host variant, no? Maybe in practice there is no
problem, I don't know.

Thomas

Patch

diff --git a/package/python/python-2.7-114-sys-executable.patch b/package/python/python-2.7-114-sys-executable.patch
new file mode 100644
index 0000000..1a6b73c
--- /dev/null
+++ b/package/python/python-2.7-114-sys-executable.patch
@@ -0,0 +1,32 @@ 
+Use fixed path for sys.executable
+
+The path to the Python interpreter is returned by sys.executable.
+However, setuptools uses sys.executable to generate the shebang
+interpreter directive used for entry point scripts that will run
+on the target system. In this case, it will return the path of the
+host Python interpreter when it should be the path of the Python
+interpreter on the target.
+
+To fix this, just return a fixed path of /usr/bin/python for
+sys.executable.
+
+Signed-off-by: Jonathan Liu <net147@gmail.com>
+---
+ Modules/getpath.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+Index: Python-2.7.2/Modules/getpath.c
+===================================================================
+--- Python-2.7.2.orig/Modules/getpath.c
++++ Python-2.7.2/Modules/getpath.c
+@@ -686,9 +686,7 @@ Py_GetExecPrefix(void)
+ char *
+ Py_GetProgramFullPath(void)
+ {
+-    if (!module_search_path)
+-        calculate_path();
+-    return progpath;
++    return "/usr/bin/python";
+ }
+ 
+