guix_mirror_bot pushed a commit to branch python-team
in repository guix.

commit eb03767cf3653e3db2911562813f2dc987692f7e
Author: Nicolas Graves <[email protected]>
AuthorDate: Thu Oct 30 23:45:22 2025 +0100

    gnu: meson: Use a custom build-system.
    
    This allows us to decouple meson and all its dependents from the
    pyproject-build-system, and avoid a lot of rebuilds (rusts, llvm...).
    
    * gnu/packages/build-tools.scm (meson)
    [build-system]: Replace pyproject-build-system with a patched
    gnu-build-system.
    [arguments]<#:phases>: Adapt accordindly.
    [native-inputs]: Replace python-setuptools by python-setuptools-bootstrap.
    
    Change-Id: Ieb4b007847d567aad04734a62cfc6c07e2bb2f96
    Signed-off-by: Sharlatan Hellseher <[email protected]>
---
 gnu/packages/build-tools.scm | 47 ++++++++++++++++++++++++++++----------------
 1 file changed, 30 insertions(+), 17 deletions(-)

diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
index 660bef2651..81c52bc17c 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -378,24 +378,37 @@ files and generates build instructions for the Ninja 
build system.")
               (sha256
                (base32
                 "13a9pj7d2mxgv5gbd78di4pb4w722vjis0vmk38m1vdm95v2f9yd"))))
-    (build-system pyproject-build-system)
+    (build-system gnu-build-system)
     (arguments
-     (list #:tests? #f                  ;disabled to avoid extra dependencies
-           #:phases
-           #~(modify-phases %standard-phases
-               ;; Meson calls the various executables in out/bin through the
-               ;; Python interpreter, so we cannot use the shell wrapper.
-               (replace 'wrap
-                 (lambda* (#:key inputs outputs #:allow-other-keys)
-                   (substitute* (search-input-file outputs "bin/meson")
-                     (("import sys" all)
-                      (string-append
-                       all "\n"
-                       "sys.path.insert(0, '"
-                       (site-packages inputs outputs)
-                       "')"))))))))
-    (native-inputs (list python-setuptools))
-    (inputs (list python ninja))
+     (list
+      #:tests? #f                       ;disabled to avoid extra dependencies
+      ;; Essentially a lighter copy of the former python-build-system.
+      ;; Using it rather than pyproject-build-system allows to edit the latter
+      ;; without a C++ world rebuild.
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'bootstrap)
+          (delete 'configure)
+          (replace 'build
+            (lambda _
+              (invoke "python" "./setup.py" "build")))
+          (replace 'install
+            (lambda _
+              (invoke "python" "./setup.py" "install"
+                      (string-append "--prefix=" #$output) "--no-compile")
+              (invoke "python" "-m" "compileall"
+                      "--invalidation-mode=unchecked-hash" #$output)))
+          ;; Meson calls the various executables in out/bin through the
+          ;; Python interpreter, so we cannot use the shell wrapper.
+          (add-after 'install 'wrap
+            (lambda _
+              (let* ((mdist (car (find-files #$output "^mdist\\.py$")))
+                     (site (dirname (dirname mdist))))
+                (substitute* (string-append #$output "/bin/meson")
+                  (("import sys" all)
+                   (format #f "~a~%sys.path.insert(0, ~s)" all site)))))))))
+    (native-inputs (list python-setuptools-bootstrap))
+    (inputs (list python-wrapper ninja))
     (home-page "https://mesonbuild.com/";)
     (synopsis "Build system designed to be fast and user-friendly")
     (description

Reply via email to