public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: net-analyzer/nmap/, net-analyzer/nmap/files/
Date: Fri,  9 Dec 2022 16:50:26 +0000 (UTC)	[thread overview]
Message-ID: <1670604520.350458ecda5f78ef834191b50029b1e48548f188.sam@gentoo> (raw)

commit:     350458ecda5f78ef834191b50029b1e48548f188
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Dec  9 16:04:43 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Dec  9 16:48:40 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=350458ec

net-analyzer/nmap: restore ndiff, zenmap (now Python 3) to live

Bug: https://bugs.gentoo.org/702288
Signed-off-by: Sam James <sam <AT> gentoo.org>

 net-analyzer/nmap/files/nmap-9999-python3.patch | 103 ++++++++++++++++++++++++
 net-analyzer/nmap/metadata.xml                  |   2 +
 net-analyzer/nmap/nmap-9999.ebuild              |  74 ++++++++++++-----
 3 files changed, 157 insertions(+), 22 deletions(-)

diff --git a/net-analyzer/nmap/files/nmap-9999-python3.patch b/net-analyzer/nmap/files/nmap-9999-python3.patch
new file mode 100644
index 000000000000..3d740d759b3c
--- /dev/null
+++ b/net-analyzer/nmap/files/nmap-9999-python3.patch
@@ -0,0 +1,103 @@
+https://github.com/nmap/nmap/pull/2580
+
+From 14f8e230a61748b1cde86d13a2cf2353d7ad1fa7 Mon Sep 17 00:00:00 2001
+From: Sam James <sam@gentoo.org>
+Date: Fri, 9 Dec 2022 15:58:35 +0000
+Subject: [PATCH] zenmap: further Python 3 compatibility fixes
+
+Without this, we get:
+```
+Traceback (most recent call last):
+  File "/var/tmp/portage/net-analyzer/nmap-9999/work/nmap-9999/zenmap/setup.py", line 584, in <module>
+    setup(**setup_args)
+  File "/usr/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 185, in setup
+    return run_commands(dist)
+  File "/usr/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 201, in run_commands
+    dist.run_commands()
+  File "/usr/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands
+    self.run_command(cmd)
+  File "/usr/lib/python3.10/site-packages/setuptools/dist.py", line 1208, in run_command
+    super().run_command(command)
+  File "/usr/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
+    cmd_obj.run()
+  File "/var/tmp/portage/net-analyzer/nmap-9999/work/nmap-9999/zenmap/setup.py", line 188, in run
+    self.write_installed_files()
+  File "/var/tmp/portage/net-analyzer/nmap-9999/work/nmap-9999/zenmap/setup.py", line 419, in write_installed_files
+    print >> f, output
+TypeError: unsupported operand type(s) for >>: 'builtin_function_or_method' and '_io.TextIOWrapper'. Did you mean "print(<message>, file=<output_stream>)"?
+make: *** [Makefile:372: install-zenmap] Error 1
+```
+
+This is because Python 3 doesn't support Python 2-style print without
+parentheses, or specifying the output file in that manner.
+
+Signed-off-by: Sam James <sam@gentoo.org>
+--- a/zenmap/setup.py
++++ b/zenmap/setup.py
+@@ -215,13 +215,13 @@ def create_uninstaller(self):
+ #!/usr/bin/env python3
+ import errno, os, os.path, sys
+ 
+-print 'Uninstall %(name)s %(version)s'
++print('Uninstall %(name)s %(version)s')
+ 
+ answer = raw_input('Are you sure that you want to uninstall '
+     '%(name)s %(version)s? (yes/no) ')
+ 
+ if answer != 'yes' and answer != 'y':
+-    print 'Not uninstalling.'
++    print('Not uninstalling.')
+     sys.exit(0)
+ 
+ """ % {'name': APP_DISPLAY_NAME, 'version': VERSION}
+@@ -237,8 +237,8 @@ def create_uninstaller(self):
+                     # This should never happen (everything gets installed
+                     # inside the root), but if it does, be safe and don't
+                     # delete anything.
+-                    uninstaller += ("print '%s was not installed inside "
+-                        "the root %s; skipping.'\n" % (output, self.root))
++                    uninstaller += ("print('%s was not installed inside "
++                        "the root %s; skipping.')\n" % (output, self.root))
+                     continue
+                 output = path_strip_prefix(output, self.root)
+                 assert os.path.isabs(output)
+@@ -262,24 +262,24 @@ def create_uninstaller(self):
+         dirs.append(path)
+ # Delete the files.
+ for file in files:
+-    print "Removing '%s'." % file
++    print("Removing '%s'." % file)
+     try:
+         os.remove(file)
+     except OSError as e:
+-        print >> sys.stderr, '  Error: %s.' % str(e)
++        print('  Error: %s.' % str(e), file=sys.stderr)
+ # Delete the directories. First reverse-sort the normalized paths by
+ # length so that child directories are deleted before their parents.
+ dirs = [os.path.normpath(dir) for dir in dirs]
+ dirs.sort(key = len, reverse = True)
+ for dir in dirs:
+     try:
+-        print "Removing the directory '%s'." % dir
++        print("Removing the directory '%s'." % dir)
+         os.rmdir(dir)
+     except OSError as e:
+         if e.errno == errno.ENOTEMPTY:
+-            print "Directory '%s' not empty; not removing." % dir
++            print("Directory '%s' not empty; not removing." % dir)
+         else:
+-            print >> sys.stderr, str(e)
++            print(str(e), file=sys.stderr)
+ """
+ 
+         uninstaller_file = open(uninstaller_filename, 'w')
+@@ -419,7 +419,7 @@ def write_installed_files(self):
+         with open(INSTALLED_FILES_NAME, "w") as f:
+             for output in self.get_installed_files():
+                 assert "\n" not in output
+-                print >> f, output
++                print(output, file=f)
+ 
+ 
+ class my_uninstall(Command):
+

