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,
|