python: Use fixed path for sys.executable

Submitted by Jonathan Liu on Aug. 12, 2012, 12:06 p.m.

Details

Message ID 1344773165-5165-1-git-send-email-net147@gmail.com
State Rejected
Headers show

Commit Message

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

Comments

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 hide | download patch | download mbox

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";
+ }
+ 
+