diff --git a/net-analyzer/nmap/metadata.xml b/net-analyzer/nmap/metadata.xml
index 25a709611821..92acf338fc61 100644
--- a/net-analyzer/nmap/metadata.xml
+++ b/net-analyzer/nmap/metadata.xml
@@ -16,10 +16,12 @@
 	<use>
 		<flag name="libssh2">Enable SSH support through <pkg>net-libs/libssh2</pkg></flag>
 		<flag name="ncat">Install the ncat utility</flag>
+		<flag name="ndiff">Install the ndiff utility</flag>
 		<flag name="nping">Install the nping utility</flag>
 		<flag name="nse">Include support for the Nmap Scripting Engine (NSE)</flag>
 		<flag name="symlink">Install symlink to nc</flag>
 		<flag name="system-lua">Use <pkg>dev-lang/lua</pkg> instead of the bundled liblua</flag>
+		<flag name="zenmap">Install the GTK+ based nmap GUI, zenmap</flag>
 	</use>
 	<upstream>
 		<remote-id type="github">nmap/nmap</remote-id>

diff --git a/net-analyzer/nmap/nmap-9999.ebuild b/net-analyzer/nmap/nmap-9999.ebuild
index 7fc911c6d87a..4588e1d360ac 100644
--- a/net-analyzer/nmap/nmap-9999.ebuild
+++ b/net-analyzer/nmap/nmap-9999.ebuild
@@ -6,7 +6,9 @@ EAPI=8
 LUA_COMPAT=( lua5-3 )
 LUA_REQ_USE="deprecated"
 PYTHON_COMPAT=( python3_{8..11} )
-inherit autotools lua-single python-any-r1 toolchain-funcs
+PLOCALES="de es fr hi hr hu id it ja pl pt_BR pt_PR ro ru sk zh"
+PLOCALE_BACKUP="en"
+inherit autotools lua-single plocale python-single-r1 toolchain-funcs
 
 DESCRIPTION="Network exploration tool and security / port scanner"
 HOMEPAGE="https://nmap.org/"
@@ -27,8 +29,9 @@ fi
 
 LICENSE="|| ( NPSL GPL-2 )"
 SLOT="0"
-IUSE="ipv6 libssh2 ncat nping +nse ssl symlink +system-lua"
+IUSE="ipv6 libssh2 ncat ndiff nping nls +nse ssl symlink +system-lua zenmap"
 REQUIRED_USE="
+	${PYTHON_REQUIRED_USE}
 	system-lua? ( nse ${LUA_REQUIRED_USE} )
 	symlink? ( ncat )
 "
@@ -37,12 +40,14 @@ RDEPEND="
 	dev-libs/liblinear:=
 	dev-libs/libpcre
 	net-libs/libpcap
+	ndiff? ( ${PYTHON_DEPS} )
 	libssh2? (
 		net-libs/libssh2[zlib]
 		sys-libs/zlib
 	)
+	nls? ( virtual/libintl )
 	nse? ( sys-libs/zlib )
-	ssl? ( dev-libs/openssl:0= )
+	ssl? ( dev-libs/openssl:= )
 	symlink? (
 		ncat? (
 			!net-analyzer/netcat
@@ -50,11 +55,18 @@ RDEPEND="
 		)
 	)
 	system-lua? ( ${LUA_DEPS} )
