On Monday, June 26, 2017 16:13:02 Mark Wielaard wrote: > Hi packagers, > > rawhide rpmbuild contains various debuginfo improvements that hopefully > will make various hacks in spec files redundant. These improvements break build of packages that use the RemovePathPostfixes feature of RPM, such as coreutils or curl: https://koji.fedoraproject.org/koji/getfile?taskID=20745024&volume=DEFAULT&name=build.log&offset=-4000 https://koji.fedoraproject.org/koji/getfile?taskID=20745984&volume=DEFAULT&name=build.log&offset=-4000 Is this expected? Kamil > If you have your own way of handling debuginfo packages, calling > find-debuginfo.sh directly, need hacks for working around debugedit > limitations or split your debuginfo package by hand then please try out > rpmbuild in rawhide and read below for some macros you can set to tweak > debuginfo package generation. > > If you still need hacks in your spec file because setting macros isn't > enough to get the debuginfo packages you want then please let us know. > Also please let us know about packages that need to set debuginfo rpm > macros to non-default values because they would crash and burn with the > default settings (best to file a bug against rpmbuild). > > The improvements have been mainly driven by the following two change > proposals for f27 (some inspired by what other distros do): > > https://fedoraproject.org/wiki/Changes/ParallelInstallableDebuginfo > https://fedoraproject.org/wiki/Changes/SubpackageAndSourceDebuginfo > > The first is completely done and has been enabled by default for some > months now in rawhide. 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 > > Besides the above two changes debuginfo packages can now (and are by > default in rawhide) build by running debug extraction in parallel. This > should speed up building with lots of binaries/libraries. If you do > invoke find-debuginfo.sh by hand you most likely will want to add > %{?_smp_mflags} as argument to get the parallel processing speedup. > > If your package is invoking find-debuginfo.sh by hand also please take a > look at all the new options that have been added. Also note that almost > all options can be changed by setting (or undefining) rpm macros now. > Using the rpm macros is preferred over invoking find-debuginfo.sh > directly since it means you get any defaults and improvements that might > need new find-debuginfo.sh arguments automatically. > > Here is an overview of various debuginfo rpm macros that you can define > undefine in your spec file with the latest rpmbuild: > > # > # Should an ELF file processed by find-debuginfo.sh having no build ID > # terminate a build? This is left undefined to disable it and defined to > # enable. > # > %_missing_build_ids_terminate_build 1 > > # > # Include minimal debug information in build binaries. > # Requires _enable_debug_packages. > # > %_include_minidebuginfo 1 > > # > # Include a .gdb_index section in the .debug files. > # Requires _enable_debug_packages and gdb-add-index installed. > # > %_include_gdb_index 1 > > # > # Defines how and if build_id links are generated for ELF files. > # The following settings are supported: > # > # - none > # No build_id links are generated. > # > # - alldebug > # build_id links are generated only when the __debug_package global is > # defined. This will generate build_id links in the -debuginfo package > # for both the main file as /usr/lib/debug/.build-id/xx/yyy and for > # the .debug file as /usr/lib/debug/.build-id/xx/yyy.debug. > # This is the old style build_id links as generated by the original > # find-debuginfo.sh script. > # > # - separate > # build_id links are generate for all binary packages. If this is a > # main package (the __debug_package global isn't set) then the > # build_id link is generated as /usr/lib/.build-id/xx/yyy. If this is > # a -debuginfo package (the __debug_package global is set) then the > # build_id link is generated as /usr/lib/debug/.build-id/xx/yyy. > # > # - compat > # Same as for "separate" but if the __debug_package global is set then > # the -debuginfo package will have a compatibility link for the main > # ELF /usr/lib/debug/.build-id/xx/yyy -> /usr/lib/.build-id/xx/yyy > %_build_id_links compat > > # Whether build-ids should be made unique between package version/releases > # when generating debuginfo packages. If set to 1 this will pass > # --build-id-seed "%{VERSION}-%{RELEASE}" to find-debuginfo.sh which will > # pass it onto debugedit --build-id-seed to be used to prime the build-id > # note hash. > %_unique_build_ids 1 > > # Do not recompute build-ids but keep whatever is in the ELF file already. > # Cannot be used together with _unique_build_ids (which forces > recomputation). > # Defaults to undefined (unset). > #%_no_recompute_build_ids 1 > > # Whether .debug files should be made unique between package version, > # release and architecture. If set to 1 this will pass > # --unique-debug-suffix "-%{VERSION}-%{RELEASE}.%{_arch} find-debuginfo.sh > # to create debuginfo files which end in -<ver>-<rel>.<arch>.debug > # Requires _unique_build_ids. > %_unique_debug_names 1 > > # Whether the /usr/debug/src/<package> directories should be unique between > # package version, release and architecture. If set to 1 this will pass # > --unique-debug-src-base "%{name}-%{VERSION}-%{RELEASE}.%{_arch}" to # > find-debuginfo.sh to name the directory under /usr/debug/src as # > <name>-<ver>-<rel>.<arch>. > %_unique_debug_srcs 1 > > # Whether rpm should put debug source files into its own subpackage > #%_debugsource_packages 1 > > # Whether rpm should create extra debuginfo packages for each subpackage > #%_debuginfo_subpackages 1 > > # Number of debugging information entries (DIEs) above which > # dwz will stop considering file for multifile optimizations > # and enter a low memory mode, in which it will optimize > # in about half the memory needed otherwise. > %_dwz_low_mem_die_limit 10000000 > # Number of DIEs above which dwz will stop processing > # a file altogether. > %_dwz_max_die_limit 50000000 > > %_find_debuginfo_dwz_opts --run-dwz\\\ > --dwz-low-mem-die-limit %{_dwz_low_mem_die_limit}\\\ > --dwz-max-die-limit %{_dwz_max_die_limit} > > 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. > > Thanks, > > Mark _______________________________________________ devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx