all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#38803] [PATCH] gnu: elfutils: Update to 0.178
@ 2019-12-30  1:41 Mark Wielaard
  2019-12-30  1:44 ` Brett Gilio
                   ` (2 more replies)
  0 siblings, 3 replies; 16+ messages in thread
From: Mark Wielaard @ 2019-12-30  1:41 UTC (permalink / raw)
  To: 38803; +Cc: Mark Wielaard

This introduces debuginfod support which requires a couple of new inputs.

* gnu/packages/elf.scm (elfutils): Update to 0.178
  [native-inputs]: Add iproute and pkg-config.
  [inputs]: Add cpio, libarchive, libmicrohttpd, libcurl, rpm and sqlite.
* gnu/packages/patches/elfutils-tests-ptrace.patch: Removed. Fixed upstream.
* gnu/packages/patches/elfutils-0.178-tests-build-id.patch: New. Patches
  backported from upstream git.
---
 gnu/packages/elf.scm                          |  26 ++-
 .../elfutils-0.178-tests-build-id.patch       | 159 ++++++++++++++++++
 .../patches/elfutils-tests-ptrace.patch       |  64 -------
 3 files changed, 180 insertions(+), 69 deletions(-)
 create mode 100644 gnu/packages/patches/elfutils-0.178-tests-build-id.patch
 delete mode 100644 gnu/packages/patches/elfutils-tests-ptrace.patch

diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
index 75caa54296..169e8d1af8 100644
--- a/gnu/packages/elf.scm
+++ b/gnu/packages/elf.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2019 Mark Wielaard <mark@klomp.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,28 +30,35 @@
   #:use-module (guix build-system gnu)
   #:use-module ((guix licenses) #:select (gpl3+ lgpl3+ lgpl2.0+))
   #:use-module (gnu packages)
+  #:use-module (gnu packages backup)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages cpio)
+  #:use-module (gnu packages curl)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages gcc)
+  #:use-module (gnu packages gnunet) ; for libmicrohttpd
+  #:use-module (gnu packages linux)  ; for iproute
   #:use-module (gnu packages m4)
+  #:use-module (gnu packages package-management) ; for rpm
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages sphinx)
+  #:use-module (gnu packages sqlite)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages xml))
 
 (define-public elfutils
   (package
     (name "elfutils")
-    (version "0.176")
+    (version "0.178")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://sourceware.org/elfutils/ftp/"
                                   version "/elfutils-" version ".tar.bz2"))
               (sha256
                (base32
-                "08qhrl4g6qqr4ga46jhh78y56a47p3msa5b2x1qhzbxhf71lfmzb"))
-              (patches (search-patches "elfutils-tests-ptrace.patch"))))
+                "1wm0yfcih4rjwbg59qgm4jyqmbsdmk6z5qajljyw9sfljq7a1rri"))
+              (patches (search-patches "elfutils-0.178-tests-build-id.patch"))))
     (build-system gnu-build-system)
 
     ;; Separate programs because that's usually not what elfutils users want,
@@ -81,8 +89,16 @@
                (("run-backtrace-native.sh") ""))
              #t)))))
 
