From: "Léo Le Bouter via Guix-patches via" <guix-patches@gnu.org>
To: Chris Marusich <cmmarusich@gmail.com>, Carl Dong <contact@carldong.me>
Cc: 47349@debbugs.gnu.org
Subject: [bug#47349] [PATCH] gnu: cross-base: Relax check for powerpc64le
Date: Fri, 26 Mar 2021 15:33:03 +0100 [thread overview]
Message-ID: <796a3aa4e83a7ae6526b3553970150a91ab8307b.camel@zaclys.net> (raw)
In-Reply-To: <871rc2bfb9.fsf@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 26067 bytes --]
On Thu, 2021-03-25 at 23:27 -0700, Chris Marusich wrote:
> Hi people,
>
> Carl Dong <contact@carldong.me> writes:
>
> > * gnu/packages/cross-base.scm (cross-gcc-arguments): Check for
> > "powerpc64le-" prefix for "--with-long-double-128" instead of
> > matching
> > full target.
>
> This patch looks good to me. I confirmed it doesn't rebuild the
> world.
> We can apply it to master. I will do this in the next few days
> unless
> somebody else has further comments on this patch specifically.
>
> While reviewing this patch, I noticed that surprisingly, we do not
> use
> --with-long-double in the following places:
>
> - The gcc package (a GCC v7.5.0 native compiler) on powerpc64le-linux
> systems.
>
> - The gcc-final package (a GCC v7.5.0 native compiler) on
> powerpc64le-linux systems.
>
> - The %bootstrap-gcc package (a GCC v5.5.0 native compiler) on
> powerpc64le-linux systems.
>
> - The %gcc-static package (a GCC v5.5.0 native compiler), when
> cross-compiled for the powerpc64le-linux-gnu target on an x86_64-
> linux
> system. (Note that this is actually the same GCC that on
> powerpc64le-linux systems is known as %bootstrap-gcc.)
>
> Obviously, %bootstrap-gcc is good enough to build gcc-final, and
> gcc-final is good enough to build various things, including GNU Hello
> and GNU Guix itself. We have verified this. However, Leo, do you
> think
> it would be a good idea to add --with-long-double to the gcc and
> gcc-final package definitions on powerpc64le-linux, anyway? Perhaps
> it
> actually is needed, but we just haven't yet encountered the problems
> that it would solve. What do you think, Leo?
>
> You can inspect the packages to see this yourself, but you can also
> ask
> Guix to tell you about the configure options. Here is what Guix says
> about the configure options for the gcc and gcc-final packages on a
> powerpc64le-linux system using commit
> b0eb525ddba77420ff8c0930b9173b10f9ae342d:
>
> --8<---------------cut here---------------start------------->8---
> scheme@(guix-user)> ,pp (bag-arguments (package->bag (@ (gnu packages
> gcc) gcc)))
> $3 = (#:system
> "powerpc64le-linux"
> #:out-of-source?
> #t
> #:configure-flags
> `("--enable-plugin"
> "--enable-languages=c,c++"
> "--disable-multilib"
> "--with-system-zlib"
> "--disable-libstdcxx-pch"
> "--with-local-prefix=/no-gcc-local-prefix"
> ,(string-append
> "--with-gxx-include-dir="
> (assoc-ref %outputs "out")
> "/include/c++")
> ,(let ((libc (assoc-ref %build-inputs "libc")))
> (if libc
> (string-append
> "--with-native-system-header-dir="
> libc
> "/include")
> "--without-headers")))
> #:make-flags
> (let* ((libc (assoc-ref %build-inputs "libc"))
> (libc-native
> (or (assoc-ref %build-inputs "libc-native") libc)))
> `(,@(if libc
> (list (string-append
> "LDFLAGS_FOR_TARGET="
> "-B"
> libc
> "/lib "
> "-Wl,-dynamic-linker "
> "-Wl,"
> libc
> "/lib/ld64.so.2"))
> '())
> ,(string-append
> "LDFLAGS="
> "-Wl,-rpath="
> libc-native
> "/lib "
> "-Wl,-dynamic-linker "
> "-Wl,"
> libc-native
> "/lib/ld64.so.2")
> ,(string-append "BOOT_CFLAGS=-O2 " "-g0")))
> #:tests?
> #f
> #:phases
> (modify-phases
> %standard-phases
> (add-before
> 'configure
> 'pre-configure
> (lambda* (#:key inputs outputs #:allow-other-keys)
> (let ((libdir
> (or (assoc-ref outputs "lib")
> (assoc-ref outputs "out")))
> (libc (assoc-ref inputs "libc")))
> (when libc
> (for-each
> (lambda (x)
> (substitute*
> (find-files
> "gcc/config"
> "^(linux|gnu|sysv4)(64|-elf|-eabi)?\\.h$")
> (("(#define
> (GLIBC|GNU_USER)_DYNAMIC_LINKER.*)\\\\\n$"
> _
> line)
> line)))
> '(1 2 3))
> (substitute*
> (find-files
> "gcc/config"
> "^(linux|gnu|sysv4)(64|-elf|-eabi)?\\.h$")
> (("#define (GLIBC|GNU_USER)_DYNAMIC_LINKER([^
> \t]*).*$"
> _
> gnu-user
> suffix)
> (format
> #f
> "#define ~a_DYNAMIC_LINKER~a \"~a\"~%"
> gnu-user
> suffix
> (string-append libc "/lib/ld64.so.2"))))
> (substitute*
> (find-files "gcc/config" "^gnu-user.*\\.h$")
> (("#define GNU_USER_TARGET_LIB_SPEC (.*)$"
> _
> suffix)
> (format
> #f
> "#define GNU_USER_TARGET_LIB_SPEC \"-L~a/lib
> %{!static:-rpath=~a/lib %{!static-libgcc:-rpath=~a/lib -lgcc_s}} \"
> ~a"
> libc
> libc
> libdir
> suffix))
> (("#define GNU_USER_TARGET_STARTFILE_SPEC.*$"
> line)
> (format
> #f
> "#define STANDARD_STARTFILE_PREFIX_1
> \"~a/lib\"\n#define STANDARD_STARTFILE_PREFIX_2 \"\"\n~a"
> libc
> line)))
> (substitute*
> "gcc/config/rs6000/sysv4.h"
> (("#define LIB_LINUX_SPEC (.*)$" _ suffix)
> (format
> #f
> "#define LIB_LINUX_SPEC \"-L~a/lib %{!static:-
> rpath=~a/lib %{!static-libgcc:-rpath=~a/lib -lgcc_s}} \" ~a"
> libc
> libc
> libdir
> suffix))
> (("#define\tSTARTFILE_LINUX_SPEC.*$" line)
> (format
> #f
> "#define STANDARD_STARTFILE_PREFIX_1
> \"~a/lib\"\n#define STANDARD_STARTFILE_PREFIX_2 \"\"\n~a"
> libc
> line))))
> (when (file-exists? "gcc/config/rs6000")
> (substitute*
> (find-files "gcc/config/rs6000")
> (("/lib64") "/lib")))
> (substitute*
> "fixincludes/fixincl.x"
> (("static char const sed_cmd_z\\[\\] =.*;")
> "static char const sed_cmd_z[] = \"sed\";"))
> (when (file-exists? "gcc/config/aarch64")
> (substitute*
> "gcc/config/aarch64/t-aarch64-linux"
> (("lib64") "lib")))
> (when (file-exists? "libbacktrace")
> (substitute*
> "libbacktrace/configure"
> (("WARN_FLAGS=(.*)-Werror" _ flags)
> (string-append "WARN_FLAGS=" flags)))
> (when (file-exists? "libsanitizer/libbacktrace")
> (substitute*
> "libsanitizer/libbacktrace/Makefile.in"
> (("-Werror") ""))))
> (substitute*
> "libstdc++-v3/src/Makefile.in"
> (("^OPT_LDFLAGS = ")
> "OPT_LDFLAGS = -Wl,-rpath=$(libdir) "))
> (substitute*
> "libstdc++-v3/python/Makefile.in"
> (("pythondir = .*$")
> (string-append
> "pythondir = "
> libdir
> "/share"
> "/gcc-$(gcc_version)/python\n")))
> (substitute*
> "gcc/config.in"
> (("PREFIX_INCLUDE_DIR")
> "PREFIX_INCLUDE_DIR_isnt_necessary_here"))
> #t)))
> (add-after
> 'configure
> 'post-configure
> (lambda _
> (substitute*
> "Makefile"
> (("^TOPLEVEL_CONFIGURE_ARGUMENTS=(.*)$" _ rest)
> "TOPLEVEL_CONFIGURE_ARGUMENTS=\n"))
> #t))))
> scheme@(guix-user)> ,pp (bag-arguments (package->bag (@@ (gnu
> packages commencement) gcc-final)))
> $4 = (#:system
> "powerpc64le-linux"
> #:guile
> #<package guile-bootstrap@2.0 gnu/packages/bootstrap.scm:478
> 7fff75bdcf00>
> #:allowed-references
> ("out"
> "lib"
> #<package zlib@1.2.11 gnu/packages/commencement.scm:3562
> 7fff692745a0>
> #<package glibc@2.31 gnu/packages/commencement.scm:3462
> 7fff69274820>
> #<package bash-static@5.0.16 gnu/packages/commencement.scm:3402
> 7fff69274960>)
> #:validate-runpath?
> #f
> #:out-of-source?
> #t
> #:configure-flags
> `("--enable-plugin"
> "--enable-languages=c,c++"
> "--disable-multilib"
> "--with-system-zlib"
> "--disable-libstdcxx-pch"
> "--with-local-prefix=/no-gcc-local-prefix"
> ,(string-append
> "--with-gxx-include-dir="
> (assoc-ref %outputs "out")
> "/include/c++")
> ,(let ((libc (assoc-ref %build-inputs "libc")))
> (if libc
> (string-append
> "--with-native-system-header-dir="
> libc
> "/include")
> "--without-headers")))
> #:make-flags
> (let ((zlib (assoc-ref %build-inputs "zlib")))
> (map (lambda (flag)
> (if (string-prefix? "LDFLAGS=" flag)
> (string-append
> flag
> " -L"
> (assoc-ref %build-inputs "libstdc++")
> "/lib -L"
> zlib
> "/lib -Wl,-rpath="
> zlib
> "/lib")
> flag))
> (let* ((libc (assoc-ref %build-inputs "libc"))
> (libc-native
> (or (assoc-ref %build-inputs "libc-native") libc)))
> `(,@(if libc
> (list (string-append
> "LDFLAGS_FOR_TARGET="
> "-B"
> libc
> "/lib "
> "-Wl,-dynamic-linker "
> "-Wl,"
> libc
> "/lib/ld64.so.2"))
> '())
> ,(string-append
> "LDFLAGS="
> "-Wl,-rpath="
> libc-native
> "/lib "
> "-Wl,-dynamic-linker "
> "-Wl,"
> libc-native
> "/lib/ld64.so.2")
> ,(string-append "BOOT_CFLAGS=-O2 " "-g0")))))
> #:tests?
> #f
> #:phases
> (modify-phases
> (modify-phases
> %standard-phases
> (add-before
> 'configure
> 'pre-configure
> (lambda* (#:key inputs outputs #:allow-other-keys)
> (let ((libdir
> (or (assoc-ref outputs "lib")
> (assoc-ref outputs "out")))
> (libc (assoc-ref inputs "libc")))
> (when libc
> (for-each
> (lambda (x)
> (substitute*
> (find-files
> "gcc/config"
> "^(linux|gnu|sysv4)(64|-elf|-eabi)?\\.h$")
> (("(#define
> (GLIBC|GNU_USER)_DYNAMIC_LINKER.*)\\\\\n$"
> _
> line)
> line)))
> '(1 2 3))
> (substitute*
> (find-files
> "gcc/config"
> "^(linux|gnu|sysv4)(64|-elf|-eabi)?\\.h$")
> (("#define (GLIBC|GNU_USER)_DYNAMIC_LINKER([^
> \t]*).*$"
> _
> gnu-user
> suffix)
> (format
> #f
> "#define ~a_DYNAMIC_LINKER~a \"~a\"~%"
> gnu-user
> suffix
> (string-append libc "/lib/ld64.so.2"))))
> (substitute*
> (find-files "gcc/config" "^gnu-user.*\\.h$")
> (("#define GNU_USER_TARGET_LIB_SPEC (.*)$"
> _
> suffix)
> (format
> #f
> "#define GNU_USER_TARGET_LIB_SPEC \"-L~a/lib
> %{!static:-rpath=~a/lib %{!static-libgcc:-rpath=~a/lib -lgcc_s}} \"
> ~a"
> libc
> libc
> libdir
> suffix))
> (("#define GNU_USER_TARGET_STARTFILE_SPEC.*$"
> line)
> (format
> #f
> "#define STANDARD_STARTFILE_PREFIX_1
> \"~a/lib\"\n#define STANDARD_STARTFILE_PREFIX_2 \"\"\n~a"
> libc
> line)))
> (substitute*
> "gcc/config/rs6000/sysv4.h"
> (("#define LIB_LINUX_SPEC (.*)$" _ suffix)
> (format
> #f
> "#define LIB_LINUX_SPEC \"-L~a/lib %{!static:-
> rpath=~a/lib %{!static-libgcc:-rpath=~a/lib -lgcc_s}} \" ~a"
> libc
> libc
> libdir
> suffix))
> (("#define\tSTARTFILE_LINUX_SPEC.*$" line)
> (format
> #f
> "#define STANDARD_STARTFILE_PREFIX_1
> \"~a/lib\"\n#define STANDARD_STARTFILE_PREFIX_2 \"\"\n~a"
> libc
> line))))
> (when (file-exists? "gcc/config/rs6000")
> (substitute*
> (find-files "gcc/config/rs6000")
> (("/lib64") "/lib")))
> (substitute*
> "fixincludes/fixincl.x"
> (("static char const sed_cmd_z\\[\\] =.*;")
> "static char const sed_cmd_z[] = \"sed\";"))
> (when (file-exists? "gcc/config/aarch64")
> (substitute*
> "gcc/config/aarch64/t-aarch64-linux"
> (("lib64") "lib")))
> (when (file-exists? "libbacktrace")
> (substitute*
> "libbacktrace/configure"
> (("WARN_FLAGS=(.*)-Werror" _ flags)
> (string-append "WARN_FLAGS=" flags)))
> (when (file-exists? "libsanitizer/libbacktrace")
> (substitute*
> "libsanitizer/libbacktrace/Makefile.in"
> (("-Werror") ""))))
> (substitute*
> "libstdc++-v3/src/Makefile.in"
> (("^OPT_LDFLAGS = ")
> "OPT_LDFLAGS = -Wl,-rpath=$(libdir) "))
> (substitute*
> "libstdc++-v3/python/Makefile.in"
> (("pythondir = .*$")
> (string-append
> "pythondir = "
> libdir
> "/share"
> "/gcc-$(gcc_version)/python\n")))
> (substitute*
> "gcc/config.in"
> (("PREFIX_INCLUDE_DIR")
> "PREFIX_INCLUDE_DIR_isnt_necessary_here"))
> #t)))
> (add-after
> 'configure
> 'post-configure
> (lambda _
> (substitute*
> "Makefile"
> (("^TOPLEVEL_CONFIGURE_ARGUMENTS=(.*)$" _ rest)
> "TOPLEVEL_CONFIGURE_ARGUMENTS=\n"))
> #t)))
> (add-after
> 'unpack
> 'unpack-gmp&co
> (lambda* (#:key inputs #:allow-other-keys)
> (let ((gmp (assoc-ref %build-inputs "gmp-source"))
> (mpfr (assoc-ref %build-inputs "mpfr-source"))
> (mpc (assoc-ref %build-inputs "mpc-source")))
> (for-each
> (lambda (source) (invoke "tar" "xvf" source))
> (list gmp mpfr mpc))
> (symlink "gmp-6.0.0" "gmp")
> (symlink "mpfr-4.0.2" "mpfr")
> (symlink "mpc-1.1.0" "mpc")
> #t)))))
> scheme@(guix-user)>
> --8<---------------cut here---------------end--------------->8---
>
> And here is what Guix says about the configure options for %gcc-
> static,
> when cross-compiled for powerpc64le-linux-gnu on an x86_64-linux
> system
> using commit 662e7e28d576ada91fc9dec7d27c100666114f03, which is the
> one
> we used to build the powerpc64le-linux bootstrap binaries:
>
> --8<---------------cut here---------------start------------->8---
> scheme@(guix-user)> package->bag
> $1 = #<procedure package->bag (package #:optional system target #:key
> graft?)>
> scheme@(guix-user)> ,pp (bag-arguments (package->bag (@@ (gnu
> packages make-bootstrap) %gcc-static) "x86_64-linux" "powerpc64le-
> linux-gnu"))
> $2 = (#:system
> "x86_64-linux"
> #:target
> "powerpc64le-linux-gnu"
> #:modules
> ((srfi srfi-1)
> (srfi srfi-26)
> (ice-9 regex)
> (guix build gnu-build-system)
> (guix build utils)
> (guix build gremlin)
> (guix elf))
> #:out-of-source?
> #t
> #:configure-flags
> (append
> (list "--disable-bootstrap"
> "--with-stage1-ldflags=-static"
> "--enable-languages=c,c++"
> "--disable-lto"
> "--disable-shared"
> "--disable-plugin"
> "--disable-libmudflap"
> "--disable-libatomic"
> "--disable-libsanitizer"
> "--disable-libitm"
> "--disable-libgomp"
> "--disable-libcilkrts"
> "--disable-libvtv"
> "--disable-libssp"
> "--disable-libquadmath")
> (remove
> (cut string-match
> "--(.*plugin|enable-languages)"
> <>)
> `("--enable-plugin"
> "--enable-languages=c,c++"
> "--disable-multilib"
> "--with-system-zlib"
> "--disable-libstdcxx-pch"
> "--with-local-prefix=/no-gcc-local-prefix"
> ,(string-append
> "--with-gxx-include-dir="
> (assoc-ref %outputs "out")
> "/include/c++")
> ,(let ((libc (assoc-ref %build-inputs "libc")))
> (if libc
> (string-append
> "--with-native-system-header-dir="
> libc
> "/include")
> "--without-headers"))
> "CC_FOR_TARGET=powerpc64le-linux-gnu-gcc"
> "CXX_FOR_TARGET=powerpc64le-linux-gnu-g++"
> "LD_FOR_TARGET=powerpc64le-linux-gnu-ld"
> "AR_FOR_TARGET=powerpc64le-linux-gnu-ar"
> "NM_FOR_TARGET=powerpc64le-linux-gnu-nm"
> "OBJDUMP_FOR_TARGET=powerpc64le-linux-gnu-objdump"
> "RANLIB_FOR_TARGET=powerpc64le-linux-gnu-ranlib"
> "STRIP_FOR_TARGET=powerpc64le-linux-gnu-strip")))
> #:make-flags
> '("CFLAGS=-g0 -O2")
> #:tests?
> #f
> #:phases
> (modify-phases
> (modify-phases
> %standard-phases
> (add-before
> 'configure
> 'pre-configure
> (lambda* (#:key inputs outputs #:allow-other-keys)
> (let ((libdir
> (string-append
> (or (assoc-ref outputs "lib")
> (assoc-ref outputs "out"))
> "/"
> "powerpc64le-linux-gnu"))
> (libc (assoc-ref inputs "libc")))
> (when libc
> (for-each
> (lambda (x)
> (substitute*
> (find-files
> "gcc/config"
> "^(linux|gnu|sysv4)(64|-elf|-eabi)?\\.h$")
> (("(#define
> (GLIBC|GNU_USER)_DYNAMIC_LINKER.*)\\\\\n$"
> _
> line)
> line)))
> '(1 2 3))
> (substitute*
> (find-files
> "gcc/config"
> "^(linux|gnu|sysv4)(64|-elf|-eabi)?\\.h$")
> (("#define (GLIBC|GNU_USER)_DYNAMIC_LINKER([^
> \t]*).*$"
> _
> gnu-user
> suffix)
> (format
> #f
> "#define ~a_DYNAMIC_LINKER~a \"~a\"~%"
> gnu-user
> suffix
> (string-append libc "/lib/ld64.so.2"))))
> (substitute*
> (find-files "gcc/config" "^gnu-user.*\\.h$")
> (("#define GNU_USER_TARGET_LIB_SPEC (.*)$"
> _
> suffix)
> (format
> #f
> "#define GNU_USER_TARGET_LIB_SPEC \"-L~a/lib
> %{!static:-rpath=~a/lib %{!static-libgcc:-rpath=~a/lib -lgcc_s}} \"
> ~a"
> libc
> libc
> libdir
> suffix))
> (("#define GNU_USER_TARGET_STARTFILE_SPEC.*$"
> line)
> (format
> #f
> "#define STANDARD_STARTFILE_PREFIX_1
> \"~a/lib\"\n#define STANDARD_STARTFILE_PREFIX_2 \"\"\n~a"
> libc
> line)))
> (substitute*
> "gcc/config/rs6000/sysv4.h"
> (("#define LIB_LINUX_SPEC (.*)$" _ suffix)
> (format
> #f
> "#define LIB_LINUX_SPEC \"-L~a/lib %{!static:-
> rpath=~a/lib %{!static-libgcc:-rpath=~a/lib -lgcc_s}} \" ~a"
> libc
> libc
> libdir
> suffix))
> (("#define\tSTARTFILE_LINUX_SPEC.*$" line)
> (format
> #f
> "#define STANDARD_STARTFILE_PREFIX_1
> \"~a/lib\"\n#define STANDARD_STARTFILE_PREFIX_2 \"\"\n~a"
> libc
> line))))
> (substitute*
> "fixincludes/fixincl.x"
> (("static char const sed_cmd_z\\[\\] =.*;")
> "static char const sed_cmd_z[] = \"sed\";"))
> (when (file-exists? "gcc/config/aarch64")
> (substitute*
> "gcc/config/aarch64/t-aarch64-linux"
> (("lib64") "lib")))
> (when (file-exists? "libbacktrace")
> (substitute*
> "libbacktrace/configure"
> (("WARN_FLAGS=(.*)-Werror" _ flags)
> (string-append "WARN_FLAGS=" flags)))
> (when (file-exists? "libsanitizer/libbacktrace")
> (substitute*
> "libsanitizer/libbacktrace/Makefile.in"
> (("-Werror") ""))))
> (substitute*
> "libstdc++-v3/src/Makefile.in"
> (("^OPT_LDFLAGS = ")
> "OPT_LDFLAGS = -Wl,-rpath=$(libdir) "))
> (substitute*
> "libstdc++-v3/python/Makefile.in"
> (("pythondir = .*$")
> (string-append
> "pythondir = "
> libdir
> "/share"
> "/gcc-$(gcc_version)/python\n")))
> (substitute*
> "gcc/config.in"
> (("PREFIX_INCLUDE_DIR")
> "PREFIX_INCLUDE_DIR_isnt_necessary_here"))
> #t)))
> (add-after
> 'configure
> 'post-configure
> (lambda _
> (substitute*
> "Makefile"
> (("^TOPLEVEL_CONFIGURE_ARGUMENTS=(.*)$" _ rest)
> "TOPLEVEL_CONFIGURE_ARGUMENTS=\n"))
> #t)))
> (add-after
> 'pre-configure
> 'remove-lgcc_s
> (lambda _
> (substitute*
> (cons "gcc/config/rs6000/sysv4.h"
> (find-files "gcc/config" "^gnu-user.*\\.h$"))
> ((" -lgcc_s}}") "}}"))
> #t)))
> #:guile
> #f)
> scheme@(guix-user)>
> --8<---------------cut here---------------end--------------->8---
>
> As you can see, --with-long-double-128 is missing in all three cases.
> And yet, the packages appear to work correctly. I do not know why,
> but
> I wonder if perhaps we should add --with-long-double-128 for gcc and
> gcc-static on powerpc64le-linux.
>
> A thought occurred to me: can we remove the --with-long-double-128
> from
> cross-base.scm and commencement.scm? As an experiment, I have tried
> removing it, and I can confirm that we do need it in both places.
> Removing it from cross-base.scm breaks the ability to create
> cross-compilers for the powerpc64le-linux-gnu target, and removing it
> from commencement.scm breaks the ability to build essentially
> anything
> on powerpc64le-linux. The failure mode in both cases is similar; in
> any
> case, we do need it in both of those places.
>
> I just don't understand why we apparently do NOT need this option in
> gcc, gcc-final, and %bootstrap-gcc on powerpc64le-linux. Like I
> said...maybe it really IS required there, too, but we just haven't
> encountered any problems yet... I don't know, and would welcome your
> thoughts.
>
> --
> Chris
Nice tricks to display package definitions, thanks for sharing ways to
do that!
I would say we wait for actual problems before trying to fix anything,
the switch is only needed for compiling Glibc AIUI.
Léo
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
prev parent reply other threads:[~2021-03-26 14:34 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-23 16:02 [bug#47349] [PATCH] gnu: cross-base: Relax check for powerpc64le Carl Dong
2021-03-25 16:09 ` Léo Le Bouter via Guix-patches via
2021-03-26 6:27 ` Chris Marusich
2021-03-26 10:31 ` Andreas Enge
2021-03-26 14:33 ` Léo Le Bouter via Guix-patches via [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=796a3aa4e83a7ae6526b3553970150a91ab8307b.camel@zaclys.net \
--to=guix-patches@gnu.org \
--cc=47349@debbugs.gnu.org \
--cc=cmmarusich@gmail.com \
--cc=contact@carldong.me \
--cc=lle-bout@zaclys.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).