Hi packagers,
On Mon, Jun 26, 2017 at 04:13:02PM +0200, Mark Wielaard wrote:
The second introduces two new macros to enable
separate debugsource and sub-debuginfo packages, but has not been
enabled by default yet. If people like the change and no bugs are found
(and fesco and releng agree) we can enable them for the f27 mass
rebuild.
If your package already splits debuginfo packages in a (common) source
package and/or sub-debuginfo packages, please try out the new macros
introduced by the second change. You can enable the standard splitting
by adding the following to your spec file:
%global _debugsource_packages 1
%global _debuginfo_subpackages 1
rel-eng is still figuring out whether any updates are necessary to
pick up both the -debuginfo and -debugsource pacakges:
https://pagure.io/releng/issue/6863
But if you tried out the above I would really like to hear your
experiences.
If there are settings missing that would be useful, bugs with the
default settings or defaults that should be changed please do file a bug
report.
There was one request for keeping a special section for rust packages.
"Need a way to exclude sections from eu-strip"
https://bugzilla.redhat.com/show_bug.cgi?id=1465997
That was implemented and should be generally useful.
It is now possible to add --keep-section=NAME or --remove-section=NAME
as _find_debuginfo_opts. Which will make sure a section is explicitly
kept in the main binary or explicitly (re)moved to the .debug file.
For completeness here are the different argument that a package can
add when using %global _find_debuginfo_opts to tweak how rpm
find-debuginfo.sh works which don't have a separate rpm macro:
# The -g flag says to use strip -g instead of full strip on DSOs or EXEs.
#
# The -r flag says to use eu-strip --reloc-debug-sections.
# (this is only really useful for kernel modules)
#
# Use --keep-section SECTION or --remove-section SECTION to explicitly
# keep a (non-allocated) section in the main executable or explicitly
# remove it into the .debug file. SECTION is an extended wildcard pattern.
# Both options can be given more than once.
The following options should normally not be given directly, but will
be used when the corresponding rpm macros are defined:
# %_smp_mflags
# The -j N option will spawn N processes to do the debuginfo extraction
# in parallel.
#
# %_missing_build_ids_terminate_build
# The --strict-build-id flag says to exit with failure status if
# any ELF binary processed fails to contain a build-id note.
#
# %_no_recompute_build_ids
# The -n flag says to not recompute the build-id.
#
# %_include_minidebuginfo
# The -m flag says to include a .gnu_debugdata section in the main binary.
#
# %_include_gdb_index
# The -i flag says to include a .gdb_index section in the .debug file.
#
# %_unique_build_ids
# If --build-id-seed SEED is given then debugedit is called to
# update the build-ids it finds adding the SEED as seed to recalculate
# the build-id hash. This makes sure the build-ids in the ELF files
# are unique between versions and releases of the same package.
# (Use --build-id-seed "%{VERSION}-%{RELEASE}".)
#
# %_unique_debug_names
# If --unique-debug-suffix SUFFIX is given then the debug files created
# for <FILE> will be named <FILE>-<SUFFIX>.debug. This makes sure
.debug
# are unique between package version, release and architecture.
# (Use --unique-debug-suffix "-%{VERSION}-%{RELEASE}.%{_arch}".)
#
# %_unique_debug_srcs
# If --unique-debug-src-base BASE is given then the source directory
# will be called /usr/debug/src/<BASE>. This makes sure the debug source
# directories are unique between package version, release and architecture.
# (Use --unique-debug-src-base "%{name}-%{VERSION}-%{RELEASE}.%{_arch}".)
#
# %_find_debuginfo_dwz_opts
# %_dwz_low_mem_die_limit
# %_dwz_max_die_limit
# The --run-dwz flag instructs find-debuginfo.sh to run the dwz utility
# if available, and --dwz-low-mem-die-limit and --dwz-max-die-limit
# provide detailed limits. See dwz(1) -l and -L option for details.
#
# %_debugsource_packages
# The -S debugsourcefiles.list option will create a debugsourcefiles.list
# file containing all source files found in the .debug packages.
# This will also exclude all source files from the debugfiles.list.
But please don't invoke find-debuginfo.sh by hand, but use the provided
rpm macros. Finally when you are invoking find-debuginfo.sh by hand then
the following can be also be used:
# A single -o switch before any -l or -p switches simply renames
# the primary output file from debugfiles.list to something else.
# A -o switch that follows a -p switch or some -l switches produces
# an additional output file with the debuginfo for the files in
# the -l filelist file, or whose names match the -p pattern.
# The -p argument is an grep -E -style regexp matching the a file name,
# and must not use anchors (^ or $).
I would be interested in feedback from packagers that do need to invoke
find-debuginfo.sh by hand. And what they believe would be necessary to
create their packages without needing to invokle find-debuginfo.sh by hand.
Thanks,
Mark