Hi Hartmut,
Toggle quote (2 lines)
> Please but this int a new line - makeing it easier to copy & paste.> (Leading emptry lines doe nor effect "from __future__ import").adopted Ricardo’s suggestion here.
Toggle quote (2 lines)
> This looks very uncommon (and make my mind hooking on it). Please use> this, which is more common and less mindbogling ;-)Done.
Toggle quote (3 lines)
> Any reason for converting the req into a string first? IC,> "`requirements` must be a string". So I'd move the "str()" to the> function call:Yes, the string is used in the error message.
Toggle quote (3 lines)
> if group not in {'console_scripts', 'gui_scripts'}:> Why not gui-scripts?> If not adding gui-scripts, just use "if group != 'concolse_scrips':"I wasn’t aware this exists. Added, thanks!
Toggle quote (5 lines)
> Does it make sence to try loading the top-level modules *after* the the> entry-point? Chances are very high that the entry-points implicitly test> the top-level modules already.> IMHO it would make more sense to first try the top-level modules, and> even stop processing if this fails.True, I reversed the order. Still, I think continuing with the entrypoints might be worth, if it points out more (different) errors. Forsmall packages this might not be the case, but larger ones often onlyre-export specific names in the top-level module, thus testing mightreveal more issues.
Toggle quote (2 lines)
> Please add a short explanation why there can be unavailable top-level> modules.Done.
Toggle quote (3 lines)
> While not having antoher idea, I'm not happy with this name. "loadable"> is not easy to get. (See also below, where this term is used in commit message.)> top-level-modules-are-importable?I’m also not happy with the name, but can’t think of a better one rightnow. Anyone?
Toggle quote (6 lines)
> AFAIKS the packages only differ by some requirements. So I suggest> using a function to return the packages. This makes it easier to spot> the actull differences.> […]> (mkdir-p "src/dummy")> (chdir "src")Done.
Toggle quote (2 lines)
> I would strip this down (version is not required AFAIK) and put it one> line (her assuming you use (format) for creating the code within a function:Toggle quote (1 lines)
> Arguments are not used?Fixed.
Toggle quote (1 lines)
> Any reason for relaxing this? Why not use python-pytest-6 as input?Yes, our pytest@6 package reports its version as 0.0.0, so this patch isrequired with either package. Or we figure out how to fix pytest@6(works fine with PEP 517 compliant build system).
Toggle quote (2 lines)
> Please rephrase into something like> Do not validate loadabilityDone.
Toggle quote (2 lines)
> Dosn't this change fix the checks? So this comment would be obsoltes and> "#:tests #t" can be removed.Should’ve been #f, sorry, fixed.
Toggle quote (2 lines)
> I suggest keeping the old way, as this is will automatically update to> upstream changes.Okay, I’ve added another phase that disables the test manually, becauseit fails for me every time.
See attached patchset (v2) or git repository for updated patches.
I’ve also rebuilt all 2284 packages depending on python-build-system.Currently 426 of them fail to build for any reason (not necessarilycaused by this patchset; I’ve seen some unrelated issues). Due to thelarge number of packages failing I suggest moving forward with applyingthis first batch and then fixing everything else incrementally, unlesssome major package is broken (see attached list). WDYT?
Cheers,Lars
From 69bd0e11b9a054837e1733858490f0aec3830eca Mon Sep 17 00:00:00 2001MIME-Version: 1.0Content-Type: text/plain; charset=UTF-8Content-Transfer-Encoding: 8bit
Adds a new phase validating usalibity of installed Python packages.
* guix/build/python-build-system.scm (validate-script): Add script.(validate-loadable): New phase.(%standard-phases): Use it.* tests/builders.scm (make-python-dummy): Add test package generator.(check-build-{success,failure}): Add build helper functions.(python-dummy-*): Add test packages.("python-build-system: …"): Add tests.--- guix/build/python-build-system.scm | 80 +++++++++++++++++++++ tests/builders.scm | 108 ++++++++++++++++++++++++++++- 2 files changed, 185 insertions(+), 3 deletions(-)
Toggle diff (230 lines)
diff --git a/guix/build/python-build-system.scm b/guix/build/python-build-system.scmindex 09bd8465c8..3c29efea8b 100644--- a/guix/build/python-build-system.scm+++ b/guix/build/python-build-system.scm@@ -148,6 +148,85 @@ (format #t "test suite not run~%")) #t) +(define validate-script+ "\+from __future__ import print_function # Python 2 support.+import pkg_resources, sys, importlib, traceback+try:+ from importlib.machinery import PathFinder+except ImportError:+ PathFinder = None+ret = 0+# Only check site-packages installed by this package, but not dependencies+# (which pkg_resources.working_set would include). Path supplied via argv.+ws = pkg_resources.find_distributions(sys.argv[1])+for dist in ws:+ print('validating', repr(dist.project_name), dist.location)+ try:+ print('...checking requirements: ', end='')+ req = str(dist.as_requirement())+ # dist.activate() is not enough to actually check requirements, we have to+ # .require() it.+ pkg_resources.require(req)+ print('OK')+ except Exception as e:+ print('ERROR:', req, e)+ ret = 1+ continue++ # Try to load top level modules. This should not have any side-effects.+ try:+ metalines = dist.get_metadata_lines('top_level.txt')+ except KeyError:+ # distutils (i.e. #:use-setuptools? #f) will not install any metadata.+ print('WARNING: cannot determine top-level modules')+ continue+ for name in metalines:+ # Only available on Python 3.+ if PathFinder and PathFinder.find_spec(name) is None:+ # Ignore unavailable modules, often C modules, which were not+ # installed at the top-level. Cannot use ModuleNotFoundError,+ # because it is raised by failed imports too.+ continue+ try:+ print('...trying to load module', name, end=': ')+ importlib.import_module(name)+ print('OK')+ except Exception:+ print('ERROR:')+ traceback.print_exc(file=sys.stdout)+ ret = 1+ continue++ # Try to load entry points of console scripts too, making sure they work. They+ # should be removed if they don’t. Other groups may not be safe, as they can+ # depend on optional packages.+ for group, v in dist.get_entry_map().items():+ if group not in {'console_scripts', 'gui_scripts'}:+ continue+ for name, ep in v.items():+ try:+ print('...trying to load endpoint', group, name, end=': ')+ ep.load()+ print('OK')+ except Exception:+ print('ERROR:')+ traceback.print_exc(file=sys.stdout)+ ret = 1+ continue++sys.exit(ret)")++(define* (validate-loadable #:key tests? inputs outputs #:allow-other-keys)+ "Ensure packages depending on this package via setuptools work properly,+their advertised endpoints work and their top level modules are importable+without errors."+ (add-installed-pythonpath inputs outputs)+ ;; Make sure the working directory is empty (i.e. no Python modules in it)+ (with-directory-excursion "/tmp"+ (invoke "python" "-c" validate-script (site-packages inputs outputs)))+ #t)+ (define (python-version python) (let* ((version (last (string-split python #\-))) (components (string-split version #\.))@@ -267,6 +346,7 @@ installed with setuptools." (replace 'install install) (add-after 'install 'check check) (add-after 'install 'wrap wrap)+ (add-after 'check 'validate-loadable validate-loadable) (add-before 'strip 'rename-pth-file rename-pth-file))) (define* (python-build #:key inputs (phases %standard-phases)diff --git a/tests/builders.scm b/tests/builders.scmindex fdcf38ded3..929d1a906e 100644--- a/tests/builders.scm+++ b/tests/builders.scm@@ -21,15 +21,15 @@ #:use-module (guix download) #:use-module (guix build-system) #:use-module (guix build-system gnu)+ #:use-module (guix build-system python) #:use-module (guix store)+ #:use-module (guix monads) #:use-module (guix utils) #:use-module (guix base32) #:use-module (guix derivations) #:use-module (gcrypt hash) #:use-module (guix tests)- #:use-module ((guix packages)- #:select (package?- package-derivation package-native-search-paths))+ #:use-module (guix packages) #:use-module (gnu packages bootstrap) #:use-module (ice-9 match) #:use-module (srfi srfi-1)@@ -78,4 +78,106 @@ (test-assert "gnu-build-system" (build-system? gnu-build-system)) ++(define* (make-python-dummy name #:key (setup-py-extra "") (init-py "") (use-setuptools? #t))+ (package+ (name (string-append "python-dummy-" name))+ (version "0.1")+ (source #f) ; source is generated in 'unpack+ (build-system python-build-system)+ (arguments+ `(#:tests? #f+ #:use-setuptools? ,use-setuptools?+ #:phases+ (modify-phases %standard-phases+ (replace 'unpack+ (lambda _+ (mkdir-p "src/dummy")+ (chdir "src")+ (with-output-to-file "dummy/__init__.py"+ (lambda _+ (display ,init-py)))+ (with-output-to-file "setup.py"+ (lambda _+ (format #t "\+~a+setup(+ name='dummy-~a',+ version='0.1',+ packages=['dummy'],+ ~a+ )"+ (if ,use-setuptools?+ "from setuptools import setup"+ "from distutils.core import setup")+ ,name ,setup-py-extra)))+ #t)))))+ (home-page #f)+ (synopsis #f)+ (description #f)+ (license #f)))++(define python-dummy-ok+ (make-python-dummy "ok"))++(define python2-dummy-ok+ (package-with-python2 python-dummy-ok))++;; distutil won’t install any metadata, so make sure our script does not fail+;; on a otherwise fine package.+(define python-dummy-no-setuptools+ (make-python-dummy+ "no-setuptools" #:use-setuptools? #f))++(define python2-dummy-no-setuptools+ (package-with-python2 python-dummy-no-setuptools))++(define python-dummy-fail-requirements+ (make-python-dummy "fail-requirements"+ #:setup-py-extra "install_requires=['nonexistent'],"))++(define python2-dummy-fail-requirements+ (package-with-python2 python-dummy-fail-requirements))++(define python-dummy-fail-import+ (make-python-dummy "fail-import" #:init-py "import nonexistent"))++(define python2-dummy-fail-import+ (package-with-python2 python-dummy-fail-import))++(define python-dummy-fail-console-script+ (make-python-dummy "fail-console-script"+ #:setup-py-extra (string-append "entry_points={'console_scripts': "+ "['broken = dummy:nonexistent']},")))++(define python2-dummy-fail-console-script+ (package-with-python2 python-dummy-fail-console-script))++(define (check-build-success store p)+ (unless store (test-skip 1))+ (test-assert (string-append "python-build-system: " (package-name p))+ (let* ((drv (package-derivation store p)))+ (build-derivations store (list drv)))))++(define (check-build-failure store p)+ (unless store (test-skip 1))+ (test-assert (string-append "python-build-system: " (package-name p))+ (not (false-if-exception (package-derivation store python-dummy-fail-requirements)))))++(with-external-store store+ (for-each (lambda (p) (check-build-success store p))+ (list+ python-dummy-ok+ python-dummy-no-setuptools+ python2-dummy-ok+ python2-dummy-no-setuptools))+ (for-each (lambda (p) (check-build-failure store p))+ (list+ python-dummy-fail-requirements+ python-dummy-fail-import+ python-dummy-fail-console-script+ python2-dummy-fail-requirements+ python2-dummy-fail-import+ python2-dummy-fail-console-script)))+ (test-end "builders")-- 2.26.2From e99707fb4cea9db88721192e84044dbdf1b1ca9b Mon Sep 17 00:00:00 2001
* gnu/packages/check.scm (python-pytest-6) [native-inputs]: Removepython-iniconfig.[propagated-inputs]: Move it here.--- gnu/packages/check.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
Toggle diff (23 lines)
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scmindex 1300f9e1a6..9d1e0b8173 100644--- a/gnu/packages/check.scm+++ b/gnu/packages/check.scm@@ -964,13 +964,13 @@ and many external plugins.") (propagated-inputs (append (alist-delete "python-py" (package-propagated-inputs python-pytest))- `(("python-py" ,python-py-next))))+ `(("python-py" ,python-py-next)+ ("python-iniconfig" ,python-iniconfig)))) (native-inputs (append (alist-delete "python-pytest" (package-native-inputs python-pytest)) `(("python-pytest" ,python-pytest-6-bootstrap)- ("python-toml" ,python-toml)- ("python-iniconfig" ,python-iniconfig))))))+ ("python-toml" ,python-toml)))))) ;; Pytest 4.x are the last versions that support Python 2. (define-public python2-pytest-- 2.26.2From 23077674975a0194f38ed70d0a912ab52c4af3fe Mon Sep 17 00:00:00 2001 pytest requirement.
* gnu/packages/check.scm: (python-pytest-xdist)[arguments]: Relax pytest version requirements.[propagated-inputs]: Add python-pytest-forked.--- gnu/packages/check.scm | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-)
Toggle diff (43 lines)
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scmindex 9d1e0b8173..2136b8fc4f 100644--- a/gnu/packages/check.scm+++ b/gnu/packages/check.scm@@ -1216,20 +1216,27 @@ same arguments.") #t)))) (build-system python-build-system) (arguments- '(#:tests? #f)) ;FIXME: Some tests are failing.- ;; #:phases- ;; (modify-phases %standard-phases- ;; (delete 'check)- ;; (add-after 'install 'check- ;; (lambda* (#:key inputs outputs #:allow-other-keys)- ;; (add-installed-pythonpath inputs outputs)- ;; (zero? (system* "py.test" "-v")))))+ '(#:tests? #f ; Lots of tests fail.+ #:phases+ (modify-phases %standard-phases+ (add-after 'unpack 'patch-setup-py+ (lambda _+ ;; Relax pytest requirement.+ (substitute* "setup.py"+ (("pytest>=6\\.0\\.0") "pytest"))+ #t))+ (replace 'check+ (lambda* (#:key tests? inputs outputs #:allow-other-keys)+ (when tests?+ (add-installed-pythonpath inputs outputs)+ (invoke "py.test" "-v"))))))) (native-inputs `(("python-setuptools-scm" ,python-setuptools-scm))) (propagated-inputs `(("python-execnet" ,python-execnet) ("python-pytest" ,python-pytest)- ("python-py" ,python-py)))+ ("python-py" ,python-py)+ ("python-pytest-forked" ,python-pytest-forked))) (home-page "https://github.com/pytest-dev/pytest-xdist") (synopsis-- 2.26.2From 478a266a4299a05835bbfc19099a1f0afc318d8a Mon Sep 17 00:00:00 2001 loadability
* gnu/packages/check.scm (python-fixtures-bootstrap) [arguments]: Delete'validate-loadable.--- gnu/packages/check.scm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
Toggle diff (20 lines)
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scmindex 2136b8fc4f..e4761eb66a 100644--- a/gnu/packages/check.scm+++ b/gnu/packages/check.scm@@ -1541,7 +1541,12 @@ protocol."))) (base32 "1vxj29bzz3rd4pcy51d05wng9q9dh4jq6wx92yklsm7i6h1ddw7w")))) (build-system python-build-system)- (arguments `(#:tests? #f))+ (arguments+ `(#:tests? #f+ #:phases+ (modify-phases %standard-phases+ ;; Package is not loadable on its own at this stage.+ (delete 'validate-loadable)))) (propagated-inputs `(("python-pbr-minimal" ,python-pbr-minimal) ("python-six" ,python-six)))-- 2.26.2From ac7d664c3748afb9059ed3d147c13a9033fff45b Mon Sep 17 00:00:00 2001
* gnu/packages/check.scm (python-pytest-pep8) [arguments]: Removedependency on pytest-cache and add proper 'check phase.--- gnu/packages/check.scm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)
Toggle diff (27 lines)
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scmindex e4761eb66a..c12cb98a6c 100644--- a/gnu/packages/check.scm+++ b/gnu/packages/check.scm@@ -2043,7 +2043,19 @@ failures.") "06032agzhw1i9d9qlhfblnl3dw5hcyxhagn7b120zhrszbjzfbh3")))) (build-system python-build-system) (arguments- `(#:tests? #f)) ; Fails with recent pytest and pep8. See upstream issues #8 and #12.+ `(#:tests? #f ; Fails with recent pytest and pep8. See upstream issues #8 and #12.+ #:phases+ (modify-phases %standard-phases+ (add-after 'unpack 'fix-dependencies+ (lambda _+ (substitute* "setup.py"+ (("'pytest-cache', ") "")) ; Included in recent pytest+ #t))+ (replace 'check+ (lambda* (#:key tests? inputs outputs #:allow-other-keys)+ (when tests?+ (add-installed-pythonpath inputs outputs)+ (invoke "pytest" "-v"))))))) (native-inputs `(("python-pytest" ,python-pytest))) (propagated-inputs-- 2.26.2From e76db5088bafd7a3788a80a834d4983e0eed0e6a Mon Sep 17 00:00:00 2001
* gnu/packages/check.scm (python-pyfakefs) [arguments]: Add new phase toskip single test.--- gnu/packages/check.scm | 10 ++++++++++ 1 file changed, 10 insertions(+)
Toggle diff (23 lines)
diff --git a/gnu/packages/check.scm b/gnu/packages/check.scmindex c12cb98a6c..9ddf656324 100644--- a/gnu/packages/check.scm+++ b/gnu/packages/check.scm@@ -2858,6 +2858,16 @@ grew out of the @dfn{Vc} project.") (arguments `(#:phases (modify-phases %standard-phases+ (add-after 'unpack 'patch-testsuite+ (lambda _+ ;; Time difference is larger than expected.+ (substitute* "pyfakefs/tests/fake_filesystem_unittest_test.py"+ (("(\\s+)def test_copy_real_file" all indent)+ (string-append+ indent+ "@unittest.skip('disabled by guix')\n"+ all)))+ #t)) ;; The default test suite does not run these extra tests. (add-after 'check 'check-pytest-plugin (lambda _-- 2.26.2From 203cd356f44081a753b1f67ec14ab00ec1bd8520 Mon Sep 17 00:00:00 2001
* gnu/packages/python-web.scm (python-slugify) [propagated-inputs]: Addpython-text-unidecode.--- gnu/packages/python-web.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
Toggle diff (16 lines)
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scmindex 622f5fc6e2..e3cf25a687 100644--- a/gnu/packages/python-web.scm+++ b/gnu/packages/python-web.scm@@ -4398,7 +4398,8 @@ Python.") (sha256 (base32 "0w22fapghmzk3xdasc4dn7h8sl58l08d1h5zbf72dh80drv1g9b9")))) (propagated-inputs- `(("python-unidecode" ,python-unidecode)))+ `(("python-unidecode" ,python-unidecode)+ ("python-text-unidecode" ,python-text-unidecode))) (arguments `(#:phases (modify-phases %standard-phases-- 2.26.2From fe3ec027ce3fe198a2cdfe3e1329094f2525fa42 Mon Sep 17 00:00:00 2001
* gnu/packages/python-web.scm (python-websockets) [arguments]: Add newphase to fix package name.--- gnu/packages/python-web.scm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)
Toggle diff (24 lines)
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scmindex e3cf25a687..e3318a18ce 100644--- a/gnu/packages/python-web.scm+++ b/gnu/packages/python-web.scm@@ -5086,7 +5086,16 @@ Plus all the standard features of requests: (base32 "03s3ml6sbki24aajllf8aily0xzrn929zxi84p50zkkbikdd4raw")))) (build-system python-build-system)- (arguments '(#:tests? #f)) ; Tests not included in release tarball.+ (arguments+ '(#:tests? #f ; Tests not included in release tarball.+ #:phases+ (modify-phases %standard-phases+ (add-after 'unpack 'patch+ (lambda* (#:key inputs #:allow-other-keys)+ ;; Python package names use dot as separator.+ (substitute* "setup.py"+ (("websockets/extensions") "websockets.extensions"))+ #t))))) (home-page "https://github.com/aaugustin/websockets") (synopsis "Python implementation of the WebSocket Protocol (RFC 6455 & 7692)")-- 2.26.2From d8199ab0353aa215d193ca511a63d4eea355b6c6 Mon Sep 17 00:00:00 2001
* gnu/packages/python-xyz.scm (python-black) [arguments]: Add new phaseto prevent installation of blackd.--- gnu/packages/python-xyz.scm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
Toggle diff (22 lines)
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scmindex 818a244378..a02960f1c6 100644--- a/gnu/packages/python-xyz.scm+++ b/gnu/packages/python-xyz.scm@@ -4277,7 +4277,14 @@ matching of file paths.") (substitute* "tests/test_black.py" (("( *)def test_python38" match indent) (string-append indent "@unittest.skip(\"guix\")\n" match)))- #t)))))+ #t))+ ;; Remove blackd, because it depends on python-aiohttp and+ ;; python-aiohttp-cors.+ (add-after 'unpack 'remove-entrypoint+ (lambda _+ (substitute* "setup.py"+ (("\\s*\"blackd=blackd:patched_main \\[d\\]\",\n") "")+ (("\"blackd\", ") ""))))))) (propagated-inputs `(("python-click" ,python-click) ("python-attrs" ,python-attrs)-- 2.26.2From b7ec4d0705bab46fa682a79de530336e2ff46775 Mon Sep 17 00:00:00 2001
* gnu/packages/python-xyz.scm (python-traitlets) [propagated-inputs]:Add python-six.--- gnu/packages/python-xyz.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
Toggle diff (16 lines)
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scmindex a02960f1c6..4b7fff5750 100644--- a/gnu/packages/python-xyz.scm+++ b/gnu/packages/python-xyz.scm@@ -6973,7 +6973,8 @@ cluster down and deletes the throwaway profile.") (replace 'check (lambda _ (invoke "pytest" "-vv" "traitlets")))))) (propagated-inputs `(("python-ipython-genutils" ,python-ipython-genutils)- ("python-decorator" ,python-decorator)))+ ("python-decorator" ,python-decorator)+ ("python-six" ,python-six))) (native-inputs `(("python-pytest" ,python-pytest))) (properties `((python2-variant . ,(delay python2-traitlets))))-- 2.26.2From e17eb838b9d77588200ac6db652e87bcd73e3f87 Mon Sep 17 00:00:00 2001
* gnu/packages/python-xyz.scm (python-idna-ssl) [propagated-inputs]: Addpython-idna.--- gnu/packages/python-xyz.scm | 1 + 1 file changed, 1 insertion(+)
Toggle diff (14 lines)
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scmindex 4b7fff5750..58ad3b6e55 100644--- a/gnu/packages/python-xyz.scm+++ b/gnu/packages/python-xyz.scm@@ -9517,6 +9517,7 @@ is binding LibSass.") (build-system python-build-system) (arguments `(#:tests? #f)) ;circular dependency with python-aiohttp+ (propagated-inputs `(("python-idna" ,python-idna))) (home-page "https://github.com/aio-libs/idna-ssl") (synopsis "Patch @code{ssl.match_hostname} for Unicode(idna) domains support") (description "Patch @code{ssl.match_hostname} for Unicode(idna)-- 2.26.2From 3372011b15cd28b203590981f5e1c561f977e31f Mon Sep 17 00:00:00 2001
* gnu/packages/python-xyz.scm (python-twisted) [arguments]: Patchsetup.py.--- gnu/packages/python-xyz.scm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
Toggle diff (22 lines)
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scmindex 58ad3b6e55..d8b61cd1d2 100644--- a/gnu/packages/python-xyz.scm+++ b/gnu/packages/python-xyz.scm@@ -12716,7 +12716,14 @@ format.") "17d3hnxv9qndagzz63mdpyk99xj63p9gq586vjn0rxk8cl197nym")))) (build-system python-build-system) (arguments- '(#:tests? #f)) ; FIXME: some tests fail+ '(#:tests? #f ; FIXME: some tests fail+ #:phases+ (modify-phases %standard-phases+ ;; Remove scripts, because they depend on [conch]+ (add-after 'unpack 'remove-entrypoint+ (lambda _+ (substitute* "src/twisted/python/_setup.py"+ (("\".+ = twisted\\.conch\\.scripts\\..+\",") ""))))))) (propagated-inputs `(("python-zope-interface" ,python-zope-interface) ("python-pyhamcrest" ,python-pyhamcrest)-- 2.26.2From 7f644bb845249c32a2504fad0625dd75a6c01ce1 Mon Sep 17 00:00:00 2001
* gnu/packages/python-xyz.scm (python-automat) [arguments]: Patchsetup.py.--- gnu/packages/python-xyz.scm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)
Toggle diff (23 lines)
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scmindex d8b61cd1d2..acd674878a 100644--- a/gnu/packages/python-xyz.scm+++ b/gnu/packages/python-xyz.scm@@ -15151,7 +15151,15 @@ instead of servers and network commands.") ;; python-twisted depends on python-automat. Twisted is optional, but the ;; tests fail if it is not available. Also see ;; <https://github.com/glyph/automat/issues/71>.- (arguments '(#:tests? #f))+ (arguments+ `(#:tests? #f+ #:phases+ (modify-phases %standard-phases+ ;; Remove script, because it depends on python-twisted.+ (add-after 'unpack 'remove-entrypoint+ (lambda _+ (substitute* "setup.py"+ (("\"automat-visualize = automat._visualize:tool\"") ""))))))) (native-inputs `(("python-m2r" ,python-m2r) ("python-setuptools-scm" ,python-setuptools-scm)-- 2.26.2From ff4f539c9c4cd18e7f5c9bea4f87eec42ee81394 Mon Sep 17 00:00:00 2001
* gnu/packages/python-xyz.scm (python-packaging-bootstrap) [arguments]:Remove dependency from setup.py, which we do not provide for thisvariant.--- gnu/packages/python-xyz.scm | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)
Toggle diff (27 lines)
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scmindex acd674878a..e78016221f 100644--- a/gnu/packages/python-xyz.scm+++ b/gnu/packages/python-xyz.scm@@ -16049,10 +16049,18 @@ information.") (package/inherit python-packaging (name "python-packaging-bootstrap")+ (arguments+ (substitute-keyword-arguments (package-arguments python-packaging)+ ((#:phases phases)+ `(modify-phases ,phases+ (add-after 'unpack 'fix-dependencies+ (lambda* (#:key tests? #:allow-other-keys)+ (substitute* "setup.py" (("\"six\"") ""))+ #t))))+ ((#:tests? _ #f) #f))) (native-inputs '()) (propagated-inputs- `(("python-pyparsing" ,python-pyparsing)))- (arguments '(#:tests? #f)))))+ `(("python-pyparsing" ,python-pyparsing)))))) (define-public python2-packaging-bootstrap (hidden-package-- 2.26.2From 65d2ab65d4dd73e1bdb0248cc41848c55859f98d Mon Sep 17 00:00:00 2001
* gnu/packages/python-xyz.scm (python-traceback2) [propagated-inputs]:Add python-six.--- gnu/packages/python-xyz.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
Toggle diff (16 lines)
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scmindex e78016221f..1df9807626 100644--- a/gnu/packages/python-xyz.scm+++ b/gnu/packages/python-xyz.scm@@ -17266,7 +17266,8 @@ lines are read from a single file.") (native-inputs `(("python-pbr" ,python-pbr-minimal))) (propagated-inputs- `(("python-linecache2" ,python-linecache2)))+ `(("python-linecache2" ,python-linecache2)+ ("python-six" ,python-six))) (home-page "https://github.com/testing-cabal/traceback2") (synopsis "Backports of the traceback module")-- 2.26.2From 55aab0eba972c6672be9d8de5e0ec9340b10c243 Mon Sep 17 00:00:00 2001 dependency
* gnu/packages/python-xyz.scm (python2-packaging-bootstrap)[propagated-inputs]: Add python2-six-bootstrap.--- gnu/packages/python-xyz.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
Toggle diff (16 lines)
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scmindex 1df9807626..434946acfd 100644--- a/gnu/packages/python-xyz.scm+++ b/gnu/packages/python-xyz.scm@@ -16069,7 +16069,8 @@ information.") (name "python2-packaging-bootstrap") (native-inputs '()) (propagated-inputs- `(("python-pyparsing" ,python2-pyparsing)))+ `(("python-pyparsing" ,python2-pyparsing)+ ("python-six" ,python2-six-bootstrap))) (arguments `(#:tests? #f ,@(package-arguments python2-packaging))))))-- 2.26.2awsclib4beetsbeets-bandcampbehavebpythonbukucalibrecertbotcurseradiodbxfsdebopsdiffoscopedocker-composeelectron-cashelectrumenjarifyfabricfdroidserverfenicsfrescobaldigandi.cligaupolgitlessgpoddergritgrocsvsinstantmusicjrnljupyterkeepkey-agentkhmerledger-agentletsencryptlinkcheckermailmanmisomps-youtubenmoldynnototoolsofflateonionshareopenshotpagekitepatchworkpbtranscript-tofupeprpicardpoetryporetoolspostoriuspre-commitpresenttyprotonvpn-cliptpython2pulseaudio-dlnapybitmessagepyicoteopython2-anaconda-clientpython2-apache-libcloudpython2-argcompletepython2-arrowpython2-autogradpython2-axolotlpython2-bcryptpython2-behave-web-apipython2-betamaxpython2-betamax-matcherspython2-bigfloatpython2-biom-formatpython2-booleanoperationspython2-botocorepython2-cachecontrolpython2-cairocffipython2-celerypython2-checkm-genomepython2-clfpython2-cloudpicklepython2-consulpython2-cryptographypython2-cvxoptpython2-cypari2python2-discogs-clientpython2-dns-lexiconpython2-drmaapython2-dulwichpython2-ecpypython2-elasticsearchpython2-email-validatorpython2-empypython2-entrypointspython2-factory-boypython2-fakerpython2-fakeredispython2-falconpython2-falcon-corspython2-fastlmmpython2-fido2python2-flake8python2-flake8-polyfillpython2-flaskpython2-flask-babelpython2-flask-htmlminpython2-flask-loginpython2-flask-multistaticpython2-flask-wtfpython2-flexpython2-furlpython2-futurepython2-git-reviewpython2-google-api-clientpython2-graphql-corepython2-gridmappython2-guzzle-sphinx-themepython2-hdf4python2-html5-parserpython2-htseqpython2-httpbinpython2-ipykernelpython2-ipyparallelpython2-ipythonpython2-ipython-cluster-helperpython2-ipywidgetspython2-josepypython2-jupyter-clientpython2-jupyter-consolepython2-kivypython2-kombupython2-ledgerbluepython2-libadalangpython2-lzstringpython2-mapnikpython2-matplotlibpython2-matplotlib-documentationpython2-mechanicalsouppython2-mutagenpython2-mwclientpython2-nbconvertpython2-nbxmpppython2-ndg-httpsclientpython2-nose2python2-notebookpython2-notify2python2-numpydocpython2-numpy-documentationpython2-oauthlibpython2-openid-clapython2-openid-teamspython2-openpyxlpython2-oratorpython2-os-client-configpython2-os-testrpython2-pandaspython2-paramikopython2-parsedatetimepython2-partdpython2-pathpypython2-patsypython2-pendulumpython2-pep517python2-pgpdumppython2-pikapython2-plastidpython2-plotlypython2-py2neopython2-pybedtoolspython2-pyclipperpython2-pyfakefspython2-pylibmcpython2-pymysqlpython2-pynaclpython2-pynamecheappython2-pyopensslpython2-pysnptoolspython2-pytest-xdistpython2-radonpython2-rauthpython2-renpypython2-requestspython2-requests-filepython2-requests-mockpython2-requests-oauthlibpython2-requests-toolbeltpython2-responsespython2-roca-detectpython2-rpythonpython2-rqpython2-rst.linkerpython2-ruamel.yamlpython2-s3transferpython2-scikit-learnpython2-scipypython2-scripttestpython2-seabornpython2-service-identitypython2-setuptools-scm-git-archivepython2-shpython2-shapelypython2-sockjs-tornadopython2-sphinx-cloud-spthemepython2-sphinxcontrib-programoutputpython2-sphinx-repoze-autointerfacepython2-statsmodelspython2-stempython2-stevedorepython2-tablespython2-terminadopython2-tldextractpython2-tornadopython2-translate-toolkitpython2-trollius-redispython2-twinepython2-urlgrabberpython2-urllib3python2-utilspython2-validatorspython2-warpedlmmpython2-widgetsnbextensionpython2-wsgiproxy2python2-xenonpython2-yubikey-managerpython2-zope-componentpython2-zope-configurationpython2-zope-exceptionspython2-zope-i18nmessageidpython2-zope-locationpython2-zope-proxypython2-zope-schemapython2-zope-securitypython2-zope-testrunnerpython-argspython-aws-xray-sdkpython-bbknnpython-behave-web-apipython-bigfloatpython-btreespython-cachypython-clintpython-codacy-coveragepython-cypari2python-daemuxpython-dendropypython-django-auth-ldappython-django-bulk-updatepython-django-classy-tagspython-django-compressorpython-django-contact-formpython-django-debug-toolbarpython-django-debug-toolbar-alchemypython-django-extensionspython-django-filterpython-django-haystackpython-django-jinjapython-django-logging-jsonpython-django-mailman3python-django-netfieldspython-django-redispython-djangorestframeworkpython-django-rqpython-django-sekizaipython-django-statici18npython-django-url-filterpython-dockerpython-drmaapython-duniterpypython-eliotpython-enum34python-eventletpython-faisspython-fakeredispython-flasggerpython-flask-restpluspython-flask-sessionpython-flitpython-funcparserlibpython-graphenepython-gridmappython-gyppython-hackingpython-hdf4python-html5-parserpython-hypython-hyperkittypython-internetarchivepython-ipykernelpython-ipyparallelpython-ipython-cluster-helperpython-ipython-documentationpython-ipywidgetspython-jaraco-packagingpython-josepython-jsonpicklepython-jupyter-clientpython-jupyter-consolepython-jupyter-kernel-mgmtpython-jupyter-kernel-testpython-jupyter-protocolpython-keyringpython-keyrings.altpython-keystoneclientpython-kivypython-ldappython-lfdfilespython-libsasspython-logwrappython-mailman-hyperkittypython-mambapython-matplotlib-documentationpython-matrix-synapse-ldap3python-miniboapython-motopython-nautiluspython-nbvalpython-ndg-httpsclientpython-notebookpython-numpy-documentationpython-onnxpython-ont-fast5-apipython-openid-clapython-openid-teamspython-oratorpython-os-client-configpython-oslo.configpython-oslo.contextpython-oslo.i18npython-oslo.logpython-oslo.serializationpython-oslosphinxpython-oslo.utilspython-os-testrpython-owslibpython-pafypython-parallelpython-pari-jupyterpython-pathpypython-pendulumpython-persistentpython-petsc4pypython-pifpafpython-plotlypython-py3dnspython-pyacoustidpython-pyclipperpython-pydubpython-pykafkapython-pykkapython-pylibmcpython-pyramidpython-pytest-arraydiffpython-pytest-checkdocspython-pytest-djangopython-pytest-mplpython-pytest-shutilpython-pytest-virtualenvpython-pytidylibpython-pyxbpython-qdarkstylepython-qtconsolepython-qtpypython-radonpython-scripttestpython-setoolspython-setuptools-scm-git-archivepython-slepc4pypython-socksipychainpython-sphinx-copybuttonpython-stestrpython-swiftclientpython-symenginepython-tempest-libpython-tortoise-ormpython-translate-toolkitpython-translation-finderpython-trollius-redispython-trytond-accountpython-trytond-account-invoicepython-trytond-account-invoice-stockpython-trytond-account-productpython-trytond-analytic-accountpython-trytond-companypython-trytond-countrypython-trytond-currencypython-trytond-partypython-trytond-productpython-trytond-purchasepython-trytond-purchase-requestpython-trytond-stockpython-trytond-stock-lotpython-trytond-stock-supplypython-txacmepython-typingpython-widgetsnbextensionpython-xattrpython-xenonpython-zope-componentpython-zope-configurationpython-zope-copypython-zope-deferredimportpython-zope-exceptionspython-zope-i18nmessageidpython-zope-locationpython-zope-proxypython-zope-schemapython-zope-securitypython-zope-testrunnerqutebrowserrapid-photo-downloaderrenpyreprotestribodiffrtvsilkajsolaarsynapsesyncthing-gtktadbittaxtastictbsptrezor-agenttuirunknown-horizonsvirtaalxprayou-getyoutube-dlyoutube-dl-gui