From 84209975fd6a475321e96a5243157a4b4a098a33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 30 Aug 2012 23:30:42 +0200 Subject: [PATCH] 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. --- guix/build/gnu-build-system.scm | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm index 5cc3629e27..a1a0f03467 100644 --- a/guix/build/gnu-build-system.scm +++ b/guix/build/gnu-build-system.scm @@ -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)