unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#37924] [PATCH] gnu: Fix make-gcc-libc
@ 2019-10-25 15:40 Carl Dong
  2019-10-25 16:21 ` [bug#37924] [PATCH 2/2] ci: Add 'make-gcc-toolchain' packages Carl Dong
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Carl Dong @ 2019-10-25 15:40 UTC (permalink / raw)
  To: 37924

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.

-----

Until now the following wouldn't build:
--8<---------------cut here---------------start------------->8---
(use-modules (gnu packages commencement)
             (gnu packages gcc)
             (gnu packages base))

(make-gcc-libc gcc-9 glibc-2.27)
--8<---------------cut here---------------end--------------->8---

* 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(-)

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
--
2.23.0

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [bug#37924] [PATCH 2/2] ci: Add 'make-gcc-toolchain' packages
  2019-10-25 15:40 [bug#37924] [PATCH] gnu: Fix make-gcc-libc Carl Dong
@ 2019-10-25 16:21 ` Carl Dong
  2019-11-04 22:22   ` Ludovic Courtès
  2019-11-04 22:18 ` [bug#37924] [PATCH] gnu: Fix make-gcc-libc Ludovic Courtès
  2019-11-16 16:36 ` bug#37924: " Ludovic Courtès
  2 siblings, 1 reply; 5+ messages in thread
From: Carl Dong @ 2019-10-25 16:21 UTC (permalink / raw)
  To: 37924@debbugs.gnu.org

* gnu/ci.scm (%core-packages): Add 'glibc-2.28', a toolchain with
default 'gcc', and a toolchain targeting 'glibc-2.28'.
---
 gnu/ci.scm | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/gnu/ci.scm b/gnu/ci.scm
index 5d5a826647..74df3c34ab 100644
--- a/gnu/ci.scm
+++ b/gnu/ci.scm
@@ -110,9 +110,11 @@ SYSTEM."
   ;; Note: Don't put the '-final' package variants because (1) that's
   ;; implicit, and (2) they cannot be cross-built (due to the explicit input
   ;; chain.)
-  (list gcc-4.8 gcc-4.9 gcc-5 glibc binutils
+  (list gcc-4.8 gcc-4.9 gcc-5 glibc glibc-2.28 binutils
         gmp mpfr mpc coreutils findutils diffutils patch sed grep
         gawk gnu-gettext hello guile-2.0 guile-2.2 zlib gzip xz
+        (make-gcc-toolchain gcc)
+        (make-gcc-toolchain gcc glibc-2.28)
         %bootstrap-binaries-tarball
         %binutils-bootstrap-tarball
         (%glibc-bootstrap-tarball)
--
2.23.0

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [bug#37924] [PATCH] gnu: Fix make-gcc-libc
  2019-10-25 15:40 [bug#37924] [PATCH] gnu: Fix make-gcc-libc Carl Dong
  2019-10-25 16:21 ` [bug#37924] [PATCH 2/2] ci: Add 'make-gcc-toolchain' packages Carl Dong
@ 2019-11-04 22:18 ` Ludovic Courtès
  2019-11-16 16:36 ` bug#37924: " Ludovic Courtès
  2 siblings, 0 replies; 5+ messages in thread
From: Ludovic Courtès @ 2019-11-04 22:18 UTC (permalink / raw)
  To: Carl Dong; +Cc: 37924

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’.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [bug#37924] [PATCH 2/2] ci: Add 'make-gcc-toolchain' packages
  2019-10-25 16:21 ` [bug#37924] [PATCH 2/2] ci: Add 'make-gcc-toolchain' packages Carl Dong
@ 2019-11-04 22:22   ` Ludovic Courtès
  0 siblings, 0 replies; 5+ messages in thread
From: Ludovic Courtès @ 2019-11-04 22:22 UTC (permalink / raw)
  To: Carl Dong; +Cc: 37924@debbugs.gnu.org

Hi,

Carl Dong <contact@carldong.me> skribis:

> * gnu/ci.scm (%core-packages): Add 'glibc-2.28', a toolchain with
> default 'gcc', and a toolchain targeting 'glibc-2.28'.

The problem is ‘%core-packages’ is only built when we explicitly choose
the “core” subset in CI (which we do only when experimenting with
‘core-updates’ early on); in other cases, all the public packages get
built and ‘%core-packages’ does not matter.

Would it be an option to have:

  (define-public gcc/glibc-2.28
    (make-gcc-libc gcc glibc-2.28))

in (gnu packages base), or does that create circular dependency issues
(I don’t think so, but better be safe)?

If we did that, that package would automatically picked up in CI.

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#37924: [PATCH] gnu: Fix make-gcc-libc
  2019-10-25 15:40 [bug#37924] [PATCH] gnu: Fix make-gcc-libc Carl Dong
  2019-10-25 16:21 ` [bug#37924] [PATCH 2/2] ci: Add 'make-gcc-toolchain' packages Carl Dong
  2019-11-04 22:18 ` [bug#37924] [PATCH] gnu: Fix make-gcc-libc Ludovic Courtès
@ 2019-11-16 16:36 ` Ludovic Courtès
  2 siblings, 0 replies; 5+ messages in thread
From: Ludovic Courtès @ 2019-11-16 16:36 UTC (permalink / raw)
  To: Carl Dong; +Cc: 37924-done

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’.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-11-16 16:37 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-25 15:40 [bug#37924] [PATCH] gnu: Fix make-gcc-libc Carl Dong
2019-10-25 16:21 ` [bug#37924] [PATCH 2/2] ci: Add 'make-gcc-toolchain' packages Carl Dong
2019-11-04 22:22   ` Ludovic Courtès
2019-11-04 22:18 ` [bug#37924] [PATCH] gnu: Fix make-gcc-libc Ludovic Courtès
2019-11-16 16:36 ` bug#37924: " Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).