~ruther/guix-local

84209975fd6a475321e96a5243157a4b4a098a33 — Ludovic Courtès 13 years ago a436d20
build-system/gnu: Always invoke `configure' with a relative path.

* guix/build/gnu-build-system.scm (configure): Change SRCDIR to always
  be a relative path.
1 files changed, 11 insertions(+), 3 deletions(-)

M guix/build/gnu-build-system.scm
M guix/build/gnu-build-system.scm => guix/build/gnu-build-system.scm +11 -3
@@ 92,16 92,24 @@
                                                  includedir "/include"))
                             '())
                       ,@configure-flags))
         (srcdir     (getcwd)))
    (format #t "source directory: ~s~%" srcdir)
         (abs-srcdir (getcwd))
         (srcdir     (if out-of-source?
                         (string-append "../" (basename abs-srcdir))
                         ".")))
    (format #t "source directory: ~s (relative from build: ~s)~%"
            abs-srcdir srcdir)
    (if out-of-source?
        (begin
          (mkdir "../build")
          (chdir "../build")))
    (format #t "build directory: ~s~%" (getcwd))
    (format #t "configure flags: ~s~%" flags)

    ;; Call `configure' with a relative path.  Otherwise, GCC's build system
    ;; (for instance) records absolute source file names, which typically
    ;; contain the hash part of the `.drv' file, leading to a reference leak.
    (zero? (apply system*
                  (string-append (if out-of-source? srcdir ".") "/configure")
                  (string-append srcdir "/configure")
                  flags))))

(define* (build #:key (make-flags '()) (parallel-build? #t)