[PATCH] gnu: elfutils: Update to 0.178

OpenSubmitted by Mark Wielaard.
Details
3 participants
  • Brett Gilio
  • Mark Wielaard
  • Marius Bakke
Owner
unassigned
Severity
normal
M
M
Mark Wielaard wrote on 30 Dec 2019 02:41
(address . guix-patches@gnu.org)(name . Mark Wielaard)(address . mark@klomp.org)
20191230014101.2425-1-mark@klomp.org
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
Toggle diff (307 lines)diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scmindex 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") (descriptiondiff --git a/gnu/packages/patches/elfutils-0.178-tests-build-id.patch b/gnu/packages/patches/elfutils-0.178-tests-build-id.patchnew file mode 100644index 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.patchdeleted file mode 100644index 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
B
B
Brett Gilio wrote on 30 Dec 2019 02:44
(name . Mark Wielaard)(address . mark@klomp.org)
aab04dc7-de8a-4214-b918-21749a921f7b@localhost
Dec 29, 2019 7:42:34 PM Mark Wielaard :
Toggle quote (326 lines)> 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. GilioGNU 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] >
M
M
Mark Wielaard wrote on 30 Dec 2019 03:04
(name . Brett Gilio)(address . brettg@gnu.org)(address . 38803@debbugs.gnu.org)
20191230020433.GA2695@wildebeest.org
Hi Brett,
On Mon, Dec 30, 2019 at 01:44:21AM +0000, Brett Gilio wrote:
Toggle quote (4 lines)> 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 begentle. I do maintain elfutils upstream, so I did have a littleadvantage picking some upstream patches which hadn't gone into therelease yet.
Toggle quote (5 lines)> 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.178introduces some new documentation (man pages), one of them is underthe GFDL (without invariant sections).
Also I am not sure how precisely we should mention the dualgplv2+/lgplv3+ license for the "out" output libraries and the gplv3+license for the "bin" output (and where the gfdl should be added).
Thanks,
Mark
M
M
Mark Wielaard wrote on 12 Jan 2020 21:39
[PATCH] gnu: elfutils: Update to 0.178
(address . 38803@debbugs.gnu.org)
20200112203939.20141-1-mark@klomp.org
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 anddescription 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
Toggle diff (354 lines)diff --git a/gnu/local.mk b/gnu/local.mkindex 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.scmindex 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 (packagediff --git a/gnu/packages/patches/elfutils-0.178-tests-build-id.patch b/gnu/packages/patches/elfutils-0.178-tests-build-id.patchnew file mode 100644index 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.patchdeleted file mode 100644index 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
M
M
Marius Bakke wrote on 12 Jan 2020 21:54
87a76sxun7.fsf@devup.no
Mark,
Mark Wielaard <mark@klomp.org> writes:
Toggle quote (14 lines)> 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 anddescription update separately?
I worry about all the new inputs. This patch effectively makes usunable to update all these inputs outside of the 'staging' or'core-updates' cycles.
What is the difference in 'guix size elfutils' with and without thispatch?
Would it make sense to have a separate 'elfutils-minimal' for use inMesa, and expose the debuginfod-enabled variant as a separate package?We could "hide" the minimal variant so that end users get the expectedpackage.
Also, for the patches, please add links to upstream commits in the patchfiles, see some of the other patches for examples. I would also preferif they were separate files, seeing as the two commits do differentthings.
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl4bh5wACgkQoqBt8qM6VPpYXwf+P3breyhEaHhx2aWYfLq7G0UAEaog3D77HlHXV3GLu2hv6IGN7Ta29e5BV/cqrdJVWB/tVg9pitYCe/vkvPYpNCDTsQI8DPIdhFq+b/vwFEm5aj7N+vGB42pwBNq5m6//RKL+KdJg8eviEBdluAofrI6FepBBfejyXE2u94X5hsJnUhdqXrSVK0Q7F7M7H8IeOrZCp0cs3df2WqyIHlOj35VPM8wp8eo7jN/uB3LqMFDh/vghjfyvQF7BzH3/lmQkMl3Wpt2n5erHeQPVxXMvx7zq1++gQTf0+vHGxDUyQnhRLBFWa8wLu+amGB8hiZ8m+8wUNqGO8sPOLExdMk1n6Q===pg9c-----END PGP SIGNATURE-----
M
M
Mark Wielaard wrote on 13 Jan 2020 01:03
(name . Marius Bakke)(address . mbakke@fastmail.com)
20200113000345.GA2825@wildebeest.org
Hi,
On Sun, Jan 12, 2020 at 09:54:52PM +0100, Marius Bakke wrote:
Toggle quote (19 lines)> 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.
Toggle quote (4 lines)> 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 someinputs needed for a new client/server program added upstream in thenew version.
Toggle quote (3 lines)> What is the difference in 'guix size elfutils' with and without this> patch?
$ guix size elfutilsstore 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 elfutilsstore 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
Toggle quote (5 lines)> 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 fordebuginfod-find (the client) and debuginfod (the server). Withappropriate requires/recommends (I don't yet know how those work inguix).
Toggle quote (5 lines)> 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 thesame thing. I am not sure an upstream git commit id link is betterthan simply the commit id, but added if it is more convenient.
Cheers,
Mark
From 2f75d90d59542fdc31bb9cc4d477eb90c7986e99 Mon Sep 17 00:00:00 2001From: Mark Wielaard <mark@klomp.org>Date: Sun, 12 Jan 2020 23:54:18 +0100Subject: [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(-)
Toggle diff (53 lines)diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scmindex 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
From f3573f3ce83dad4958673ded37fc44607c9fd910 Mon Sep 17 00:00:00 2001From: Mark Wielaard <mark@klomp.org>Date: Mon, 13 Jan 2020 00:55:10 +0100Subject: [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
Toggle diff (330 lines)diff --git a/gnu/local.mk b/gnu/local.mkindex 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.scmindex 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.patchnew file mode 100644index 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.patchnew file mode 100644index 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.patchdeleted file mode 100644index 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
M
M
Marius Bakke wrote on 13 Jan 2020 23:26
(name . Mark Wielaard)(address . mark@klomp.org)
87a76rvvpz.fsf@devup.no
Mark Wielaard <mark@klomp.org> writes:
Toggle quote (24 lines)> 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 ...' insteadof 'A collection ...' and 'Includes ...'.
Toggle quote (8 lines)>> 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.
Toggle quote (49 lines)>> 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 extrareferences come from? I.e. could we move libelf.so to its own output tolose some of the runtime dependencies?
Previously 'mesa' was using our other 'libelf' package, but I switchedit to elfutils in commit 9b3b4c05a06bb8ef22350706b66043b5e93d8d66because that's what "everyone else" do. Perhaps we should go back tothat, thoughts? Then we don't have to worry as much about the size ofelfutils.
Toggle quote (18 lines)>> 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 packagesend up needing elfutils at runtime.
Toggle quote (5 lines)> 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 withan exact set of inputs, and each build output is scanned for referencesto the inputs which are then stored as runtime dependencies.
There are talks about "parameterized packages", where you could applysome vetted transformation to the build procedure, but advertisingoptional runtime dependencies is an open question.
Toggle quote (9 lines)>> 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, Icertainly appreciate not having to figure out where their VCS ishosted. Sourceware does exceptionally well in that regard, but noteveryone knows it. So, thanks for adding the links. :-)
And sorry for all the difficult questions! It is a great first patchreally, but it also has a heavy impact (see guix refresh -l elfutils).
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl4c7qgACgkQoqBt8qM6VPoNQgf8DhYai8CS0WczG+1tnajKz7/CMseXdJJJPL2qAcG6aSdsA2GIFcWmKAXVALiUXWycVYK+kMe0N+SEeDAgPKYXvkdXLf5ZT2Le60IXUa4RepLIJ2BPnCZkwVbB5T3Cmd6K//Gip4AAXv+iiOYIAZcOz+GSBXdYnavo2MRGVe5SxLZ70H/GZAEXG2z5z8/tNbRyo3cyVAjO+r5dtncvLo1oJ89p2l2kOzUhYRMnm/9x7SNclmzlWdJ+K3BHwMnVgzySIwyhMPl0Pl4Wxc0e/ldIANJJ70tXVx6ncQ4poPOYxU4aQ1714kJiLcypFGLxt5CPwWsZi5xFSvcroDUKmNAVkw===SdMj-----END PGP SIGNATURE-----
M
M
Mark Wielaard wrote on 31 Jan 2020 13:43
(name . Marius Bakke)(address . mbakke@fastmail.com)
20200131124321.GM3319@wildebeest.org
Hi Marius,
Sorry for the long delay in replying. At Guix Days now, so maybesomeone can help me with some of this :)
On Mon, Jan 13, 2020 at 11:26:48PM +0100, Marius Bakke wrote:
Toggle quote (8 lines)> >> 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 ofthe mail systems you can also find it here:https://code.wildebeest.org/git/user/mjw/guix/on the elfutils-0.178 branch.
Toggle quote (4 lines)> 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.
Toggle quote (62 lines)> >> 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 withelfutils in 0.178. A new client library debuginfod-client.so whichdepends on libcurl, which pulls in most of the other stuff. elfutilslibdw.so has a dependency on this, but it is dlopened whenavailable. So it isn't a hard dependency. In other distrosdebuginfod-client is its own elfutils subpackage which is recommended,but not required. It allows libdw.so to pull in separate debuginfofiles from the network when not locally installed (and an server URLis configured). Then there is also a little server based onlibmicrohttpd and sqlite which is responsible for the other part ofthe new inputs. Other distros put this also in a separate elfutilssubpackage.
Toggle quote (3 lines)> 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 packagethat provides just the libelf.so.
Toggle quote (6 lines)> 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 foryears. And last year the home page and upstream completelydisappeared. Replacing libelf with elfutils-libelf for guix globallywould make a lot of sense to me. I believe that is what most distrosdo these days.
Toggle quote (21 lines)> >> 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 runtimedependencies of libelf on its own would be reduced to just zlib andgcclibs. The other libraries (without debuginfod-client) would justadd a couple more compression libraries as runtime dependencies(although you realy want debuginfod-client also around so that it canbe dlopened). Same for the binaries minus debuginfod-find anddebuginfod. The debuginfod subpackage would be the only thing withruntime dependencies on everything (including libmicrohttpd andsqlite).
Toggle quote (13 lines)> > 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 hadto explain to users why some installs do work out of the box andothers don't. So I would actually recommend debuginfod-client be ahard runtime dependency whenever possible. It was mainly done forother distros which did worry about bootstrapping.
I'll go ask around here how to create a minimal package to see if thathelps. Although it feels a bit odd. Upstream doesn't really supportbuilding just a subset of the package (there are some dependenciesbetween the libraries and binaries which require things to be buildtogether).
Cheers,
Mark
From a686a10451f600889a20b9ca8b08c25253b349f4 Mon Sep 17 00:00:00 2001From: Mark Wielaard <mark@klomp.org>Date: Sun, 12 Jan 2020 23:54:18 +0100Subject: [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(-)
Toggle diff (53 lines)diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scmindex 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
M
M
Marius Bakke wrote on 31 Jan 2020 16:49
(name . Mark Wielaard)(address . mark@klomp.org)
87v9ormxrb.fsf@devup.no
Hello!
Mark Wielaard <mark@klomp.org> writes:
Toggle quote (6 lines)>> 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 acollection ...".
If you think it's better this way I'm fine with that, it's just thatelfutils will "stand out" compared to its neighbours ate.g. https://guix.gnu.org/packages/E/page/3/. :-)
Toggle quote (13 lines)> 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 patchin the absolute file names to avoid surprises on foreign distributions(and getting deterministic results in general), so we should probably doit here too.
Toggle quote (12 lines)>> 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 elfutilsfor all packages except GCC?
Toggle quote (10 lines)> 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.
Toggle quote (6 lines)> 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 toavoid the extraneous inputs to avoid complicating the bootstrap graphtoo much. We can always ignore the build system altogether and rollour own command line for the GCC variant though.
Thanks,Marius
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl40TJgACgkQoqBt8qM6VPq39Af/Rlb1NwdCYfDusXW5zByYqNLHxlPzzKPu16nFof+D/ippzLIefooR31ruqt5/6mXmqK2E6wzrg7GsklWX5FhPPu1GO8mI+jI8urLaEkllI9dvPUI65zzAB/ntjRElHoRdrg8AZVO4Ba7RBxxvAqQASkx96RwHKceqOHUIXzbqBX/eXN3nfBbJD/9oyldvV7uCfHWYGYU6ygibo+I3bY77x8hDwT7u+XptEtkSosqOwDx0n2SS3J7bbJpHGnegst6IEonwLJLDnjKLbe+Pm6hQzkwpi6J6kV7I2oRv45kyXzyoGRp33v5aqTuNRs7FEzDVrtoTgxC3wb5rhoabqsuDig===PXyK-----END PGP SIGNATURE-----
M
M
Mark Wielaard wrote on 31 Jan 2020 17:55
(name . Marius Bakke)(address . mbakke@fastmail.com)
20200131165505.GN3319@wildebeest.org
On Fri, Jan 31, 2020 at 04:49:44PM +0100, Marius Bakke wrote:
Toggle quote (16 lines)> 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 updatethe descriptions correct. New version attached.
Cheers,
Mark
From 6a9f7efd89f6617766640b3e2f7a232977bf98a4 Mon Sep 17 00:00:00 2001From: Mark Wielaard <mark@klomp.org>Date: Sun, 12 Jan 2020 23:54:18 +0100Subject: [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(-)
Toggle diff (53 lines)diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scmindex 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
M
M
Marius Bakke wrote on 5 Feb 2020 21:41
(name . Mark Wielaard)(address . mark@klomp.org)
87d0as6a29.fsf@devup.no
Mark Wielaard <mark@klomp.org> writes:
Toggle quote (3 lines)> 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 descriptionshould 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 orderto 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 separatevariable until we figure out how to isolate libelf.so? That can be doneon the 'master' branch as long as we don't change the current 'elfutils'package.
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl47KI4ACgkQoqBt8qM6VPpzJAf9EAYUGbIvBR59pKcdoIbZsO6kjDcO/7KE1Sr39qoBTtCyV7YUZ1zf4IX7sIEImffjJq2Cp6Xw27g99CN1WNLmbEpLh3xabLvZ0QYqV8Yvfh+3Pyot3aGbNuHDdANXGv9qQhMXI6FwprI2YMU8Eap5BXAJ7SES5tmvPa1vtU5cE2X6GAdiUHDNM49q71T6s3cS5MibBWc9iq2YqXw6lbKMTgfWpp8AEpIDc0JvCANSY8SSS3Dc+x3YNiltWV4k5esWy7H+OoG+6cdaCaDtJIS7S/WKhCSI2S/PSIx/6GBfHYrIdcSS5yyibn/MMKie0AmCjd/WtUa3d4zTEcOy87PNaQ===64lx-----END PGP SIGNATURE-----
M
M
Mark Wielaard wrote on 6 Feb 2020 12:04
(name . Marius Bakke)(address . mbakke@fastmail.com)
58f284a926a93f9e079075ed0f7020ef63a03859.camel@klomp.org
Hi Marius,
On Wed, 2020-02-05 at 21:41 +0100, Marius Bakke wrote:
Toggle quote (8 lines)> 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.
Toggle quote (7 lines)> 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 anyCeltic languages (I do speak Dutch, but not Gaelic or Breton).
Toggle quote (5 lines)> 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 bugI assume.
BTW. Upstream is now debating some of the dependencies for otherdistros that have bootstrapping requirements too: https://sourceware.org/bugzilla/show_bug.cgi?id=25509
Cheers,
Mark
M
M
Marius Bakke wrote on 6 Feb 2020 12:36
(name . Mark Wielaard)(address . mark@klomp.org)
87ftfo3q2f.fsf@devup.no
Mark Wielaard <mark@klomp.org> writes:
Toggle quote (9 lines)>> 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 ofinheritance.
Toggle quote (3 lines)> 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.
Toggle quote (4 lines)> 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!
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl47+kgACgkQoqBt8qM6VPqz+gf+K7s0EU9CoXzpB3neoaUnt283Z81Y3+TVgA66YzCr0CZaL5zFmWZWqQr7w1loR+7u/TJy0dSaHok/rXoNr3l4S9Zvl/+8q/wScd6muwogMxLJfta4/VdtFjEl7swS4ArSdbCqbvLAnTJkzcqYK6KaIhIofyEAfCJmUc5AVsGucZtBSX3NmBaQI1WDUPBmd0WFzU6Dt6yQQF3dTnxjwkm2uOnX+C1qoNeQBXAt9R8yPuBrV+8n5kRwWz1B09bSy49ULLKC3to1A8uwE2CXJHlhqA6+Xv4FsZ5wajlZTGuHsMaoUls7KEbNuGmVcsMJUiTzH9Q61Mhywc68Sv6T2eYInQ===rB/U-----END PGP SIGNATURE-----
M
M
Mark Wielaard wrote on 6 Feb 2020 14:23
(name . Marius Bakke)(address . mbakke@fastmail.com)
2b6c210935f4f6833cbd944dd27e31a64645b5dd.camel@klomp.org
On Thu, 2020-02-06 at 12:04 +0100, Mark Wielaard wrote:
Toggle quote (4 lines)> 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 betterunderstands the bootstrap requirements for the guix toolchain. Notethat this is relevant to other packages too because we are very eagerto improve the debugability of the whole toolchain and so havesubmitted patches to various core packages to support debuginfod-client like binutils, gdb, annocheck, etc. Which means they all eventuallydepend on everything libcurl depends on:https://sourceware.org/elfutils/Debuginfod.html
M
M
Marius Bakke wrote on 6 Feb 2020 15:31
(name . Mark Wielaard)(address . mark@klomp.org)
87d0ar4wji.fsf@devup.no
Mark Wielaard <mark@klomp.org> writes:
Toggle quote (14 lines)> 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) shouldstay the same (no debuginfod support), and that we should adddebuginfod-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 thatdoes not pull in the debuginfo dependencies.
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl48I0EACgkQoqBt8qM6VPqFLAf/Q/5FDKveqSVLs7ZAGkbONYOIUM7OdgsMQJLHc8eVnkhdWgQCJqLnUOLF3WuMb3ROy8sAVf6m4s3cGQw5x7miyd7JcM6kr0PcNewY104mq4kfxvWmnz014qlduwLOYXhF9IKhQ4xMaH8DNNpeHKCwhGHRm0qGB2Eug6cQf1t4HTTl0QQgljnEft37ZRNbW6FUcmQudXMqGSnGHNB2VAPjZYkXLGJCAxspnD+VQZ3i32CWHZfzo5VtVTQGW4tQjvHl+j6E/VY19wkcfU/pRcKbJtC4453TwqvgSEO83Ox79Nd3jnAYvFW8AOfLc17gazaKj7OTHiRk2Nk5XMBiELBXDQ===3IFB-----END PGP SIGNATURE-----
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send email to 38803@debbugs.gnu.org