setup: make runnable from other dirs stable
authorIan Moody <moz-ian@perix.co.uk>
Thu, 03 Oct 2019 23:20:47 +0100
branchstable
changeset 4876 1a47cc2728ff
parent 4875 164543ac3277
child 4877 77e5c733200a
setup: make runnable from other dirs Currently it fails when run in that way for two reasons: - the description is loaded from the README file but with a path relative to the working directory - module references have the same issue, which is fixed with package_dir.
setup.py
tests/test-version-install.t
--- a/setup.py	Thu Oct 03 23:17:13 2019 +0100
+++ b/setup.py	Thu Oct 03 23:20:47 2019 +0100
@@ -28,6 +28,9 @@
     'hgext3rd.evolve.thirdparty',
     'hgext3rd.topic',
 ]
+py_packagedir = {
+    'hgext3rd': join(dirname(__file__), 'hgext3rd')
+}
 
 py_versions = '>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4'
 
@@ -44,10 +47,11 @@
     maintainer_email='pierre-yves.david@ens-lyon.org',
     url='https://www.mercurial-scm.org/doc/evolution/',
     description='Flexible evolution of Mercurial history.',
-    long_description=open('README').read(),
+    long_description=open(join(dirname(__file__), 'README')).read(),
     keywords='hg mercurial',
     license='GPLv2+',
     py_modules=py_modules,
     packages=py_packages,
+    package_dir=py_packagedir,
     python_requires=py_versions
 )
--- a/tests/test-version-install.t	Thu Oct 03 23:17:13 2019 +0100
+++ b/tests/test-version-install.t	Thu Oct 03 23:20:47 2019 +0100
@@ -18,11 +18,19 @@
     evolve  external  * (glob)
 
 Test install
-BROKEN: can't call setup.py from a different dir
+#if py3
+BROKEN: unicode errors opening the README
   $ "$PYTHON" "$TESTDIR/../setup.py" install --root "$TESTTMP/installtest" > /dev/null
   Traceback (most recent call last):
     File "*/../setup.py", line *, in <module> (glob)
-      long_description=open('README').read(),
-  IOError: [Errno 2] No such file or directory: 'README' (no-py3 !)
-  FileNotFoundError: [Errno 2] No such file or directory: 'README' (py3 !)
+      long_description=open(join(dirname(__file__), 'README')).read(),
+    File "*/encodings/ascii.py", line *, in decode (glob)
+      return codecs.ascii_decode(input, self.errors)[0]
+  UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 460: ordinal not in range(128)
   [1]
+#else
+TODO: fix warning
+  $ "$PYTHON" "$TESTDIR/../setup.py" install --root "$TESTTMP/installtest" > /dev/null
+  */distutils/dist.py:*: UserWarning: Unknown distribution option: 'python_requires' (glob)
+    warnings.warn(msg)
+#endif