[tor-commits] [nyx/master] Installing fails with 'error: option --single-version-externally-managed not recognized'

atagar at torproject.org atagar at torproject.org
Mon Nov 6 19:29:12 UTC 2017


commit c9bddc096a4e60d4ffdc420af5a77d9a0031cc39
Author: Damian Johnson <atagar at torproject.org>
Date:   Mon Nov 6 11:20:28 2017 -0800

    Installing fails with 'error: option --single-version-externally-managed not recognized'
    
    Damn that was a pita. Pip expects that cmdclasses are the setuptools version,
    and chokes in a confusing fashion when using distutils instead. See the comment
    for details.
---
 nyx.1           |  3 ++-
 nyx/__init__.py |  2 +-
 setup.py        | 24 ++++++++++++++++++++++++
 3 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/nyx.1 b/nyx.1
index d32e0ab..f779372 100644
--- a/nyx.1
+++ b/nyx.1
@@ -19,7 +19,8 @@ As a curses interface Nyx is particularly well suited for ssh connections, tty
 terminals, and command-line aficionados to check the status of tor.
 
 Nyx can be customized through a configuration file located at
-\fB~/.nyx/config\fR. For options see our \fBnyxrc.sample\fR.
+\fB~/.nyx/config\fR. For options see
+\fBhttps://nyx.torproject.org/#configuration\fR.
 
 .SH OPTIONS
 .TP
diff --git a/nyx/__init__.py b/nyx/__init__.py
index 65102b0..48dd767 100644
--- a/nyx/__init__.py
+++ b/nyx/__init__.py
@@ -89,7 +89,7 @@ except ImportError:
 
   sys.exit(1)
 
-__version__ = '2.0.1'
+__version__ = '2.0.2'
 __release_date__ = 'November 5, 2017'
 __author__ = 'Damian Johnson'
 __contact__ = 'atagar at torproject.org'
diff --git a/setup.py b/setup.py
index dc3fb51..37923cc 100644
--- a/setup.py
+++ b/setup.py
@@ -82,15 +82,39 @@ class NyxInstaller(install):
   ... will cause that resource to be omitted.
   """
 
+  # We don't actually use single-version-externally-managed. Unfortunately pip
+  # has a bug where it expects any cmdclass to be setuptools, otherwise it
+  # fails with...
+  #
+  #   % sudo pip install nyx
+  #   ...
+  #   Installing collected packages: nyx
+  #    Running setup.py install for nyx ... error
+  #      Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-EOQT9b/nyx/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-PHiCsl-record/install-record.txt --single-version-externally-managed --compile:
+  #      usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
+  #         or: -c --help [cmd1 cmd2 ...]
+  #         or: -c --help-commands
+  #         or: -c cmd --help
+  #
+  #      error: option --single-version-externally-managed not recognized
+  #
+  # We have a few options to sidestep this...
+  #
+  #   * Have users install with 'sudo pip install --egg nyx' instead.
+  #   * Extend setuptools.command.install, which has the argument.
+  #   * Hack in a no-op argument to sidestep as we do here.
+
   user_options = install.user_options + [
     ('man-page=', None, 'man page location'),
     ('sample-path=', None, 'example nyxrc location'),
+    ('single-version-externally-managed', None, ''),  # needed to sidestep pip bug
   ]
 
   def initialize_options(self):
     install.initialize_options(self)
     self.man_page = None
     self.sample_path = None
+    self.single_version_externally_managed = None
 
   def run(self):
     install.run(self)



More information about the tor-commits mailing list