unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#36322] [PATCH 0/4] [core-updates] Fix cross-compiling bootstrap tarballs
@ 2019-06-21 12:24 Marius Bakke
  2019-06-21 12:26 ` [bug#36322] [PATCH 1/4] gnu: make-bootstrap: Remove obsolete header file Marius Bakke
  2022-04-07 13:18 ` [bug#36322] [PATCH 0/4] [core-updates] Fix cross-compiling bootstrap tarballs zimoun
  0 siblings, 2 replies; 7+ messages in thread
From: Marius Bakke @ 2019-06-21 12:24 UTC (permalink / raw)
  To: 36322

With these patches, we can again cross-compile the bootstrap tarballs on
core-updates.

As of commit bd0dc2df04a1550f41d3d5c7cc2c26ad12468b36, here are my
results for armhf and Hurd(!):

$ ./pre-inst-env guix build --target=arm-linux-gnueabihf bootstrap-tarballs 
/gnu/store/q245c0s6cc55ziamfxpv43lwbnxaw0n6-bootstrap-tarballs-0
$ guix hash -rx $(!!)
01lksw8qw973bc2lllz97pxm67x84rz8crbdiqwnlbyjq0j3mvaq

$ ./pre-inst-env guix build  --target=i586-pc-gnu bootstrap-tarballs
/gnu/store/4i3zxmzcrpg2h8inwgfd24sdsgan9jw7-bootstrap-tarballs-0
$ guix hash -rx $(!!)
17yjlqvwlv8v28qm5v888kshx30djylml9fgpwkcqvx3idzw7i1v

Now, I haven't actually tried bootstrapping a system from these yet.
Do we have automated tests for that?

Marius Bakke (4):
  gnu: make-bootstrap: Remove obsolete header file.
  gnu: make-bootstrap: Restore cross-compilation workarounds.
  gnu: make-bootstrap: Adjust for GCC 7.
  gnu: bootstrap-tarballs: Don't include the native mes when
    cross-compiling.

 gnu/packages/make-bootstrap.scm | 64 ++++++++++++++++++++++++---------
 guix/build/make-bootstrap.scm   |  1 -
 2 files changed, 47 insertions(+), 18 deletions(-)

-- 
2.22.0

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

* [bug#36322] [PATCH 1/4] gnu: make-bootstrap: Remove obsolete header file.
  2019-06-21 12:24 [bug#36322] [PATCH 0/4] [core-updates] Fix cross-compiling bootstrap tarballs Marius Bakke
@ 2019-06-21 12:26 ` Marius Bakke
  2019-06-21 12:26   ` [bug#36322] [PATCH 2/4] gnu: make-bootstrap: Restore cross-compilation workarounds Marius Bakke
                     ` (2 more replies)
  2022-04-07 13:18 ` [bug#36322] [PATCH 0/4] [core-updates] Fix cross-compiling bootstrap tarballs zimoun
  1 sibling, 3 replies; 7+ messages in thread
From: Marius Bakke @ 2019-06-21 12:26 UTC (permalink / raw)
  To: 36322

* guix/build/make-bootstrap.scm (copy-linux-headers): Do not install 'a.out.h'.
---
 guix/build/make-bootstrap.scm | 1 -
 1 file changed, 1 deletion(-)

diff --git a/guix/build/make-bootstrap.scm b/guix/build/make-bootstrap.scm
index e5ef1d6d2b..0d29338ce3 100644
--- a/guix/build/make-bootstrap.scm
+++ b/guix/build/make-bootstrap.scm
@@ -47,7 +47,6 @@ bootstrap libc."
                 (install-file (pk 'src (string-append kernel-headers "/include/linux/" file))
                               (pk 'dest (string-append incdir "/linux"))))
               '(
-                "a.out.h"               ; for 2.2.5
                 "atalk.h"               ; for 2.2.5
                 "errno.h"
                 "falloc.h"
-- 
2.22.0

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

* [bug#36322] [PATCH 2/4] gnu: make-bootstrap: Restore cross-compilation workarounds.
  2019-06-21 12:26 ` [bug#36322] [PATCH 1/4] gnu: make-bootstrap: Remove obsolete header file Marius Bakke
@ 2019-06-21 12:26   ` Marius Bakke
  2019-06-21 12:26   ` [bug#36322] [PATCH 3/4] gnu: make-bootstrap: Adjust for GCC 7 Marius Bakke
  2019-06-21 12:26   ` [bug#36322] [PATCH 4/4] gnu: bootstrap-tarballs: Don't include the native mes when cross-compiling Marius Bakke
  2 siblings, 0 replies; 7+ messages in thread
From: Marius Bakke @ 2019-06-21 12:26 UTC (permalink / raw)
  To: 36322

These workarounds were removed in cf8264364761857ca3550398369a0f20d7b0d512 and
218eb6e611c0a238802bf9cb5742d37cea0bb012, but were needed for %BOOTSTRAP-TARBALLS.

* gnu/packages/make-bootstrap.scm (%static-inputs)[coreutils, tar]: Add
<#:configure-flags>.
---
 gnu/packages/make-bootstrap.scm | 37 ++++++++++++++++++++++-----------
 1 file changed, 25 insertions(+), 12 deletions(-)

diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
index ec477da7c8..561a286d26 100644
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@ -150,7 +150,15 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
                            "--disable-silent-rules"
                            "--enable-no-install-program=stdbuf,libstdbuf.so"
                            "CFLAGS=-Os -g0"        ; smaller, please
-                           "LDFLAGS=-static -pthread")
+                           "LDFLAGS=-static -pthread"
+
+                           ;; Work around a cross-compilation bug whereby libcoreutils.a
+                           ;; would provide '__mktime_internal', which conflicts with the
+                           ;; one in libc.a.
+                           ,@(if (%current-target-system)
+                                 `("gl_cv_func_working_mktime=yes")
+                                 '()))
+
                          #:tests? #f   ; signal-related Gnulib tests fail
                          ,@(package-arguments coreutils)))
 
@@ -213,17 +221,22 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
                             '()))))
 	(tar (package (inherit tar)
 	       (arguments
-                (substitute-keyword-arguments (package-arguments tar)
-                  ((#:phases phases)
-                   `(modify-phases ,phases
-                      (replace 'set-shell-file-name
-                        (lambda _
-                          ;; Do not use "/bin/sh" to run programs; see
-                          ;; <http://lists.gnu.org/archive/html/guix-devel/2016-09/msg02272.html>.
-                          (substitute* "src/system.c"
-                            (("/bin/sh") "sh")
-                            (("execv ") "execvp "))
-                          #t))))))))
+                `(;; Work around a cross-compilation bug whereby libgnu.a would provide
+                  ;; '__mktime_internal', which conflicts with the one in libc.a.
+                  ,@(if (%current-target-system)
+                        `(#:configure-flags '("gl_cv_func_working_mktime=yes"))
+                        '())
+                  ,@(substitute-keyword-arguments (package-arguments tar)
+                      ((#:phases phases)
+                       `(modify-phases ,phases
+                          (replace 'set-shell-file-name
+                            (lambda _
+                              ;; Do not use "/bin/sh" to run programs; see
+                              ;; <http://lists.gnu.org/archive/html/guix-devel/2016-09/msg02272.html>.
+                              (substitute* "src/system.c"
+                                (("/bin/sh") "sh")
+                                (("execv ") "execvp "))
+                              #t)))))))))
         ;; We don't want to retain a reference to /gnu/store in the bootstrap
         ;; versions of egrep/fgrep, so we remove the custom phase added since
         ;; grep@2.25. The effect is 'egrep' and 'fgrep' look for 'grep' in
-- 
2.22.0

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

* [bug#36322] [PATCH 3/4] gnu: make-bootstrap: Adjust for GCC 7.
  2019-06-21 12:26 ` [bug#36322] [PATCH 1/4] gnu: make-bootstrap: Remove obsolete header file Marius Bakke
  2019-06-21 12:26   ` [bug#36322] [PATCH 2/4] gnu: make-bootstrap: Restore cross-compilation workarounds Marius Bakke
@ 2019-06-21 12:26   ` Marius Bakke
  2019-06-21 12:26   ` [bug#36322] [PATCH 4/4] gnu: bootstrap-tarballs: Don't include the native mes when cross-compiling Marius Bakke
  2 siblings, 0 replies; 7+ messages in thread
From: Marius Bakke @ 2019-06-21 12:26 UTC (permalink / raw)
  To: 36322

* gnu/packages/make-bootstrap.scm (package-with-relocatable-glibc)[native-inputs]:
Add SEARCH-PATHS to CROSS-GCC, and NATIVE-SEARCH-PATHS to the native GCC.
---
 gnu/packages/make-bootstrap.scm | 25 +++++++++++++++++++++----
 1 file changed, 21 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
index 561a286d26..df6b828a2d 100644
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@ -106,16 +106,33 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
 
   (define (native-inputs)
     (if (%current-target-system)
-        (let ((target (%current-target-system)))
-          `(("cross-gcc"      ,(cross-gcc target
-                                          #:xbinutils (cross-binutils target)
-                                          #:libc (cross-bootstrap-libc)))
+        (let* ((target (%current-target-system))
+               (xgcc (cross-gcc
+                      target
+                      #:xbinutils (cross-binutils target)
+                      #:libc (cross-bootstrap-libc))))
+          `(("cross-gcc" ,(package
+                            (inherit xgcc)
+                            (search-paths
+                             ;; Ensure the cross libc headers appears on the
+                             ;; C++ system header search path.
+                             (cons (search-path-specification
+                                    (variable "CROSS_CPLUS_INCLUDE_PATH")
+                                    (files '("include")))
+                                   (package-search-paths gcc)))))
             ("cross-binutils" ,(cross-binutils target))
             ,@(%final-inputs)))
         `(("libc" ,(glibc-for-bootstrap))
           ("libc:static" ,(glibc-for-bootstrap) "static")
           ("gcc" ,(package (inherit gcc)
                     (outputs '("out"))  ;all in one so libgcc_s is easily found
+                    (native-search-paths
+                     ;; Set CPLUS_INCLUDE_PATH so GCC is able to find the libc
+                     ;; C++ headers.
+                     (cons (search-path-specification
+                            (variable "CPLUS_INCLUDE_PATH")
+                            (files '("include")))
+                           (package-native-search-paths gcc)))
                     (inputs
                      `(;; Distinguish the name so we can refer to it below.
                        ("bootstrap-libc" ,(glibc-for-bootstrap))
-- 
2.22.0

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

* [bug#36322] [PATCH 4/4] gnu: bootstrap-tarballs: Don't include the native mes when cross-compiling.
  2019-06-21 12:26 ` [bug#36322] [PATCH 1/4] gnu: make-bootstrap: Remove obsolete header file Marius Bakke
  2019-06-21 12:26   ` [bug#36322] [PATCH 2/4] gnu: make-bootstrap: Restore cross-compilation workarounds Marius Bakke
  2019-06-21 12:26   ` [bug#36322] [PATCH 3/4] gnu: make-bootstrap: Adjust for GCC 7 Marius Bakke
@ 2019-06-21 12:26   ` Marius Bakke
  2 siblings, 0 replies; 7+ messages in thread
From: Marius Bakke @ 2019-06-21 12:26 UTC (permalink / raw)
  To: 36322

* gnu/packages/make-bootstrap.scm (%bootstrap-tarballs)[inputs]: Check
%CURRENT-TARGET-SYSTEM when deciding whether to use the reduced binary seeds.
---
 gnu/packages/make-bootstrap.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm
index df6b828a2d..2163b646f6 100644
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@ -825,7 +825,7 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
                    %build-inputs)
          #t)))
     (inputs `(("guile-tarball" ,%guile-bootstrap-tarball)
-              ,@(match (%current-system)
+              ,@(match (or (%current-target-system) (%current-system))
                   ((or "i686-linux" "x86_64-linux")
                    `(("bootstrap-mescc-tools" ,%mescc-tools-bootstrap-tarball)
                      ("bootstrap-mes" ,%mes-bootstrap-tarball)
-- 
2.22.0

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

* [bug#36322] [PATCH 0/4] [core-updates] Fix cross-compiling bootstrap tarballs
  2019-06-21 12:24 [bug#36322] [PATCH 0/4] [core-updates] Fix cross-compiling bootstrap tarballs Marius Bakke
  2019-06-21 12:26 ` [bug#36322] [PATCH 1/4] gnu: make-bootstrap: Remove obsolete header file Marius Bakke
@ 2022-04-07 13:18 ` zimoun
  2022-04-07 21:15   ` bug#36322: " Marius Bakke
  1 sibling, 1 reply; 7+ messages in thread
From: zimoun @ 2022-04-07 13:18 UTC (permalink / raw)
  To: Marius Bakke; +Cc: 36322

Hi Marius,

What is the status of this patch series [1]?

1: <http://issues.guix.gnu.org/issue/36322>


On Fri, 21 Jun 2019 at 14:24, Marius Bakke <mbakke@fastmail.com> wrote:
> With these patches, we can again cross-compile the bootstrap tarballs on
> core-updates.
>
> As of commit bd0dc2df04a1550f41d3d5c7cc2c26ad12468b36, here are my
> results for armhf and Hurd(!):
>
> $ ./pre-inst-env guix build --target=arm-linux-gnueabihf bootstrap-tarballs
> /gnu/store/q245c0s6cc55ziamfxpv43lwbnxaw0n6-bootstrap-tarballs-0
> $ guix hash -rx $(!!)
> 01lksw8qw973bc2lllz97pxm67x84rz8crbdiqwnlbyjq0j3mvaq
>
> $ ./pre-inst-env guix build  --target=i586-pc-gnu bootstrap-tarballs
> /gnu/store/4i3zxmzcrpg2h8inwgfd24sdsgan9jw7-bootstrap-tarballs-0
> $ guix hash -rx $(!!)
> 17yjlqvwlv8v28qm5v888kshx30djylml9fgpwkcqvx3idzw7i1v
>
> Now, I haven't actually tried bootstrapping a system from these yet.
> Do we have automated tests for that?

I think the next action is waiting an answer for this question,
eventually. :-)

> Marius Bakke (4):
>   gnu: make-bootstrap: Remove obsolete header file.
>   gnu: make-bootstrap: Restore cross-compilation workarounds.
>   gnu: make-bootstrap: Adjust for GCC 7.
>   gnu: bootstrap-tarballs: Don't include the native mes when
>     cross-compiling.
>
>  gnu/packages/make-bootstrap.scm | 64 ++++++++++++++++++++++++---------
>  guix/build/make-bootstrap.scm   |  1 -
>  2 files changed, 47 insertions(+), 18 deletions(-)


What would the next step?  More tests?  Merge into core-updates?  Other?


Cheers,
simon




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

* bug#36322: [PATCH 0/4] [core-updates] Fix cross-compiling bootstrap tarballs
  2022-04-07 13:18 ` [bug#36322] [PATCH 0/4] [core-updates] Fix cross-compiling bootstrap tarballs zimoun
@ 2022-04-07 21:15   ` Marius Bakke
  0 siblings, 0 replies; 7+ messages in thread
From: Marius Bakke @ 2022-04-07 21:15 UTC (permalink / raw)
  To: zimoun; +Cc: 36322-close

[-- Attachment #1: Type: text/plain, Size: 682 bytes --]

zimoun <zimon.toutoune@gmail.com> skriver:

> Hi Marius,
>
> What is the status of this patch series [1]?
>
> 1: <http://issues.guix.gnu.org/issue/36322>

[...]

>> Marius Bakke (4):
>>   gnu: make-bootstrap: Remove obsolete header file.
>>   gnu: make-bootstrap: Restore cross-compilation workarounds.
>>   gnu: make-bootstrap: Adjust for GCC 7.
>>   gnu: bootstrap-tarballs: Don't include the native mes when
>>     cross-compiling.
>>
>>  gnu/packages/make-bootstrap.scm | 64 ++++++++++++++++++++++++---------
>>  guix/build/make-bootstrap.scm   |  1 -
>>  2 files changed, 47 insertions(+), 18 deletions(-)

This series is long obsolete, closing!

Thanks for the reminder.  :-)

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 247 bytes --]

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

end of thread, other threads:[~2022-04-07 21:16 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-21 12:24 [bug#36322] [PATCH 0/4] [core-updates] Fix cross-compiling bootstrap tarballs Marius Bakke
2019-06-21 12:26 ` [bug#36322] [PATCH 1/4] gnu: make-bootstrap: Remove obsolete header file Marius Bakke
2019-06-21 12:26   ` [bug#36322] [PATCH 2/4] gnu: make-bootstrap: Restore cross-compilation workarounds Marius Bakke
2019-06-21 12:26   ` [bug#36322] [PATCH 3/4] gnu: make-bootstrap: Adjust for GCC 7 Marius Bakke
2019-06-21 12:26   ` [bug#36322] [PATCH 4/4] gnu: bootstrap-tarballs: Don't include the native mes when cross-compiling Marius Bakke
2022-04-07 13:18 ` [bug#36322] [PATCH 0/4] [core-updates] Fix cross-compiling bootstrap tarballs zimoun
2022-04-07 21:15   ` bug#36322: " Marius Bakke

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