-    (native-inputs `(("m4" ,m4)))
-    (inputs `(("zlib" ,zlib)))
+    (native-inputs `(("iproute", iproute) ;; needed in tests for ss
+                     ("m4", m4)
+                     ("pkg-config", pkg-config)))
+    (inputs `(("cpio", cpio)
+              ("libarchive", libarchive)
+              ("libmicrohttpd", libmicrohttpd)
+              ("libcurl", curl)
+              ("rpm", rpm)
+              ("sqlite", sqlite)
+              ("zlib" ,zlib)))
     (home-page "https://sourceware.org/elfutils/")
     (synopsis "Linker and ELF manipulation tools")
     (description
diff --git a/gnu/packages/patches/elfutils-0.178-tests-build-id.patch b/gnu/packages/patches/elfutils-0.178-tests-build-id.patch
new file mode 100644
index 0000000000..ca9bd480b8
--- /dev/null
+++ b/gnu/packages/patches/elfutils-0.178-tests-build-id.patch
@@ -0,0 +1,159 @@
+commit 3f445279b60b16b6cb062921b74ae400344b4a68
+Author: Mark Wielaard <mark@klomp.org>
+Date:   Thu Dec 5 14:22:56 2019 +0100
+
+    tests: Run elfcompress under testrun in run-elfclassify.sh
+    
+    Otherwise elfcompress might run against the system libelf which might
+    be too old or missing.
+    
+    Signed-off-by: Mark Wielaard <mark@klomp.org>
+
+diff --git a/tests/run-elfclassify.sh b/tests/run-elfclassify.sh
+index 5a849bbd..fb14139d 100755
+--- a/tests/run-elfclassify.sh
++++ b/tests/run-elfclassify.sh
+@@ -267,7 +267,7 @@ $(echo $kmod_files | sed -e "s/ /\n/g")
+ EOF
+ 
+ echo "gnu compressed kmods are unstripped"
+-${abs_top_builddir}/src/elfcompress -t gnu --force $kmod_files
++testrun ${abs_top_builddir}/src/elfcompress -t gnu --force $kmod_files
+ testrun ${abs_top_builddir}/src/elfclassify --unstripped $kmod_files
+ testrun_compare ${abs_top_builddir}/src/elfclassify --unstripped --print $kmod_files <<EOF
+ $(echo $kmod_files | sed -e "s/ /\n/g")
+@@ -312,7 +312,7 @@ $(echo $debug_files | sed -e "s/ /\n/g")
+ EOF
+ 
+ echo "compress the debug sections and try again"
+-${abs_top_builddir}/src/elfcompress -t gnu --force $debug_files
++testrun ${abs_top_builddir}/src/elfcompress -t gnu --force $debug_files
+ 
+ echo "again unstripped"
+ testrun ${abs_top_builddir}/src/elfclassify --unstripped $debug_files
+
+commit eaffa79d52da7454044be53d28b525cebdb0093b
+Author: Mark Wielaard <mark@klomp.org>
+Date:   Fri Dec 6 15:48:00 2019 +0100
+
+    tests: Run strip under testrun in run-debuginfod-find.sh
+    
+    Otherwise strip might run against the system libelf which might be too
+    old or missing.
+    
+    Signed-off-by: Mark Wielaard <mark@klomp.org>
+
+diff --git a/tests/run-debuginfod-find.sh b/tests/run-debuginfod-find.sh
+index 0ade03b7..6f92fbf1 100755
+--- a/tests/run-debuginfod-find.sh
++++ b/tests/run-debuginfod-find.sh
+@@ -102,7 +102,7 @@ export DEBUGINFOD_TIMEOUT=10
+ echo "int main() { return 0; }" > ${PWD}/prog.c
+ tempfiles prog.c
+ gcc -g -o prog ${PWD}/prog.c
+- ${abs_top_builddir}/src/strip -g -f prog.debug ${PWD}/prog
++testrun ${abs_top_builddir}/src/strip -g -f prog.debug ${PWD}/prog
+ BUILDID=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
+           -a prog | grep 'Build ID' | cut -d ' ' -f 7`
+ 
+
+commit cf1b5fe170fa24f32871ef284ff2968c73816f98
+Author: Mark Wielaard <mark@klomp.org>
+Date:   Fri Dec 6 17:20:00 2019 +0100
+
+    Make sure to always build with build-ids.
+    
+    We really need build-ids for various things.  If the system compiler
+    doesn't generate build-ids warn and generate them anyway for both the
+    binaries and the tests.
+    
+    Signed-off-by: Mark Wielaard <mark@klomp.org>
+
+diff --git a/configure.ac b/configure.ac
+index 5a2dc373..36a6b6c2 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -197,6 +197,15 @@ if test "$ac_cv_zdefs" = "yes"; then
+ 	dso_LDFLAGS="$dso_LDFLAGS $ZDEFS_LDFLAGS"
+ fi
+ 
++# We really want build-ids. Warn and force generating them if gcc was
++# configure without --enable-linker-build-id
++AC_CACHE_CHECK([whether the compiler generates build-ids], ac_cv_buildid, [dnl
++AC_LINK_IFELSE([AC_LANG_PROGRAM()],[ac_cv_buildid=yes; readelf -n conftest$EXEEXT | grep -q NT_GNU_BUILD_ID || ac_cv_buildid=no],AC_MSG_FAILURE([unexpected compile failure]))])
++if test "$ac_cv_buildid" = "no"; then
++	AC_MSG_WARN([compiler doesn't generate build-id by default])
++	LDFLAGS="$LDFLAGS -Wl,--build-id"
++fi
++
+ ZRELRO_LDFLAGS="-Wl,-z,relro"
+ AC_CACHE_CHECK([whether gcc supports $ZRELRO_LDFLAGS], ac_cv_zrelro, [dnl
+ save_LDFLAGS="$LDFLAGS"
+diff --git a/tests/run-debuginfod-find.sh b/tests/run-debuginfod-find.sh
+index 6f92fbf1..6533996a 100755
+--- a/tests/run-debuginfod-find.sh
++++ b/tests/run-debuginfod-find.sh
+@@ -101,7 +101,7 @@ export DEBUGINFOD_TIMEOUT=10
+ # cannot find it without debuginfod.
+ echo "int main() { return 0; }" > ${PWD}/prog.c
+ tempfiles prog.c
+-gcc -g -o prog ${PWD}/prog.c
++gcc -Wl,--build-id -g -o prog ${PWD}/prog.c
+ testrun ${abs_top_builddir}/src/strip -g -f prog.debug ${PWD}/prog
+ BUILDID=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
+           -a prog | grep 'Build ID' | cut -d ' ' -f 7`
+@@ -138,7 +138,7 @@ cmp $filename  ${PWD}/prog.c
+ # Build another, non-stripped binary
+ echo "int main() { return 0; }" > ${PWD}/prog2.c
+ tempfiles prog2.c
+-gcc -g -o prog2 ${PWD}/prog2.c
++gcc -Wl,--build-id -g -o prog2 ${PWD}/prog2.c
+ BUILDID2=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
+           -a prog2 | grep 'Build ID' | cut -d ' ' -f 7`
+ 
+--- a/configure	1970-01-01 01:00:00.000000000 +0100
++++ b/configure	2019-12-11 14:18:11.812008097 +0100
+@@ -5325,6 +5325,43 @@
+ 	dso_LDFLAGS="$dso_LDFLAGS $ZDEFS_LDFLAGS"
+ fi
+ 
++# We really want build-ids. Warn and force generating them if gcc was
++# configure without --enable-linker-build-id
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler generates build-ids" >&5
++$as_echo_n "checking whether the compiler generates build-ids... " >&6; }
++if ${ac_cv_buildid+:} false; then :
++  $as_echo_n "(cached) " >&6
++else
++  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++
++int
++main ()
++{
++
++  ;
++  return 0;
++}
++_ACEOF
++if ac_fn_c_try_link "$LINENO"; then :
++  ac_cv_buildid=yes; readelf -n conftest$EXEEXT | grep -q NT_GNU_BUILD_ID || ac_cv_buildid=no
++else
++  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++as_fn_error $? "unexpected compile failure
++See \`config.log' for more details" "$LINENO" 5; }
++fi
++rm -f core conftest.err conftest.$ac_objext \
++    conftest$ac_exeext conftest.$ac_ext
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_buildid" >&5
++$as_echo "$ac_cv_buildid" >&6; }
++if test "$ac_cv_buildid" = "no"; then
++	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: compiler doesn't generate build-id by default" >&5
++$as_echo "$as_me: WARNING: compiler doesn't generate build-id by default" >&2;}
++	LDFLAGS="$LDFLAGS -Wl,--build-id"
++fi
++
+ ZRELRO_LDFLAGS="-Wl,-z,relro"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gcc supports $ZRELRO_LDFLAGS" >&5
+ $as_echo_n "checking whether gcc supports $ZRELRO_LDFLAGS... " >&6; }
diff --git a/gnu/packages/patches/elfutils-tests-ptrace.patch b/gnu/packages/patches/elfutils-tests-ptrace.patch
deleted file mode 100644
index cd46999063..0000000000
--- a/gnu/packages/patches/elfutils-tests-ptrace.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-This patch allows us to skip tests that require PTRACE_ATTACH in situations
-where PTRACE_ATTACH is only allowed when CAP_SYS_PTRACE is held (i.e., for
-root, by default.)
-
-Reported at <https://bugzilla.redhat.com/show_bug.cgi?id=1210966>.
-
---- elfutils-0.161/tests/run-deleted.sh	2015-04-11 16:38:33.028556235 +0200
-+++ elfutils-0.161/tests/run-deleted.sh	2015-04-11 16:46:15.012442185 +0200
-@@ -17,6 +17,15 @@
- 
- . $srcdir/backtrace-subr.sh
- 
-+# Check whether the Yama policy allows us to use PTRACE_ATTACH.
-+if [ -f /proc/sys/kernel/yama/ptrace_scope ]
-+then
-+    if [ `cat /proc/sys/kernel/yama/ptrace_scope` -ne 0 ]
-+    then
-+	exit 77
-+    fi
-+fi
-+
- tempfiles deleted deleted-lib.so
- cp -p ${abs_builddir}/deleted ${abs_builddir}/deleted-lib.so .
- 
---- elfutils-0.161/tests/vdsosyms.c	2015-04-11 16:40:20.633461110 +0200
-+++ elfutils-0.161/tests/vdsosyms.c	2015-04-11 16:45:06.611866677 +0200
-@@ -23,6 +23,8 @@
- #include <stdio.h>
- #include <string.h>
- #include <sys/types.h>
-+#include <sys/stat.h>
-+#include <fcntl.h>
- #include <unistd.h>
- #include ELFUTILS_HEADER(dwfl)
- 
-@@ -68,6 +70,7 @@ module_callback (Dwfl_Module *mod, void
- int
- main (int argc __attribute__ ((unused)), char **argv __attribute__ ((unused)))
- {
-+  static const char ptrace_scope_file[] = "/proc/sys/kernel/yama/ptrace_scope";
-   static char *debuginfo_path;
-   static const Dwfl_Callbacks proc_callbacks =
-     {
-@@ -76,6 +79,20 @@ main (int argc __attribute__ ((unused)),
- 
-       .find_elf = dwfl_linux_proc_find_elf,
-     };
-+
-+  /* Check whether the Yama policy allows us to use PTRACE_ATTACH.  */
-+  int ptrace_scope = open (ptrace_scope_file, O_RDONLY);
-+  if (ptrace_scope >= 0)
-+    {
-+      char buf[10];
-+      int count = read (ptrace_scope, buf, sizeof buf);
-+      assert (count > 0);
-+      if (buf[0] != '0')
-+	/* We're not allowed, so skip this test.  */
-+	return 77;
-+      close (ptrace_scope);
-+    }
-+
-   Dwfl *dwfl = dwfl_begin (&proc_callbacks);
-   if (dwfl == NULL)
-     error (2, 0, "dwfl_begin: %s", dwfl_errmsg (-1));
-- 
2.20.1

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

* [bug#38803] [PATCH] gnu: elfutils: Update to 0.178
  2019-12-30  1:41 [bug#38803] [PATCH] gnu: elfutils: Update to 0.178 Mark Wielaard
@ 2019-12-30  1:44 ` Brett Gilio
  2019-12-30  2:04   ` Mark Wielaard
  2020-01-12 20:39 ` Mark Wielaard
  2023-09-02 18:39 ` Vagrant Cascadian
  2 siblings, 1 reply; 16+ messages in thread
From: Brett Gilio @ 2019-12-30  1:44 UTC (permalink / raw)
  To: Mark Wielaard; +Cc: 38803



Dec 29, 2019 7:42:34 PM Mark Wielaard :

> This introduces debuginfod support which requires a couple of new inputs.
>
> * gnu/packages/elf.scm (elfutils): Update to 0.178
> [native-inputs]: Add iproute and pkg-config.
> [inputs]: Add cpio, libarchive, libmicrohttpd, libcurl, rpm and sqlite.
> * gnu/packages/patches/elfutils-tests-ptrace.patch: Removed. Fixed upstream.
> * gnu/packages/patches/elfutils-0.178-tests-build-id.patch: New. Patches
> backported from upstream git.
> ---
> gnu/packages/elf.scm | 26 ++-
> .../elfutils-0.178-tests-build-id.patch | 159 ++++++++++++++++++
> .../patches/elfutils-tests-ptrace.patch | 64 -------
> 3 files changed, 180 insertions(+), 69 deletions(-)
> create mode 100644 gnu/packages/patches/elfutils-0.178-tests-build-id.patch
> delete mode 100644 gnu/packages/patches/elfutils-tests-ptrace.patch
>
> diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
> index 75caa54296..169e8d1af8 100644
> --- a/gnu/packages/elf.scm
> +++ b/gnu/packages/elf.scm
> @@ -6,6 +6,7 @@
> ;;; Copyright © 2017 Leo Famulari
> ;;; Copyright © 2018 Tobias Geerinckx-Rice
> ;;; Copyright © 2018 Marius Bakke
> +;;; Copyright © 2019 Mark Wielaard
> ;;;
> ;;; This file is part of GNU Guix.
> ;;;
> @@ -29,28 +30,35 @@
> #:use-module (guix build-system gnu)
> #:use-module ((guix licenses) #:select (gpl3+ lgpl3+ lgpl2.0+))
> #:use-module (gnu packages)
> + #:use-module (gnu packages backup)
> #:use-module (gnu packages compression)
> + #:use-module (gnu packages cpio)
> + #:use-module (gnu packages curl)
> #:use-module (gnu packages documentation)
> #:use-module (gnu packages gcc)
> + #:use-module (gnu packages gnunet) ; for libmicrohttpd
> + #:use-module (gnu packages linux) ; for iproute
> #:use-module (gnu packages m4)
> + #:use-module (gnu packages package-management) ; for rpm
> #:use-module (gnu packages pkg-config)
> #:use-module (gnu packages python)
> #:use-module (gnu packages sphinx)
> + #:use-module (gnu packages sqlite)
> #:use-module (gnu packages texinfo)
> #:use-module (gnu packages xml))
>
> (define-public elfutils
> (package
> (name "elfutils")
> - (version "0.176")
> + (version "0.178")
> (source (origin
> (method url-fetch)
> (uri (string-append "https://sourceware.org/elfutils/ftp/"
> version "/elfutils-" version ".tar.bz2"))
> (sha256
> (base32
> - "08qhrl4g6qqr4ga46jhh78y56a47p3msa5b2x1qhzbxhf71lfmzb"))
> - (patches (search-patches "elfutils-tests-ptrace.patch"))))
> + "1wm0yfcih4rjwbg59qgm4jyqmbsdmk6z5qajljyw9sfljq7a1rri"))
> + (patches (search-patches "elfutils-0.178-tests-build-id.patch"))))
> (build-system gnu-build-system)
>
> ;; Separate programs because that's usually not what elfutils users want,
> @@ -81,8 +89,16 @@
> (("run-backtrace-native.sh") ""))
> #t)))))
>
> - (native-inputs `(("m4" ,m4)))
> - (inputs `(("zlib" ,zlib)))
> + (native-inputs `(("iproute", iproute) ;; needed in tests for ss
> + ("m4", m4)
> + ("pkg-config", pkg-config)))
> + (inputs `(("cpio", cpio)
> + ("libarchive", libarchive)
> + ("libmicrohttpd", libmicrohttpd)
> + ("libcurl", curl)
> + ("rpm", rpm)
> + ("sqlite", sqlite)
> + ("zlib" ,zlib)))
> (home-page "https://sourceware.org/elfutils/")
> (synopsis "Linker and ELF manipulation tools")
> (description
> diff --git a/gnu/packages/patches/elfutils-0.178-tests-build-id.patch b/gnu/packages/patches/elfutils-0.178-tests-build-id.patch
> new file mode 100644
> index 0000000000..ca9bd480b8
> --- /dev/null
> +++ b/gnu/packages/patches/elfutils-0.178-tests-build-id.patch
> @@ -0,0 +1,159 @@
> +commit 3f445279b60b16b6cb062921b74ae400344b4a68
> +Author: Mark Wielaard
> +Date: Thu Dec 5 14:22:56 2019 +0100
> +
> + tests: Run elfcompress under testrun in run-elfclassify.sh
> +
> + Otherwise elfcompress might run against the system libelf which might
> + be too old or missing.
> +
> + Signed-off-by: Mark Wielaard
> +
> +diff --git a/tests/run-elfclassify.sh b/tests/run-elfclassify.sh
> +index 5a849bbd..fb14139d 100755
> +--- a/tests/run-elfclassify.sh
> ++++ b/tests/run-elfclassify.sh
> +@@ -267,7 +267,7 @@ $(echo $kmod_files | sed -e "s/ /\n/g")
> + EOF
> +
> + echo "gnu compressed kmods are unstripped"
> +-${abs_top_builddir}/src/elfcompress -t gnu --force $kmod_files
> ++testrun ${abs_top_builddir}/src/elfcompress -t gnu --force $kmod_files
> + testrun ${abs_top_builddir}/src/elfclassify --unstripped $kmod_files
> + testrun_compare ${abs_top_builddir}/src/elfclassify --unstripped --print $kmod_files <
> + $(echo $kmod_files | sed -e "s/ /\n/g")
> +@@ -312,7 +312,7 @@ $(echo $debug_files | sed -e "s/ /\n/g")
> + EOF
> +
> + echo "compress the debug sections and try again"
> +-${abs_top_builddir}/src/elfcompress -t gnu --force $debug_files
> ++testrun ${abs_top_builddir}/src/elfcompress -t gnu --force $debug_files
> +
> + echo "again unstripped"
> + testrun ${abs_top_builddir}/src/elfclassify --unstripped $debug_files
> +
> +commit eaffa79d52da7454044be53d28b525cebdb0093b
> +Author: Mark Wielaard
> +Date: Fri Dec 6 15:48:00 2019 +0100
> +
> + tests: Run strip under testrun in run-debuginfod-find.sh
> +
> + Otherwise strip might run against the system libelf which might be too
> + old or missing.
> +
> + Signed-off-by: Mark Wielaard
> +
> +diff --git a/tests/run-debuginfod-find.sh b/tests/run-debuginfod-find.sh
> +index 0ade03b7..6f92fbf1 100755
> +--- a/tests/run-debuginfod-find.sh
> ++++ b/tests/run-debuginfod-find.sh
> +@@ -102,7 +102,7 @@ export DEBUGINFOD_TIMEOUT=10
> + echo "int main() { return 0; }" > ${PWD}/prog.c
> + tempfiles prog.c
> + gcc -g -o prog ${PWD}/prog.c
> +- ${abs_top_builddir}/src/strip -g -f prog.debug ${PWD}/prog
> ++testrun ${abs_top_builddir}/src/strip -g -f prog.debug ${PWD}/prog
> + BUILDID=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
> + -a prog | grep 'Build ID' | cut -d ' ' -f 7`
> +
> +
> +commit cf1b5fe170fa24f32871ef284ff2968c73816f98
> +Author: Mark Wielaard
> +Date: Fri Dec 6 17:20:00 2019 +0100
> +
> + Make sure to always build with build-ids.
> +
> + We really need build-ids for various things. If the system compiler
> + doesn't generate build-ids warn and generate them anyway for both the
> + binaries and the tests.
> +
> + Signed-off-by: Mark Wielaard
> +
> +diff --git a/configure.ac b/configure.ac
> +index 5a2dc373..36a6b6c2 100644
> +--- a/configure.ac
> ++++ b/configure.ac
> +@@ -197,6 +197,15 @@ if test "$ac_cv_zdefs" = "yes"; then
> + dso_LDFLAGS="$dso_LDFLAGS $ZDEFS_LDFLAGS"
> + fi
> +
> ++# We really want build-ids. Warn and force generating them if gcc was
> ++# configure without --enable-linker-build-id
> ++AC_CACHE_CHECK([whether the compiler generates build-ids], ac_cv_buildid, [dnl
> ++AC_LINK_IFELSE([AC_LANG_PROGRAM()],[ac_cv_buildid=yes; readelf -n conftest$EXEEXT | grep -q NT_GNU_BUILD_ID || ac_cv_buildid=no],AC_MSG_FAILURE([unexpected compile failure]))])
> ++if test "$ac_cv_buildid" = "no"; then
> ++ AC_MSG_WARN([compiler doesn't generate build-id by default])
> ++ LDFLAGS="$LDFLAGS -Wl,--build-id"
> ++fi
> ++
> + ZRELRO_LDFLAGS="-Wl,-z,relro"
> + AC_CACHE_CHECK([whether gcc supports $ZRELRO_LDFLAGS], ac_cv_zrelro, [dnl
> + save_LDFLAGS="$LDFLAGS"
> +diff --git a/tests/run-debuginfod-find.sh b/tests/run-debuginfod-find.sh
> +index 6f92fbf1..6533996a 100755
> +--- a/tests/run-debuginfod-find.sh
> ++++ b/tests/run-debuginfod-find.sh
> +@@ -101,7 +101,7 @@ export DEBUGINFOD_TIMEOUT=10
> + # cannot find it without debuginfod.
> + echo "int main() { return 0; }" > ${PWD}/prog.c
> + tempfiles prog.c
> +-gcc -g -o prog ${PWD}/prog.c
> ++gcc -Wl,--build-id -g -o prog ${PWD}/prog.c
> + testrun ${abs_top_builddir}/src/strip -g -f prog.debug ${PWD}/prog
> + BUILDID=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
> + -a prog | grep 'Build ID' | cut -d ' ' -f 7`
> +@@ -138,7 +138,7 @@ cmp $filename ${PWD}/prog.c
> + # Build another, non-stripped binary
> + echo "int main() { return 0; }" > ${PWD}/prog2.c
> + tempfiles prog2.c
> +-gcc -g -o prog2 ${PWD}/prog2.c
> ++gcc -Wl,--build-id -g -o prog2 ${PWD}/prog2.c
> + BUILDID2=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
> + -a prog2 | grep 'Build ID' | cut -d ' ' -f 7`
> +
> +--- a/configure 1970-01-01 01:00:00.000000000 +0100
> ++++ b/configure 2019-12-11 14:18:11.812008097 +0100
> +@@ -5325,6 +5325,43 @@
> + dso_LDFLAGS="$dso_LDFLAGS $ZDEFS_LDFLAGS"
> + fi
> +
> ++# We really want build-ids. Warn and force generating them if gcc was
> ++# configure without --enable-linker-build-id
> ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler generates build-ids" >&5
> ++$as_echo_n "checking whether the compiler generates build-ids... " >&6; }
> ++if ${ac_cv_buildid+:} false; then :
> ++ $as_echo_n "(cached) " >&6
> ++else
> ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> ++/* end confdefs.h. */
> ++
> ++int
> ++main ()
> ++{
> ++
> ++ ;
> ++ return 0;
> ++}
> ++_ACEOF
> ++if ac_fn_c_try_link "$LINENO"; then :
> ++ ac_cv_buildid=yes; readelf -n conftest$EXEEXT | grep -q NT_GNU_BUILD_ID || ac_cv_buildid=no
> ++else
> ++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
> ++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
> ++as_fn_error $? "unexpected compile failure
> ++See \`config.log' for more details" "$LINENO" 5; }
> ++fi
> ++rm -f core conftest.err conftest.$ac_objext \
> ++ conftest$ac_exeext conftest.$ac_ext
> ++fi
> ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_buildid" >&5
> ++$as_echo "$ac_cv_buildid" >&6; }
> ++if test "$ac_cv_buildid" = "no"; then
> ++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: compiler doesn't generate build-id by default" >&5
> ++$as_echo "$as_me: WARNING: compiler doesn't generate build-id by default" >&2;}
> ++ LDFLAGS="$LDFLAGS -Wl,--build-id"
> ++fi
> ++
> + ZRELRO_LDFLAGS="-Wl,-z,relro"
> + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gcc supports $ZRELRO_LDFLAGS" >&5
> + $as_echo_n "checking whether gcc supports $ZRELRO_LDFLAGS... " >&6; }
> diff --git a/gnu/packages/patches/elfutils-tests-ptrace.patch b/gnu/packages/patches/elfutils-tests-ptrace.patch
> deleted file mode 100644
> index cd46999063..0000000000
> --- a/gnu/packages/patches/elfutils-tests-ptrace.patch
> +++ /dev/null
> @@ -1,64 +0,0 @@
> -This patch allows us to skip tests that require PTRACE_ATTACH in situations
> -where PTRACE_ATTACH is only allowed when CAP_SYS_PTRACE is held (i.e., for
> -root, by default.)
> -
> -Reported at .
> -
> ---- elfutils-0.161/tests/run-deleted.sh 2015-04-11 16:38:33.028556235 +0200
> -+++ elfutils-0.161/tests/run-deleted.sh 2015-04-11 16:46:15.012442185 +0200
> -@@ -17,6 +17,15 @@
> -
> - . $srcdir/backtrace-subr.sh
> -
> -+# Check whether the Yama policy allows us to use PTRACE_ATTACH.
> -+if [ -f /proc/sys/kernel/yama/ptrace_scope ]
> -+then
> -+ if [ `cat /proc/sys/kernel/yama/ptrace_scope` -ne 0 ]
> -+ then
> -+ exit 77
> -+ fi
> -+fi
> -+
> - tempfiles deleted deleted-lib.so
> - cp -p ${abs_builddir}/deleted ${abs_builddir}/deleted-lib.so .
> -
> ---- elfutils-0.161/tests/vdsosyms.c 2015-04-11 16:40:20.633461110 +0200
> -+++ elfutils-0.161/tests/vdsosyms.c 2015-04-11 16:45:06.611866677 +0200
> -@@ -23,6 +23,8 @@
> - #include
> - #include
> - #include
> -+#include
> -+#include
> - #include
> - #include ELFUTILS_HEADER(dwfl)
> -
> -@@ -68,6 +70,7 @@ module_callback (Dwfl_Module *mod, void
> - int
> - main (int argc __attribute__ ((unused)), char **argv __attribute__ ((unused)))
> - {
> -+ static const char ptrace_scope_file[] = "/proc/sys/kernel/yama/ptrace_scope";
> - static char *debuginfo_path;
> - static const Dwfl_Callbacks proc_callbacks =
> - {
> -@@ -76,6 +79,20 @@ main (int argc __attribute__ ((unused)),
> -
> - .find_elf = dwfl_linux_proc_find_elf,
> - };
> -+
> -+ /* Check whether the Yama policy allows us to use PTRACE_ATTACH. */
> -+ int ptrace_scope = open (ptrace_scope_file, O_RDONLY);
> -+ if (ptrace_scope >= 0)
> -+ {
> -+ char buf[10];
> -+ int count = read (ptrace_scope, buf, sizeof buf);
> -+ assert (count > 0);
> -+ if (buf[0] != '0')
> -+ /* We're not allowed, so skip this test. */
> -+ return 77;
> -+ close (ptrace_scope);
> -+ }
> -+
> - Dwfl *dwfl = dwfl_begin (&proc_callbacks);
> - if (dwfl == NULL)
> - error (2, 0, "dwfl_begin: %s", dwfl_errmsg (-1));
> --
> 2.20.1
>


Hi Mark! Funny you submitted this, I was working on the same package about an hour ago. We must be reading each other's minds. You got significantly farther than I did. One thing I did do differently was that I extended the list of licenses to include the ones mentioned in the comment.

I'll look at your patch, and hopefully this will be ready for core-updates. Thank you :)

-- 
Brett M. Gilio
GNU Guix, Contributor | GNU Project, Webmaster
[DFC0 C7F7 9EE6 0CA7 AE55 5E19 6722 43C4 A03F 0EEE]
< brettg@gnu.org [mailto:brettg@gnu.org] > < brettg@posteo.net [mailto:brettg@posteo.net] >

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

* [bug#38803] [PATCH] gnu: elfutils: Update to 0.178
  2019-12-30  1:44 ` Brett Gilio
@ 2019-12-30  2:04   ` Mark Wielaard
  0 siblings, 0 replies; 16+ messages in thread
From: Mark Wielaard @ 2019-12-30  2:04 UTC (permalink / raw)
  To: Brett Gilio; +Cc: 38803

Hi Brett,

On Mon, Dec 30, 2019 at 01:44:21AM +0000, Brett Gilio wrote:
> Funny you submitted this, I was working on the same package
> about an hour ago. We must be reading each other's minds. You got
> significantly farther than I did.

Thanks for looking at it. This is my first guix patch, so please be
gentle. I do maintain elfutils upstream, so I did have a little
advantage picking some upstream patches which hadn't gone into the
release yet.

> One thing I did do differently was that I extended the list of
> licenses to include the ones mentioned in the comment.  I'll look at
> your patch, and hopefully this will be ready for core-updates. Thank
> you :)

Good you mention the licenses. I forgot to update them licenses. 0.178
introduces some new documentation (man pages), one of them is under
the GFDL (without invariant sections).

Also I am not sure how precisely we should mention the dual
gplv2+/lgplv3+ license for the "out" output libraries and the gplv3+
license for the "bin" output (and where the gfdl should be added).

Thanks,

Mark

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

* [bug#38803] [PATCH] gnu: elfutils: Update to 0.178
  2019-12-30  1:41 [bug#38803] [PATCH] gnu: elfutils: Update to 0.178 Mark Wielaard
  2019-12-30  1:44 ` Brett Gilio
@ 2020-01-12 20:39 ` Mark Wielaard
  2020-01-12 20:54   ` Marius Bakke
  2023-09-02 18:39 ` Vagrant Cascadian
  2 siblings, 1 reply; 16+ messages in thread
From: Mark Wielaard @ 2020-01-12 20:39 UTC (permalink / raw)
  To: 38803; +Cc: Mark Wielaard, Brett Gilio

This introduces debuginfod support which requires a couple of new inputs.

* gnu/local.ml (dist_patch_DATA): Remove elfutils-tests-ptrace.patch.
  Add elfutils-0.178-tests-build-id.patch.
* gnu/packages/elf.scm (elfutils): Update to 0.178
  [native-inputs]: Add iproute and pkg-config.
  [inputs]: Add cpio, libarchive, libmicrohttpd, libcurl, rpm and sqlite.
  [synopsis]: Updated.
  [description]: Updated.
  [license]: List all licenses used.
* gnu/packages/patches/elfutils-tests-ptrace.patch: Removed. Fixed upstream.
* gnu/packages/patches/elfutils-0.178-tests-build-id.patch: New. Patches
  backported from upstream git.
---

This updated patch adds the licenses list. Updates the synopsis and
description of the package. And adds/removes the patches from gnu/local.ml.

 gnu/local.mk                                  |   2 +-
 gnu/packages/elf.scm                          |  51 ++++--
 .../elfutils-0.178-tests-build-id.patch       | 159 ++++++++++++++++++
 .../patches/elfutils-tests-ptrace.patch       |  64 -------
 4 files changed, 198 insertions(+), 78 deletions(-)
 create mode 100644 gnu/packages/patches/elfutils-0.178-tests-build-id.patch
 delete mode 100644 gnu/packages/patches/elfutils-tests-ptrace.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 33cf439870..6574d2aa78 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -813,7 +813,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/dstat-skip-devices-without-io.patch	\
   %D%/packages/patches/dvd+rw-tools-add-include.patch 		\
   %D%/packages/patches/einstein-build.patch			\
-  %D%/packages/patches/elfutils-tests-ptrace.patch		\
+  %D%/packages/patches/elfutils-0.178-tests-build-id.patch	\
   %D%/packages/patches/elixir-path-length.patch			\
   %D%/packages/patches/elm-compiler-disable-reactor.patch	\
   %D%/packages/patches/elm-compiler-fix-map-key.patch		\
diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
index 75caa54296..9f38c519aa 100644
--- a/gnu/packages/elf.scm
+++ b/gnu/packages/elf.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2019 Mark Wielaard <mark@klomp.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,36 +28,44 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
-  #:use-module ((guix licenses) #:select (gpl3+ lgpl3+ lgpl2.0+))
+  #:use-module ((guix licenses) #:select (gpl2+ gpl3+ lgpl3+ lgpl2.0+ fdl1.3+))
   #:use-module (gnu packages)
+  #:use-module (gnu packages backup)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages cpio)
+  #:use-module (gnu packages curl)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages gcc)
+  #:use-module (gnu packages gnunet) ; for libmicrohttpd
+  #:use-module (gnu packages linux)  ; for iproute
   #:use-module (gnu packages m4)
+  #:use-module (gnu packages package-management) ; for rpm
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages sphinx)
+  #:use-module (gnu packages sqlite)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages xml))
 
 (define-public elfutils
   (package
     (name "elfutils")
-    (version "0.176")
+    (version "0.178")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://sourceware.org/elfutils/ftp/"
                                   version "/elfutils-" version ".tar.bz2"))
               (sha256
                (base32
-                "08qhrl4g6qqr4ga46jhh78y56a47p3msa5b2x1qhzbxhf71lfmzb"))
-              (patches (search-patches "elfutils-tests-ptrace.patch"))))
+                "1wm0yfcih4rjwbg59qgm4jyqmbsdmk6z5qajljyw9sfljq7a1rri"))
+              (patches (search-patches "elfutils-0.178-tests-build-id.patch"))))
     (build-system gnu-build-system)
 
     ;; Separate programs because that's usually not what elfutils users want,
-    ;; and because they duplicate what Binutils provides.
+    ;; and because they duplicate what Binutils provides (but are named
+    ;; differently, using the eu- prefix and can be installed in parallel).
     (outputs '("out"                           ; libelf.so, elfutils/*.h, etc.
-               "bin"))                         ; ld, nm, objdump, etc.
+               "bin"))                         ; eu-nm, eu-objdump, etc.
 
     (arguments
      ;; Programs don't have libelf.so in their RUNPATH and libraries don't
@@ -81,17 +90,33 @@
                (("run-backtrace-native.sh") ""))
              #t)))))
 
-    (native-inputs `(("m4" ,m4)))
-    (inputs `(("zlib" ,zlib)))
+    (native-inputs `(("iproute", iproute) ;; needed in tests for ss
+                     ("m4", m4)
+                     ("pkg-config", pkg-config)))
+    (inputs `(("cpio", cpio)
+              ("libarchive", libarchive)
+              ("libmicrohttpd", libmicrohttpd)
+              ("libcurl", curl)
+              ("rpm", rpm)
+              ("sqlite", sqlite)
+              ("zlib" ,zlib)))
     (home-page "https://sourceware.org/elfutils/")
-    (synopsis "Linker and ELF manipulation tools")
+    (synopsis "Collection of utilities and libraries to handle ELF files and
+DWARF data")
     (description
-     "This package provides command-line tools to manipulate binaries in the
-Executable and Linkable Format (@dfn{ELF}).  This includes @command{ld},
-@command{ar}, @command{objdump}, @command{addr2line}, and more.")
+     "A collection of utilities and libraries to read, create and modify ELF
+binary files, find and handle DWARF debug data, symbols, thread state and
+stacktraces for processes and core files on GNU/Linux.  Includes libelf for
+manipulating ELF files, libdw for inspecting DWARF data and process state and
+utilities like eu-stack (to show backtraces), eu-nm (for listing symbols from
+object files), eu-size (for listing the section sizes of an object or archive
+file), eu-strip (for discarding symbols), eu-readelf (to see the raw ELF file
+structures), eu-elflint (to check for well-formed ELF files) and
+eu-elfcompress (to compress or decompress ELF sections).")
 
     ;; Libraries are dual-licensed LGPLv3.0+ | GPLv2, and programs are GPLv3+.
-    (license lgpl3+)))
+    ;; Some documentation is under the GFDL1.3+, without invariant texts.
+    (license (list lgpl3+ gpl2+ gpl3+ fdl1.3+))))
 
 (define-public libabigail
   (package
diff --git a/gnu/packages/patches/elfutils-0.178-tests-build-id.patch b/gnu/packages/patches/elfutils-0.178-tests-build-id.patch
new file mode 100644
index 0000000000..ca9bd480b8
--- /dev/null
+++ b/gnu/packages/patches/elfutils-0.178-tests-build-id.patch
@@ -0,0 +1,159 @@
+commit 3f445279b60b16b6cb062921b74ae400344b4a68
+Author: Mark Wielaard <mark@klomp.org>
+Date:   Thu Dec 5 14:22:56 2019 +0100
+
+    tests: Run elfcompress under testrun in run-elfclassify.sh
+    
+    Otherwise elfcompress might run against the system libelf which might
+    be too old or missing.
+    
+    Signed-off-by: Mark Wielaard <mark@klomp.org>
+
+diff --git a/tests/run-elfclassify.sh b/tests/run-elfclassify.sh
+index 5a849bbd..fb14139d 100755
+--- a/tests/run-elfclassify.sh
++++ b/tests/run-elfclassify.sh
+@@ -267,7 +267,7 @@ $(echo $kmod_files | sed -e "s/ /\n/g")
+ EOF
+ 
+ echo "gnu compressed kmods are unstripped"
+-${abs_top_builddir}/src/elfcompress -t gnu --force $kmod_files
++testrun ${abs_top_builddir}/src/elfcompress -t gnu --force $kmod_files
+ testrun ${abs_top_builddir}/src/elfclassify --unstripped $kmod_files
+ testrun_compare ${abs_top_builddir}/src/elfclassify --unstripped --print $kmod_files <<EOF
+ $(echo $kmod_files | sed -e "s/ /\n/g")
+@@ -312,7 +312,7 @@ $(echo $debug_files | sed -e "s/ /\n/g")
+ EOF
+ 
+ echo "compress the debug sections and try again"
+-${abs_top_builddir}/src/elfcompress -t gnu --force $debug_files
++testrun ${abs_top_builddir}/src/elfcompress -t gnu --force $debug_files
+ 
+ echo "again unstripped"
+ testrun ${abs_top_builddir}/src/elfclassify --unstripped $debug_files
+
+commit eaffa79d52da7454044be53d28b525cebdb0093b
+Author: Mark Wielaard <mark@klomp.org>
+Date:   Fri Dec 6 15:48:00 2019 +0100
+
+    tests: Run strip under testrun in run-debuginfod-find.sh
+    
+    Otherwise strip might run against the system libelf which might be too
+    old or missing.
+    
+    Signed-off-by: Mark Wielaard <mark@klomp.org>
+
+diff --git a/tests/run-debuginfod-find.sh b/tests/run-debuginfod-find.sh
+index 0ade03b7..6f92fbf1 100755
+--- a/tests/run-debuginfod-find.sh
++++ b/tests/run-debuginfod-find.sh
+@@ -102,7 +102,7 @@ export DEBUGINFOD_TIMEOUT=10
+ echo "int main() { return 0; }" > ${PWD}/prog.c
+ tempfiles prog.c
+ gcc -g -o prog ${PWD}/prog.c
+- ${abs_top_builddir}/src/strip -g -f prog.debug ${PWD}/prog
++testrun ${abs_top_builddir}/src/strip -g -f prog.debug ${PWD}/prog
+ BUILDID=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
+           -a prog | grep 'Build ID' | cut -d ' ' -f 7`
+ 
+
+commit cf1b5fe170fa24f32871ef284ff2968c73816f98
+Author: Mark Wielaard <mark@klomp.org>
+Date:   Fri Dec 6 17:20:00 2019 +0100
+
+    Make sure to always build with build-ids.
+    
+    We really need build-ids for various things.  If the system compiler
+    doesn't generate build-ids warn and generate them anyway for both the
+    binaries and the tests.
+    
+    Signed-off-by: Mark Wielaard <mark@klomp.org>
+
+diff --git a/configure.ac b/configure.ac
+index 5a2dc373..36a6b6c2 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -197,6 +197,15 @@ if test "$ac_cv_zdefs" = "yes"; then
+ 	dso_LDFLAGS="$dso_LDFLAGS $ZDEFS_LDFLAGS"
+ fi
+ 
++# We really want build-ids. Warn and force generating them if gcc was
++# configure without --enable-linker-build-id
++AC_CACHE_CHECK([whether the compiler generates build-ids], ac_cv_buildid, [dnl
++AC_LINK_IFELSE([AC_LANG_PROGRAM()],[ac_cv_buildid=yes; readelf -n conftest$EXEEXT | grep -q NT_GNU_BUILD_ID || ac_cv_buildid=no],AC_MSG_FAILURE([unexpected compile failure]))])
++if test "$ac_cv_buildid" = "no"; then
++	AC_MSG_WARN([compiler doesn't generate build-id by default])
++	LDFLAGS="$LDFLAGS -Wl,--build-id"
++fi
++
+ ZRELRO_LDFLAGS="-Wl,-z,relro"
+ AC_CACHE_CHECK([whether gcc supports $ZRELRO_LDFLAGS], ac_cv_zrelro, [dnl
+ save_LDFLAGS="$LDFLAGS"
+diff --git a/tests/run-debuginfod-find.sh b/tests/run-debuginfod-find.sh
+index 6f92fbf1..6533996a 100755
+--- a/tests/run-debuginfod-find.sh
++++ b/tests/run-debuginfod-find.sh
+@@ -101,7 +101,7 @@ export DEBUGINFOD_TIMEOUT=10
+ # cannot find it without debuginfod.
+ echo "int main() { return 0; }" > ${PWD}/prog.c
+ tempfiles prog.c
+-gcc -g -o prog ${PWD}/prog.c
++gcc -Wl,--build-id -g -o prog ${PWD}/prog.c
+ testrun ${abs_top_builddir}/src/strip -g -f prog.debug ${PWD}/prog
+ BUILDID=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
+           -a prog | grep 'Build ID' | cut -d ' ' -f 7`
+@@ -138,7 +138,7 @@ cmp $filename  ${PWD}/prog.c
+ # Build another, non-stripped binary
+ echo "int main() { return 0; }" > ${PWD}/prog2.c
+ tempfiles prog2.c
+-gcc -g -o prog2 ${PWD}/prog2.c
++gcc -Wl,--build-id -g -o prog2 ${PWD}/prog2.c
+ BUILDID2=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
+           -a prog2 | grep 'Build ID' | cut -d ' ' -f 7`
+ 
+--- a/configure	1970-01-01 01:00:00.000000000 +0100
++++ b/configure	2019-12-11 14:18:11.812008097 +0100
+@@ -5325,6 +5325,43 @@
+ 	dso_LDFLAGS="$dso_LDFLAGS $ZDEFS_LDFLAGS"
+ fi
+ 
++# We really want build-ids. Warn and force generating them if gcc was
++# configure without --enable-linker-build-id
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler generates build-ids" >&5
++$as_echo_n "checking whether the compiler generates build-ids... " >&6; }
++if ${ac_cv_buildid+:} false; then :
++  $as_echo_n "(cached) " >&6
++else
++  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++
++int
++main ()
++{
++
++  ;
++  return 0;
++}
++_ACEOF
++if ac_fn_c_try_link "$LINENO"; then :
++  ac_cv_buildid=yes; readelf -n conftest$EXEEXT | grep -q NT_GNU_BUILD_ID || ac_cv_buildid=no
++else
++  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++as_fn_error $? "unexpected compile failure
++See \`config.log' for more details" "$LINENO" 5; }
++fi
++rm -f core conftest.err conftest.$ac_objext \
++    conftest$ac_exeext conftest.$ac_ext
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_buildid" >&5
++$as_echo "$ac_cv_buildid" >&6; }
++if test "$ac_cv_buildid" = "no"; then
++	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: compiler doesn't generate build-id by default" >&5
++$as_echo "$as_me: WARNING: compiler doesn't generate build-id by default" >&2;}
++	LDFLAGS="$LDFLAGS -Wl,--build-id"
++fi
++
+ ZRELRO_LDFLAGS="-Wl,-z,relro"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gcc supports $ZRELRO_LDFLAGS" >&5
+ $as_echo_n "checking whether gcc supports $ZRELRO_LDFLAGS... " >&6; }
diff --git a/gnu/packages/patches/elfutils-tests-ptrace.patch b/gnu/packages/patches/elfutils-tests-ptrace.patch
deleted file mode 100644
index cd46999063..0000000000
--- a/gnu/packages/patches/elfutils-tests-ptrace.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-This patch allows us to skip tests that require PTRACE_ATTACH in situations
-where PTRACE_ATTACH is only allowed when CAP_SYS_PTRACE is held (i.e., for
-root, by default.)
-
-Reported at <https://bugzilla.redhat.com/show_bug.cgi?id=1210966>.
-
---- elfutils-0.161/tests/run-deleted.sh	2015-04-11 16:38:33.028556235 +0200
-+++ elfutils-0.161/tests/run-deleted.sh	2015-04-11 16:46:15.012442185 +0200
-@@ -17,6 +17,15 @@
- 
- . $srcdir/backtrace-subr.sh
- 
-+# Check whether the Yama policy allows us to use PTRACE_ATTACH.
-+if [ -f /proc/sys/kernel/yama/ptrace_scope ]
-+then
-+    if [ `cat /proc/sys/kernel/yama/ptrace_scope` -ne 0 ]
-+    then
-+	exit 77
-+    fi
-+fi
-+
- tempfiles deleted deleted-lib.so
- cp -p ${abs_builddir}/deleted ${abs_builddir}/deleted-lib.so .
- 
---- elfutils-0.161/tests/vdsosyms.c	2015-04-11 16:40:20.633461110 +0200
-+++ elfutils-0.161/tests/vdsosyms.c	2015-04-11 16:45:06.611866677 +0200
-@@ -23,6 +23,8 @@
- #include <stdio.h>
- #include <string.h>
- #include <sys/types.h>
-+#include <sys/stat.h>
-+#include <fcntl.h>
- #include <unistd.h>
- #include ELFUTILS_HEADER(dwfl)
- 
-@@ -68,6 +70,7 @@ module_callback (Dwfl_Module *mod, void
- int
- main (int argc __attribute__ ((unused)), char **argv __attribute__ ((unused)))
- {
-+  static const char ptrace_scope_file[] = "/proc/sys/kernel/yama/ptrace_scope";
-   static char *debuginfo_path;
-   static const Dwfl_Callbacks proc_callbacks =
-     {
-@@ -76,6 +79,20 @@ main (int argc __attribute__ ((unused)),
- 
-       .find_elf = dwfl_linux_proc_find_elf,
-     };
-+
-+  /* Check whether the Yama policy allows us to use PTRACE_ATTACH.  */
-+  int ptrace_scope = open (ptrace_scope_file, O_RDONLY);
-+  if (ptrace_scope >= 0)
-+    {
-+      char buf[10];
-+      int count = read (ptrace_scope, buf, sizeof buf);
-+      assert (count > 0);
-+      if (buf[0] != '0')
-+	/* We're not allowed, so skip this test.  */
-+	return 77;
-+      close (ptrace_scope);
-+    }
-+
-   Dwfl *dwfl = dwfl_begin (&proc_callbacks);
-   if (dwfl == NULL)
-     error (2, 0, "dwfl_begin: %s", dwfl_errmsg (-1));
-- 
2.18.1

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

* [bug#38803] [PATCH] gnu: elfutils: Update to 0.178
  2020-01-12 20:39 ` Mark Wielaard
@ 2020-01-12 20:54   ` Marius Bakke
  2020-01-13  0:03     ` Mark Wielaard
  0 siblings, 1 reply; 16+ messages in thread
From: Marius Bakke @ 2020-01-12 20:54 UTC (permalink / raw)
  To: Mark Wielaard, 38803; +Cc: Brett Gilio

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

Mark,

Mark Wielaard <mark@klomp.org> writes:

> This introduces debuginfod support which requires a couple of new inputs.
>
> * gnu/local.ml (dist_patch_DATA): Remove elfutils-tests-ptrace.patch.
>   Add elfutils-0.178-tests-build-id.patch.
> * gnu/packages/elf.scm (elfutils): Update to 0.178
>   [native-inputs]: Add iproute and pkg-config.
>   [inputs]: Add cpio, libarchive, libmicrohttpd, libcurl, rpm and sqlite.
>   [synopsis]: Updated.
>   [description]: Updated.
>   [license]: List all licenses used.
> * gnu/packages/patches/elfutils-tests-ptrace.patch: Removed. Fixed upstream.
> * gnu/packages/patches/elfutils-0.178-tests-build-id.patch: New. Patches
>   backported from upstream git.

Thank you for these improvements.  Could you submit the synopsis and
description update separately?

I worry about all the new inputs.  This patch effectively makes us
unable to update all these inputs outside of the 'staging' or
'core-updates' cycles.

What is the difference in 'guix size elfutils' with and without this
patch?

Would it make sense to have a separate 'elfutils-minimal' for use in
Mesa, and expose the debuginfod-enabled variant as a separate package?
We could "hide" the minimal variant so that end users get the expected
package.

Also, for the patches, please add links to upstream commits in the patch
files, see some of the other patches for examples.  I would also prefer
if they were separate files, seeing as the two commits do different
things.

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

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

* [bug#38803] [PATCH] gnu: elfutils: Update to 0.178
  2020-01-12 20:54   ` Marius Bakke
@ 2020-01-13  0:03     ` Mark Wielaard
  2020-01-13 22:26       ` Marius Bakke
  0 siblings, 1 reply; 16+ messages in thread
From: Mark Wielaard @ 2020-01-13  0:03 UTC (permalink / raw)
  To: Marius Bakke; +Cc: Brett Gilio, 38803

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

Hi,

On Sun, Jan 12, 2020 at 09:54:52PM +0100, Marius Bakke wrote:
> Mark Wielaard <mark@klomp.org> writes:
> 
> > This introduces debuginfod support which requires a couple of new inputs.
> >
> > * gnu/local.ml (dist_patch_DATA): Remove elfutils-tests-ptrace.patch.
> >   Add elfutils-0.178-tests-build-id.patch.
> > * gnu/packages/elf.scm (elfutils): Update to 0.178
> >   [native-inputs]: Add iproute and pkg-config.
> >   [inputs]: Add cpio, libarchive, libmicrohttpd, libcurl, rpm and sqlite.
> >   [synopsis]: Updated.
> >   [description]: Updated.
> >   [license]: List all licenses used.
> > * gnu/packages/patches/elfutils-tests-ptrace.patch: Removed. Fixed upstream.
> > * gnu/packages/patches/elfutils-0.178-tests-build-id.patch: New. Patches
> >   backported from upstream git.
> 
> Thank you for these improvements.  Could you submit the synopsis and
> description update separately?

Sure. Split patch as attached.

> I worry about all the new inputs.  This patch effectively makes us
> unable to update all these inputs outside of the 'staging' or
> 'core-updates' cycles.

I am not sure I follow. This is my first patch.  It simply adds some
inputs needed for a new client/server program added upstream in the
new version.

> What is the difference in 'guix size elfutils' with and without this
> patch?

$ guix size elfutils
store item                                                       total    self
/gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-glibc-2.29              37.4    35.8  47.2%
/gnu/store/2plcy91lypnbbysb18ymnhaw3zwk8pg1-gcc-7.4.0-lib           70.0    32.6  43.0%
/gnu/store/w0c5bcygj73chk2f6h0g8zhzpm80p1a5-elfutils-0.176          75.8     3.2   4.2%
/gnu/store/cp72ncw4prnsga65n3pzll07hpsg524f-bash-static-5.0.7        1.6     1.6   2.1%
/gnu/store/29jhbbg1hf557x8j53f9sxd9imlmf02a-bash-minimal-5.0.7      38.4     1.0   1.4%
/gnu/store/lbip9isk25isymvnb159l115xnacb5j8-xz-5.2.4                72.0     0.9   1.2%
/gnu/store/l86azr7r3p5631wj3kk329jl1y1mpjgy-bzip2-1.0.6             71.5     0.4   0.5%
/gnu/store/qx7p7hiq90mi7r78hcr9cyskccy2j4bg-zlib-1.2.11             70.2     0.2   0.3%
total: 75.8 MiB

$ ./pre-inst-env guix size elfutils
store item                                                       total    self
/gnu/store/1mkkv2caiqbdbbd256c4dirfi4kwsacv-guile-2.2.6            123.9    44.4  22.7%
/gnu/store/352q0n1rrymfdk49mfr0cym3d8svz824-icu4c-64.2             108.6    37.5  19.2%
/gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-glibc-2.29              37.4    35.8  18.3%
/gnu/store/2plcy91lypnbbysb18ymnhaw3zwk8pg1-gcc-7.4.0-lib           70.0    32.6  16.7%
/gnu/store/k2m4q2av9hw73hw2jx6qrxqdyh855398-openssl-1.1.1c          76.4     6.4   3.3%
/gnu/store/hfvz18igm68p5yz7z4asn6ph363blp1z-gnutls-3.6.9           130.6     5.1   2.6%
/gnu/store/slvjkd3brr6n554r2gk9djsjpm7l7xbs-bdb-5.3.28              74.4     4.4   2.2%
/gnu/store/4rs159kgsa0l1svi5vbvn86in7z28bpl-mit-krb5-1.17           75.3     4.3   2.2%
/gnu/store/bjxd9jzc560d6i3i35f5yy5mljk0ib6m-openldap-2.4.47        188.5     3.7   1.9%
/gnu/store/w8qacdh5fqrzn08wz3n43d0czi00c4c6-elfutils-0.178         195.8     3.6   1.9%
/gnu/store/y7qk8raalgvdnxcglvxa320cfxrjk1x6-gmp-6.1.2               72.6     2.6   1.3%
/gnu/store/nsikjxykcaqa0zjpfmkqd569bngbv5nl-libunistring-0.9.10     72.4     2.4   1.2%
/gnu/store/cp72ncw4prnsga65n3pzll07hpsg524f-bash-static-5.0.7        1.6     1.6   0.8%
/gnu/store/i1cqaixp79vd3qwnyj1ll10pq6skm2wk-pkg-config-0.29.2       71.3     1.3   0.7%
/gnu/store/3xs3dnc28p9fi8in7hkfcdx20incrdvq-libgc-7.6.12            71.9     1.2   0.6%
/gnu/store/29jhbbg1hf557x8j53f9sxd9imlmf02a-bash-minimal-5.0.7      38.4     1.0   0.5%
/gnu/store/4m8dlhrzis07787xznx73ang35c3lly1-curl-7.65.3            190.8     1.0   0.5%
/gnu/store/lbip9isk25isymvnb159l115xnacb5j8-xz-5.2.4                72.0     0.9   0.5%
/gnu/store/lvnybsygfd6gya6xbdv48g72lb0iqqzx-nettle-3.5.1            73.5     0.9   0.5%
/gnu/store/f8aljw2qhv3d1br9czn8v5afbgfdrxkg-cyrus-sasl-2.1.27       83.3     0.9   0.4%
/gnu/store/2792g0vczwsxnvqm9ja5g9hwvbrjlc4w-gdbm-1.18.1             70.7     0.7   0.4%
/gnu/store/bvpnq3alwbavyk4663j4p9x9hakxwc4d-libatomic-ops-7.6.10     0.7     0.7   0.4%
/gnu/store/33f8qhxa69dmd43yqdx3wq1b2hqjddgb-curl-7.65.3-doc          0.7     0.7   0.3%
/gnu/store/7gabmw9siqrz79slpi1f8i90v3w1638x-libidn2-2.2.0           72.8     0.5   0.2%
/gnu/store/l86azr7r3p5631wj3kk329jl1y1mpjgy-bzip2-1.0.6             71.5     0.4   0.2%
/gnu/store/zavdh2z5mwkakjf1v98x43w1hzjzxkhl-nghttp2-1.39.1-lib      70.4     0.4   0.2%
/gnu/store/qx7p7hiq90mi7r78hcr9cyskccy2j4bg-zlib-1.2.11             70.2     0.2   0.1%
/gnu/store/lwz8fygpmmsw6h8vrllr56p7ssi5qx33-libtasn1-4.14           70.2     0.2   0.1%
/gnu/store/zasz52va238yyaq68rjm8ljwl4ikij4p-libltdl-2.4.6           70.2     0.2   0.1%
/gnu/store/ain96mrdwqd4s9shdd3s7m4syp5icdx5-libffi-3.2.1            70.1     0.1   0.1%
total: 195.8 MiB

> Would it make sense to have a separate 'elfutils-minimal' for use in
> Mesa, and expose the debuginfod-enabled variant as a separate package?
> We could "hide" the minimal variant so that end users get the expected
> package.

Sure. Other distros split elfutils into multiple packages. For example fedora has:

%package libs
%package devel
%package devel-static
%package libelf
%package libelf-devel
%package libelf-devel-static
%package default-yama-scope
%package debuginfod-client
%package debuginfod-client-devel
%package debuginfod

With the main elfutils package containing all binaries except for
debuginfod-find (the client) and debuginfod (the server). With
appropriate requires/recommends (I don't yet know how those work in
guix).

> Also, for the patches, please add links to upstream commits in the patch
> files, see some of the other patches for examples.  I would also prefer
> if they were separate files, seeing as the two commits do different
> things.

OK split in two. The tests patches are together, because they do the
same thing. I am not sure an upstream git commit id link is better
than simply the commit id, but added if it is more convenient.

Cheers,

Mark

[-- Attachment #2: 0001-gnu-elfutils-Update-synopsis-and-description.patch --]
[-- Type: text/x-diff, Size: 3014 bytes --]

From 2f75d90d59542fdc31bb9cc4d477eb90c7986e99 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
Date: Sun, 12 Jan 2020 23:54:18 +0100
Subject: [PATCH 1/2] gnu: elfutils: Update synopsis and description

* gnu/packages/elf.scm (elfutils): Update summaries.
  [synopsis]: Updated.
  [description]: Updated.
---
 gnu/packages/elf.scm | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
index 75caa54296..01bf0fcf89 100644
--- a/gnu/packages/elf.scm
+++ b/gnu/packages/elf.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2020 Mark Wielaard <mark@klomp.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -54,9 +55,10 @@
     (build-system gnu-build-system)
 
     ;; Separate programs because that's usually not what elfutils users want,
-    ;; and because they duplicate what Binutils provides.
+    ;; and because they duplicate what Binutils proAvides (but are named
+    ;; differently, using the eu- prefix and can be installed in parallel).
     (outputs '("out"                           ; libelf.so, elfutils/*.h, etc.
-               "bin"))                         ; ld, nm, objdump, etc.
+               "bin"))                         ; eu-nm, eu-objdump, etc.
 
     (arguments
      ;; Programs don't have libelf.so in their RUNPATH and libraries don't
@@ -84,11 +86,21 @@
     (native-inputs `(("m4" ,m4)))
     (inputs `(("zlib" ,zlib)))
     (home-page "https://sourceware.org/elfutils/")
-    (synopsis "Linker and ELF manipulation tools")
+    (synopsis "Collection of utilities and libraries to handle ELF files and
+DWARF data")
     (description
-     "This package provides command-line tools to manipulate binaries in the
-Executable and Linkable Format (@dfn{ELF}).  This includes @command{ld},
-@command{ar}, @command{objdump}, @command{addr2line}, and more.")
+     "A collection of utilities and libraries to read, create and modify
+Executable and Linkable Format (@dfn{ELF}) binary files, find and handle
+Debugging With Arbitrary Record Formats (@dfn{DWARF}) debug data, symbols,
+thread state and stacktraces for processes and core files on GNU/Linux.
+Includes @file{libelf} for manipulating ELF files, @file{libdw} for inspecting
+DWARF data and process state and utilities like @command{eu-stack} (to show
+backtraces), @command{eu-nm} (for listing symbols from object files),
+@command{eu-size} (for listing the section sizes of an object or archive
+file), @command{eu-strip} (for discarding symbols), @command{eu-readelf} (to
+see the raw ELF file structures), @command{eu-elflint} (to check for
+well-formed ELF files), @command{eu-elfcompress} (to compress or decompress
+ELF sections), and more.")
 
     ;; Libraries are dual-licensed LGPLv3.0+ | GPLv2, and programs are GPLv3+.
     (license lgpl3+)))
-- 
2.20.1


[-- Attachment #3: 0002-gnu-elfutils-Update-to-0.178.patch --]
[-- Type: text/x-diff, Size: 14289 bytes --]

From f3573f3ce83dad4958673ded37fc44607c9fd910 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
Date: Mon, 13 Jan 2020 00:55:10 +0100
Subject: [PATCH 2/2] gnu: elfutils: Update to 0.178

This introduces debuginfod support which requires a couple of new inputs.

* gnu/local.ml (dist_patch_DATA): Remove elfutils-tests-ptrace.patch.
  Add elfutils-0.178-tests.patch and elfutils-0.178-build-id.patch.
* gnu/packages/elf.scm (elfutils): Update to 0.178
  [native-inputs]: Add iproute and pkg-config.
  [inputs]: Add cpio, libarchive, libmicrohttpd, libcurl, rpm and sqlite.
  [license]: List all licenses used.
* gnu/packages/patches/elfutils-tests-ptrace.patch: Removed. Fixed upstream.
* gnu/packages/patches/elfutils-0.178-tests-build-id.patch: New. Patches
  backported from upstream git.
* gnu/packages/patches/elfutils-0.178-build-id.patch: Likewise.
---
 gnu/local.mk                                  |   3 +-
 gnu/packages/elf.scm                          |  29 +++--
 .../patches/elfutils-0.178-build-id.patch     | 102 ++++++++++++++++++
 .../patches/elfutils-0.178-tests.patch        |  63 +++++++++++
 .../patches/elfutils-tests-ptrace.patch       |  64 -----------
 5 files changed, 190 insertions(+), 71 deletions(-)
 create mode 100644 gnu/packages/patches/elfutils-0.178-build-id.patch
 create mode 100644 gnu/packages/patches/elfutils-0.178-tests.patch
 delete mode 100644 gnu/packages/patches/elfutils-tests-ptrace.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 33cf439870..2d64b483ee 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -813,7 +813,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/dstat-skip-devices-without-io.patch	\
   %D%/packages/patches/dvd+rw-tools-add-include.patch 		\
   %D%/packages/patches/einstein-build.patch			\
-  %D%/packages/patches/elfutils-tests-ptrace.patch		\
+  %D%/packages/patches/elfutils-0.178-tests.patch		\
+  %D%/packages/patches/elfutils-0.178-build-id.patch		\
   %D%/packages/patches/elixir-path-length.patch			\
   %D%/packages/patches/elm-compiler-disable-reactor.patch	\
   %D%/packages/patches/elm-compiler-fix-map-key.patch		\
diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
index 01bf0fcf89..05068c00a1 100644
--- a/gnu/packages/elf.scm
+++ b/gnu/packages/elf.scm
@@ -28,30 +28,39 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
-  #:use-module ((guix licenses) #:select (gpl3+ lgpl3+ lgpl2.0+))
+  #:use-module ((guix licenses) #:select (gpl2+ gpl3+ lgpl3+ lgpl2.0+ fdl1.3+))
   #:use-module (gnu packages)
+  #:use-module (gnu packages backup)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages cpio)
+  #:use-module (gnu packages curl)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages gcc)
+  #:use-module (gnu packages gnunet) ; for libmicrohttpd
+  #:use-module (gnu packages linux)  ; for iproute
   #:use-module (gnu packages m4)
+  #:use-module (gnu packages package-management) ; for rpm
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages sphinx)
+  #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages sphinx)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages xml))
 
 (define-public elfutils
   (package
     (name "elfutils")
-    (version "0.176")
+    (version "0.178")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://sourceware.org/elfutils/ftp/"
                                   version "/elfutils-" version ".tar.bz2"))
               (sha256
                (base32
-                "08qhrl4g6qqr4ga46jhh78y56a47p3msa5b2x1qhzbxhf71lfmzb"))
-              (patches (search-patches "elfutils-tests-ptrace.patch"))))
+                "1wm0yfcih4rjwbg59qgm4jyqmbsdmk6z5qajljyw9sfljq7a1rri"))
+              (patches (search-patches "elfutils-0.178-tests.patch"
+                                       "elfutils-0.178-build-id.patch"))))
     (build-system gnu-build-system)
 
     ;; Separate programs because that's usually not what elfutils users want,
@@ -83,8 +92,16 @@
                (("run-backtrace-native.sh") ""))
              #t)))))
 
-    (native-inputs `(("m4" ,m4)))
-    (inputs `(("zlib" ,zlib)))
+    (native-inputs `(("iproute", iproute) ;; needed in tests for ss
+                     ("m4", m4)
+                     ("pkg-config", pkg-config)))
+    (inputs `(("cpio", cpio)
+              ("libarchive", libarchive)
+              ("libmicrohttpd", libmicrohttpd)
+              ("libcurl", curl)
+              ("rpm", rpm)
+              ("sqlite", sqlite)
+              ("zlib" ,zlib)))
     (home-page "https://sourceware.org/elfutils/")
     (synopsis "Collection of utilities and libraries to handle ELF files and
 DWARF data")
diff --git a/gnu/packages/patches/elfutils-0.178-build-id.patch b/gnu/packages/patches/elfutils-0.178-build-id.patch
new file mode 100644
index 0000000000..099f55d500
--- /dev/null
+++ b/gnu/packages/patches/elfutils-0.178-build-id.patch
@@ -0,0 +1,102 @@
+https://sourceware.org/git/?p=elfutils.git;a=commit;h=cf1b5fe170fa24f32871ef284ff2968c73816f98 
+
+commit cf1b5fe170fa24f32871ef284ff2968c73816f98
+Author: Mark Wielaard <mark@klomp.org>
+Date:   Fri Dec 6 17:20:00 2019 +0100
+
+    Make sure to always build with build-ids.
+    
+    We really need build-ids for various things.  If the system compiler
+    doesn't generate build-ids warn and generate them anyway for both the
+    binaries and the tests.
+    
+    Signed-off-by: Mark Wielaard <mark@klomp.org>
+
+diff --git a/configure.ac b/configure.ac
+index 5a2dc373..36a6b6c2 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -197,6 +197,15 @@ if test "$ac_cv_zdefs" = "yes"; then
+ 	dso_LDFLAGS="$dso_LDFLAGS $ZDEFS_LDFLAGS"
+ fi
+ 
++# We really want build-ids. Warn and force generating them if gcc was
++# configure without --enable-linker-build-id
++AC_CACHE_CHECK([whether the compiler generates build-ids], ac_cv_buildid, [dnl
++AC_LINK_IFELSE([AC_LANG_PROGRAM()],[ac_cv_buildid=yes; readelf -n conftest$EXEEXT | grep -q NT_GNU_BUILD_ID || ac_cv_buildid=no],AC_MSG_FAILURE([unexpected compile failure]))])
++if test "$ac_cv_buildid" = "no"; then
++	AC_MSG_WARN([compiler doesn't generate build-id by default])
++	LDFLAGS="$LDFLAGS -Wl,--build-id"
++fi
++
+ ZRELRO_LDFLAGS="-Wl,-z,relro"
+ AC_CACHE_CHECK([whether gcc supports $ZRELRO_LDFLAGS], ac_cv_zrelro, [dnl
+ save_LDFLAGS="$LDFLAGS"
+diff --git a/tests/run-debuginfod-find.sh b/tests/run-debuginfod-find.sh
+index 6f92fbf1..6533996a 100755
+--- a/tests/run-debuginfod-find.sh
++++ b/tests/run-debuginfod-find.sh
+@@ -101,7 +101,7 @@ export DEBUGINFOD_TIMEOUT=10
+ # cannot find it without debuginfod.
+ echo "int main() { return 0; }" > ${PWD}/prog.c
+ tempfiles prog.c
+-gcc -g -o prog ${PWD}/prog.c
++gcc -Wl,--build-id -g -o prog ${PWD}/prog.c
+ testrun ${abs_top_builddir}/src/strip -g -f prog.debug ${PWD}/prog
+ BUILDID=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
+           -a prog | grep 'Build ID' | cut -d ' ' -f 7`
+@@ -138,7 +138,7 @@ cmp $filename  ${PWD}/prog.c
+ # Build another, non-stripped binary
+ echo "int main() { return 0; }" > ${PWD}/prog2.c
+ tempfiles prog2.c
+-gcc -g -o prog2 ${PWD}/prog2.c
++gcc -Wl,--build-id -g -o prog2 ${PWD}/prog2.c
+ BUILDID2=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
+           -a prog2 | grep 'Build ID' | cut -d ' ' -f 7`
+ 
+--- a/configure	1970-01-01 01:00:00.000000000 +0100
++++ b/configure	2019-12-11 14:18:11.812008097 +0100
+@@ -5325,6 +5325,43 @@
+ 	dso_LDFLAGS="$dso_LDFLAGS $ZDEFS_LDFLAGS"
+ fi
+ 
++# We really want build-ids. Warn and force generating them if gcc was
++# configure without --enable-linker-build-id
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler generates build-ids" >&5
++$as_echo_n "checking whether the compiler generates build-ids... " >&6; }
++if ${ac_cv_buildid+:} false; then :
++  $as_echo_n "(cached) " >&6
++else
++  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++
++int
++main ()
++{
++
++  ;
++  return 0;
++}
++_ACEOF
++if ac_fn_c_try_link "$LINENO"; then :
++  ac_cv_buildid=yes; readelf -n conftest$EXEEXT | grep -q NT_GNU_BUILD_ID || ac_cv_buildid=no
++else
++  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++as_fn_error $? "unexpected compile failure
++See \`config.log' for more details" "$LINENO" 5; }
++fi
++rm -f core conftest.err conftest.$ac_objext \
++    conftest$ac_exeext conftest.$ac_ext
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_buildid" >&5
++$as_echo "$ac_cv_buildid" >&6; }
++if test "$ac_cv_buildid" = "no"; then
++	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: compiler doesn't generate build-id by default" >&5
++$as_echo "$as_me: WARNING: compiler doesn't generate build-id by default" >&2;}
++	LDFLAGS="$LDFLAGS -Wl,--build-id"
++fi
++
+ ZRELRO_LDFLAGS="-Wl,-z,relro"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gcc supports $ZRELRO_LDFLAGS" >&5
+ $as_echo_n "checking whether gcc supports $ZRELRO_LDFLAGS... " >&6; }
diff --git a/gnu/packages/patches/elfutils-0.178-tests.patch b/gnu/packages/patches/elfutils-0.178-tests.patch
new file mode 100644
index 0000000000..3faeaf4a4f
--- /dev/null
+++ b/gnu/packages/patches/elfutils-0.178-tests.patch
@@ -0,0 +1,63 @@
+https://sourceware.org/git/?p=elfutils.git;a=commit;h=3f445279b60b16b6cb062921b74ae400344b4a68
+
+commit 3f445279b60b16b6cb062921b74ae400344b4a68
+Author: Mark Wielaard <mark@klomp.org>
+Date:   Thu Dec 5 14:22:56 2019 +0100
+
+    tests: Run elfcompress under testrun in run-elfclassify.sh
+    
+    Otherwise elfcompress might run against the system libelf which might
+    be too old or missing.
+    
+    Signed-off-by: Mark Wielaard <mark@klomp.org>
+
+diff --git a/tests/run-elfclassify.sh b/tests/run-elfclassify.sh
+index 5a849bbd..fb14139d 100755
+--- a/tests/run-elfclassify.sh
++++ b/tests/run-elfclassify.sh
+@@ -267,7 +267,7 @@ $(echo $kmod_files | sed -e "s/ /\n/g")
+ EOF
+ 
+ echo "gnu compressed kmods are unstripped"
+-${abs_top_builddir}/src/elfcompress -t gnu --force $kmod_files
++testrun ${abs_top_builddir}/src/elfcompress -t gnu --force $kmod_files
+ testrun ${abs_top_builddir}/src/elfclassify --unstripped $kmod_files
+ testrun_compare ${abs_top_builddir}/src/elfclassify --unstripped --print $kmod_files <<EOF
+ $(echo $kmod_files | sed -e "s/ /\n/g")
+@@ -312,7 +312,7 @@ $(echo $debug_files | sed -e "s/ /\n/g")
+ EOF
+ 
+ echo "compress the debug sections and try again"
+-${abs_top_builddir}/src/elfcompress -t gnu --force $debug_files
++testrun ${abs_top_builddir}/src/elfcompress -t gnu --force $debug_files
+ 
+ echo "again unstripped"
+ testrun ${abs_top_builddir}/src/elfclassify --unstripped $debug_files
+
+https://sourceware.org/git/?p=elfutils.git;a=commit;h=eaffa79d52da7454044be53d28b525cebdb0093b
+
+commit eaffa79d52da7454044be53d28b525cebdb0093b
+Author: Mark Wielaard <mark@klomp.org>
+Date:   Fri Dec 6 15:48:00 2019 +0100
+
+    tests: Run strip under testrun in run-debuginfod-find.sh
+    
+    Otherwise strip might run against the system libelf which might be too
+    old or missing.
+    
+    Signed-off-by: Mark Wielaard <mark@klomp.org>
+
+diff --git a/tests/run-debuginfod-find.sh b/tests/run-debuginfod-find.sh
+index 0ade03b7..6f92fbf1 100755
+--- a/tests/run-debuginfod-find.sh
++++ b/tests/run-debuginfod-find.sh
+@@ -102,7 +102,7 @@ export DEBUGINFOD_TIMEOUT=10
+ echo "int main() { return 0; }" > ${PWD}/prog.c
+ tempfiles prog.c
+ gcc -g -o prog ${PWD}/prog.c
+- ${abs_top_builddir}/src/strip -g -f prog.debug ${PWD}/prog
++testrun ${abs_top_builddir}/src/strip -g -f prog.debug ${PWD}/prog
+ BUILDID=`env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../src/readelf \
+           -a prog | grep 'Build ID' | cut -d ' ' -f 7`
+ 
+
diff --git a/gnu/packages/patches/elfutils-tests-ptrace.patch b/gnu/packages/patches/elfutils-tests-ptrace.patch
deleted file mode 100644
index cd46999063..0000000000
--- a/gnu/packages/patches/elfutils-tests-ptrace.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-This patch allows us to skip tests that require PTRACE_ATTACH in situations
-where PTRACE_ATTACH is only allowed when CAP_SYS_PTRACE is held (i.e., for
-root, by default.)
-
-Reported at <https://bugzilla.redhat.com/show_bug.cgi?id=1210966>.
-
---- elfutils-0.161/tests/run-deleted.sh	2015-04-11 16:38:33.028556235 +0200
-+++ elfutils-0.161/tests/run-deleted.sh	2015-04-11 16:46:15.012442185 +0200
-@@ -17,6 +17,15 @@
- 
- . $srcdir/backtrace-subr.sh
- 
-+# Check whether the Yama policy allows us to use PTRACE_ATTACH.
-+if [ -f /proc/sys/kernel/yama/ptrace_scope ]
-+then
-+    if [ `cat /proc/sys/kernel/yama/ptrace_scope` -ne 0 ]
-+    then
-+	exit 77
-+    fi
-+fi
-+
- tempfiles deleted deleted-lib.so
- cp -p ${abs_builddir}/deleted ${abs_builddir}/deleted-lib.so .
- 
---- elfutils-0.161/tests/vdsosyms.c	2015-04-11 16:40:20.633461110 +0200
-+++ elfutils-0.161/tests/vdsosyms.c	2015-04-11 16:45:06.611866677 +0200
-@@ -23,6 +23,8 @@
- #include <stdio.h>
- #include <string.h>
- #include <sys/types.h>
-+#include <sys/stat.h>
-+#include <fcntl.h>
- #include <unistd.h>
- #include ELFUTILS_HEADER(dwfl)
- 
-@@ -68,6 +70,7 @@ module_callback (Dwfl_Module *mod, void
- int
- main (int argc __attribute__ ((unused)), char **argv __attribute__ ((unused)))
- {
-+  static const char ptrace_scope_file[] = "/proc/sys/kernel/yama/ptrace_scope";
-   static char *debuginfo_path;
-   static const Dwfl_Callbacks proc_callbacks =
-     {
-@@ -76,6 +79,20 @@ main (int argc __attribute__ ((unused)),
- 
-       .find_elf = dwfl_linux_proc_find_elf,
-     };
-+
-+  /* Check whether the Yama policy allows us to use PTRACE_ATTACH.  */
-+  int ptrace_scope = open (ptrace_scope_file, O_RDONLY);
-+  if (ptrace_scope >= 0)
-+    {
-+      char buf[10];
-+      int count = read (ptrace_scope, buf, sizeof buf);
-+      assert (count > 0);
-+      if (buf[0] != '0')
-+	/* We're not allowed, so skip this test.  */
-+	return 77;
-+      close (ptrace_scope);
-+    }
-+
-   Dwfl *dwfl = dwfl_begin (&proc_callbacks);
-   if (dwfl == NULL)
-     error (2, 0, "dwfl_begin: %s", dwfl_errmsg (-1));
-- 
2.20.1


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

* [bug#38803] [PATCH] gnu: elfutils: Update to 0.178
  2020-01-13  0:03     ` Mark Wielaard
@ 2020-01-13 22:26       ` Marius Bakke
  2020-01-31 12:43         ` Mark Wielaard
  0 siblings, 1 reply; 16+ messages in thread
From: Marius Bakke @ 2020-01-13 22:26 UTC (permalink / raw)
  To: Mark Wielaard; +Cc: Brett Gilio, 38803

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

Mark Wielaard <mark@klomp.org> writes:

> Hi,
>
> On Sun, Jan 12, 2020 at 09:54:52PM +0100, Marius Bakke wrote:
>> Mark Wielaard <mark@klomp.org> writes:
>> 
>> > This introduces debuginfod support which requires a couple of new inputs.
>> >
>> > * gnu/local.ml (dist_patch_DATA): Remove elfutils-tests-ptrace.patch.
>> >   Add elfutils-0.178-tests-build-id.patch.
>> > * gnu/packages/elf.scm (elfutils): Update to 0.178
>> >   [native-inputs]: Add iproute and pkg-config.
>> >   [inputs]: Add cpio, libarchive, libmicrohttpd, libcurl, rpm and sqlite.
>> >   [synopsis]: Updated.
>> >   [description]: Updated.
>> >   [license]: List all licenses used.
>> > * gnu/packages/patches/elfutils-tests-ptrace.patch: Removed. Fixed upstream.
>> > * gnu/packages/patches/elfutils-0.178-tests-build-id.patch: New. Patches
>> >   backported from upstream git.
>> 
>> Thank you for these improvements.  Could you submit the synopsis and
>> description update separately?
>
> Sure. Split patch as attached.

Thanks!  The first patch did not apply for me, can you rebase on
'master'?

Also, for the description, please use full sentences.  I.e. keep the
'This package provides a collection ...' and 'This includes ...' instead
of 'A collection ...' and 'Includes ...'.

>> I worry about all the new inputs.  This patch effectively makes us
>> unable to update all these inputs outside of the 'staging' or
>> 'core-updates' cycles.
>
> I am not sure I follow. This is my first patch.  It simply adds some
> inputs needed for a new client/server program added upstream in the
> new version.

OK, thanks for clarifying.

>> What is the difference in 'guix size elfutils' with and without this
>> patch?
>
> $ guix size elfutils
> store item                                                       total    self
> /gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-glibc-2.29              37.4    35.8  47.2%
> /gnu/store/2plcy91lypnbbysb18ymnhaw3zwk8pg1-gcc-7.4.0-lib           70.0    32.6  43.0%
> /gnu/store/w0c5bcygj73chk2f6h0g8zhzpm80p1a5-elfutils-0.176          75.8     3.2   4.2%
> /gnu/store/cp72ncw4prnsga65n3pzll07hpsg524f-bash-static-5.0.7        1.6     1.6   2.1%
> /gnu/store/29jhbbg1hf557x8j53f9sxd9imlmf02a-bash-minimal-5.0.7      38.4     1.0   1.4%
> /gnu/store/lbip9isk25isymvnb159l115xnacb5j8-xz-5.2.4                72.0     0.9   1.2%
> /gnu/store/l86azr7r3p5631wj3kk329jl1y1mpjgy-bzip2-1.0.6             71.5     0.4   0.5%
> /gnu/store/qx7p7hiq90mi7r78hcr9cyskccy2j4bg-zlib-1.2.11             70.2     0.2   0.3%
> total: 75.8 MiB
>
> $ ./pre-inst-env guix size elfutils
> store item                                                       total    self
> /gnu/store/1mkkv2caiqbdbbd256c4dirfi4kwsacv-guile-2.2.6            123.9    44.4  22.7%
> /gnu/store/352q0n1rrymfdk49mfr0cym3d8svz824-icu4c-64.2             108.6    37.5  19.2%
> /gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-glibc-2.29              37.4    35.8  18.3%
> /gnu/store/2plcy91lypnbbysb18ymnhaw3zwk8pg1-gcc-7.4.0-lib           70.0    32.6  16.7%
> /gnu/store/k2m4q2av9hw73hw2jx6qrxqdyh855398-openssl-1.1.1c          76.4     6.4   3.3%
> /gnu/store/hfvz18igm68p5yz7z4asn6ph363blp1z-gnutls-3.6.9           130.6     5.1   2.6%
> /gnu/store/slvjkd3brr6n554r2gk9djsjpm7l7xbs-bdb-5.3.28              74.4     4.4   2.2%
> /gnu/store/4rs159kgsa0l1svi5vbvn86in7z28bpl-mit-krb5-1.17           75.3     4.3   2.2%
> /gnu/store/bjxd9jzc560d6i3i35f5yy5mljk0ib6m-openldap-2.4.47        188.5     3.7   1.9%
> /gnu/store/w8qacdh5fqrzn08wz3n43d0czi00c4c6-elfutils-0.178         195.8     3.6   1.9%
> /gnu/store/y7qk8raalgvdnxcglvxa320cfxrjk1x6-gmp-6.1.2               72.6     2.6   1.3%
> /gnu/store/nsikjxykcaqa0zjpfmkqd569bngbv5nl-libunistring-0.9.10     72.4     2.4   1.2%
> /gnu/store/cp72ncw4prnsga65n3pzll07hpsg524f-bash-static-5.0.7        1.6     1.6   0.8%
> /gnu/store/i1cqaixp79vd3qwnyj1ll10pq6skm2wk-pkg-config-0.29.2       71.3     1.3   0.7%
> /gnu/store/3xs3dnc28p9fi8in7hkfcdx20incrdvq-libgc-7.6.12            71.9     1.2   0.6%
> /gnu/store/29jhbbg1hf557x8j53f9sxd9imlmf02a-bash-minimal-5.0.7      38.4     1.0   0.5%
> /gnu/store/4m8dlhrzis07787xznx73ang35c3lly1-curl-7.65.3            190.8     1.0   0.5%
> /gnu/store/lbip9isk25isymvnb159l115xnacb5j8-xz-5.2.4                72.0     0.9   0.5%
> /gnu/store/lvnybsygfd6gya6xbdv48g72lb0iqqzx-nettle-3.5.1            73.5     0.9   0.5%
> /gnu/store/f8aljw2qhv3d1br9czn8v5afbgfdrxkg-cyrus-sasl-2.1.27       83.3     0.9   0.4%
> /gnu/store/2792g0vczwsxnvqm9ja5g9hwvbrjlc4w-gdbm-1.18.1             70.7     0.7   0.4%
> /gnu/store/bvpnq3alwbavyk4663j4p9x9hakxwc4d-libatomic-ops-7.6.10     0.7     0.7   0.4%
> /gnu/store/33f8qhxa69dmd43yqdx3wq1b2hqjddgb-curl-7.65.3-doc          0.7     0.7   0.3%
> /gnu/store/7gabmw9siqrz79slpi1f8i90v3w1638x-libidn2-2.2.0           72.8     0.5   0.2%
> /gnu/store/l86azr7r3p5631wj3kk329jl1y1mpjgy-bzip2-1.0.6             71.5     0.4   0.2%
> /gnu/store/zavdh2z5mwkakjf1v98x43w1hzjzxkhl-nghttp2-1.39.1-lib      70.4     0.4   0.2%
> /gnu/store/qx7p7hiq90mi7r78hcr9cyskccy2j4bg-zlib-1.2.11             70.2     0.2   0.1%
> /gnu/store/lwz8fygpmmsw6h8vrllr56p7ssi5qx33-libtasn1-4.14           70.2     0.2   0.1%
> /gnu/store/zasz52va238yyaq68rjm8ljwl4ikij4p-libltdl-2.4.6           70.2     0.2   0.1%
> /gnu/store/ain96mrdwqd4s9shdd3s7m4syp5icdx5-libffi-3.2.1            70.1     0.1   0.1%
> total: 195.8 MiB

Oof, that is a *huge* difference.  Do you know where the extra
references come from?  I.e. could we move libelf.so to its own output to
lose some of the runtime dependencies?

Previously 'mesa' was using our other 'libelf' package, but I switched
it to elfutils in commit 9b3b4c05a06bb8ef22350706b66043b5e93d8d66
because that's what "everyone else" do.  Perhaps we should go back to
that, thoughts?  Then we don't have to worry as much about the size of
elfutils.

>> Would it make sense to have a separate 'elfutils-minimal' for use in
>> Mesa, and expose the debuginfod-enabled variant as a separate package?
>> We could "hide" the minimal variant so that end users get the expected
>> package.
>
> Sure. Other distros split elfutils into multiple packages. For example fedora has:
>
> %package libs
> %package devel
> %package devel-static
> %package libelf
> %package libelf-devel
> %package libelf-devel-static
> %package default-yama-scope
> %package debuginfod-client
> %package debuginfod-client-devel
> %package debuginfod

Right.  It makes sense to do something similar for Guix if many packages
end up needing elfutils at runtime.

> With the main elfutils package containing all binaries except for
> debuginfod-find (the client) and debuginfod (the server). With
> appropriate requires/recommends (I don't yet know how those work in
> guix).

Guix does not have a notion of 'recommends'.  Each package is built with
an exact set of inputs, and each build output is scanned for references
to the inputs which are then stored as runtime dependencies.

There are talks about "parameterized packages", where you could apply
some vetted transformation to the build procedure, but advertising
optional runtime dependencies is an open question.

>> Also, for the patches, please add links to upstream commits in the patch
>> files, see some of the other patches for examples.  I would also prefer
>> if they were separate files, seeing as the two commits do different
>> things.
>
> OK split in two. The tests patches are together, because they do the
> same thing. I am not sure an upstream git commit id link is better
> than simply the commit id, but added if it is more convenient.

As someone who frequently chases upstream repositories for patches, I
certainly appreciate not having to figure out where their VCS is
hosted.  Sourceware does exceptionally well in that regard, but not
everyone knows it.  So, thanks for adding the links.  :-)

And sorry for all the difficult questions!  It is a great first patch
really, but it also has a heavy impact (see guix refresh -l elfutils).

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

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

* [bug#38803] [PATCH] gnu: elfutils: Update to 0.178
  2020-01-13 22:26       ` Marius Bakke
@ 2020-01-31 12:43         ` Mark Wielaard
  2020-01-31 15:49           ` Marius Bakke
  0 siblings, 1 reply; 16+ messages in thread
From: Mark Wielaard @ 2020-01-31 12:43 UTC (permalink / raw)
  To: Marius Bakke; +Cc: Brett Gilio, 38803

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

Hi Marius,

Sorry for the long delay in replying. At Guix Days now, so maybe
someone can help me with some of this :)

On Mon, Jan 13, 2020 at 11:26:48PM +0100, Marius Bakke wrote:
> >> Thank you for these improvements.  Could you submit the synopsis and
> >> description update separately?
> >
> > Sure. Split patch as attached.
> 
> Thanks!  The first patch did not apply for me, can you rebase on
> 'master'?

I think it already was. But reattached. If it gets mangled by one of
the mail systems you can also find it here:
https://code.wildebeest.org/git/user/mjw/guix/
on the elfutils-0.178 branch.

> Also, for the description, please use full sentences.  I.e. keep the
> 'This package provides a collection ...' and 'This includes ...' instead
> of 'A collection ...' and 'Includes ...'.

OK. Done. See attached patch.

> >> I worry about all the new inputs.  This patch effectively makes us
> >> unable to update all these inputs outside of the 'staging' or
> >> 'core-updates' cycles.
> >
> > I am not sure I follow. This is my first patch.  It simply adds some
> > inputs needed for a new client/server program added upstream in the
> > new version.
> 
> OK, thanks for clarifying.
> 
> >> What is the difference in 'guix size elfutils' with and without this
> >> patch?
> >
> > $ guix size elfutils
> > store item                                                       total    self
> > /gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-glibc-2.29              37.4    35.8  47.2%
> > /gnu/store/2plcy91lypnbbysb18ymnhaw3zwk8pg1-gcc-7.4.0-lib           70.0    32.6  43.0%
> > /gnu/store/w0c5bcygj73chk2f6h0g8zhzpm80p1a5-elfutils-0.176          75.8     3.2   4.2%
> > /gnu/store/cp72ncw4prnsga65n3pzll07hpsg524f-bash-static-5.0.7        1.6     1.6   2.1%
> > /gnu/store/29jhbbg1hf557x8j53f9sxd9imlmf02a-bash-minimal-5.0.7      38.4     1.0   1.4%
> > /gnu/store/lbip9isk25isymvnb159l115xnacb5j8-xz-5.2.4                72.0     0.9   1.2%
> > /gnu/store/l86azr7r3p5631wj3kk329jl1y1mpjgy-bzip2-1.0.6             71.5     0.4   0.5%
> > /gnu/store/qx7p7hiq90mi7r78hcr9cyskccy2j4bg-zlib-1.2.11             70.2     0.2   0.3%
> > total: 75.8 MiB
> >
> > $ ./pre-inst-env guix size elfutils
> > store item                                                       total    self
> > /gnu/store/1mkkv2caiqbdbbd256c4dirfi4kwsacv-guile-2.2.6            123.9    44.4  22.7%
> > /gnu/store/352q0n1rrymfdk49mfr0cym3d8svz824-icu4c-64.2             108.6    37.5  19.2%
> > /gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-glibc-2.29              37.4    35.8  18.3%
> > /gnu/store/2plcy91lypnbbysb18ymnhaw3zwk8pg1-gcc-7.4.0-lib           70.0    32.6  16.7%
> > /gnu/store/k2m4q2av9hw73hw2jx6qrxqdyh855398-openssl-1.1.1c          76.4     6.4   3.3%
> > /gnu/store/hfvz18igm68p5yz7z4asn6ph363blp1z-gnutls-3.6.9           130.6     5.1   2.6%
> > /gnu/store/slvjkd3brr6n554r2gk9djsjpm7l7xbs-bdb-5.3.28              74.4     4.4   2.2%
> > /gnu/store/4rs159kgsa0l1svi5vbvn86in7z28bpl-mit-krb5-1.17           75.3     4.3   2.2%
> > /gnu/store/bjxd9jzc560d6i3i35f5yy5mljk0ib6m-openldap-2.4.47        188.5     3.7   1.9%
> > /gnu/store/w8qacdh5fqrzn08wz3n43d0czi00c4c6-elfutils-0.178         195.8     3.6   1.9%
> > /gnu/store/y7qk8raalgvdnxcglvxa320cfxrjk1x6-gmp-6.1.2               72.6     2.6   1.3%
> > /gnu/store/nsikjxykcaqa0zjpfmkqd569bngbv5nl-libunistring-0.9.10     72.4     2.4   1.2%
> > /gnu/store/cp72ncw4prnsga65n3pzll07hpsg524f-bash-static-5.0.7        1.6     1.6   0.8%
> > /gnu/store/i1cqaixp79vd3qwnyj1ll10pq6skm2wk-pkg-config-0.29.2       71.3     1.3   0.7%
> > /gnu/store/3xs3dnc28p9fi8in7hkfcdx20incrdvq-libgc-7.6.12            71.9     1.2   0.6%
> > /gnu/store/29jhbbg1hf557x8j53f9sxd9imlmf02a-bash-minimal-5.0.7      38.4     1.0   0.5%
> > /gnu/store/4m8dlhrzis07787xznx73ang35c3lly1-curl-7.65.3            190.8     1.0   0.5%
> > /gnu/store/lbip9isk25isymvnb159l115xnacb5j8-xz-5.2.4                72.0     0.9   0.5%
> > /gnu/store/lvnybsygfd6gya6xbdv48g72lb0iqqzx-nettle-3.5.1            73.5     0.9   0.5%
> > /gnu/store/f8aljw2qhv3d1br9czn8v5afbgfdrxkg-cyrus-sasl-2.1.27       83.3     0.9   0.4%
> > /gnu/store/2792g0vczwsxnvqm9ja5g9hwvbrjlc4w-gdbm-1.18.1             70.7     0.7   0.4%
> > /gnu/store/bvpnq3alwbavyk4663j4p9x9hakxwc4d-libatomic-ops-7.6.10     0.7     0.7   0.4%
> > /gnu/store/33f8qhxa69dmd43yqdx3wq1b2hqjddgb-curl-7.65.3-doc          0.7     0.7   0.3%
> > /gnu/store/7gabmw9siqrz79slpi1f8i90v3w1638x-libidn2-2.2.0           72.8     0.5   0.2%
> > /gnu/store/l86azr7r3p5631wj3kk329jl1y1mpjgy-bzip2-1.0.6             71.5     0.4   0.2%
> > /gnu/store/zavdh2z5mwkakjf1v98x43w1hzjzxkhl-nghttp2-1.39.1-lib      70.4     0.4   0.2%
> > /gnu/store/qx7p7hiq90mi7r78hcr9cyskccy2j4bg-zlib-1.2.11             70.2     0.2   0.1%
> > /gnu/store/lwz8fygpmmsw6h8vrllr56p7ssi5qx33-libtasn1-4.14           70.2     0.2   0.1%
> > /gnu/store/zasz52va238yyaq68rjm8ljwl4ikij4p-libltdl-2.4.6           70.2     0.2   0.1%
> > /gnu/store/ain96mrdwqd4s9shdd3s7m4syp5icdx5-libffi-3.2.1            70.1     0.1   0.1%
> > total: 195.8 MiB
> 
> Oof, that is a *huge* difference.  Do you know where the extra
> references come from?

Yes. There is are a new network client and server integrated with
elfutils in 0.178. A new client library debuginfod-client.so which
depends on libcurl, which pulls in most of the other stuff. elfutils
libdw.so has a dependency on this, but it is dlopened when
available. So it isn't a hard dependency. In other distros
debuginfod-client is its own elfutils subpackage which is recommended,
but not required. It allows libdw.so to pull in separate debuginfo
files from the network when not locally installed (and an server URL
is configured). Then there is also a little server based on
libmicrohttpd and sqlite which is responsible for the other part of
the new inputs. Other distros put this also in a separate elfutils
subpackage.

> I.e. could we move libelf.so to its own output to
> lose some of the runtime dependencies?

Sure. That is what most distros do. Have a elfutils-libelf package
that provides just the libelf.so.

> Previously 'mesa' was using our other 'libelf' package, but I switched
> it to elfutils in commit 9b3b4c05a06bb8ef22350706b66043b5e93d8d66
> because that's what "everyone else" do.  Perhaps we should go back to
> that, thoughts?  Then we don't have to worry as much about the size of
> elfutils.

I would get rid of the other libelf. It has been dead upstream for
years. And last year the home page and upstream completely
disappeared. Replacing libelf with elfutils-libelf for guix globally
would make a lot of sense to me. I believe that is what most distros
do these days.

> >> Would it make sense to have a separate 'elfutils-minimal' for use in
> >> Mesa, and expose the debuginfod-enabled variant as a separate package?
> >> We could "hide" the minimal variant so that end users get the expected
> >> package.
> >
> > Sure. Other distros split elfutils into multiple packages. For example fedora has:
> >
> > %package libs
> > %package devel
> > %package devel-static
> > %package libelf
> > %package libelf-devel
> > %package libelf-devel-static
> > %package default-yama-scope
> > %package debuginfod-client
> > %package debuginfod-client-devel
> > %package debuginfod
> 
> Right.  It makes sense to do something similar for Guix if many packages
> end up needing elfutils at runtime.

I can do that. But it wouldn't change the inputs. The runtime
dependencies of libelf on its own would be reduced to just zlib and
gcclibs. The other libraries (without debuginfod-client) would just
add a couple more compression libraries as runtime dependencies
(although you realy want debuginfod-client also around so that it can
be dlopened). Same for the binaries minus debuginfod-find and
debuginfod. The debuginfod subpackage would be the only thing with
runtime dependencies on everything (including libmicrohttpd and
sqlite).

> > With the main elfutils package containing all binaries except for
> > debuginfod-find (the client) and debuginfod (the server). With
> > appropriate requires/recommends (I don't yet know how those work in
> > guix).
> 
> Guix does not have a notion of 'recommends'.  Each package is built with
> an exact set of inputs, and each build output is scanned for references
> to the inputs which are then stored as runtime dependencies.
> 
> There are talks about "parameterized packages", where you could apply
> some vetted transformation to the build procedure, but advertising
> optional runtime dependencies is an open question.

yeah. I don't actually like optional runtime dependencies. It is had
to explain to users why some installs do work out of the box and
others don't. So I would actually recommend debuginfod-client be a
hard runtime dependency whenever possible. It was mainly done for
other distros which did worry about bootstrapping.

I'll go ask around here how to create a minimal package to see if that
helps. Although it feels a bit odd. Upstream doesn't really support
building just a subset of the package (there are some dependencies
between the libraries and binaries which require things to be build
together).

Cheers,

Mark


[-- Attachment #2: 0001-gnu-elfutils-Update-synopsis-and-description.patch --]
[-- Type: text/x-diff, Size: 3010 bytes --]

From a686a10451f600889a20b9ca8b08c25253b349f4 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
Date: Sun, 12 Jan 2020 23:54:18 +0100
Subject: [PATCH] gnu: elfutils: Update synopsis and description

* gnu/packages/elf.scm (elfutils): Update summaries.
  [synopsis]: Updated.
  [description]: Updated.
---
 gnu/packages/elf.scm | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
index 75caa54296..01bf0fcf89 100644
--- a/gnu/packages/elf.scm
+++ b/gnu/packages/elf.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2020 Mark Wielaard <mark@klomp.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -54,9 +55,10 @@
     (build-system gnu-build-system)
 
     ;; Separate programs because that's usually not what elfutils users want,
-    ;; and because they duplicate what Binutils provides.
+    ;; and because they duplicate what Binutils proAvides (but are named
+    ;; differently, using the eu- prefix and can be installed in parallel).
     (outputs '("out"                           ; libelf.so, elfutils/*.h, etc.
-               "bin"))                         ; ld, nm, objdump, etc.
+               "bin"))                         ; eu-nm, eu-objdump, etc.
 
     (arguments
      ;; Programs don't have libelf.so in their RUNPATH and libraries don't
@@ -84,11 +86,21 @@
     (native-inputs `(("m4" ,m4)))
     (inputs `(("zlib" ,zlib)))
     (home-page "https://sourceware.org/elfutils/")
-    (synopsis "Linker and ELF manipulation tools")
+    (synopsis "Collection of utilities and libraries to handle ELF files and
+DWARF data")
     (description
-     "This package provides command-line tools to manipulate binaries in the
-Executable and Linkable Format (@dfn{ELF}).  This includes @command{ld},
-@command{ar}, @command{objdump}, @command{addr2line}, and more.")
+     "A collection of utilities and libraries to read, create and modify
+Executable and Linkable Format (@dfn{ELF}) binary files, find and handle
+Debugging With Arbitrary Record Formats (@dfn{DWARF}) debug data, symbols,
+thread state and stacktraces for processes and core files on GNU/Linux.
+Includes @file{libelf} for manipulating ELF files, @file{libdw} for inspecting
+DWARF data and process state and utilities like @command{eu-stack} (to show
+backtraces), @command{eu-nm} (for listing symbols from object files),
+@command{eu-size} (for listing the section sizes of an object or archive
+file), @command{eu-strip} (for discarding symbols), @command{eu-readelf} (to
+see the raw ELF file structures), @command{eu-elflint} (to check for
+well-formed ELF files), @command{eu-elfcompress} (to compress or decompress
+ELF sections), and more.")
 
     ;; Libraries are dual-licensed LGPLv3.0+ | GPLv2, and programs are GPLv3+.
     (license lgpl3+)))
-- 
2.20.1


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

* [bug#38803] [PATCH] gnu: elfutils: Update to 0.178
  2020-01-31 12:43         ` Mark Wielaard
@ 2020-01-31 15:49           ` Marius Bakke
  2020-01-31 16:55             ` Mark Wielaard
  0 siblings, 1 reply; 16+ messages in thread
From: Marius Bakke @ 2020-01-31 15:49 UTC (permalink / raw)
  To: Mark Wielaard; +Cc: Brett Gilio, 38803

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

Hello!

Mark Wielaard <mark@klomp.org> writes:

>> Also, for the description, please use full sentences.  I.e. keep the
>> 'This package provides a collection ...' and 'This includes ...' instead
>> of 'A collection ...' and 'Includes ...'.
>
> OK. Done. See attached patch.

Sorry for the nit-picks, but the description still starts
'mid-sentence', i.e. "A collection ..." instead of "elfutils is a
collection ...".

If you think it's better this way I'm fine with that, it's just that
elfutils will "stand out" compared to its neighbours at
e.g. <https://guix.gnu.org/packages/E/page/3/>.  :-)

> Yes. There is are a new network client and server integrated with
> elfutils in 0.178. A new client library debuginfod-client.so which
> depends on libcurl, which pulls in most of the other stuff. elfutils
> libdw.so has a dependency on this, but it is dlopened when
> available. So it isn't a hard dependency. In other distros
> debuginfod-client is its own elfutils subpackage which is recommended,
> but not required. It allows libdw.so to pull in separate debuginfo
> files from the network when not locally installed (and an server URL
> is configured). Then there is also a little server based on
> libmicrohttpd and sqlite which is responsible for the other part of
> the new inputs. Other distros put this also in a separate elfutils
> subpackage.

Thanks for the detailed clarification.  Re: dlopen, we typically patch
in the absolute file names to avoid surprises on foreign distributions
(and getting deterministic results in general), so we should probably do
it here too.

>> Previously 'mesa' was using our other 'libelf' package, but I switched
>> it to elfutils in commit 9b3b4c05a06bb8ef22350706b66043b5e93d8d66
>> because that's what "everyone else" do.  Perhaps we should go back to
>> that, thoughts?  Then we don't have to worry as much about the size of
>> elfutils.
>
> I would get rid of the other libelf. It has been dead upstream for
> years. And last year the home page and upstream completely
> disappeared. Replacing libelf with elfutils-libelf for guix globally
> would make a lot of sense to me. I believe that is what most distros
> do these days.

Sounds good.  Can you submit a patch that replaces libelf with elfutils
for all packages except GCC?

> I can do that. But it wouldn't change the inputs. The runtime
> dependencies of libelf on its own would be reduced to just zlib and
> gcclibs. The other libraries (without debuginfod-client) would just
> add a couple more compression libraries as runtime dependencies
> (although you realy want debuginfod-client also around so that it can
> be dlopened). Same for the binaries minus debuginfod-find and
> debuginfod. The debuginfod subpackage would be the only thing with
> runtime dependencies on everything (including libmicrohttpd and
> sqlite).

I think a single :bin output with all the executables is fine.

Regarding separate :libelf output, I suppose just copying libelf.so*
should do the trick.  Maybe we need to adjust some pkg-config files too?
I can look into this if you like.

> I'll go ask around here how to create a minimal package to see if that
> helps. Although it feels a bit odd. Upstream doesn't really support
> building just a subset of the package (there are some dependencies
> between the libraries and binaries which require things to be build
> together).

If we are to use this libelf for 'gcc', we'll need to find a way to
avoid the extraneous inputs to avoid complicating the bootstrap graph
too much.  We can always ignore the build system altogether and roll
our own command line for the GCC variant though.

Thanks,
Marius

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

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

* [bug#38803] [PATCH] gnu: elfutils: Update to 0.178
  2020-01-31 15:49           ` Marius Bakke
@ 2020-01-31 16:55             ` Mark Wielaard
  2020-02-05 20:41               ` Marius Bakke
  0 siblings, 1 reply; 16+ messages in thread
From: Mark Wielaard @ 2020-01-31 16:55 UTC (permalink / raw)
  To: Marius Bakke; +Cc: Brett Gilio, 38803

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

On Fri, Jan 31, 2020 at 04:49:44PM +0100, Marius Bakke wrote:
> Mark Wielaard <mark@klomp.org> writes:
> 
> >> Also, for the description, please use full sentences.  I.e. keep the
> >> 'This package provides a collection ...' and 'This includes ...' instead
> >> of 'A collection ...' and 'Includes ...'.
> >
> > OK. Done. See attached patch.
> 
> Sorry for the nit-picks, but the description still starts
> 'mid-sentence', i.e. "A collection ..." instead of "elfutils is a
> collection ...".
> 
> If you think it's better this way I'm fine with that, it's just that
> elfutils will "stand out" compared to its neighbours at
> e.g. <https://guix.gnu.org/packages/E/page/3/>.  :-)

OK, OK. Lets see if I can at least get the patch that does only update
the descriptions correct. New version attached.

Cheers,

Mark


[-- Attachment #2: 0001-gnu-elfutils-Update-synopsis-and-description.patch --]
[-- Type: text/x-diff, Size: 3032 bytes --]

From 6a9f7efd89f6617766640b3e2f7a232977bf98a4 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
Date: Sun, 12 Jan 2020 23:54:18 +0100
Subject: [PATCH] gnu: elfutils: Update synopsis and description

* gnu/packages/elf.scm (elfutils): Update summaries.
  [synopsis]: Updated.
  [description]: Updated.
---
 gnu/packages/elf.scm | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
index 75caa54296..22d03fba84 100644
--- a/gnu/packages/elf.scm
+++ b/gnu/packages/elf.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2020 Mark Wielaard <mark@klomp.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -54,9 +55,10 @@
     (build-system gnu-build-system)
 
     ;; Separate programs because that's usually not what elfutils users want,
-    ;; and because they duplicate what Binutils provides.
+    ;; and because they duplicate what Binutils proAvides (but are named
+    ;; differently, using the eu- prefix and can be installed in parallel).
     (outputs '("out"                           ; libelf.so, elfutils/*.h, etc.
-               "bin"))                         ; ld, nm, objdump, etc.
+               "bin"))                         ; eu-nm, eu-objdump, etc.
 
     (arguments
      ;; Programs don't have libelf.so in their RUNPATH and libraries don't
@@ -84,11 +86,21 @@
     (native-inputs `(("m4" ,m4)))
     (inputs `(("zlib" ,zlib)))
     (home-page "https://sourceware.org/elfutils/")
-    (synopsis "Linker and ELF manipulation tools")
+    (synopsis "Collection of utilities and libraries to handle ELF files and
+DWARF data")
     (description
-     "This package provides command-line tools to manipulate binaries in the
-Executable and Linkable Format (@dfn{ELF}).  This includes @command{ld},
-@command{ar}, @command{objdump}, @command{addr2line}, and more.")
+     "Elfutils is a collection of utilities and libraries to read, create and
+modify Executable and Linkable Format (@dfn{ELF}) binary files, find and
+handle Debugging With Arbitrary Record Formats (@dfn{DWARF}) debug data,
+symbols, thread state and stacktraces for processes and core files on
+GNU/Linux.  Elfutils includes @file{libelf} for manipulating ELF files,
+@file{libdw} for inspecting DWARF data and process state and utilities like
+@command{eu-stack} (to show backtraces), @command{eu-nm} (for listing symbols
+from object files), @command{eu-size} (for listing the section sizes of an
+object or archive file), @command{eu-strip} (for discarding symbols),
+@command{eu-readelf} (to see the raw ELF file structures),
+@command{eu-elflint} (to check for well-formed ELF files),
+@command{eu-elfcompress} (to compress or decompress ELF sections), and more.")
 
     ;; Libraries are dual-licensed LGPLv3.0+ | GPLv2, and programs are GPLv3+.
     (license lgpl3+)))
-- 
2.24.1


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

* [bug#38803] [PATCH] gnu: elfutils: Update to 0.178
  2020-01-31 16:55             ` Mark Wielaard
@ 2020-02-05 20:41               ` Marius Bakke
  2020-02-06 11:04                 ` Mark Wielaard
  0 siblings, 1 reply; 16+ messages in thread
From: Marius Bakke @ 2020-02-05 20:41 UTC (permalink / raw)
  To: Mark Wielaard; +Cc: Brett Gilio, 38803

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

Mark Wielaard <mark@klomp.org> writes:

> OK, OK. Lets see if I can at least get the patch that does only update
> the descriptions correct. New version attached.

Thanks!  I fixed the comment typo and committed.  The new description
should show up on <https://guix.gnu.org/packages/E/page/3/> shortly.  :-)

Note that I had to convert the patch from ISO-8859-14 to UTF-8 in order
to make git accept it:

$ iconv -f ISO-8859-14 -t UTF-8 0001-gnu-elfutils-Update-synopsis-and-description.patch | git am -s

Not sure what happened, perhaps it got mangled by your MUA?

For the 0.178 update, perhaps we can add the new version as a separate
variable until we figure out how to isolate libelf.so?  That can be done
on the 'master' branch as long as we don't change the current 'elfutils'
package.

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

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

* [bug#38803] [PATCH] gnu: elfutils: Update to 0.178
  2020-02-05 20:41               ` Marius Bakke
@ 2020-02-06 11:04                 ` Mark Wielaard
  2020-02-06 11:36                   ` Marius Bakke
  2020-02-06 13:23                   ` Mark Wielaard
  0 siblings, 2 replies; 16+ messages in thread
From: Mark Wielaard @ 2020-02-06 11:04 UTC (permalink / raw)
  To: Marius Bakke; +Cc: Brett Gilio, 38803

Hi Marius,

On Wed, 2020-02-05 at 21:41 +0100, Marius Bakke wrote:
> Mark Wielaard <mark@klomp.org> writes:
> 
> > OK, OK. Lets see if I can at least get the patch that does only update
> > the descriptions correct. New version attached.
> 
> Thanks!  I fixed the comment typo and committed.  The new description
> should show up on <https://guix.gnu.org/packages/E/page/3/> shortly.  :-)

Awesome. Looks good. Thanks.

> Note that I had to convert the patch from ISO-8859-14 to UTF-8 in order
> to make git accept it:
> 
> $ iconv -f ISO-8859-14 -t UTF-8 0001-gnu-elfutils-Update-synopsis-and-description.patch | git am -s
> 
> Not sure what happened, perhaps it got mangled by your MUA?

That is indeed really odd. I definitely didn't want to encode any
Celtic languages (I do speak Dutch, but not Gaelic or Breton).

> For the 0.178 update, perhaps we can add the new version as a separate
> variable until we figure out how to isolate libelf.so?  That can be done
> on the 'master' branch as long as we don't change the current 'elfutils'
> package.

I am not sure I completely understand your proposal. When you say
'separate variable', Do you mean we would (define-public elfutils-0.178 
...)?

And changing the default libelf implementation should be a separate bug
I assume.

BTW. Upstream is now debating some of the dependencies for other
distros that have bootstrapping requirements too: 
https://sourceware.org/bugzilla/show_bug.cgi?id=25509

Cheers,

Mark

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

* [bug#38803] [PATCH] gnu: elfutils: Update to 0.178
  2020-02-06 11:04                 ` Mark Wielaard
@ 2020-02-06 11:36                   ` Marius Bakke
  2020-02-06 13:23                   ` Mark Wielaard
  1 sibling, 0 replies; 16+ messages in thread
From: Marius Bakke @ 2020-02-06 11:36 UTC (permalink / raw)
  To: Mark Wielaard; +Cc: Brett Gilio, 38803

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

Mark Wielaard <mark@klomp.org> writes:

>> For the 0.178 update, perhaps we can add the new version as a separate
>> variable until we figure out how to isolate libelf.so?  That can be done
>> on the 'master' branch as long as we don't change the current 'elfutils'
>> package.
>
> I am not sure I completely understand your proposal. When you say
> 'separate variable', Do you mean we would (define-public elfutils-0.178 
> ...)?

Yes.  See e.g 'gdb/next' or 'help2man/latest' for some examples of
inheritance.

> And changing the default libelf implementation should be a separate bug
> I assume.

Indeed.  I suggest we defer that until we have 0.178+ in properly.

> BTW. Upstream is now debating some of the dependencies for other
> distros that have bootstrapping requirements too: 
> https://sourceware.org/bugzilla/show_bug.cgi?id=25509

Good to know we're not alone!

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

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

* [bug#38803] [PATCH] gnu: elfutils: Update to 0.178
  2020-02-06 11:04                 ` Mark Wielaard
  2020-02-06 11:36                   ` Marius Bakke
@ 2020-02-06 13:23                   ` Mark Wielaard
  2020-02-06 14:31                     ` Marius Bakke
  1 sibling, 1 reply; 16+ messages in thread
From: Mark Wielaard @ 2020-02-06 13:23 UTC (permalink / raw)
  To: Marius Bakke; +Cc: Brett Gilio, 38803

On Thu, 2020-02-06 at 12:04 +0100, Mark Wielaard wrote:
> BTW. Upstream is now debating some of the dependencies for other
> distros that have bootstrapping requirements too: 
> https://sourceware.org/bugzilla/show_bug.cgi?id=25509

It would be nice if someone could comment on that bug who better
understands the bootstrap requirements for the guix toolchain. Note
that this is relevant to other packages too because we are very eager
to improve the debugability of the whole toolchain and so have
submitted patches to various core packages to support debuginfod-client 
like binutils, gdb, annocheck, etc. Which means they all eventually
depend on everything libcurl depends on:
https://sourceware.org/elfutils/Debuginfod.html

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

* [bug#38803] [PATCH] gnu: elfutils: Update to 0.178
  2020-02-06 13:23                   ` Mark Wielaard
@ 2020-02-06 14:31                     ` Marius Bakke
  0 siblings, 0 replies; 16+ messages in thread
From: Marius Bakke @ 2020-02-06 14:31 UTC (permalink / raw)
  To: Mark Wielaard; +Cc: Brett Gilio, 38803

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

Mark Wielaard <mark@klomp.org> writes:

> On Thu, 2020-02-06 at 12:04 +0100, Mark Wielaard wrote:
>> BTW. Upstream is now debating some of the dependencies for other
>> distros that have bootstrapping requirements too: 
>> https://sourceware.org/bugzilla/show_bug.cgi?id=25509
>
> It would be nice if someone could comment on that bug who better
> understands the bootstrap requirements for the guix toolchain. Note
> that this is relevant to other packages too because we are very eager
> to improve the debugability of the whole toolchain and so have
> submitted patches to various core packages to support debuginfod-client 
> like binutils, gdb, annocheck, etc. Which means they all eventually
> depend on everything libcurl depends on:
> https://sourceware.org/elfutils/Debuginfod.html

I think that the Guix toolchain (the one used in package builds) should
stay the same (no debuginfod support), and that we should add
debuginfod-enabled variants that gets included when users install
'binutils' or 'gcc-toolchain' manually.  How does that sound?

So our only concern will be how to use Elfutils' libelf.so for GCC,
which should be straightforward with an "elfutils-minimal" variant that
does not pull in the debuginfo dependencies.

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

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

* [bug#38803] [PATCH] gnu: elfutils: Update to 0.178
  2019-12-30  1:41 [bug#38803] [PATCH] gnu: elfutils: Update to 0.178 Mark Wielaard
  2019-12-30  1:44 ` Brett Gilio
  2020-01-12 20:39 ` Mark Wielaard
@ 2023-09-02 18:39 ` Vagrant Cascadian
  2 siblings, 0 replies; 16+ messages in thread
From: Vagrant Cascadian @ 2023-09-02 18:39 UTC (permalink / raw)
  To: Mark Wielaard, 38803; +Cc: control, Marius Bakke, Brett Gilio

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

retitle 38803 gnu: elfutils: Enable debuginfod
thanks

On 2019-12-30, Mark Wielaard wrote:
> This introduces debuginfod support which requires a couple of new inputs.
>
> * gnu/packages/elf.scm (elfutils): Update to 0.178

Newer versions of elfutils have been included:

1a97959b22668af999ebc79c3ddc1664420eadd4 gnu: elfutils: Update to 0.187.

The outstanding issue from this bug is to enable the debuginfod server,
which is referred to in the comments for the current elfutils
package. Retitled appropriately.

live well,
  vagrant

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

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

end of thread, other threads:[~2023-09-02 18:40 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-12-30  1:41 [bug#38803] [PATCH] gnu: elfutils: Update to 0.178 Mark Wielaard
2019-12-30  1:44 ` Brett Gilio
2019-12-30  2:04   ` Mark Wielaard
2020-01-12 20:39 ` Mark Wielaard
2020-01-12 20:54   ` Marius Bakke
2020-01-13  0:03     ` Mark Wielaard
2020-01-13 22:26       ` Marius Bakke
2020-01-31 12:43         ` Mark Wielaard
2020-01-31 15:49           ` Marius Bakke
2020-01-31 16:55             ` Mark Wielaard
2020-02-05 20:41               ` Marius Bakke
2020-02-06 11:04                 ` Mark Wielaard
2020-02-06 11:36                   ` Marius Bakke
2020-02-06 13:23                   ` Mark Wielaard
2020-02-06 14:31                     ` Marius Bakke
2023-09-02 18:39 ` Vagrant Cascadian

Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.