~ruther/guix-local

6454788a5cf79a217bda86d49a6e403cc803747f — Ludovic Courtès 2 years ago 9dab758
build-system/composer: Do not import host-side Guile-JSON modules.

Importing host-side (json …) modules would make builds dependent on the
Guile-JSON version currently installed by the user.  Use
‘with-extensions’ instead.

* guix/build-system/composer.scm (%composer-build-system-modules):
Remove (json …) modules.
(composer-build)[guile-json]: New variable.
[builder]: Wrap body in ‘with-extensions’.

Change-Id: Ibe565572d60481b31292d73c6fa23d42aa3ceecb
1 files changed, 29 insertions(+), 28 deletions(-)

M guix/build-system/composer.scm
M guix/build-system/composer.scm => guix/build-system/composer.scm +29 -28
@@ 62,10 62,6 @@
  ;; Build-side modules imported by default.
  `((guix build composer-build-system)
    (guix build union)
    (json)
    (json builder)
    (json parser)
    (json record)
    ,@%gnu-build-system-modules))

(define* (lower name


@@ 124,31 120,36 @@
                                    (guix build utils))))
  "Build SOURCE using PHP, and with INPUTS. This assumes that SOURCE provides
a 'composer.json' file as its build system."
  (define guile-json
    (module-ref (resolve-interface '(gnu packages guile))
                'guile-json-4))

  (define builder
    (with-imported-modules imported-modules
      #~(begin
          (use-modules #$@(sexp->gexp modules))

          #$(with-build-variables inputs outputs
              #~(composer-build
                 #:source #$source
                 #:system #$system
                 #:outputs %outputs
                 #:inputs %build-inputs
                 #:search-paths '#$(map search-path-specification->sexp
                                        search-paths)
                 #:phases #$phases
                 #:out-of-source? #$out-of-source?
                 #:composer-file #$composer-file
                 #:tests? #$tests?
                 #:test-target #$test-target
                 #:test-flags #$test-flags
                 #:install-target #$install-target
                 #:validate-runpath? #$validate-runpath?
                 #:patch-shebangs? #$patch-shebangs?
                 #:strip-binaries? #$strip-binaries?
                 #:strip-flags #$strip-flags
                 #:strip-directories #$strip-directories)))))
    (with-extensions (list guile-json)
      (with-imported-modules imported-modules
        #~(begin
            (use-modules #$@(sexp->gexp modules))

            #$(with-build-variables inputs outputs
                #~(composer-build
                   #:source #$source
                   #:system #$system
                   #:outputs %outputs
                   #:inputs %build-inputs
                   #:search-paths '#$(map search-path-specification->sexp
                                          search-paths)
                   #:phases #$phases
                   #:out-of-source? #$out-of-source?
                   #:composer-file #$composer-file
                   #:tests? #$tests?
                   #:test-target #$test-target
                   #:test-flags #$test-flags
                   #:install-target #$install-target
                   #:validate-runpath? #$validate-runpath?
                   #:patch-shebangs? #$patch-shebangs?
                   #:strip-binaries? #$strip-binaries?
                   #:strip-flags #$strip-flags
                   #:strip-directories #$strip-directories))))))

  (gexp->derivation name builder
                    #:system system