Message ID | hSjH-FjbLGYW5vPHJ-VSp_Wgss1FA56r1qXDALf_s6GqNauS0PQJ3qoSA6rLju7GTKhozjqHAxZaXRXd1RnHGYnD6Bsl8O40OEJpWkYRJDs=@carldong.me |
---|---|
State | Accepted |
Headers | show |
Series | [bug#37924] gnu: Fix make-gcc-libc | expand |
Hi Carl, Carl Dong <contact@carldong.me> skribis: > Reviewers, would like some insight into whether it's okay to remove the > FLAGS_FOR_TARGET. From what I can tell it comes from CROSS-GCC-ARGUMENTS in (gnu > packages cross-base) which might not be needed here since we're not > cross-building. I've tested this toolchain built without FLAGS_FOR_TARGET and it > _seems_ to work fine. I think it wouldn’t hurt to keep FLAGS_FOR_TARGET, but like you write, it seems to be for cross-compilation only, so I guess it’s OK to remove it here since ‘make-gcc-libc’ is meant to build native toolchains anyway. > Until now the following wouldn't build: > > (use-modules (gnu packages commencement) > (gnu packages gcc) > (gnu packages base)) > > (make-gcc-libc gcc-9 glibc-2.27) > > * gnu/packages/base.scm (make-gcc-libc)[phases]: Add environment > variables to place the target libc on the system header search path. > [make-flags]: Remove unncessary FLAGS_FOR_TARGET. > [native-inputs]: Construct in a way that doesn't require emptying > inputs. LGTM, thank you! Ludo’.
Carl Dong <contact@carldong.me> skribis: > Until now the following wouldn't build: > > (use-modules (gnu packages commencement) > (gnu packages gcc) > (gnu packages base)) > > (make-gcc-libc gcc-9 glibc-2.27) > > * gnu/packages/base.scm (make-gcc-libc)[phases]: Add environment > variables to place the target libc on the system header search path. > [make-flags]: Remove unncessary FLAGS_FOR_TARGET. > [native-inputs]: Construct in a way that doesn't require emptying > inputs. > --- > gnu/packages/base.scm | 27 ++++++++++++++++----------- > 1 file changed, 16 insertions(+), 11 deletions(-) This was pushed as 2b1d708294f0aced5c991baed146e0ae4e7d63dd, closing! Ludo’.
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 4e80a2fadb..3a3360dc7a 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -981,18 +981,23 @@ with the Linux kernel.") (substitute-keyword-arguments (ensure-keyword-arguments (package-arguments base-gcc) '(#:implicit-inputs? #f)) - ((#:make-flags flags) - `(let ((libc (assoc-ref %build-inputs "libc"))) - ;; FLAGS_FOR_TARGET are needed for the target libraries to receive - ;; the -Bxxx for the startfiles. - (cons (string-append "FLAGS_FOR_TARGET=-B" libc "/lib") - ,flags))))) + ((#:phases phases) + `(modify-phases ,phases + (add-before 'configure 'treat-glibc-as-system-header + (lambda _ + (let ((libc (assoc-ref %build-inputs "libc"))) + ;; GCCs build processes requires that the libc + ;; we're building against is on the system header + ;; search path. + (for-each (lambda (var) + (setenv var (string-append libc "/include"))) + '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH")) + #t))))))) (native-inputs - `(("libc" ,libc) - ("libc:static" ,libc "static") - ,@(append (package-inputs base-gcc) - (fold alist-delete (%final-inputs) '("libc" "libc:static"))))) - (inputs '()))) + `(,@(package-native-inputs base-gcc) + ,@(append (fold alist-delete (%final-inputs) '("libc" "libc:static"))) + ("libc" ,libc) + ("libc:static" ,libc "static"))))) (define-public (make-glibc-locales glibc) (package