| From 42170d379eddc12bd2d1fe84dc268882d8eb4d64 Mon Sep 17 00:00:00 2001 |
| From: Silcet <camorga1@gmail.com> |
| Date: Mon, 3 May 2021 08:59:28 +0000 |
| Subject: [PATCH] setup: only make one reference to env |
| |
| If sys.executable happens to be '/usr/bin/env python' or something |
| similar, the setup script will result in 'ufw' getting /usr/bin/env |
| repeated on the top line. This causes an error at runtime. Perform a |
| quick sanity check on sys.executable before doing the substitution. |
| |
| While we're at it, change the default value of 'exe' to the one we either |
| detected or specified on the build line. |
| |
| Upstream-Status: Inappropriate [ embedded specific ] |
| |
| Signed-off-by: Joe MacDonald <joe_macdonald@mentor.com> |
| |
| The patch was imported from the OpenEmbedded git server |
| (git://git.openembedded.org/openembedded) as of commit id |
| 2cc1bd9dd060f5002c2fde7aacba86fe230c12af. |
| |
| A previous change had modified the way the python shebang was updated to |
| follow the same version as the one used to call setup.py. However, it |
| used a regex that was not matching anymore. To fix this, the regex |
| condition is removed so the shebang line is substituted with the sys.executable |
| value. Later in the installation distutils finds the string with the path |
| of sys.executable and replaces it with "#! /usr/bin/env python3". |
| |
| Signed-off-by: Silcet <camorga1@gmail.com> |
| --- |
| setup.py | 12 ++++++++++-- |
| 1 file changed, 10 insertions(+), 2 deletions(-) |
| |
| diff --git a/setup.py b/setup.py |
| index 2343bc9..f8a638b 100644 |
| --- a/setup.py |
| +++ b/setup.py |
| @@ -64,7 +64,7 @@ class Install(_install, object): |
| real_sharedir = os.path.join(real_prefix, 'share', 'ufw') |
| |
| # Update the modules' paths |
| - for fn in [ 'common.py' ]: |
| + for fn in [ 'common.py', 'util.py' ]: |
| # 'staging' is used with just 'install' but build_lib is used when |
| # using 'build'. We could probably override 'def build()' but this |
| # at least works |
| @@ -97,6 +97,12 @@ class Install(_install, object): |
| "-i", |
| "s%#SHARE_DIR#%" + real_sharedir + "%g", |
| f]) |
| + |
| + subprocess.call(["sed", |
| + "-i.jjm", |
| + "s%/sbin/iptables%" + iptables_exe + "%g", |
| + f]) |
| + |
| |
| if fn == 'common.py' and 'UFW_SKIP_CHECKS' in os.environ and \ |
| os.environ['UFW_SKIP_CHECKS'] != '': |
| @@ -123,10 +129,12 @@ class Install(_install, object): |
| self.mkpath(os.path.dirname(f)) |
| |
| # update the interpreter to that of the one the user specified for setup |
| + # Distutils searches for the string of sys.executable and replaces it |
| + # with the "#! /usr/bin/env pythonX" shebang on a later step |
| print("Updating staging/ufw to use %s" % (sys.executable)) |
| subprocess.call(["sed", |
| "-i", |
| - "1s%^#.*python.*%#! /usr/bin/env " + sys.executable + "%g", |
| + "1s%/.*python.*%" + sys.executable + "%g", |
| 'staging/ufw']) |
| self.copy_file('staging/ufw', script) |
| self.copy_file('doc/ufw.8', manpage) |