# # spec file for package elfutils-debuginfod # # Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via https://bugs.opensuse.org/ # Name: elfutils-debuginfod Version: 0.185 Release: 1.1 Summary: Debuginfod server provided by elfutils License: GPL-3.0-or-later Group: Development/Tools/Building URL: https://sourceware.org/elfutils/ #Git-Clone: git://sourceware.org/git/elfutils Source: https://fedorahosted.org/releases/e/l/elfutils/%{version}/elfutils-%{version}.tar.bz2 Source1: https://fedorahosted.org/releases/e/l/elfutils/%{version}/elfutils-%{version}.tar.bz2.sig Source2: elfutils.changes Source3: elfutils.keyring Patch0: disable-run-readelf-self-test.patch BuildRequires: autoconf BuildRequires: automake BuildRequires: bison BuildRequires: bsdtar BuildRequires: procps # For the run-debuginfod-find.sh test case in %%check for /usr/sbin/ss BuildRequires: curl BuildRequires: flex BuildRequires: gcc-c++ BuildRequires: iproute BuildRequires: libbz2-devel BuildRequires: pkgconfig BuildRequires: xz-devel BuildRequires: zlib-devel # For debuginfod BuildRequires: pkgconfig(libarchive) >= 3.1.2 BuildRequires: pkgconfig(libcurl) >= 7.29.0 BuildRequires: pkgconfig(libmicrohttpd) >= 0.9.33 BuildRequires: pkgconfig(sqlite3) >= 3.7.17 BuildRequires: pkgconfig(systemd) Requires: debuginfod-client = %{version} Requires: elfutils = %{version} Requires: sysconfig Requires(post): %fillup_prereq %{?systemd_requires} %description The elfutils-debuginfod package contains the debuginfod binary and control files for a service that can provide ELF/DWARF files to remote clients, based on build-id identification. The ELF/DWARF file searching functions in libdwfl can query such servers to download those files on demand. %package -n libdebuginfod1 Summary: Library for build-id HTTP ELF/DWARF server Group: System/Libraries Conflicts: libdebuginfod1-dummy = %{version} %description -n libdebuginfod1 The libdebuginfod1 package contains shared libraries dynamically loaded from -ldw, which use a debuginfod service to look up debuginfo and associated data. Also includes a command-line frontend. %package -n libdebuginfod-devel Summary: Libraries and headers to build debuginfod client applications Group: Development/Libraries/C and C++ Conflicts: libdebuginfod-dummy-devel = %{version} %description -n libdebuginfod-devel The libdebuginfod-devel package contains the libraries to create applications to use the debuginfod service. %package -n debuginfod-client Summary: Command line client for build-id HTTP ELF/DWARF server Group: Development/Tools/Building Conflicts: debuginfod-dummy-client = %{version} %description -n debuginfod-client The elfutils-debuginfod-client package contains a command-line frontend. %lang_package %prep %autosetup -n elfutils-%version -p1 %build %global _lto_cflags %{_lto_cflags} -flto-partition=none -Wno-error=stack-usage= # Change DATE/TIME macros to use last change time of elfutils.changes # See http://lists.opensuse.org/opensuse-factory/2011-05/msg00304.html modified="$(sed -n '/^----/n;s/ - .*$//;p;q' "%{_sourcedir}/elfutils.changes")" DATE="\"$(date -d "${modified}" "+%%b %%e %%Y")\"" TIME="\"$(date -d "${modified}" "+%%R")\"" find . -type f -regex ".*\.c\|.*\.cpp\|.*\.h" -exec sed -i "s/__DATE__/${DATE}/g;s/__TIME__/${TIME}/g" {} + # Set modversion used to verify dynamically loaded ebl backend matches to # similarly predictable value [upstream default is hostname + date] MODVERSION="suse-build `eval echo ${DATE} ${TIME}`" sed --in-place "s/^MODVERSION=.*\$/MODVERSION=\"${MODVERSION}\"/" configure.ac export CFLAGS="%optflags" CFLAGS+=" -g" # make tests pass when user does not want debuginfo (boo#1031556) %ifarch %sparc # Small PIC model not sufficient CFLAGS+=" -fPIC" %endif autoreconf -fi # some patches create new test scripts, which are created 644 by default chmod a+x tests/run*.sh %configure --enable-debuginfod-urls=https://debuginfod.opensuse.org/ \ --program-prefix=eu- %make_build %install %make_install # remove unneeded files rm -f %{buildroot}/%{_libdir}/*.la ls -lR %{buildroot}/%{_libdir}/libelf* rm -f %{buildroot}/%{_bindir}/eu* rm -f %{buildroot}/%{_libdir}/libasm* rm -f %{buildroot}/%{_includedir}/elfutils/lib*.h rm -f %{buildroot}/%{_includedir}/elfutils/elf-knowledge.h rm -f %{buildroot}/%{_includedir}/elfutils/known-dwarf.h rm -f %{buildroot}/%{_includedir}/elfutils/version.h rm -f %{buildroot}/%{_libdir}/libelf* rm -f %{buildroot}/%{_includedir}/libelf.h rm -f %{buildroot}/%{_includedir}/gelf.h rm -f %{buildroot}/%{_includedir}/nlist.h rm -f %{buildroot}/%{_includedir}/dwarf.h rm -f %{buildroot}/%{_libdir}/libdw* rm -f %{buildroot}/%{_mandir}/man3/elf_*.3* rm -f %{buildroot}/%{_mandir}/man1/eu-*.1* rm -rf %{buildroot}%{_datadir}/locale/ rm -f %{buildroot}/%{_libdir}/pkgconfig/libdw.pc rm -f %{buildroot}/%{_libdir}/pkgconfig/libelf.pc install -Dm0644 config/debuginfod.service %{buildroot}%{_unitdir}/debuginfod.service install -d -m 755 %{buildroot}%{_fillupdir} cp config/debuginfod.sysconfig %{buildroot}%{_fillupdir}/sysconfig.debuginfod mkdir -p %{buildroot}%{_localstatedir}/cache/debuginfod touch %{buildroot}%{_localstatedir}/cache/debuginfod/debuginfod.sqlite %post -n libdebuginfod1 -p /sbin/ldconfig %postun -n libdebuginfod1 -p /sbin/ldconfig %check %if 0%{?qemu_user_space_build} # qemu-linux-user does not support ptrace and a few other process details export XFAIL_TESTS="dwfl-proc-attach run-backtrace-dwarf.sh run-backtrace-native.sh run-deleted.sh" %endif %make_build check %files %license COPYING %doc AUTHORS ChangeLog NEWS NOTES README THANKS TODO %{_bindir}/debuginfod %{_unitdir}/debuginfod.service %{_mandir}/man8/debuginfod.8* %{_fillupdir}/sysconfig.debuginfod %dir %attr(0700,debuginfod,debuginfod) %{_localstatedir}/cache/debuginfod %verify(not md5 size mtime) %attr(0600,debuginfod,debuginfod) %{_localstatedir}/cache/debuginfod/debuginfod.sqlite %files -n libdebuginfod1 %{_libdir}/libdebuginfod.so.* %{_libdir}/libdebuginfod-%{version}.so %config %{_sysconfdir}/profile.d/debuginfod.sh %config %{_sysconfdir}/profile.d/debuginfod.csh %files -n libdebuginfod-devel %{_libdir}/pkgconfig/libdebuginfod.pc %{_mandir}/man3/debuginfod_*.3* %dir %{_includedir}/elfutils %{_includedir}/elfutils/debuginfod.h %{_libdir}/libdebuginfod.so %files -n debuginfod-client %{_bindir}/debuginfod-find %{_mandir}/man1/debuginfod-find.1* %pre getent group debuginfod >/dev/null || %{_sbindir}/groupadd -r debuginfod getent passwd debuginfod >/dev/null || %{_sbindir}/useradd -r -g debuginfod -d %{_localstatedir}/cache/debuginfod -s /bin/false -c "elfutils debuginfo server" debuginfod %service_add_pre debuginfod.service %post %service_add_post debuginfod.service %{fillup_only -n debuginfod} %preun %service_del_preun debuginfod.service %postun %service_del_postun debuginfod.service %changelog * Mon May 24 2021 Martin Liška - Update to version 0.185: debuginfod-client: Simplify curl handle reuse so downloads which return an error are retried. elfcompress: Always exit with code 0 when the operation succeeds (even when nothing was done). On error the exit code is now always 1. * Mon May 10 2021 Martin Liška - Update to version 0.184: debuginfod: Use libarchive's bsdtar as the .deb-family file unpacker. debuginfod-client: Client caches negative results. If a query for a file failed with 404, an empty 000 permission file is created in the cache. This will prevent requesting the same file for the next 10 minutes. Client objects now carry long-lived curl handles for outgoing connections. This makes it more efficient for multiple sequential queries, because the TCP connections and/or TLS state info are kept around awhile, avoiding O(100ms) setup latencies. libdw: handle DW_FORM_indirect when reading attributes translations: Update Polish translation. - Add 2 build dependences for tests. * Tue Mar 16 2021 Martin Liška - Enable https://debuginfod.opensuse.org/ debuginfod server by default now. - Add disable-run-readelf-self-test.patch in order to disable a failing test-case with GCC 11 (PR27367). * Mon Feb 8 2021 Martin Liška - Update to version 0.183: debuginfod: New thread-busy metric and more detailed error metrics. New --fdcache-mintmp and tracking of filesystem freespace. New increased webapi concurrency while grooming. debuginfod-client: DEBUGINFOD_SONAME macro added to debuginfod.h which can be used to dlopen the libdebuginfod.so library. New function debuginfod_set_verbose_fd and DEBUGINFOD_VERBOSE environment variable. config: profile.sh and profile.csh won't export DEBUGINFOD_URLS unless configured --enable-debuginfod-urls[=URLS] elflint, readelf: Recognize SHF_GNU_RETAIN. Handle SHT_X86_64_UNWIND as valid relocation target. - Remove config-do-not-define-DEBUGINFOD_URLS-environment-var.patch patch. * Mon Jan 4 2021 Martin Liška - Add upstream config-do-not-define-DEBUGINFOD_URLS-environment-var.patch in order to fix boo#1180306. * Thu Dec 10 2020 Martin Liška - Move profile files to libdebuginfod1 sub-package. - Silent 2 rpmlint issues. * Thu Nov 5 2020 Martin Liška - Add new /etc/profile.d/debuginfod.{,c}sh files. - Update to version 0.182: backends: Support for tilegx has been removed. config: New /etc/profile.d files to provide default $DEBUGINFOD_URLS. debuginfod: More efficient package traversal, tolerate various errors during scanning, grooming progress is more visible and interruptible, more prometheus metrics. debuginfod-client: Now supports compressed (kernel) ELF images. libdwfl: Add ZSTD compression support. * Tue Sep 22 2020 Martin Liška - Add Conflicts for dummy packages. * Tue Sep 15 2020 Guillaume GARDET - Disable LTO again - boo#1138796 Adding -flto-partition=none and -Wno-error=stack-usage were not enough: [ 123s] libasm-devel.x86_64: E: lto-no-text-in-archive (Badness: 10000) /usr/lib64/libasm.a [ 123s] libdw-devel.x86_64: E: lto-no-text-in-archive (Badness: 10000) /usr/lib64/libdw.a [ 123s] libelf-devel.x86_64: E: lto-no-text-in-archive (Badness: 10000) /usr/lib64/libelf.a [ 123s] This archive does not contain a non-empty .text section. The archive was not [ 123s] created with -ffat-lto-objects option. And adding -ffat-lto-objects breaks run-show-die-info.sh test. * Tue Sep 8 2020 Guillaume GARDET - Update to version 0.181: libelf: elf_update now compensates (fixes up) a bad sh_addralign for SHF_COMPRESSED sections. libdebuginfod: configure now takes --enable-libdebuginfod=dummy or - -disable-libdebuginfod for bootstrapping. DEBUGINFOD_URLS now accepts "scheme-free" urls (guessing at what the user meant, either http:// or file://) readelf, elflint: Handle aarch64 bti, pac bits in dynamic table and gnu property notes. libdw, readelf: Recognize DW_CFA_AARCH64_negate_ra_state. Allows unwinding on arm64 for code that is compiled for PAC (Pointer Authentication Code) as long as it isn't enabled - Drop upstream patch: * 0001-tests-Add-GCOV-flags-when-necessary.patch * Mon Jun 15 2020 Martin Liška - Remove remove-run-large-elf-file.sh.patch as it now checks for memory size. - Use autosetup. * Thu Jun 11 2020 Martin Liška - Update to version 0.180: elflint: Allow SHF_EXCLUDE as generic section flag when --gnu is given. libdw, readelf: Handle GCC LTO .gnu.debuglto_ prefix. libdw: Use correct CU to resolve file names in dwarf_decl_file. libdwfl: Handle debugaltlink in dwfl_standard_find_debuginfo. size: Also obey radix printing for bsd format. nm: Explicitly print weak 'V' or 'T' and common 'C' symbols. - Add 0001-tests-Add-GCOV-flags-when-necessary.patch in order to fix an unresolved symbol. - Enable LTO: boo#1138796 by adding -flto-partition=none and -Wno-error=stack-usage. * Mon Mar 30 2020 Martin Liška - Update to version 0.179: debuginfod-client: When DEBUGINFOD_PROGRESS is set and the program doesn't install its own debuginfod_progressfn_t show download progress on stderr. DEBUGINFOD_TIMEOUT is now defined as seconds to get at least 100K, defaults to 90 seconds. Default to $XDG_CACHE_HOME/debuginfod_client. New functions debuginfod_set_user_data, debuginfod_get_user_data, debuginfod_get_url and debuginfod_add_http_header. Support for file:// URLs. debuginfod: Uses libarchive directly for reading rpm archives. Support for indexing .deb/.ddeb archives through dpkg-deb or bsdtar. Generic archive support through -Z EXT[=CMD]. Which can be used for example for arch-linux pacman files by using - Z '.tar.zst=zstdcat'. Better logging using User-Agent and X-Forwarded-For headers. More prometheus metrics. Support for eliding dots or extraneous slashes in path names. debuginfod-find: Accept /path/names in place of buildid hex. libelf: Handle PN_XNUM in elf_getphdrnum before shdr 0 is cached Ensure zlib resource cleanup on failure. libdwfl: dwfl_linux_kernel_find_elf and dwfl_linux_kernel_report_offline now find and handle a compressed vmlinuz image. readelf, elflint: Handle PT_GNU_PROPERTY. translations: Updated Ukrainian translation. * Tue Feb 4 2020 Martin Liška - Package debuginfod of elfutils for version 0.178.