From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:470:142:3::10]:57346) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1izac1-0002PI-Hj for guix-patches@gnu.org; Thu, 06 Feb 2020 01:26:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1izabx-0001gx-W3 for guix-patches@gnu.org; Thu, 06 Feb 2020 01:26:05 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:41055) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1izabx-0001gR-Ro for guix-patches@gnu.org; Thu, 06 Feb 2020 01:26:01 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1izabx-0004gT-NG for guix-patches@gnu.org; Thu, 06 Feb 2020 01:26:01 -0500 Subject: [bug#39414] [PATCH 2/2] gnu: commencement: Rationalize search path handling. Resent-Message-ID: From: Jan Nieuwenhuizen References: <20200204130042.27757-1-ludo@gnu.org> <20200204130042.27757-2-ludo@gnu.org> Date: Thu, 06 Feb 2020 07:25:33 +0100 In-Reply-To: <20200204130042.27757-2-ludo@gnu.org> ("Ludovic \=\?utf-8\?Q\?Cou\?\= \=\?utf-8\?Q\?rt\=C3\=A8s\=22's\?\= message of "Tue, 4 Feb 2020 14:00:42 +0100") Message-ID: <871rr85j1e.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Cc: 39414@debbugs.gnu.org Ludovic Court=C3=A8s writes: > This commit ensures that only packages that correspond to compilers have > a search path set. It also reduces manual handling of search path > environment variables. Beautiful, thank you! > (native-inputs `(("binutils" ,binutils-mesboot0) > - ("gcc" ,gcc-core-mesboot) > + > + ;; GCC-CORE-MESBOOT must appear last because it also > + ;; provides libc headers from Mes that we want to s= hadow > + ;; with those of GLIBC-MESBOOT0. > ("libc" ,glibc-mesboot0) > + ("kernel-headers" ,%bootstrap-linux-libre-headers) > + ("gcc" ,gcc-core-mesboot) >=20=20 > ("bash" ,%bootstrap-coreutils&co) > ("coreutils" ,%bootstrap-coreutils&co) > ("diffutils" ,diffutils-mesboot) > - ("kernel-headers" ,%bootstrap-linux-libre-headers) > ("make" ,make-mesboot0))) Here it gets real interesting; it seems above you actually fix (or work around?) a bug that allowed you to... > (arguments > (substitute-keyword-arguments (package-arguments gcc-core-mesboot) > ((#:phases phases) > `(modify-phases ,phases > (replace 'setenv > - (lambda* (#:key outputs #:allow-other-keys) > - (let ((out (assoc-ref outputs "out")) > - (bash (assoc-ref %build-inputs "bash")) > - (gcc (assoc-ref %build-inputs "gcc")) > - (glibc (assoc-ref %build-inputs "libc")) > - (kernel-headers (assoc-ref %build-inputs "kernel-he= aders"))) > - (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) > - (format (current-error-port) "C_INCLUDE_PATH=3D~a\n" (g= etenv "C_INCLUDE_PATH")) > - (setenv "C_INCLUDE_PATH" (string-append > - gcc "/lib/gcc-lib/i686-unknow= n-linux-gnu/2.95.3/include" > - ":" kernel-headers "/include" > - ":" glibc "/include")) > - (format (current-error-port) "C_INCLUDE_PATH=3D~a\n" (g= etenv "C_INCLUDE_PATH")) > - (format (current-error-port) "LIBRARY_PATH=3D~a\n" (get= env "LIBRARY_PATH")) > - ;; FIXME: add glibc dirs to paths manually > - (setenv "LIBRARY_PATH" (string-join > - (list (string-append glibc "/li= b") > - (getenv "LIBRARY_PATH")) > - ":")) > - (format (current-error-port) "LIBRARY_PATH=3D~a\n" (get= env "LIBRARY_PATH")) > - (with-output-to-file "config.cache" > - (lambda _ > - (display " > + (lambda _ > + (setenv "CONFIG_SHELL" (which "sh")) > + (with-output-to-file "config.cache" > + (lambda _ > + (display " > ac_cv_c_float_format=3D'IEEE (little-endian)' > "))) > - #t))) > + #t)) remove this monster. Although I am especially happy with it, I am unsure exactly how it works. > - (lambda* (#:key outputs #:allow-other-keys) > - (let* ((out (assoc-ref outputs "out")) > - (binutils (assoc-ref %build-inputs "binutils")) > - (bash (assoc-ref %build-inputs "bash")) > - (gcc (assoc-ref %build-inputs "gcc")) > - (glibc (assoc-ref %build-inputs "libc")) > - (kernel-headers (assoc-ref %build-inputs "kernel-h= eaders"))) > - (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) > - (setenv "C_INCLUDE_PATH" (string-append > - gcc "/lib/gcc-lib/i686-unknow= n-linux-gnu/2.95.3/include" > - ":" kernel-headers "/include" > - ":" glibc "/include" > - ":" (getcwd) "/mpfr/src")) > - (setenv "LIBRARY_PATH" (string-append glibc "/lib" > - ":" gcc "/lib")) > - (format (current-error-port) "C_INCLUDE_PATH=3D~a\n" (g= etenv "C_INCLUDE_PATH")) > - (format (current-error-port) "LIBRARY_PATH=3D~a\n" (get= env "LIBRARY_PATH")) > - #t))) > + (lambda _ > + (setenv "CONFIG_SHELL" (which "sh")) > + > + ;; Allow MPFR headers to be found. > + (setenv "C_INCLUDE_PATH" > + (string-append (getcwd) "/mpfr/src:" > + (getenv "C_INCLUDE_PATH"))) > + > + ;; Set the C++ search path so that C headers can be found= as > + ;; libstdc++ is being compiled. > + (setenv "CPLUS_INCLUDE_PATH" (getenv "C_INCLUDE_PATH")) > + #t)) Similar here, > - "--disable-build-with-cxx"))) > - ((#:phases phases) > - `(modify-phases ,phases > - (replace 'setenv > - (lambda* (#:key outputs #:allow-other-keys) > - (let* ((out (assoc-ref outputs "out")) > - (binutils (assoc-ref %build-inputs "binutils")) > - (bash (assoc-ref %build-inputs "bash")) > - (gcc (assoc-ref %build-inputs "gcc")) > - (glibc (assoc-ref %build-inputs "libc")) > - (kernel-headers (assoc-ref %build-inputs "kern= el-headers"))) > - (setenv "CONFIG_SHELL" (string-append bash "/bin/sh= ")) > - (setenv "C_INCLUDE_PATH" (string-append > - gcc "/lib/gcc-lib/i686-un= known-linux-gnu/4.7.4/include" > - ":" kernel-headers "/incl= ude" > - ":" glibc "/include" > - ":" (getcwd) "/mpfr/src")) > - (setenv "CPLUS_INCLUDE_PATH" (string-append > - gcc "/lib/gcc-lib/i68= 6-unknown-linux-gnu/4.7.4/include" > - ":" kernel-headers "/= include" > - ":" glibc "/include" > - ":" (getcwd) "/mpfr/s= rc")) > - (setenv "LIBRARY_PATH" (string-append glibc "/lib" > - ":" gcc "/lib= ")) > - (format (current-error-port) "C_INCLUDE_PATH=3D~a\n= " (getenv "C_INCLUDE_PATH")) > - (format (current-error-port) "CPLUS_INCLUDE_PATH=3D= ~a\n" (getenv "CPLUS_INCLUDE_PATH")) > - (format (current-error-port) "LIBRARY_PATH=3D~a\n" = (getenv "LIBRARY_PATH")) > - #t)))))))))) > + "--disable-build-with-cxx")))))))) and same here. I tried your commit and it works for me. Rebasing `wip-bootstrap' onto it was some work as you might imagine. The good news is that I finally got it to "work" again (`wip-bootstrap' @ gitlab); the bad news is that I have kept (or put back, actually) one of these 'setenv phases in `gcc-mesboot0'. Well, that's for later worry; so this will need another look when merging the scheme-only "wip-bootsrap". For this patch: LVGTM (looks /very/ good to me!). Thank you! janneke --=20 Jan Nieuwenhuizen | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar=C2=AE http://AvatarAcademy.com