unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
* bug#49417: glibc uses "objcopy", but seems to need "TARGET-objcopy" [core-updates]
@ 2021-07-05 13:42 Maxime Devos
  2021-07-06 14:49 ` Ludovic Courtès
  0 siblings, 1 reply; 3+ messages in thread
From: Maxime Devos @ 2021-07-05 13:42 UTC (permalink / raw)
  To: 49417

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

User: guix-devel@gnu.org
Usertags: powerpc64le-linux

Here is an extract from the build log
(<https://ci.guix.gnu.org/build/654298/log/raw>)

/gnu/store/ar373sjda7fz0m4mav6rdfmv49vv6r87-bash-minimal-5.1.8/bin/sh ../scripts/move-if-change /tmp/guix-build-glibc-cross-powerpc64le-linux-gnu-2.33.drv-0/build/gnu/lib-names-64-v2.T /tmp/guix-
build-glibc-cross-powerpc64le-linux-gnu-2.33.drv-0/build/gnu/lib-names-64-v2.h
objcopy --dump-section=.gnu.attributes=/tmp/guix-build-glibc-cross-powerpc64le-linux-gnu-2.33.drv-0/build/no_ldbl_gnu_attribute.bin.tmp /tmp/guix-build-glibc-cross-powerpc64le-linux-gnu-2.33.drv-
0/build/no_ldbl_gnu_attribute.o
touch /tmp/guix-build-glibc-cross-powerpc64le-linux-gnu-2.33.drv-0/build/libc-abis.stamp
touch /tmp/guix-build-glibc-cross-powerpc64le-linux-gnu-2.33.drv-0/build/dl-tunable-list.stmp
objcopy: Unable to recognise the format of the input file `/tmp/guix-build-glibc-cross-powerpc64le-linux-gnu-2.33.drv-0/build/no_ldbl_gnu_attribute.o'
make[2]: *** [../sysdeps/powerpc/powerpc64/le/Makefile:31: /tmp/guix-build-glibc-cross-powerpc64le-linux-gnu-2.33.drv-0/build/no_ldbl_gnu_attribute.bin] Error 1
make[2]: *** Waiting for unfinished jobs....

That looks like the earlier issue we had with "objdump" vs. "TARGET-objdump" ...
Maybe a similar fix is possible?

Greetings,
Maxime.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 260 bytes --]

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

* bug#49417: glibc uses "objcopy", but seems to need "TARGET-objcopy" [core-updates]
  2021-07-05 13:42 bug#49417: glibc uses "objcopy", but seems to need "TARGET-objcopy" [core-updates] Maxime Devos
@ 2021-07-06 14:49 ` Ludovic Courtès
  2021-07-07 22:40   ` Ludovic Courtès
  0 siblings, 1 reply; 3+ messages in thread
From: Ludovic Courtès @ 2021-07-06 14:49 UTC (permalink / raw)
  To: Maxime Devos; +Cc: 49417

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

Hi,

Maxime Devos <maximedevos@telenet.be> skribis:

> That looks like the earlier issue we had with "objdump" vs. "TARGET-objdump" ...
> Maybe a similar fix is possible?

Yes, indeed.  The attached patch does that and fixes the issue.

I’ll inline the patch in the ‘patches’ field and commit that later on so
as to group world rebuilds a bit.  I’ll send it to libc-alpha too.

(Initially I tried patching just
sysdeps/powerpc/powerpc64/le/configure.ac but that’s not sufficient.)

Thanks,
Ludo’.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 5330 bytes --]

diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index ced226ef34..82af27e0b4 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -486,6 +486,11 @@ and the cross tool chain."
                    #:xbinutils xbinutils)
       (package
         (inherit libc)
+        (source (origin
+                  (inherit (package-source glibc))
+                  (patches (append (origin-patches (package-source glibc))
+                               (list  (search-patch
+                                       "glibc-powerpc64le-objcopy.patch"))))))
         (name (string-append "glibc-cross-" target))
         (arguments
          (substitute-keyword-arguments
diff --git a/gnu/packages/patches/glibc-powerpc64le-objcopy.patch b/gnu/packages/patches/glibc-powerpc64le-objcopy.patch
new file mode 100644
index 0000000000..acdf29a02a
--- /dev/null
+++ b/gnu/packages/patches/glibc-powerpc64le-objcopy.patch
@@ -0,0 +1,156 @@
+Use "powerpc64le-linux-gnu-objcopy" rather than "objcopy" when cross-compiling
+to powerpc64le-linux-gnu: <https://issues.guix.gnu.org/49417>.
+
+diff --git a/aclocal.m4 b/aclocal.m4
+index 13a791ffde..5b370c07a2 100644
+--- a/aclocal.m4
++++ b/aclocal.m4
+@@ -118,8 +118,6 @@ AS=`$CC -print-prog-name=as`
+ LD=`$CC -print-prog-name=ld`
+ AR=`$CC -print-prog-name=ar`
+ AC_SUBST(AR)
+-OBJCOPY=`$CC -print-prog-name=objcopy`
+-AC_SUBST(OBJCOPY)
+ GPROF=`$CC -print-prog-name=gprof`
+ AC_SUBST(GPROF)
+ 
+diff --git a/configure b/configure
+index fe0eda1cd5..3a08270734 100755
+--- a/configure
++++ b/configure
+@@ -654,7 +654,6 @@ MAKE
+ LD
+ AS
+ GPROF
+-OBJCOPY
+ AR
+ LN_S
+ INSTALL_DATA
+@@ -689,6 +688,7 @@ sysheaders
+ ac_ct_CXX
+ CXXFLAGS
+ CXX
++OBJCOPY
+ OBJDUMP
+ READELF
+ CPP
+@@ -3054,6 +3054,98 @@ else
+   OBJDUMP="$ac_cv_prog_OBJDUMP"
+ fi
+ 
++if test -n "$ac_tool_prefix"; then
++  # Extract the first word of "${ac_tool_prefix}objcopy", so it can be a program name with args.
++set dummy ${ac_tool_prefix}objcopy; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_OBJCOPY+:} false; then :
++  $as_echo_n "(cached) " >&6
++else
++  if test -n "$OBJCOPY"; then
++  ac_cv_prog_OBJCOPY="$OBJCOPY" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++    ac_cv_prog_OBJCOPY="${ac_tool_prefix}objcopy"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++fi
++fi
++OBJCOPY=$ac_cv_prog_OBJCOPY
++if test -n "$OBJCOPY"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJCOPY" >&5
++$as_echo "$OBJCOPY" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++
++fi
++if test -z "$ac_cv_prog_OBJCOPY"; then
++  ac_ct_OBJCOPY=$OBJCOPY
++  # Extract the first word of "objcopy", so it can be a program name with args.
++set dummy objcopy; ac_word=$2
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++$as_echo_n "checking for $ac_word... " >&6; }
++if ${ac_cv_prog_ac_ct_OBJCOPY+:} false; then :
++  $as_echo_n "(cached) " >&6
++else
++  if test -n "$ac_ct_OBJCOPY"; then
++  ac_cv_prog_ac_ct_OBJCOPY="$ac_ct_OBJCOPY" # Let the user override the test.
++else
++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++for as_dir in $PATH
++do
++  IFS=$as_save_IFS
++  test -z "$as_dir" && as_dir=.
++    for ac_exec_ext in '' $ac_executable_extensions; do
++  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++    ac_cv_prog_ac_ct_OBJCOPY="objcopy"
++    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++    break 2
++  fi
++done
++  done
++IFS=$as_save_IFS
++
++fi
++fi
++ac_ct_OBJCOPY=$ac_cv_prog_ac_ct_OBJCOPY
++if test -n "$ac_ct_OBJCOPY"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJCOPY" >&5
++$as_echo "$ac_ct_OBJCOPY" >&6; }
++else
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++fi
++
++  if test "x$ac_ct_OBJCOPY" = x; then
++    OBJCOPY="false"
++  else
++    case $cross_compiling:$ac_tool_warned in
++yes:)
++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
++ac_tool_warned=yes ;;
++esac
++    OBJCOPY=$ac_ct_OBJCOPY
++  fi
++else
++  OBJCOPY="$ac_cv_prog_OBJCOPY"
++fi
++
+ 
+ # We need the C++ compiler only for testing.
+ ac_ext=cpp
+@@ -4645,8 +4737,6 @@ AS=`$CC -print-prog-name=as`
+ LD=`$CC -print-prog-name=ld`
+ AR=`$CC -print-prog-name=ar`
+ 
+-OBJCOPY=`$CC -print-prog-name=objcopy`
+-
+ GPROF=`$CC -print-prog-name=gprof`
+ 
+ 
+diff --git a/configure.ac b/configure.ac
+index 924af12738..2148cd2ec8 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -53,6 +53,7 @@ AC_SUBST(cross_compiling)
+ AC_PROG_CPP
+ AC_CHECK_TOOL(READELF, readelf, false)
+ AC_CHECK_TOOL(OBJDUMP, objdump, false)
++AC_CHECK_TOOL(OBJCOPY, objcopy, false)
+ 
+ # We need the C++ compiler only for testing.
+ AC_PROG_CXX

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

* bug#49417: glibc uses "objcopy", but seems to need "TARGET-objcopy" [core-updates]
  2021-07-06 14:49 ` Ludovic Courtès
@ 2021-07-07 22:40   ` Ludovic Courtès
  0 siblings, 0 replies; 3+ messages in thread
From: Ludovic Courtès @ 2021-07-07 22:40 UTC (permalink / raw)
  To: Maxime Devos; +Cc: 49417-done

Ludovic Courtès <ludo@gnu.org> skribis:

> Maxime Devos <maximedevos@telenet.be> skribis:
>
>> That looks like the earlier issue we had with "objdump" vs. "TARGET-objdump" ...
>> Maybe a similar fix is possible?
>
> Yes, indeed.  The attached patch does that and fixes the issue.

Pushed as 145a5a5797f0f673c817d99760d1c1e5d71aa11c.

Ludo’.




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

end of thread, other threads:[~2021-07-07 22:42 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-05 13:42 bug#49417: glibc uses "objcopy", but seems to need "TARGET-objcopy" [core-updates] Maxime Devos
2021-07-06 14:49 ` Ludovic Courtès
2021-07-07 22:40   ` 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).