| From 808577f8464f542076840d0d93fe168a5f79442c Mon Sep 17 00:00:00 2001 |
| From: Silcet <camorga1@gmail.com> |
| Date: Tue, 27 Apr 2021 05:40:03 +0000 |
| Subject: [PATCH] setup: add an option to specify iptables location |
| |
| When cross-compiling it isn't certain that the location of iptables on the |
| target will be the same as on the host. It also doesn't make sense the |
| test the version of the host during setup. We provide an option to |
| specify an alternate iptables directory. This is assumed to be a |
| cross-compile environment and therefore no attempt is made to verify the |
| version of iptables to be used. |
| |
| Upstream-Status: Pending |
| |
| 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. |
| |
| Signed-off-by: Silcet <camorga1@gmail.com> |
| --- |
| setup.py | 65 ++++++++++++++++++++++++++++++++------------------------ |
| 1 file changed, 37 insertions(+), 28 deletions(-) |
| |
| diff --git a/setup.py b/setup.py |
| index 09204d3..2343bc9 100644 |
| --- a/setup.py |
| +++ b/setup.py |
| @@ -246,41 +246,50 @@ shutil.copytree('src', 'staging') |
| os.unlink(os.path.join('staging', 'ufw-init')) |
| os.unlink(os.path.join('staging', 'ufw-init-functions')) |
| |
| +iptables_set = 0 |
| iptables_exe = '' |
| iptables_dir = '' |
| |
| -for e in ['iptables']: |
| - for dir in ['/sbin', '/bin', '/usr/sbin', '/usr/bin', '/usr/local/sbin', \ |
| - '/usr/local/bin']: |
| - if e == "iptables": |
| - if os.path.exists(os.path.join(dir, e)): |
| - iptables_dir = dir |
| - iptables_exe = os.path.join(iptables_dir, "iptables") |
| - print("Found '%s'" % iptables_exe) |
| - else: |
| - continue |
| - |
| - if iptables_exe != "": |
| - break |
| - |
| +if "--iptables-dir" in sys.argv: |
| + iptables_dir = sys.argv[sys.argv.index("--iptables-dir") + 1] |
| + iptables_exe = os.path.join(iptables_dir, "iptables") |
| + iptables_set = 1 |
| + print("INFO: iptables manually set: '%s'" % (iptables_exe)) |
| + sys.argv.remove(iptables_dir) |
| + sys.argv.remove("--iptables-dir") |
| + |
| +if not iptables_set: |
| + for e in ['iptables']: |
| + for dir in ['/sbin', '/bin', '/usr/sbin', '/usr/bin', '/usr/local/sbin', \ |
| + '/usr/local/bin']: |
| + if e == "iptables": |
| + if os.path.exists(os.path.join(dir, e)): |
| + iptables_dir = dir |
| + iptables_exe = os.path.join(iptables_dir, "iptables") |
| + print("Found '%s'" % iptables_exe) |
| + else: |
| + continue |
| |
| -if iptables_exe == '': |
| - print("ERROR: could not find required binary 'iptables'", file=sys.stderr) |
| - sys.exit(1) |
| + if iptables_exe != "": |
| + break |
| |
| -for e in ['ip6tables', 'iptables-restore', 'ip6tables-restore']: |
| - if not os.path.exists(os.path.join(iptables_dir, e)): |
| - print("ERROR: could not find required binary '%s'" % (e), file=sys.stderr) |
| + if iptables_exe == '': |
| + print("ERROR: could not find required binary 'iptables'", file=sys.stderr) |
| sys.exit(1) |
| |
| -(rc, out) = cmd([iptables_exe, '-V']) |
| -if rc != 0: |
| - raise OSError(errno.ENOENT, "Could not find version for '%s'" % \ |
| - (iptables_exe)) |
| -version = re.sub('^v', '', re.split('\s', str(out))[1]) |
| -print("Found '%s' version '%s'" % (iptables_exe, version)) |
| -if version < "1.4": |
| - print("WARN: version '%s' has limited IPv6 support. See README for details." % (version), file=sys.stderr) |
| + for e in ['ip6tables', 'iptables-restore', 'ip6tables-restore']: |
| + if not os.path.exists(os.path.join(iptables_dir, e)): |
| + print("ERROR: could not find required binary '%s'" % (e), file=sys.stderr) |
| + sys.exit(1) |
| + |
| + (rc, out) = cmd([iptables_exe, '-V']) |
| + if rc != 0: |
| + raise OSError(errno.ENOENT, "Could not find version for '%s'" % \ |
| + (iptables_exe)) |
| + version = re.sub('^v', '', re.split('\s', str(out))[1]) |
| + print("Found '%s' version '%s'" % (iptables_exe, version)) |
| + if version < "1.4": |
| + print("WARN: version '%s' has limited IPv6 support. See README for details." % (version), file=sys.stderr) |
| |
| setup (name='ufw', |
| version=ufw_version, |