Re: rpm debuginfo improvements for rawhide/f27

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]
  Powered by Linux