+	zenmap? (
+		${PYTHON_DEPS}
+		$(python_gen_cond_dep '
+			dev-python/pygobject:3[${PYTHON_USEDEP}]
+		')
+	)
 "
 DEPEND="${RDEPEND}"
 BDEPEND="
 	${PYTHON_DEPS}
 	virtual/pkgconfig
+	nls? ( sys-devel/gettext )
 "
 
 if [[ ${PV} != *9999* ]] ; then
@@ -72,20 +84,30 @@ PATCHES=(
 	"${FILESDIR}"/${PN}-7.80-ac-config-subdirs.patch
 	"${FILESDIR}"/${PN}-7.91-no-FORTIFY_SOURCE.patch
 	"${FILESDIR}"/${PN}-9999-netutil-else.patch
+	"${FILESDIR}"/${PN}-9999-python3.patch
 )
 
 pkg_setup() {
-	python-any-r1_pkg_setup
+	python-single-r1_pkg_setup
 
 	use system-lua && lua-single_pkg_setup
 }
 
 src_prepare() {
+	default
+
+	# Drop bundled libraries
 	rm -r liblinear/ libpcap/ libpcre/ libssh2/ libz/ || die
 
 	cat "${FILESDIR}"/nls.m4 >> "${S}"/acinclude.m4 || die
 
-	default
+	delete_disabled_locale() {
+		# Force here as PLOCALES contains supported locales for man
+		# pages and zenmap doesn't have all of those
+		rm -rf zenmap/share/zenmap/locale/${1} || die
+		rm -f zenmap/share/zenmap/locale/${1}.po || die
+	}
+	plocale_for_each_disabled_locale delete_disabled_locale
 
 	sed -i \
 		-e '/^ALL_LINGUAS =/{s|$| id|g;s|jp|ja|g}' \
@@ -105,23 +127,27 @@ src_configure() {
 	export ac_cv_path_PYTHON="${PYTHON}"
 	export am_cv_pathless_PYTHON="${EPYTHON}"
 
-	# The bundled libdnet is incompatible with the version available in the
-	# tree, so we cannot use the system library here.
-	econf \
-		$(use_enable ipv6) \
-		$(use_with libssh2) \
-		$(use_with ncat) \
-		$(use_with nping) \
-		$(use_with ssl openssl) \
-		$(usex libssh2 --with-zlib) \
-		$(usex nse --with-liblua=$(usex system-lua yes included '' '') --without-liblua) \
-		$(usex nse --with-zlib) \
-		--cache-file="${S}"/config.cache \
-		--with-libdnet=included \
-		--with-pcre="${ESYSROOT}"/usr \
-		--without-dpdk \
-		--without-ndiff \
-		--without-zenmap
+	local myeconfargs=(
+		$(use_enable ipv6)
+		$(use_enable nls)
+		$(use_with libssh2)
+		$(use_with ncat)
+		$(use_with ndiff)
+		$(use_with nping)
+		$(use_with ssl openssl)
+		$(use_with zenmap)
+		$(usex libssh2 --with-zlib)
+		$(usex nse --with-liblua=$(usex system-lua yes included '' '') --without-liblua)
+		$(usex nse --with-zlib)
+		--cache-file="${S}"/config.cache
+		# The bundled libdnet is incompatible with the version available in the
+		# tree, so we cannot use the system library here.
+		--with-libdnet=included
+		--with-pcre="${ESYSROOT}"/usr
+		--without-dpdk
+	)
+
+	econf "${myeconfargs[@]}"
 }
 
 src_compile() {
@@ -146,5 +172,9 @@ src_install() {
 
 	dodoc CHANGELOG HACKING docs/README docs/*.txt
 
+	if use ndiff || use zenmap ; then
+		python_optimize
+	fi
+
 	use symlink && dosym /usr/bin/ncat /usr/bin/nc
 }


             reply	other threads:[~2022-12-09 16:50 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-09 16:50 Sam James [this message]
  -- strict thread matches above, loose matches on Subject: below --
2023-12-29 10:12 [gentoo-commits] repo/gentoo:master commit in: net-analyzer/nmap/, net-analyzer/nmap/files/ David Seifert
2023-12-29 10:12 David Seifert
2022-09-09  1:41 Sam James
2022-04-17 16:44 Sam James
2021-03-11 18:14 Sam James
2020-10-04  9:57 Michał Górny
2020-10-03 21:18 Jeroen Roovers
2020-09-19 10:34 Jeroen Roovers
2019-08-11 10:06 Jeroen Roovers
2018-03-10 10:54 Jeroen Roovers
2016-07-22  5:47 Jeroen Roovers
2016-04-07 11:43 Jeroen Roovers

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1670604520.350458ecda5f78ef834191b50029b1e48548f188.sam@gentoo \
    --to=sam@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox