~ruther/guix-local

99e0c4bc74670f9c25567781a3b243e6145f9406 — Marius Bakke 4 years ago 5940d4c
gnu: python-versioneer: Add support for Guix build directories.

* gnu/packages/patches/python-versioneer-guix-support.patch: New file.
* gnu/local.mk (dist_patch_DATA): Adjust accordingly.
* gnu/packages/python-xyz.scm (python-versioneer)[source](patches): New field.
M gnu/local.mk => gnu/local.mk +1 -0
@@ 1691,6 1691,7 @@ dist_patch_DATA =						\
  %D%/packages/patches/python2-subprocess32-disable-input-test.patch	\
  %D%/packages/patches/python-unittest2-python3-compat.patch	\
  %D%/packages/patches/python-unittest2-remove-argparse.patch	\
  %D%/packages/patches/python-versioneer-guix-support.patch	\
  %D%/packages/patches/python-waitress-fix-tests.patch		\
  %D%/packages/patches/python-werkzeug-tests.patch		\
  %D%/packages/patches/qemu-build-info-manual.patch		\

A gnu/packages/patches/python-versioneer-guix-support.patch => gnu/packages/patches/python-versioneer-guix-support.patch +35 -0
@@ 0,0 1,35 @@
Versioneer does not work in the Guix build container because:

* VCS information is unavailable
* the build directory does not have the supported "$name-$version" format
* as of 0.21, versioneer has no way to override the discovered values

This patch adds support for extracting version from the
'/tmp/guix-build-foo-0.1.drv-0' style directories created by the daemon.

diff --git a/src/from_parentdir.py b/src/from_parentdir.py
index 69ada9a..e0fac8f 100644
--- a/src/from_parentdir.py
+++ b/src/from_parentdir.py
@@ -15,6 +15,21 @@ def versions_from_parentdir(parentdir_prefix, root, verbose):
             return {"version": dirname[len(parentdir_prefix):],
                     "full-revisionid": None,
                     "dirty": False, "error": None, "date": None}
+        # Guix specific patch: try extracting the version from the build
+        # directory.
+        elif dirname.startswith("guix-build-"):
+            delimiter = dirname.rindex(".drv-")
+            name_and_version = dirname[11:delimiter]
+            if name_and_version.startswith(parentdir_prefix):
+                guix_version = name_and_version[len(parentdir_prefix):]
+            elif name_and_version.startswith("python-{}".format(parentdir_prefix)):
+                guix_version = name_and_version[(7 + len(parentdir_prefix)):]
+            else:
+                break
+            return {"version": guix_version,
+                    "full-revisionid": None,
+                    "dirty": False, "error": None, "date": None}
+
         rootdirs.append(root)
         root = os.path.dirname(root)  # up a level
 

M gnu/packages/python-xyz.scm => gnu/packages/python-xyz.scm +2 -1
@@ 26014,7 26014,8 @@ applications with variable CPU loads).")
       (uri (pypi-uri "versioneer" version))
       (sha256
        (base32
         "084fglxafbzvf1vbkzfajvs9qwnvjwwn8pxql9nrlpyipv5xpwk4"))))
         "084fglxafbzvf1vbkzfajvs9qwnvjwwn8pxql9nrlpyipv5xpwk4"))
       (patches (search-patches "python-versioneer-guix-support.patch"))))
    (build-system python-build-system)
    (home-page
     "https://github.com/python-versioneer/python-versioneer")