diff --git a/CHANGELOG b/CHANGELOG index 2e8665808..fc4d559e3 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,12 @@ # Nmap Changelog ($Id$); -*-text-*- +o [Ndiff] The setup.py installation script now suggests installing the + python-dev package in a certain error situation. Previously the + error message it printed was misleading: + error: invalid Python installation: unable to open + /usr/lib/python2.6/config/Makefile (No such file or directory) + The change was suggested by Aaron Leininger. [David] + o Ncat's HTTP proxy now supports the GET, HEAD, and POST methods in addition to the CONNECT tunneling method, so it can be used as a proxy with an ordinary web browser. [David] diff --git a/ndiff/setup.py b/ndiff/setup.py index 49a584adb..f128ac69f 100644 --- a/ndiff/setup.py +++ b/ndiff/setup.py @@ -1,9 +1,12 @@ #!/usr/bin/env python -from distutils.core import setup -from distutils.cmd import Command +import distutils.command +import distutils.command.install +import distutils.core +import distutils.cmd +import distutils.errors -class null_command(Command): +class null_command(distutils.cmd.Command): """This is a dummy distutils command that does nothing. We use it to replace the install_egg_info and avoid installing a .egg-info file, because there's no option to disable that.""" @@ -14,6 +17,17 @@ class null_command(Command): def run(self): pass -setup(name = u"ndiff", scripts = [u"ndiff"], - data_files = [(u"share/man/man1", [u"docs/ndiff.1"])], - cmdclass = {"install_egg_info": null_command}) +class checked_install(distutils.command.install.install): + """This is a wrapper around the install command that checks for an error + caused by not having the python-dev package installed. By default, distutils + gives a misleading error message: "invalid Python installation." """ + def finalize_options(self): + try: + distutils.command.install.install.finalize_options(self) + except distutils.errors.DistutilsPlatformError, e: + raise distutils.errors.DistutilsPlatformError(str(e) + "\n" + + "Installing your distribution's python-dev package may solve this problem.") + +distutils.core.setup(name = u"ndiff", scripts = [u"ndiff"], + data_files = [(u"share/man/man1", [u"docs/ndiff.1"])], + cmdclass = {"install_egg_info": null_command, "install": checked_install})