From 082d5d0331a40acc4bd5249431311d02c2322371 Mon Sep 17 00:00:00 2001 From: Igor Gnatenko Date: Fri, 30 Jun 2017 17:03:35 +0200 Subject: [PATCH] Track all patches on pagure and git format-patch them since they are cherry-picked This will give us more correct patches which is easier to rebase and they are taken from real upstream. Signed-off-by: Igor Gnatenko --- ...rrect-source-file-for-rpmsign-module.patch | 8 +- ...ompile-Process-python-lib-dirs-even-.patch | 11 +- ...umber-of-references-on-spec_Type-114.patch | 18 +- ...ld-id-links-to-rpm-for-all-ELF-files.patch | 30 +-- ...-to-have-unique-build-ids-across-bui.patch | 20 +- ...ding-GDB-index-sections-configurable.patch | 21 +- ...ve-unique-debug-file-names-across-ve.patch | 23 +- ...or-when-_build_id_links-is-undefined.patch | 13 +- ...c-when-subpackages-have-different-ve.patch | 21 +- ...ular-files-when-generating-build-ids.patch | 13 +- ...re.ac-use-LIBDW-always-conditionally.patch | 17 +- ...ch => 0012-Fix-libdw-configure-check.patch | 14 +- ...t-String-Line-table-rewriting-for-la.patch | 20 +- 0013-missing_build_ids_terminate_build.patch | 17 -- ...ve-unique-debug-source-dirs-across-v.patch | 24 +- ...-Don-t-warn-or-error-for-object-file.patch | 15 +- 0015-reset-buildid-file-attrs.patch | 57 ----- ...set-__debug_package-implies-missing-.patch | 36 +++ 0016-debugedit-replace-files.patch | 13 - ...-generateBuildIDs-Fix-error-handling.patch | 9 +- ...et-file-attributes-for-generated-bui.patch | 194 ++++++++++++++ ...-Reset-attrFlags-in-generateBuildIDs.patch | 129 ++++++++++ ...it_dwarf2_line-replace_dirs-replace_.patch | 37 +++ ...ocessPackageFiles-Don-t-call-generat.patch | 16 +- ...oss-endian-build-id-reading-and-upda.patch | 31 ++- 0023-minisymtab-exe-sh.patch | 35 --- ...t-Make-file-sed-regexp-more-strict-t.patch | 60 +++++ ....at-Make-file-sed-regexp-more-strict.patch | 82 ++---- ...ly-check-build-ids-for-executable-fi.patch | 30 ++- 0025-buildid-reset-attrs.patch | 233 ----------------- ...f-by-one-adding-DW_FORM_string-repla.patch | 12 +- ...nbreak-short-circuited-binary-builds.patch | 72 +++--- ...h-Only-add-minisymtab-for-executable.patch | 42 +++ ...ebugedit-Add-n-no-recompute-build-id.patch | 60 +++-- ...-inherented-modes-of-directories-in-.patch | 39 +++ ...output-comp_dir-under-build-dir-once.patch | 81 ++++++ ...h-Split-directory-traversal-and-debu.patch | 42 ++- ...h-Use-return-not-continue-to-break-o.patch | 37 +++ ...buginfo.sh-Process-files-in-parallel.patch | 42 +-- ...e-build-options-in-find-debuginfo.sh.patch | 52 ++-- 0036-Support-debugsource-subpackages.patch | 125 +++++++++ ...> 0037-Support-debuginfo-subpackages.patch | 240 +++--------------- ...ectories-to-split-debuginfo-packages.patch | 70 +++++ ...ir_prefix-should-check-for-dir-separ.patch | 27 +- ...h-Filter-out-all-built-in-like-fake-.patch | 43 ++++ ...h-Don-t-create-dwz-multi-file-if-the.patch | 41 +-- ...ginfo.sh-options-and-macros-document.patch | 36 ++- ...SL-support-for-digest-and-signatures.patch | 14 +- ...-instead-of-RPMTAG_-FLAGS-in-parsePr.patch | 6 +- ...ak-deps-in-external-dependency-gener.patch | 7 +- ...er-to-allow-rich-deps-in-a-given-tag.patch | 6 +- ...ependecies-for-build-requires-and-co.patch | 6 +- ...rich-dependencies-from-dependency-ge.patch | 9 +- ...-index-when-recording-generated-depe.patch | 6 +- ...-fixup-Support-debuginfo-subpackages.patch | 25 ++ find-debuginfo-filter-built-ins.patch | 36 --- ...o-split-traversal-and-extraction-fix.patch | 11 - rpm-4.13.x-writable-tmp-dir.patch | 107 -------- rpm.spec | 95 +++---- 59 files changed, 1501 insertions(+), 1135 deletions(-) rename rpm-4.13.0-python-rpmsign.patch => 0001-Use-correct-source-file-for-rpmsign-module.patch (77%) rename rpm-4.13.x-brp-python-bytecompile-Python3-only.patch => 0002-brp-python-bytecompile-Process-python-lib-dirs-even-.patch (84%) rename rpm-4.13.x-fix-refcount-for-spec_type.patch => 0003-Fix-number-of-references-on-spec_Type-114.patch (84%) rename 0001-Add-build-id-links-to-rpm-for-all-ELF-files.patch => 0004-Add-build-id-links-to-rpm-for-all-ELF-files.patch (98%) rename 0002-Make-it-possible-to-have-unique-build-ids-across-bui.patch => 0005-Make-it-possible-to-have-unique-build-ids-across-bui.patch (95%) rename 0003-Make-adding-GDB-index-sections-configurable.patch => 0006-Make-adding-GDB-index-sections-configurable.patch (93%) rename 0004-Add-option-to-have-unique-debug-file-names-across-ve.patch => 0007-Add-option-to-have-unique-debug-file-names-across-ve.patch (98%) rename 0005-Fix-behavior-when-_build_id_links-is-undefined.patch => 0008-Fix-behavior-when-_build_id_links-is-undefined.patch (68%) rename 0006-Fix-debuginfo-etc-when-subpackages-have-different-ve.patch => 0009-Fix-debuginfo-etc-when-subpackages-have-different-ve.patch (91%) rename 0007-Only-process-regular-files-when-generating-build-ids.patch => 0010-Only-process-regular-files-when-generating-build-ids.patch (77%) rename 0008-configure.ac-use-LIBDW-always-conditionally.patch => 0011-configure.ac-use-LIBDW-always-conditionally.patch (64%) rename 0009-Fix-libdw-configure-check.patch => 0012-Fix-libdw-configure-check.patch (62%) rename 0010-debugedit-Support-String-Line-table-rewriting-for-la.patch => 0013-debugedit-Support-String-Line-table-rewriting-for-la.patch (99%) delete mode 100644 0013-missing_build_ids_terminate_build.patch rename 0011-Add-option-to-have-unique-debug-source-dirs-across-v.patch => 0014-Add-option-to-have-unique-debug-source-dirs-across-v.patch (95%) rename 0012-generateBuildIDs-Don-t-warn-or-error-for-object-file.patch => 0015-generateBuildIDs-Don-t-warn-or-error-for-object-file.patch (79%) delete mode 100644 0015-reset-buildid-file-attrs.patch create mode 100644 0016-build-files.c-Unset-__debug_package-implies-missing-.patch delete mode 100644 0016-debugedit-replace-files.patch rename 0014-generateBuildIDs-Fix-error-handling.patch => 0017-generateBuildIDs-Fix-error-handling.patch (91%) create mode 100644 0018-Make-sure-to-reset-file-attributes-for-generated-bui.patch create mode 100644 0019-rpmbuild-Reset-attrFlags-in-generateBuildIDs.patch create mode 100644 0020-debugedit-Fix-edit_dwarf2_line-replace_dirs-replace_.patch rename 0017-do-not-process-buildi-ds-for-noarch.patch => 0021-build-files.c-processPackageFiles-Don-t-call-generat.patch (70%) rename 0018-update-build-id-endian.patch => 0022-debugedit-Fix-cross-endian-build-id-reading-and-upda.patch (72%) delete mode 100644 0023-minisymtab-exe-sh.patch create mode 100644 0023-tests-tpmbuild.at-Make-file-sed-regexp-more-strict-t.patch rename 0019-fix-sed-build-id-match-test.patch => 0024-tests-rpmbuildid.at-Make-file-sed-regexp-more-strict.patch (71%) rename 0020-build-files-exec-build-id.patch => 0025-build-files.c-Only-check-build-ids-for-executable-fi.patch (54%) delete mode 100644 0025-buildid-reset-attrs.patch rename 0021-debugedit-Fix-off-by-one-adding-DW_FORM_string-repla.patch => 0026-debugedit-Fix-off-by-one-adding-DW_FORM_string-repla.patch (87%) rename 0022-unbreak-short-circuit.patch => 0027-Unbreak-short-circuited-binary-builds.patch (67%) create mode 100644 0028-find-debuginfo.sh-Only-add-minisymtab-for-executable.patch rename 0024-no-recompute-build-id.patch => 0029-debugedit-Add-n-no-recompute-build-id.patch (86%) create mode 100644 0030-Fix-non-standard-inherented-modes-of-directories-in-.patch create mode 100644 0031-debugedit-Only-output-comp_dir-under-build-dir-once.patch rename find-debuginfo-split-traversal-and-extraction.patch => 0032-find-debuginfo.sh-Split-directory-traversal-and-debu.patch (71%) create mode 100644 0033-find-debuginfo.sh-Use-return-not-continue-to-break-o.patch rename find-debuginfo-process-files-in-parallel.patch => 0034-find-debuginfo.sh-Process-files-in-parallel.patch (76%) rename find-debuginfo-untangle-unique-build-options.patch => 0035-Untangle-unique-build-options-in-find-debuginfo.sh.patch (82%) create mode 100644 0036-Support-debugsource-subpackages.patch rename debugsrc-and-sub-debuginfo-packages.patch => 0037-Support-debuginfo-subpackages.patch (67%) create mode 100644 0038-Also-add-directories-to-split-debuginfo-packages.patch rename debugedit-prefix.patch => 0039-debugedit-skip_dir_prefix-should-check-for-dir-separ.patch (57%) create mode 100644 0040-find-debuginfo.sh-Filter-out-all-built-in-like-fake-.patch rename find-debuginfo-dwz-multi.patch => 0041-find-debuginfo.sh-Don-t-create-dwz-multi-file-if-the.patch (63%) rename find-debuginfo-and-macro-docs.patch => 0042-Update-find-debuginfo.sh-options-and-macros-document.patch (81%) rename 0001-Add-OpenSSL-support-for-digest-and-signatures.patch => 0043-Add-OpenSSL-support-for-digest-and-signatures.patch (99%) rename 0001-Use-RPMTAG_-NAME-instead-of-RPMTAG_-FLAGS-in-parsePr.patch => 0044-Use-RPMTAG_-NAME-instead-of-RPMTAG_-FLAGS-in-parsePr.patch (97%) rename 0002-Fix-check-for-weak-deps-in-external-dependency-gener.patch => 0045-Fix-check-for-weak-deps-in-external-dependency-gener.patch (85%) rename 0003-Fix-check-whether-to-allow-rich-deps-in-a-given-tag.patch => 0046-Fix-check-whether-to-allow-rich-deps-in-a-given-tag.patch (93%) rename 0004-Re-enable-rich-dependecies-for-build-requires-and-co.patch => 0047-Re-enable-rich-dependecies-for-build-requires-and-co.patch (83%) rename 0005-add-support-for-rich-dependencies-from-dependency-ge.patch => 0048-add-support-for-rich-dependencies-from-dependency-ge.patch (98%) rename 0006-Pass-proper-file-index-when-recording-generated-depe.patch => 0049-Pass-proper-file-index-when-recording-generated-depe.patch (83%) create mode 100644 0050-fixup-Support-debuginfo-subpackages.patch delete mode 100644 find-debuginfo-filter-built-ins.patch delete mode 100644 find-debuginfo-split-traversal-and-extraction-fix.patch delete mode 100644 rpm-4.13.x-writable-tmp-dir.patch diff --git a/rpm-4.13.0-python-rpmsign.patch b/0001-Use-correct-source-file-for-rpmsign-module.patch similarity index 77% rename from rpm-4.13.0-python-rpmsign.patch rename to 0001-Use-correct-source-file-for-rpmsign-module.patch index 3e535b6..9c02b6a 100644 --- a/rpm-4.13.0-python-rpmsign.patch +++ b/0001-Use-correct-source-file-for-rpmsign-module.patch @@ -1,8 +1,9 @@ -From eb632e5158fa4ef993b0e5df2a354f0be7a7a71d Mon Sep 17 00:00:00 2001 +From 3936d5a227dfcfd502588c6fd8f52ccb826f11c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nikola=20Forr=C3=B3?= Date: Wed, 20 Apr 2016 15:39:36 +0200 -Subject: [PATCH] Use correct source file for rpmsign module +Subject: [PATCH 01/49] Use correct source file for rpmsign module +(cherry picked from commit eb632e5158fa4ef993b0e5df2a354f0be7a7a71d) --- python/setup.py.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) @@ -20,3 +21,6 @@ index b2c394136..f94873fe5 100644 include_dirs = pkgconfig('--cflags'), libraries = pkgconfig('--libs') + ['rpmsign'], extra_compile_args = cflags, +-- +2.13.2 + diff --git a/rpm-4.13.x-brp-python-bytecompile-Python3-only.patch b/0002-brp-python-bytecompile-Process-python-lib-dirs-even-.patch similarity index 84% rename from rpm-4.13.x-brp-python-bytecompile-Python3-only.patch rename to 0002-brp-python-bytecompile-Process-python-lib-dirs-even-.patch index 56bc857..00d41d9 100644 --- a/rpm-4.13.x-brp-python-bytecompile-Python3-only.patch +++ b/0002-brp-python-bytecompile-Process-python-lib-dirs-even-.patch @@ -1,20 +1,21 @@ -From a8e51b3bb05c6acb1d9b2e3d34f859ddda1677be Mon Sep 17 00:00:00 2001 +From aa74f749e8eba102069aaafd0b2e18af8f5f0fa0 Mon Sep 17 00:00:00 2001 From: Florian Festi Date: Tue, 14 Feb 2017 14:04:35 +0100 -Subject: [PATCH] brp-python-bytecompile: Process python lib dirs even without - standard Python +Subject: [PATCH 02/49] brp-python-bytecompile: Process python lib dirs even + without standard Python There is no need for /usr/bin/python when byte compiling files in /usr/lib/pythonX.Y (only /usr/bin/pythonX.Y). Moved check so we do not exit prematurely. Fixes: rhbz#1411588 +(cherry picked from commit a8e51b3bb05c6acb1d9b2e3d34f859ddda1677be) --- scripts/brp-python-bytecompile | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/scripts/brp-python-bytecompile b/scripts/brp-python-bytecompile -index 838f23d..894fa34 100644 +index 838f23d9d..894fa3459 100644 --- a/scripts/brp-python-bytecompile +++ b/scripts/brp-python-bytecompile @@ -6,12 +6,6 @@ if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then @@ -45,5 +46,5 @@ index 838f23d..894fa34 100644 # Generate normal (.pyc) byte-compiled files. python_bytecompile "" $default_python "/bin/|/sbin/|/usr/lib(64)?/python[0-9]\.[0-9]|/usr/share/doc" "$RPM_BUILD_ROOT" "$depth" "/" -- -2.5.5 +2.13.2 diff --git a/rpm-4.13.x-fix-refcount-for-spec_type.patch b/0003-Fix-number-of-references-on-spec_Type-114.patch similarity index 84% rename from rpm-4.13.x-fix-refcount-for-spec_type.patch rename to 0003-Fix-number-of-references-on-spec_Type-114.patch index 4d8a460..3774d3d 100644 --- a/rpm-4.13.x-fix-refcount-for-spec_type.patch +++ b/0003-Fix-number-of-references-on-spec_Type-114.patch @@ -1,16 +1,20 @@ -From aaf691dbc85295aeb09e1ea4081089a24dc28759 Mon Sep 17 00:00:00 2001 +From 6e748a4eb167b2ca201d9e90b927cc4523eabeda Mon Sep 17 00:00:00 2001 From: Pavlina Moravcova Varekova -Date: Tue, 21 Feb 2017 11:37:20 +0100 -Subject: [PATCH] Fix number of references on spec_Type (#114) +Date: Tue, 21 Feb 2017 11:48:27 +0100 +Subject: [PATCH 03/49] Fix number of references on spec_Type (#114) -After creating a specPkg from a spec file we must increase spec file reference counter. Otherwise spec file may be accidentally deallocated and usage of SpecPkg can cause an error. +After creating a specPkg from a spec file we must increase spec file +reference counter. Otherwise spec file may be accidentally deallocated +and usage of SpecPkg can cause an error. + +(cherry picked from commit 34b61a1f82f6f9b675ab4ca820b6255af63680f1) --- python/spec-py.c | 14 +++++++++++--- python/spec-py.h | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/python/spec-py.c b/python/spec-py.c -index f710f5c..753afba 100644 +index f710f5c87..753afbad4 100644 --- a/python/spec-py.c +++ b/python/spec-py.c @@ -45,8 +45,14 @@ struct specPkgObject_s { @@ -63,7 +67,7 @@ index f710f5c..753afba 100644 } diff --git a/python/spec-py.h b/python/spec-py.h -index 558fbf2..65b8dc3 100644 +index 558fbf207..65b8dc3d7 100644 --- a/python/spec-py.h +++ b/python/spec-py.h @@ -13,6 +13,6 @@ extern PyTypeObject specPkg_Type; @@ -75,5 +79,5 @@ index 558fbf2..65b8dc3 100644 #endif /* RPMPYTHON_SPEC */ -- -2.7.4 +2.13.2 diff --git a/0001-Add-build-id-links-to-rpm-for-all-ELF-files.patch b/0004-Add-build-id-links-to-rpm-for-all-ELF-files.patch similarity index 98% rename from 0001-Add-build-id-links-to-rpm-for-all-ELF-files.patch rename to 0004-Add-build-id-links-to-rpm-for-all-ELF-files.patch index 274c317..ea77b8b 100644 --- a/0001-Add-build-id-links-to-rpm-for-all-ELF-files.patch +++ b/0004-Add-build-id-links-to-rpm-for-all-ELF-files.patch @@ -1,8 +1,7 @@ -From 189b4f88c8e100155ec23a1e0b214bdc8473532a Mon Sep 17 00:00:00 2001 -Message-Id: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com> +From 46b763e54de34d0dd28d82e3a87b59c6a94a4c07 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Tue, 14 Jun 2016 17:07:12 +0200 -Subject: [PATCH 01/11] Add build-id links to rpm for all ELF files. +Subject: [PATCH 04/49] Add build-id links to rpm for all ELF files. This patch moves the main ELF file build-id symlinks from the debuginfo package into the main package. And uses different @@ -31,6 +30,7 @@ There are several new testcases added to test the various settings using the new keyword "buildid". Signed-off-by: Mark Wielaard +(cherry picked from commit bbfe1f86b2e4b5c0bd499d9f3dd9de9c9c20fff2) --- build/Makefile.am | 4 + build/files.c | 375 ++++++++++++++++++++ @@ -48,7 +48,7 @@ Signed-off-by: Mark Wielaard create mode 100644 tests/rpmbuildid.at diff --git a/build/Makefile.am b/build/Makefile.am -index dbda716..71edbd1 100644 +index dbda716ac..71edbd1c4 100644 --- a/build/Makefile.am +++ b/build/Makefile.am @@ -26,3 +26,7 @@ librpmbuild_la_LIBADD = \ @@ -60,7 +60,7 @@ index dbda716..71edbd1 100644 +librpmbuild_la_LIBADD += @WITH_LIBELF_LIB@ @WITH_LIBDW_LIB@ +endif diff --git a/build/files.c b/build/files.c -index b76ce04..b010483 100644 +index b76ce048f..b010483e4 100644 --- a/build/files.c +++ b/build/files.c @@ -14,6 +14,11 @@ @@ -467,10 +467,10 @@ index b76ce04..b010483 100644 genSourceRpmName(spec); diff --git a/configure.ac b/configure.ac -index b2ec501..08eceeb 100644 +index 91fadbade..8890c3c32 100644 --- a/configure.ac +++ b/configure.ac -@@ -367,6 +367,21 @@ AC_SUBST(WITH_ARCHIVE_LIB) +@@ -360,6 +360,21 @@ AC_SUBST(WITH_ARCHIVE_LIB) AM_CONDITIONAL(WITH_ARCHIVE,[test "$with_archive" = yes]) #================= @@ -493,7 +493,7 @@ index b2ec501..08eceeb 100644 AC_ARG_WITH(external_db, [AS_HELP_STRING([--with-external-db],[build against an external Berkeley db])], [case "$with_external_db" in diff --git a/macros.in b/macros.in -index fd57f2e..e43d62b0 100644 +index fd57f2eba..e43d62b0a 100644 --- a/macros.in +++ b/macros.in @@ -449,6 +449,34 @@ package or when debugging this package.\ @@ -532,7 +532,7 @@ index fd57f2e..e43d62b0 100644 %_use_internal_dependency_generator 1 diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh -index 4293261..c9e2293 100644 +index 4293261c9..c9e2293de 100644 --- a/scripts/find-debuginfo.sh +++ b/scripts/find-debuginfo.sh @@ -207,57 +207,6 @@ debug_link() @@ -631,7 +631,7 @@ index 4293261..c9e2293 100644 # dwz invalidates .gnu_debuglink CRC32 in the main files. diff --git a/tests/Makefile.am b/tests/Makefile.am -index 7a5cc65..10555ce 100644 +index 7a5cc6544..10555ce9a 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -19,6 +19,7 @@ TESTSUITE_AT += rpmquery.at @@ -644,7 +644,7 @@ index 7a5cc65..10555ce 100644 TESTSUITE_AT += rpmdeps.at diff --git a/tests/data/SPECS/hello2cp.spec b/tests/data/SPECS/hello2cp.spec new file mode 100644 -index 0000000..33d8dc2 +index 000000000..33d8dc260 --- /dev/null +++ b/tests/data/SPECS/hello2cp.spec @@ -0,0 +1,64 @@ @@ -714,7 +714,7 @@ index 0000000..33d8dc2 +- create. diff --git a/tests/data/SPECS/hello2ln.spec b/tests/data/SPECS/hello2ln.spec new file mode 100644 -index 0000000..2c40dcc +index 000000000..2c40dcc32 --- /dev/null +++ b/tests/data/SPECS/hello2ln.spec @@ -0,0 +1,63 @@ @@ -783,7 +783,7 @@ index 0000000..2c40dcc +- create. diff --git a/tests/rpmbuildid.at b/tests/rpmbuildid.at new file mode 100644 -index 0000000..eddca96 +index 000000000..eddca969b --- /dev/null +++ b/tests/rpmbuildid.at @@ -0,0 +1,761 @@ @@ -1550,7 +1550,7 @@ index 0000000..eddca96 +AT_CLEANUP \ No newline at end of file diff --git a/tests/rpmtests.at b/tests/rpmtests.at -index b51266a..5495cce 100644 +index b51266a2d..5495cced1 100644 --- a/tests/rpmtests.at +++ b/tests/rpmtests.at @@ -4,6 +4,7 @@ m4_include([rpmverify.at]) @@ -1562,5 +1562,5 @@ index b51266a..5495cce 100644 m4_include([rpmvercmp.at]) m4_include([rpmdeps.at]) -- -2.9.3 +2.13.2 diff --git a/0002-Make-it-possible-to-have-unique-build-ids-across-bui.patch b/0005-Make-it-possible-to-have-unique-build-ids-across-bui.patch similarity index 95% rename from 0002-Make-it-possible-to-have-unique-build-ids-across-bui.patch rename to 0005-Make-it-possible-to-have-unique-build-ids-across-bui.patch index dc7ca3e..723fd96 100644 --- a/0002-Make-it-possible-to-have-unique-build-ids-across-bui.patch +++ b/0005-Make-it-possible-to-have-unique-build-ids-across-bui.patch @@ -1,10 +1,7 @@ -From 2a97fb48279af17049f96c661db040173185a650 Mon Sep 17 00:00:00 2001 -Message-Id: <2a97fb48279af17049f96c661db040173185a650.1488964568.git.pmatilai@redhat.com> -In-Reply-To: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com> -References: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com> +From 3edae790572203f07a28448fedfda82d0629f4fb Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Tue, 14 Jun 2016 17:07:13 +0200 -Subject: [PATCH 02/11] Make it possible to have unique build-ids across build +Subject: [PATCH 05/49] Make it possible to have unique build-ids across build versions/releases. Introduce a new macro _unique_build_ids that when set will pass the @@ -15,6 +12,7 @@ Includes two new testcases to make sure the new setting works as expected both when set and unset. Signed-off-by: Mark Wielaard +(cherry picked from commit 5ef1166ad96e3545784fa5420a49e1b2cd481e8e) --- macros.in | 8 +++- scripts/find-debuginfo.sh | 20 ++++++++- @@ -25,7 +23,7 @@ Signed-off-by: Mark Wielaard create mode 100644 tests/data/SPECS/hello-r2.spec diff --git a/macros.in b/macros.in -index e43d62b0..dcd0961 100644 +index e43d62b0a..dcd09612c 100644 --- a/macros.in +++ b/macros.in @@ -180,7 +180,7 @@ @@ -51,7 +49,7 @@ index e43d62b0..dcd0961 100644 # Use internal dependency generator rather than external helpers? %_use_internal_dependency_generator 1 diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh -index c9e2293..2cb9570 100644 +index c9e2293de..2cb9570ba 100644 --- a/scripts/find-debuginfo.sh +++ b/scripts/find-debuginfo.sh @@ -6,6 +6,7 @@ @@ -112,7 +110,7 @@ index c9e2293..2cb9570 100644 fi diff --git a/tests/data/SPECS/hello-r2.spec b/tests/data/SPECS/hello-r2.spec new file mode 100644 -index 0000000..ca5091d +index 000000000..ca5091d10 --- /dev/null +++ b/tests/data/SPECS/hello-r2.spec @@ -0,0 +1,58 @@ @@ -175,7 +173,7 @@ index 0000000..ca5091d +* Tue Oct 20 1998 Jeff Johnson +- create. diff --git a/tests/rpmbuildid.at b/tests/rpmbuildid.at -index eddca96..1da6302 100644 +index eddca969b..1da63022d 100644 --- a/tests/rpmbuildid.at +++ b/tests/rpmbuildid.at @@ -758,4 +758,98 @@ debug id in debug package @@ -280,7 +278,7 @@ index eddca96..1da6302 100644 +[ignore]) +AT_CLEANUP diff --git a/tools/debugedit.c b/tools/debugedit.c -index cf89312..c0147f0 100644 +index cf89312fa..c0147f086 100644 --- a/tools/debugedit.c +++ b/tools/debugedit.c @@ -1,4 +1,4 @@ @@ -347,5 +345,5 @@ index cf89312..c0147f0 100644 if (base_dir) canonicalize_path(base_dir, base_dir); -- -2.9.3 +2.13.2 diff --git a/0003-Make-adding-GDB-index-sections-configurable.patch b/0006-Make-adding-GDB-index-sections-configurable.patch similarity index 93% rename from 0003-Make-adding-GDB-index-sections-configurable.patch rename to 0006-Make-adding-GDB-index-sections-configurable.patch index e8722bc..1842ada 100644 --- a/0003-Make-adding-GDB-index-sections-configurable.patch +++ b/0006-Make-adding-GDB-index-sections-configurable.patch @@ -1,10 +1,7 @@ -From 270b8627b03bc39fb008a7da1a4fd6b259ff92b8 Mon Sep 17 00:00:00 2001 -Message-Id: <270b8627b03bc39fb008a7da1a4fd6b259ff92b8.1488964568.git.pmatilai@redhat.com> -In-Reply-To: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com> -References: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com> +From 68a0323ab1738aee40f9f5a60a7fb3163162bf39 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Tue, 14 Jun 2016 17:07:14 +0200 -Subject: [PATCH 03/11] Make adding GDB index sections configurable. +Subject: [PATCH 06/49] Make adding GDB index sections configurable. Introduces _include_gdb_index macro and -i flag to find-debuginfo.sh to enable or disable adding a .gdb_index section to debug files. Adds tests @@ -13,6 +10,10 @@ Checks that gdb-add-index is actually installed instead of silently failing if not. Similar for dwz. Signed-off-by: Mark Wielaard +(cherry picked from commit 67d3df338875ad5d9601e360bfdbd4289f271bc1) + +Conflicts: + scripts/find-debuginfo.sh --- macros.debug | 1 + macros.in | 8 ++++++- @@ -21,7 +22,7 @@ Signed-off-by: Mark Wielaard 4 files changed, 94 insertions(+), 5 deletions(-) diff --git a/macros.debug b/macros.debug -index 6a8432e..d273c08 100644 +index 6a8432eb7..d273c0876 100644 --- a/macros.debug +++ b/macros.debug @@ -2,6 +2,7 @@ @@ -33,7 +34,7 @@ index 6a8432e..d273c08 100644 # Expanded at end of %install scriptlet diff --git a/macros.in b/macros.in -index dcd0961..c845f58 100644 +index dcd09612c..c845f5841 100644 --- a/macros.in +++ b/macros.in @@ -180,7 +180,7 @@ @@ -59,7 +60,7 @@ index dcd0961..c845f58 100644 # The following settings are supported: # diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh -index 2cb9570..8e60813 100644 +index 2cb9570ba..8e608134f 100644 --- a/scripts/find-debuginfo.sh +++ b/scripts/find-debuginfo.sh @@ -2,7 +2,7 @@ @@ -141,7 +142,7 @@ index 2cb9570..8e60813 100644 rmdir "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz" 2>/dev/null if [ -f "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz/${dwz_multifile_name}" ]; then diff --git a/tests/rpmbuild.at b/tests/rpmbuild.at -index 1531700..a312324 100644 +index 1531700e1..a3123244c 100644 --- a/tests/rpmbuild.at +++ b/tests/rpmbuild.at @@ -532,3 +532,64 @@ usr/local/bin/hello2 @@ -210,5 +211,5 @@ index 1531700..a312324 100644 +[ignore]) +AT_CLEANUP -- -2.9.3 +2.13.2 diff --git a/0004-Add-option-to-have-unique-debug-file-names-across-ve.patch b/0007-Add-option-to-have-unique-debug-file-names-across-ve.patch similarity index 98% rename from 0004-Add-option-to-have-unique-debug-file-names-across-ve.patch rename to 0007-Add-option-to-have-unique-debug-file-names-across-ve.patch index ae3bcc3..6a6fe07 100644 --- a/0004-Add-option-to-have-unique-debug-file-names-across-ve.patch +++ b/0007-Add-option-to-have-unique-debug-file-names-across-ve.patch @@ -1,10 +1,7 @@ -From 76e637c715e13fe7f746feb29af4a6fd0de3cbc7 Mon Sep 17 00:00:00 2001 -Message-Id: <76e637c715e13fe7f746feb29af4a6fd0de3cbc7.1488964568.git.pmatilai@redhat.com> -In-Reply-To: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com> -References: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com> +From 5b29c09c31982a712844cb2bbcd0bfff09c457d1 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 16 Jun 2016 14:24:22 +0200 -Subject: [PATCH 04/11] Add option to have unique debug file names across +Subject: [PATCH 07/49] Add option to have unique debug file names across version/release/arch. Introduce a new macro _unique_debug_names that when set will pass @@ -14,6 +11,8 @@ files which end in "--..debug" instead of simply ".debug". Adds testcases for dwz and buildid with and without unique debug file names. Signed-off-by: Mark Wielaard + +(cherry picked from commit 45bfecbf7dd4249abc197a5fc908e4efcc3108ad) --- build/files.c | 19 ++- macros.debug | 3 + @@ -24,7 +23,7 @@ Signed-off-by: Mark Wielaard 6 files changed, 494 insertions(+), 39 deletions(-) diff --git a/build/files.c b/build/files.c -index b010483..eb39856 100644 +index b010483e4..eb398562a 100644 --- a/build/files.c +++ b/build/files.c @@ -1790,6 +1790,16 @@ static int generateBuildIDs(FileList fl) @@ -74,7 +73,7 @@ index b010483..eb39856 100644 free(ids); } diff --git a/macros.debug b/macros.debug -index d273c08..ee0cc9e 100644 +index d273c0876..ee0cc9ebe 100644 --- a/macros.debug +++ b/macros.debug @@ -1,4 +1,7 @@ @@ -86,7 +85,7 @@ index d273c08..ee0cc9e 100644 %_enable_debug_packages 1 %_include_minidebuginfo 1 diff --git a/macros.in b/macros.in -index c845f58..68bf391 100644 +index c845f5841..68bf39194 100644 --- a/macros.in +++ b/macros.in @@ -180,7 +180,7 @@ @@ -113,7 +112,7 @@ index c845f58..68bf391 100644 # Use internal dependency generator rather than external helpers? %_use_internal_dependency_generator 1 diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh -index 8e60813..3653c48 100644 +index 8e608134f..3653c4848 100644 --- a/scripts/find-debuginfo.sh +++ b/scripts/find-debuginfo.sh @@ -64,6 +64,9 @@ dwz_max_die_limit= @@ -163,7 +162,7 @@ index 8e60813..3653c48 100644 debugdn=${debugdir}${dn} debugfn=${debugdn}/${bn} diff --git a/tests/rpmbuild.at b/tests/rpmbuild.at -index a312324..0a2c01e 100644 +index a3123244c..0a2c01efe 100644 --- a/tests/rpmbuild.at +++ b/tests/rpmbuild.at @@ -386,8 +386,9 @@ AT_CLEANUP @@ -378,7 +377,7 @@ index a312324..0a2c01e 100644 [0], [], diff --git a/tests/rpmbuildid.at b/tests/rpmbuildid.at -index 1da6302..ede1181 100644 +index 1da63022d..ede1181e1 100644 --- a/tests/rpmbuildid.at +++ b/tests/rpmbuildid.at @@ -54,7 +54,8 @@ hello debuginfo build-id files: 0 @@ -804,5 +803,5 @@ index 1da6302..ede1181 100644 if test "$id1" == "$id2"; then echo "equal"; else echo "unequal $id1 $id2"; fi -- -2.9.3 +2.13.2 diff --git a/0005-Fix-behavior-when-_build_id_links-is-undefined.patch b/0008-Fix-behavior-when-_build_id_links-is-undefined.patch similarity index 68% rename from 0005-Fix-behavior-when-_build_id_links-is-undefined.patch rename to 0008-Fix-behavior-when-_build_id_links-is-undefined.patch index 2eeee49..4d54ee7 100644 --- a/0005-Fix-behavior-when-_build_id_links-is-undefined.patch +++ b/0008-Fix-behavior-when-_build_id_links-is-undefined.patch @@ -1,21 +1,20 @@ -From 1a8a0364fd049f3b4432633160fba12aa137f88d Mon Sep 17 00:00:00 2001 -Message-Id: <1a8a0364fd049f3b4432633160fba12aa137f88d.1488964568.git.pmatilai@redhat.com> -In-Reply-To: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com> -References: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com> +From a040e812b39d1fcc6aa69ca6aa5ff2fe4316a018 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Mon, 3 Oct 2016 12:36:46 +0300 -Subject: [PATCH 05/11] Fix behavior when %_build_id_links is undefined +Subject: [PATCH 08/49] Fix behavior when %_build_id_links is undefined Commit bbfe1f86b2e4b5c0bd499d9f3dd9de9c9c20fff2 tries to behave sanely and use compat setting when %_build_id_links is undefined, but rpmExpand() never returns NULL so the original check is incorrect. Check for empty string instead. + +(cherry picked from commit 2ea72daabe3f0c4bef628d5a16768f293ffab3df) --- build/files.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/files.c b/build/files.c -index eb39856..6215bf8 100644 +index eb398562a..6215bf85c 100644 --- a/build/files.c +++ b/build/files.c @@ -1648,7 +1648,7 @@ static int generateBuildIDs(FileList fl) @@ -28,5 +27,5 @@ index eb39856..6215bf8 100644 _("_build_id_links macro not set, assuming 'compat'\n")); build_id_links = BUILD_IDS_COMPAT; -- -2.9.3 +2.13.2 diff --git a/0006-Fix-debuginfo-etc-when-subpackages-have-different-ve.patch b/0009-Fix-debuginfo-etc-when-subpackages-have-different-ve.patch similarity index 91% rename from 0006-Fix-debuginfo-etc-when-subpackages-have-different-ve.patch rename to 0009-Fix-debuginfo-etc-when-subpackages-have-different-ve.patch index c14ede5..cc9c765 100644 --- a/0006-Fix-debuginfo-etc-when-subpackages-have-different-ve.patch +++ b/0009-Fix-debuginfo-etc-when-subpackages-have-different-ve.patch @@ -1,10 +1,7 @@ -From 53c9e8d00983b0d99caefc0ef94a18184c0ba85c Mon Sep 17 00:00:00 2001 -Message-Id: <53c9e8d00983b0d99caefc0ef94a18184c0ba85c.1488964568.git.pmatilai@redhat.com> -In-Reply-To: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com> -References: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com> +From 932c2170e961d393569992b2f9c3ab8ee415f01b Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Wed, 9 Nov 2016 09:16:48 +0200 -Subject: [PATCH 06/11] Fix debuginfo etc when subpackages have different +Subject: [PATCH 09/49] Fix debuginfo etc when subpackages have different versions (RhBug:1051407) Rpm has always been a bit dazed and confused when it comes to specs @@ -21,6 +18,12 @@ create separate set of macros when on the main package, this lets users in and out of rpm pick which one (latest or main) they want. To hopefully avoid stomping on anybodys toes, use uppercasing for the macro name (other variants like %pkg_release are awfully commonly used). Pile 'em on, yay! + +(cherry picked from commit ccdb1aa5c675d917b1ba8d026c44fd95bab79e6c) + +Conflicts: + build/parsePreamble.c + macros.in --- build/files.c | 2 +- build/parsePreamble.c | 11 ++++++++++- @@ -28,7 +31,7 @@ variants like %pkg_release are awfully commonly used). Pile 'em on, yay! 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/build/files.c b/build/files.c -index 6215bf8..2ede463 100644 +index 6215bf85c..2ede463a1 100644 --- a/build/files.c +++ b/build/files.c @@ -1797,7 +1797,7 @@ static int generateBuildIDs(FileList fl) @@ -41,7 +44,7 @@ index 6215bf8..2ede463 100644 /* Now add a subdir and symlink for each buildid found. */ diff --git a/build/parsePreamble.c b/build/parsePreamble.c -index 933f734..6be4403 100644 +index 933f7340f..6be440369 100644 --- a/build/parsePreamble.c +++ b/build/parsePreamble.c @@ -909,8 +909,17 @@ static rpmRC handlePreambleTag(rpmSpec spec, Package pkg, rpmTagVal tag, @@ -64,7 +67,7 @@ index 933f734..6be4403 100644 exit: return rc; diff --git a/macros.in b/macros.in -index 68bf391..4d90282 100644 +index 68bf39194..4d9028254 100644 --- a/macros.in +++ b/macros.in @@ -180,7 +180,7 @@ @@ -135,5 +138,5 @@ index 68bf391..4d90282 100644 # bzr doesn't seem to have its own command to apply patches? %__scm_apply_bzr(qp:m:)\ -- -2.9.3 +2.13.2 diff --git a/0007-Only-process-regular-files-when-generating-build-ids.patch b/0010-Only-process-regular-files-when-generating-build-ids.patch similarity index 77% rename from 0007-Only-process-regular-files-when-generating-build-ids.patch rename to 0010-Only-process-regular-files-when-generating-build-ids.patch index 7d5b624..e5905ab 100644 --- a/0007-Only-process-regular-files-when-generating-build-ids.patch +++ b/0010-Only-process-regular-files-when-generating-build-ids.patch @@ -1,10 +1,7 @@ -From eb21562bcec67746e756679a60995f68d7d45577 Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com> -References: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com> +From 29f756e3fba09f6a66515970978367829862f35c Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Thu, 5 Jan 2017 12:13:54 +0200 -Subject: [PATCH 07/11] Only process regular files when generating build-ids +Subject: [PATCH 10/49] Only process regular files when generating build-ids Versioned shared libraries typically have several symlinks pointing to them directly and indirectly. When %_build_id_links is set to compat or @@ -14,12 +11,14 @@ It looks commit bbfe1f86b2e4b5c0bd499d9f3dd9de9c9c20fff2 intends to skip symlinks since it filters on S_ISREG(), but since uses fstat() on already open()'ed file it ends up stat()'ing the symlink target. Flip stat() + open() around and use lstat() instead to fix it. + +(cherry picked from commit 1ce844ab263bf49ee6d5145ed09e73f2c17924cc) --- build/files.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/build/files.c b/build/files.c -index 2ede463..ca04176 100644 +index 2ede463a1..ca041764f 100644 --- a/build/files.c +++ b/build/files.c @@ -1678,11 +1678,10 @@ static int generateBuildIDs(FileList fl) @@ -49,5 +48,5 @@ index 2ede463..ca04176 100644 } -- -2.9.3 +2.13.2 diff --git a/0008-configure.ac-use-LIBDW-always-conditionally.patch b/0011-configure.ac-use-LIBDW-always-conditionally.patch similarity index 64% rename from 0008-configure.ac-use-LIBDW-always-conditionally.patch rename to 0011-configure.ac-use-LIBDW-always-conditionally.patch index 1c80ca9..12bf77b 100644 --- a/0008-configure.ac-use-LIBDW-always-conditionally.patch +++ b/0011-configure.ac-use-LIBDW-always-conditionally.patch @@ -1,23 +1,22 @@ -From 1e38abe3e6697efcf55663060533e286e1e77ae4 Mon Sep 17 00:00:00 2001 -Message-Id: <1e38abe3e6697efcf55663060533e286e1e77ae4.1488964568.git.pmatilai@redhat.com> -In-Reply-To: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com> -References: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com> +From 1b34b839b788264ffcd3ab90a0612cad3b843f7f Mon Sep 17 00:00:00 2001 From: Igor Gnatenko Date: Wed, 10 Aug 2016 13:58:30 +0200 -Subject: [PATCH 08/11] configure.ac: use LIBDW always conditionally +Subject: [PATCH 11/49] configure.ac: use LIBDW always conditionally References: https://bugzilla.redhat.com/show_bug.cgi?id=1365278 Reported-and-tested-by: Neal Gompa Signed-off-by: Igor Gnatenko + +(cherry picked from commit a82119bf352400ee891105820b804bf946d5c6ee) --- configure.ac | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac -index 08eceeb..5dd2bb6 100644 +index 8890c3c32..33c8f344f 100644 --- a/configure.ac +++ b/configure.ac -@@ -368,7 +368,8 @@ AM_CONDITIONAL(WITH_ARCHIVE,[test "$with_archive" = yes]) +@@ -361,7 +361,8 @@ AM_CONDITIONAL(WITH_ARCHIVE,[test "$with_archive" = yes]) #================= # Check for elfutils libdw library with dwelf_elf_gnu_build_id. @@ -27,7 +26,7 @@ index 08eceeb..5dd2bb6 100644 AC_CHECK_HEADERS([elfutils/libdwelf.h],[ AC_CHECK_LIB(dw, dwelf_elf_gnu_build_id, [ AC_DEFINE(HAVE_LIBDW, 1, -@@ -377,9 +378,9 @@ AS_IF([test "$WITH_LIBELF" = yes],[ +@@ -370,9 +371,9 @@ AS_IF([test "$WITH_LIBELF" = yes],[ WITH_LIBDW=yes ]) ]) @@ -40,5 +39,5 @@ index 08eceeb..5dd2bb6 100644 #================= # Process --with/without-external-db -- -2.9.3 +2.13.2 diff --git a/0009-Fix-libdw-configure-check.patch b/0012-Fix-libdw-configure-check.patch similarity index 62% rename from 0009-Fix-libdw-configure-check.patch rename to 0012-Fix-libdw-configure-check.patch index 8228921..3dd3bf9 100644 --- a/0009-Fix-libdw-configure-check.patch +++ b/0012-Fix-libdw-configure-check.patch @@ -1,25 +1,23 @@ -From 15617bfa3d12ebe3927b130a88df6dd12ee8d0f9 Mon Sep 17 00:00:00 2001 -Message-Id: <15617bfa3d12ebe3927b130a88df6dd12ee8d0f9.1488964568.git.pmatilai@redhat.com> -In-Reply-To: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com> -References: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com> +From f41a0a8c6839e3962e10a7bd3aad39127a764748 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 24 Aug 2016 17:06:34 +0200 -Subject: [PATCH 09/11] Fix libdw configure check. +Subject: [PATCH 12/49] Fix libdw configure check. commit a82119 "configure.ac: use LIBDW always conditionally" contained a typo that caused WITH_LIBDW_LIB never to be set when you were using libelf. Fixed by reverting the "!=" to "=" again. Signed-off-by: Mark Wielaard +(cherry picked from commit 10633641ec17081cca6332c3fb4abeea3df4059f) --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac -index 5dd2bb6..4baa3f1 100644 +index 33c8f344f..9596a97b3 100644 --- a/configure.ac +++ b/configure.ac -@@ -369,7 +369,7 @@ AM_CONDITIONAL(WITH_ARCHIVE,[test "$with_archive" = yes]) +@@ -362,7 +362,7 @@ AM_CONDITIONAL(WITH_ARCHIVE,[test "$with_archive" = yes]) #================= # Check for elfutils libdw library with dwelf_elf_gnu_build_id. WITH_LIBDW_LIB= @@ -29,5 +27,5 @@ index 5dd2bb6..4baa3f1 100644 AC_CHECK_LIB(dw, dwelf_elf_gnu_build_id, [ AC_DEFINE(HAVE_LIBDW, 1, -- -2.9.3 +2.13.2 diff --git a/0010-debugedit-Support-String-Line-table-rewriting-for-la.patch b/0013-debugedit-Support-String-Line-table-rewriting-for-la.patch similarity index 99% rename from 0010-debugedit-Support-String-Line-table-rewriting-for-la.patch rename to 0013-debugedit-Support-String-Line-table-rewriting-for-la.patch index 566af7a..bff97f4 100644 --- a/0010-debugedit-Support-String-Line-table-rewriting-for-la.patch +++ b/0013-debugedit-Support-String-Line-table-rewriting-for-la.patch @@ -1,10 +1,7 @@ -From 481a17c207809d10efcc87c1f831c5eef83c069f Mon Sep 17 00:00:00 2001 -Message-Id: <481a17c207809d10efcc87c1f831c5eef83c069f.1488964568.git.pmatilai@redhat.com> -In-Reply-To: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com> -References: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com> +From ddb7c4abddd746d7ec354fb89be16a2411a92cba Mon Sep 17 00:00:00 2001 From: Mark Wielaard -Date: Fri, 17 Feb 2017 14:13:57 +0100 -Subject: [PATCH 10/11] debugedit: Support String/Line table rewriting for +Date: Mon, 27 Feb 2017 16:28:18 +0100 +Subject: [PATCH 13/49] debugedit: Support String/Line table rewriting for larger/smaller paths. debugedit --base to --dest rewriting of debug source file paths only @@ -49,6 +46,7 @@ need to add support for the new debug_line format and scan the new debug_macro section that can have references to the debug_str table. Signed-off-by: Mark Wielaard +(cherry picked from commit 88989572fff1f31e0c4f972a6895585e4742ef4b) --- Makefile.am | 8 +- configure.ac | 6 + @@ -56,7 +54,7 @@ Signed-off-by: Mark Wielaard 3 files changed, 1330 insertions(+), 253 deletions(-) diff --git a/Makefile.am b/Makefile.am -index 6b37b58..1b77730 100644 +index 6b37b5898..1b77730aa 100644 --- a/Makefile.am +++ b/Makefile.am @@ -156,13 +156,18 @@ rpm2archive_LDADD += @WITH_NSS_LIB@ @WITH_POPT_LIB@ @WITH_ZLIB_LIB@ @WITH_ARCHIV @@ -88,10 +86,10 @@ index 6b37b58..1b77730 100644 rpmlibexec_PROGRAMS += rpmdeps rpmdeps_SOURCES = tools/rpmdeps.c diff --git a/configure.ac b/configure.ac -index 4baa3f1..743fe08 100644 +index 9596a97b3..e6362535b 100644 --- a/configure.ac +++ b/configure.ac -@@ -369,18 +369,24 @@ AM_CONDITIONAL(WITH_ARCHIVE,[test "$with_archive" = yes]) +@@ -362,18 +362,24 @@ AM_CONDITIONAL(WITH_ARCHIVE,[test "$with_archive" = yes]) #================= # Check for elfutils libdw library with dwelf_elf_gnu_build_id. WITH_LIBDW_LIB= @@ -117,7 +115,7 @@ index 4baa3f1..743fe08 100644 #================= # Process --with/without-external-db diff --git a/tools/debugedit.c b/tools/debugedit.c -index c0147f0..4798c63 100644 +index c0147f086..4798c6370 100644 --- a/tools/debugedit.c +++ b/tools/debugedit.c @@ -1,6 +1,7 @@ @@ -2101,5 +2099,5 @@ index c0147f0..4798c63 100644 return 0; -- -2.9.3 +2.13.2 diff --git a/0013-missing_build_ids_terminate_build.patch b/0013-missing_build_ids_terminate_build.patch deleted file mode 100644 index 95dc37a..0000000 --- a/0013-missing_build_ids_terminate_build.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/build/files.c b/build/files.c -index 26f53bd..8b516c6 100644 ---- a/build/files.c -+++ b/build/files.c -@@ -1699,7 +1699,11 @@ static int generateBuildIDs(FileList fl) - if (build_id_links == BUILD_IDS_NONE || rc != 0) - return rc; - -- int terminate = rpmExpandNumeric("%{?_missing_build_ids_terminate_build}"); -+ /* Historically we have only checked build_ids when __debug_package -+ was defined. So don't terminate the build if __debug_package is -+ unset, even when _missing_build_ids_terminate_build is. */ -+ int terminate = (rpmExpandNumeric("%{?_missing_build_ids_terminate_build}") -+ && rpmExpandNumeric("%{?__debug_package}")); - - /* Collect and check all build-ids for ELF files in this package. */ - int needMain = 0; diff --git a/0011-Add-option-to-have-unique-debug-source-dirs-across-v.patch b/0014-Add-option-to-have-unique-debug-source-dirs-across-v.patch similarity index 95% rename from 0011-Add-option-to-have-unique-debug-source-dirs-across-v.patch rename to 0014-Add-option-to-have-unique-debug-source-dirs-across-v.patch index df328a5..05b1625 100644 --- a/0011-Add-option-to-have-unique-debug-source-dirs-across-v.patch +++ b/0014-Add-option-to-have-unique-debug-source-dirs-across-v.patch @@ -1,10 +1,7 @@ -From cf12c3f2c985fcaf94bb5e2b24178290f5ef09ed Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com> -References: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com> +From 0febf191cc874a822f045c24587d412e4d0ec33c Mon Sep 17 00:00:00 2001 From: Mark Wielaard -Date: Tue, 28 Feb 2017 20:45:24 +0100 -Subject: [PATCH 11/11] Add option to have unique debug source dirs across +Date: Tue, 28 Feb 2017 21:34:34 +0100 +Subject: [PATCH 14/49] Add option to have unique debug source dirs across version/release/arch. Introduce a new macro _unique_debug_srcs that when set will pass @@ -37,6 +34,11 @@ under the traditional or new unique directory names depending on whether the new _unique_debug_srcs macro is defined. Signed-off-by: Mark Wielaard +(cherry picked from commit b32e980611c45a46e95fa8864b6faf0c0d732ddb) + +Conflicts: + macros.in + scripts/find-debuginfo.sh --- macros.in | 8 ++++- scripts/find-debuginfo.sh | 35 ++++++++++++++++++--- @@ -45,7 +47,7 @@ Signed-off-by: Mark Wielaard 4 files changed, 123 insertions(+), 5 deletions(-) diff --git a/macros.in b/macros.in -index 4d90282..e48ef60 100644 +index 4d9028254..e48ef60c8 100644 --- a/macros.in +++ b/macros.in @@ -180,7 +180,7 @@ @@ -71,7 +73,7 @@ index 4d90282..e48ef60 100644 # Use internal dependency generator rather than external helpers? %_use_internal_dependency_generator 1 diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh -index 3653c48..1420ef6 100644 +index 3653c4848..1420ef6cd 100644 --- a/scripts/find-debuginfo.sh +++ b/scripts/find-debuginfo.sh @@ -67,6 +67,9 @@ ver_rel= @@ -147,7 +149,7 @@ index 3653c48..1420ef6 100644 fi diff --git a/tests/rpmbuild.at b/tests/rpmbuild.at -index 0a2c01e..a46822f 100644 +index 0a2c01efe..a46822f52 100644 --- a/tests/rpmbuild.at +++ b/tests/rpmbuild.at @@ -399,6 +399,7 @@ run rpmbuild --quiet \ @@ -242,7 +244,7 @@ index 0a2c01e..a46822f 100644 +[ignore]) +AT_CLEANUP diff --git a/tests/rpmbuildid.at b/tests/rpmbuildid.at -index ede1181..15c0620 100644 +index ede1181e1..15c06202f 100644 --- a/tests/rpmbuildid.at +++ b/tests/rpmbuildid.at @@ -71,6 +71,7 @@ run rpmbuild \ @@ -286,5 +288,5 @@ index ede1181..15c0620 100644 rpm2cpio ${abs_builddir}/testing/build/RPMS/*/hello-1.0-2.*.rpm \ -- -2.9.3 +2.13.2 diff --git a/0012-generateBuildIDs-Don-t-warn-or-error-for-object-file.patch b/0015-generateBuildIDs-Don-t-warn-or-error-for-object-file.patch similarity index 79% rename from 0012-generateBuildIDs-Don-t-warn-or-error-for-object-file.patch rename to 0015-generateBuildIDs-Don-t-warn-or-error-for-object-file.patch index 31c8df0..e6f282f 100644 --- a/0012-generateBuildIDs-Don-t-warn-or-error-for-object-file.patch +++ b/0015-generateBuildIDs-Don-t-warn-or-error-for-object-file.patch @@ -1,7 +1,7 @@ -From bbeaacd32e74b11264082407e520438373527740 Mon Sep 17 00:00:00 2001 +From 590081d625b22b5845015949ecb184989377c928 Mon Sep 17 00:00:00 2001 From: Mark Wielaard -Date: Thu, 9 Mar 2017 09:30:17 +0100 -Subject: [PATCH] generateBuildIDs: Don't warn or error for object files +Date: Thu, 9 Mar 2017 09:34:01 +0100 +Subject: [PATCH 15/49] generateBuildIDs: Don't warn or error for object files without build-id. Only loadable ELF images (executables, shared libraries, kernel modules) @@ -9,15 +9,16 @@ should have build-ids. So don't warn or error out when an object file is found without one. Signed-off-by: Mark Wielaard +(cherry picked from commit e6bdf7a807ea5ca30bc467345dd1e07198945603) --- build/files.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/build/files.c b/build/files.c -index cbcc0a9..26f53bd 100644 +index ca041764f..274b38c62 100644 --- a/build/files.c +++ b/build/files.c -@@ -1709,8 +1709,10 @@ static int generateBuildIDs(FileList fl) +@@ -1682,8 +1682,10 @@ static int generateBuildIDs(FileList fl) if (lstat(flp->diskPath, &sbuf) == 0 && S_ISREG (sbuf.st_mode)) { int fd = open (flp->diskPath, O_RDONLY); if (fd >= 0) { @@ -29,7 +30,7 @@ index cbcc0a9..26f53bd 100644 const void *build_id; ssize_t len = dwelf_elf_gnu_build_id (elf, &build_id); /* len == -1 means error. Zero means no -@@ -1759,9 +1761,14 @@ static int generateBuildIDs(FileList fl) +@@ -1732,9 +1734,14 @@ static int generateBuildIDs(FileList fl) _("error reading build-id in %s: %s\n"), flp->diskPath, elf_errmsg (-1)); } else if (len == 0) { @@ -48,5 +49,5 @@ index cbcc0a9..26f53bd 100644 rpmlog(terminate ? RPMLOG_ERR : RPMLOG_WARNING, (len < 16 -- -1.8.3.1 +2.13.2 diff --git a/0015-reset-buildid-file-attrs.patch b/0015-reset-buildid-file-attrs.patch deleted file mode 100644 index fcc9018..0000000 --- a/0015-reset-buildid-file-attrs.patch +++ /dev/null @@ -1,57 +0,0 @@ -diff --git a/build/files.c b/build/files.c -index 6021643..9479e6e 100644 ---- a/build/files.c -+++ b/build/files.c -@@ -1797,6 +1797,7 @@ static int generateBuildIDs(FileList fl) - char *mainiddir = NULL; - char *debugiddir = NULL; - if (rc == 0) { -+ char *attrstr; - /* Add .build-id directories to hold the subdirs/symlinks. */ - #define BUILD_ID_DIR "/usr/lib/.build-id" - #define DEBUG_ID_DIR "/usr/lib/debug/.build-id" -@@ -1804,6 +1805,18 @@ static int generateBuildIDs(FileList fl) - mainiddir = rpmGetPath(fl->buildRoot, BUILD_ID_DIR, NULL); - debugiddir = rpmGetPath(fl->buildRoot, DEBUG_ID_DIR, NULL); - -+ /* Make sure to reset all file flags to defaults. -+ Uses parseForAttr to reset ar, arFlags, and specdFlags. -+ Note that parseForAttr pokes at the attrstr, so we cannot -+ just pass a static string. */ -+ fl->def.verifyFlags = RPMVERIFY_ALL; -+ fl->cur.verifyFlags = RPMVERIFY_ALL; -+ fl->def.specdFlags |= SPECD_VERIFY; -+ fl->cur.specdFlags |= SPECD_VERIFY; -+ attrstr = xstrdup ("%defattr(-,root,root)"); -+ parseForAttr(fl->pool, attrstr, 1, &fl->def); -+ free (attrstr); -+ - /* Supported, but questionable. */ - if (needMain && needDbg) - rpmlog(RPMLOG_WARNING, -@@ -1813,8 +1826,12 @@ static int generateBuildIDs(FileList fl) - if ((rc = rpmioMkpath(mainiddir, 0755, -1, -1)) != 0) { - rpmlog(RPMLOG_ERR, "%s %s: %m\n", errdir, mainiddir); - } else { -+ rasprintf (&attrstr, "%s %s", "%attr(-,root,root) ", -+ mainiddir); -+ parseForAttr(fl->pool, attrstr, 0, &fl->cur); - fl->cur.isDir = 1; - rc = addFile(fl, mainiddir, NULL); -+ free (attrstr); - } - } - -@@ -1822,8 +1839,12 @@ static int generateBuildIDs(FileList fl) - if ((rc = rpmioMkpath(debugiddir, 0755, -1, -1)) != 0) { - rpmlog(RPMLOG_ERR, "%s %s: %m\n", errdir, debugiddir); - } else { -+ rasprintf (&attrstr, "%s %s", "%attr(-,root,root) ", -+ debugiddir); -+ parseForAttr(fl->pool, attrstr, 0, &fl->cur); - fl->cur.isDir = 1; - rc = addFile(fl, debugiddir, NULL); -+ free (attrstr); - } - } - } diff --git a/0016-build-files.c-Unset-__debug_package-implies-missing-.patch b/0016-build-files.c-Unset-__debug_package-implies-missing-.patch new file mode 100644 index 0000000..99e6646 --- /dev/null +++ b/0016-build-files.c-Unset-__debug_package-implies-missing-.patch @@ -0,0 +1,36 @@ +From 5bc9efa303efe933b02cc8679ef3134668839831 Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Thu, 9 Mar 2017 15:52:12 +0100 +Subject: [PATCH 16/49] build/files.c: Unset __debug_package implies missing + build-ids aren't fatal. + +Historically we have only checked build_ids when __debug_package was +defined. So don't terminate the build if __debug_package is unset, even +when _missing_build_ids_terminate_build is. Only warn. + +Signed-off-by: Mark Wielaard +(cherry picked from commit 22260d3580fcdafa5579128401adf1a05d36f316) +--- + build/files.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/build/files.c b/build/files.c +index 274b38c62..b19abf299 100644 +--- a/build/files.c ++++ b/build/files.c +@@ -1672,7 +1672,11 @@ static int generateBuildIDs(FileList fl) + if (build_id_links == BUILD_IDS_NONE || rc != 0) + return rc; + +- int terminate = rpmExpandNumeric("%{?_missing_build_ids_terminate_build}"); ++ /* Historically we have only checked build_ids when __debug_package ++ was defined. So don't terminate the build if __debug_package is ++ unset, even when _missing_build_ids_terminate_build is. */ ++ int terminate = (rpmExpandNumeric("%{?_missing_build_ids_terminate_build}") ++ && rpmExpandNumeric("%{?__debug_package}")); + + /* Collect and check all build-ids for ELF files in this package. */ + int needMain = 0; +-- +2.13.2 + diff --git a/0016-debugedit-replace-files.patch b/0016-debugedit-replace-files.patch deleted file mode 100644 index c1d5dcb..0000000 --- a/0016-debugedit-replace-files.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/tools/debugedit.c b/tools/debugedit.c -index 4798c63..87a423f 100644 ---- a/tools/debugedit.c -+++ b/tools/debugedit.c -@@ -1185,7 +1185,7 @@ edit_dwarf2_line (DSO *dso) - { - const char *file = (const char *) optr; - const char *file_path = NULL; -- if (t->replace_dirs) -+ if (t->replace_files) - { - file_path = skip_dir_prefix (file, base_dir); - if (file_path != NULL) diff --git a/0014-generateBuildIDs-Fix-error-handling.patch b/0017-generateBuildIDs-Fix-error-handling.patch similarity index 91% rename from 0014-generateBuildIDs-Fix-error-handling.patch rename to 0017-generateBuildIDs-Fix-error-handling.patch index 9878465..b3885d3 100644 --- a/0014-generateBuildIDs-Fix-error-handling.patch +++ b/0017-generateBuildIDs-Fix-error-handling.patch @@ -1,7 +1,7 @@ -From 7e053a6d843b141fc6b5a89d050082233ed034d6 Mon Sep 17 00:00:00 2001 +From fa61c840ba6be18c6579b247605634c1e2a320f8 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 9 Mar 2017 22:13:01 +0100 -Subject: [PATCH] generateBuildIDs: Fix error handling. +Subject: [PATCH 17/49] generateBuildIDs: Fix error handling. commit e6bdf7 made it so that we don't give a warning or error message for non-kernel ET_REL object files with missing or bad build-ids. But @@ -13,12 +13,13 @@ all. And if there is any real error from generateBuildIDs give a clear error message and explicitly set processingFailed. Signed-off-by: Mark Wielaard +(cherry picked from commit 5bd77379eee167fbdb8d139dc9ab2da74f2a544f) --- build/files.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/build/files.c b/build/files.c -index b19abf2..fef0c69 100644 +index b19abf299..fef0c6960 100644 --- a/build/files.c +++ b/build/files.c @@ -1686,10 +1686,16 @@ static int generateBuildIDs(FileList fl) @@ -65,5 +66,5 @@ index b19abf2..fef0c69 100644 /* Verify that file attributes scope over hardlinks correctly. */ -- -1.8.3.1 +2.13.2 diff --git a/0018-Make-sure-to-reset-file-attributes-for-generated-bui.patch b/0018-Make-sure-to-reset-file-attributes-for-generated-bui.patch new file mode 100644 index 0000000..06535cb --- /dev/null +++ b/0018-Make-sure-to-reset-file-attributes-for-generated-bui.patch @@ -0,0 +1,194 @@ +From 651264c51dfb13bf78bb969a429719f301497631 Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Wed, 15 Mar 2017 20:07:29 +0100 +Subject: [PATCH 18/49] Make sure to reset file attributes for generated + build-id directories. + +[Note this patch is currently being tested in Fedora. See bug below.] + +When creating the build-id directories we should reset the file attributes +to the defaults. Otherwise if the file list contained an %attr or %defattr +the directories would come out with the wrong mode. + +Includes a testcase based on a spec by Igor Gnatenko that fails before +and Check that build-id directories are created with the right permissions +even if the spec file sets attrs explicitly. + +https://bugzilla.redhat.com/show_bug.cgi?id=1432372 + +Signed-off-by: Mark Wielaard +(cherry picked from commit b91dc6106e360f13ff365dfac247191942039152) +--- + build/files.c | 21 +++++++++++++++++++ + tests/Makefile.am | 2 ++ + tests/data/SOURCES/hello.c | 8 +++++++ + tests/data/SPECS/hello-attr-buildid.spec | 27 ++++++++++++++++++++++++ + tests/rpmbuildid.at | 36 ++++++++++++++++++++++++++++++++ + 5 files changed, 94 insertions(+) + create mode 100644 tests/data/SOURCES/hello.c + create mode 100644 tests/data/SPECS/hello-attr-buildid.spec + +diff --git a/build/files.c b/build/files.c +index fef0c6960..728a44ba2 100644 +--- a/build/files.c ++++ b/build/files.c +@@ -1770,6 +1770,7 @@ static int generateBuildIDs(FileList fl) + char *mainiddir = NULL; + char *debugiddir = NULL; + if (rc == 0) { ++ char *attrstr; + /* Add .build-id directories to hold the subdirs/symlinks. */ + #define BUILD_ID_DIR "/usr/lib/.build-id" + #define DEBUG_ID_DIR "/usr/lib/debug/.build-id" +@@ -1777,6 +1778,18 @@ static int generateBuildIDs(FileList fl) + mainiddir = rpmGetPath(fl->buildRoot, BUILD_ID_DIR, NULL); + debugiddir = rpmGetPath(fl->buildRoot, DEBUG_ID_DIR, NULL); + ++ /* Make sure to reset all file flags to defaults. ++ Uses parseForAttr to reset ar, arFlags, and specdFlags. ++ Note that parseForAttr pokes at the attrstr, so we cannot ++ just pass a static string. */ ++ fl->def.verifyFlags = RPMVERIFY_ALL; ++ fl->cur.verifyFlags = RPMVERIFY_ALL; ++ fl->def.specdFlags |= SPECD_VERIFY; ++ fl->cur.specdFlags |= SPECD_VERIFY; ++ attrstr = xstrdup ("%defattr(-,root,root)"); ++ parseForAttr(fl->pool, attrstr, 1, &fl->def); ++ free (attrstr); ++ + /* Supported, but questionable. */ + if (needMain && needDbg) + rpmlog(RPMLOG_WARNING, +@@ -1786,8 +1799,12 @@ static int generateBuildIDs(FileList fl) + if ((rc = rpmioMkpath(mainiddir, 0755, -1, -1)) != 0) { + rpmlog(RPMLOG_ERR, "%s %s: %m\n", errdir, mainiddir); + } else { ++ rasprintf (&attrstr, "%s %s", "%attr(-,root,root) ", ++ mainiddir); ++ parseForAttr(fl->pool, attrstr, 0, &fl->cur); + fl->cur.isDir = 1; + rc = addFile(fl, mainiddir, NULL); ++ free (attrstr); + } + } + +@@ -1795,8 +1812,12 @@ static int generateBuildIDs(FileList fl) + if ((rc = rpmioMkpath(debugiddir, 0755, -1, -1)) != 0) { + rpmlog(RPMLOG_ERR, "%s %s: %m\n", errdir, debugiddir); + } else { ++ rasprintf (&attrstr, "%s %s", "%attr(-,root,root) ", ++ debugiddir); ++ parseForAttr(fl->pool, attrstr, 0, &fl->cur); + fl->cur.isDir = 1; + rc = addFile(fl, debugiddir, NULL); ++ free (attrstr); + } + } + } +diff --git a/tests/Makefile.am b/tests/Makefile.am +index 10555ce9a..d9586da1d 100644 +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -68,6 +68,8 @@ EXTRA_DIST += data/RPMS/hello-2.0-1.i686.rpm + EXTRA_DIST += data/RPMS/hello-2.0-1.x86_64.rpm + EXTRA_DIST += data/SRPMS/foo-1.0-1.src.rpm + EXTRA_DIST += data/SRPMS/hello-1.0-1.src.rpm ++EXTRA_DIST += data/SOURCES/hello.c ++EXTRA_DIST += data/SPECS/hello-attr-buildid.spec + + # testsuite voodoo + AUTOTEST = $(AUTOM4TE) --language=autotest +diff --git a/tests/data/SOURCES/hello.c b/tests/data/SOURCES/hello.c +new file mode 100644 +index 000000000..020484eed +--- /dev/null ++++ b/tests/data/SOURCES/hello.c +@@ -0,0 +1,8 @@ ++#include ++ ++int ++main (void) ++{ ++ printf ("Hello, world!\n"); ++ return 0; ++} +diff --git a/tests/data/SPECS/hello-attr-buildid.spec b/tests/data/SPECS/hello-attr-buildid.spec +new file mode 100644 +index 000000000..cdab95fff +--- /dev/null ++++ b/tests/data/SPECS/hello-attr-buildid.spec +@@ -0,0 +1,27 @@ ++Name: test ++Version: 1.0 ++Release: 1 ++Summary: Test ++ ++License: Public Domain ++URL: https://fedoraproject.org ++Source: hello.c ++ ++%description ++%{summary}. ++ ++%prep ++%autosetup -c -D -T ++cp -a %{S:0} . ++ ++%build ++gcc -g hello.c -o hello ++ ++%install ++mkdir -p %{buildroot}%{_bindir} ++install -D -p -m 0755 -t %{buildroot}%{_bindir} hello ++ ++%files ++%attr(644,root,root) %{_bindir}/hello ++ ++%changelog +diff --git a/tests/rpmbuildid.at b/tests/rpmbuildid.at +index 15c06202f..1cae26dbf 100644 +--- a/tests/rpmbuildid.at ++++ b/tests/rpmbuildid.at +@@ -1166,3 +1166,39 @@ if test "$id1" == "$id2"; then echo "equal"; else echo "unequal $id1 $id2"; fi + ], + [ignore]) + AT_CLEANUP ++ ++# ------------------------------ ++# Check that build-id directories are created with the right permissions ++# even if the spec file sets attrs explicitly. ++AT_SETUP([rpmbuild buildid attrs]) ++AT_KEYWORDS([build] [debuginfo] [buildid]) ++AT_CHECK([ ++rm -rf ${TOPDIR} ++AS_MKDIR_P(${TOPDIR}/SOURCES) ++ ++# Setup sources ++cp "${abs_srcdir}"/data/SOURCES/hello.c ${TOPDIR}/SOURCES ++ ++# Build, contains one ELF which should have a buildid. ++run rpmbuild \ ++ --macros=${abs_top_builddir}/macros:${abs_top_builddir}/tests/testing/usr/local/lib/rpm/platform/%{_target_cpu}-%{_target_os}/macros:${top_srcdir}/macros.debug \ ++ --rcfile=${abs_top_builddir}/rpmrc \ ++ --define="_build_id_links compat" \ ++ --define "_unique_debug_names 1" \ ++ --define "_unique_debug_srcs 1" \ ++ --quiet -ba "${abs_srcdir}"/data/SPECS/hello-attr-buildid.spec ++ ++run rpm -qp --qf "[[%{filenames} %{filemodes:perms}\n]]" \ ++ ${abs_builddir}/testing/build/RPMS/*/test-1.0-1*rpm \ ++ | grep "build-id d" ++ ++run rpm -qp --qf "[[%{filenames} %{filemodes:perms}\n]]" \ ++ ${abs_builddir}/testing/build/RPMS/*/test-debuginfo-1.0-1*rpm \ ++ | grep "build-id d" ++], ++[0], ++[/usr/lib/.build-id drwxr-xr-x ++/usr/lib/debug/.build-id drwxr-xr-x ++], ++[ignore]) ++AT_CLEANUP +-- +2.13.2 + diff --git a/0019-rpmbuild-Reset-attrFlags-in-generateBuildIDs.patch b/0019-rpmbuild-Reset-attrFlags-in-generateBuildIDs.patch new file mode 100644 index 0000000..1658dc1 --- /dev/null +++ b/0019-rpmbuild-Reset-attrFlags-in-generateBuildIDs.patch @@ -0,0 +1,129 @@ +From 20636f4358db0cb85f2251333190626dc2e4ee02 Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Fri, 19 May 2017 23:11:39 +0200 +Subject: [PATCH 19/49] rpmbuild: Reset attrFlags in generateBuildIDs. + +Debuginfo directories and files could be marked as configuration files +if the file list ended with a config file. + +Patch by Panu Matilainen. Testcase by me. + +https://bugzilla.redhat.com/show_bug.cgi?id=1449732 + +Signed-off-by: Mark Wielaard +(cherry picked from commit 9d942049cf929d5a053c239cdd64f5b97d182c14) + +Conflicts: + tests/Makefile.am +--- + build/files.c | 2 ++ + tests/Makefile.am | 1 + + tests/data/SPECS/hello-config-buildid.spec | 30 ++++++++++++++++++++++++++++ + tests/rpmbuildid.at | 32 ++++++++++++++++++++++++++++++ + 4 files changed, 65 insertions(+) + create mode 100644 tests/data/SPECS/hello-config-buildid.spec + +diff --git a/build/files.c b/build/files.c +index 728a44ba2..6c0ca39ef 100644 +--- a/build/files.c ++++ b/build/files.c +@@ -1782,6 +1782,8 @@ static int generateBuildIDs(FileList fl) + Uses parseForAttr to reset ar, arFlags, and specdFlags. + Note that parseForAttr pokes at the attrstr, so we cannot + just pass a static string. */ ++ fl->cur.attrFlags = 0; ++ fl->def.attrFlags = 0; + fl->def.verifyFlags = RPMVERIFY_ALL; + fl->cur.verifyFlags = RPMVERIFY_ALL; + fl->def.specdFlags |= SPECD_VERIFY; +diff --git a/tests/Makefile.am b/tests/Makefile.am +index d9586da1d..83586ec67 100644 +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -70,6 +70,7 @@ EXTRA_DIST += data/SRPMS/foo-1.0-1.src.rpm + EXTRA_DIST += data/SRPMS/hello-1.0-1.src.rpm + EXTRA_DIST += data/SOURCES/hello.c + EXTRA_DIST += data/SPECS/hello-attr-buildid.spec ++EXTRA_DIST += data/SPECS/hello-config-buildid.spec + + # testsuite voodoo + AUTOTEST = $(AUTOM4TE) --language=autotest +diff --git a/tests/data/SPECS/hello-config-buildid.spec b/tests/data/SPECS/hello-config-buildid.spec +new file mode 100644 +index 000000000..ca2d30db3 +--- /dev/null ++++ b/tests/data/SPECS/hello-config-buildid.spec +@@ -0,0 +1,30 @@ ++Name: test ++Version: 1.0 ++Release: 1 ++Summary: Test ++ ++License: Public Domain ++URL: https://fedoraproject.org ++Source: hello.c ++ ++%description ++%{summary}. ++ ++%prep ++%autosetup -c -D -T ++cp -a %{S:0} . ++ ++%build ++gcc -g hello.c -o hello ++ ++%install ++mkdir -p %{buildroot}/bin ++install -D -p -m 0755 -t %{buildroot}/bin hello ++mkdir -p %{buildroot}/etc ++echo "settings" > %{buildroot}/etc/config.file ++ ++%files ++%attr(644,root,root) /bin/hello ++%config(noreplace) /etc/config.file ++ ++%changelog +diff --git a/tests/rpmbuildid.at b/tests/rpmbuildid.at +index 1cae26dbf..a0e39782c 100644 +--- a/tests/rpmbuildid.at ++++ b/tests/rpmbuildid.at +@@ -1202,3 +1202,35 @@ run rpm -qp --qf "[[%{filenames} %{filemodes:perms}\n]]" \ + ], + [ignore]) + AT_CLEANUP ++ ++# ------------------------------ ++# Check that build-id directories are created with the right attributes ++# even if the spec file sets config explicitly. ++AT_SETUP([rpmbuild buildid config attrs]) ++AT_KEYWORDS([build] [debuginfo] [buildid]) ++AT_CHECK([ ++rm -rf ${TOPDIR} ++AS_MKDIR_P(${TOPDIR}/SOURCES) ++ ++# Setup sources ++cp "${abs_srcdir}"/data/SOURCES/hello.c ${TOPDIR}/SOURCES ++ ++# Build, contains one ELF which should have a buildid. ++run rpmbuild \ ++ --macros=${abs_top_builddir}/macros:${abs_top_builddir}/tests/testing/usr/local/lib/rpm/platform/%{_target_cpu}-%{_target_os}/macros:${top_srcdir}/macros.debug \ ++ --rcfile=${abs_top_builddir}/rpmrc \ ++ --define="_build_id_links compat" \ ++ --define "_unique_debug_names 1" \ ++ --define "_unique_debug_srcs 1" \ ++ --quiet -ba "${abs_srcdir}"/data/SPECS/hello-config-buildid.spec ++ ++# Should contain one config file. ++run rpm -c -qp ${abs_builddir}/testing/build/RPMS/*/test-1.0-1*rpm ++# Should not contain config files. ++run rpm -c -qp ${abs_builddir}/testing/build/RPMS/*/test-debuginfo-1.0-1*rpm ++], ++[0], ++[/etc/config.file ++], ++[ignore]) ++AT_CLEANUP +-- +2.13.2 + diff --git a/0020-debugedit-Fix-edit_dwarf2_line-replace_dirs-replace_.patch b/0020-debugedit-Fix-edit_dwarf2_line-replace_dirs-replace_.patch new file mode 100644 index 0000000..996caff --- /dev/null +++ b/0020-debugedit-Fix-edit_dwarf2_line-replace_dirs-replace_.patch @@ -0,0 +1,37 @@ +From 8e74618100580a1370b9045296c4d2d37340735f Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Thu, 16 Mar 2017 22:53:54 +0100 +Subject: [PATCH 20/49] debugedit: Fix edit_dwarf2_line replace_dirs -> + replace_files typo. + +We wouldn't replace the changed file names if replace_dirs was false, +but replace_files was true. This could overrun the new debug_line data +buffer if the original file name was larger than the replacement. It +wasn't found before because often when we need to replace files we +also would have to replace dirs. + +This fixes the kubernetes build in fedora. + +Signed-off-by: Mark Wielaard + +(cherry picked from commit dc759bc655ff1c18a08d77dd31dedfe3ae1025b0) +--- + tools/debugedit.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tools/debugedit.c b/tools/debugedit.c +index 4798c6370..87a423fdb 100644 +--- a/tools/debugedit.c ++++ b/tools/debugedit.c +@@ -1185,7 +1185,7 @@ edit_dwarf2_line (DSO *dso) + { + const char *file = (const char *) optr; + const char *file_path = NULL; +- if (t->replace_dirs) ++ if (t->replace_files) + { + file_path = skip_dir_prefix (file, base_dir); + if (file_path != NULL) +-- +2.13.2 + diff --git a/0017-do-not-process-buildi-ds-for-noarch.patch b/0021-build-files.c-processPackageFiles-Don-t-call-generat.patch similarity index 70% rename from 0017-do-not-process-buildi-ds-for-noarch.patch rename to 0021-build-files.c-processPackageFiles-Don-t-call-generat.patch index 76a9727..37513c3 100644 --- a/0017-do-not-process-buildi-ds-for-noarch.patch +++ b/0021-build-files.c-processPackageFiles-Don-t-call-generat.patch @@ -1,23 +1,27 @@ -From d406bde3e914cae2d794bbaab66aad6b7038b30e Mon Sep 17 00:00:00 2001 +From 430f012c5794873a84db81b93c5858ca96ea4559 Mon Sep 17 00:00:00 2001 From: Mark Wielaard -Date: Fri, 17 Mar 2017 10:51:36 +0100 -Subject: [PATCH] build/files.c (processPackageFiles): Don't call +Date: Fri, 17 Mar 2017 11:14:00 +0100 +Subject: [PATCH 21/49] build/files.c (processPackageFiles): Don't call generateBuildIDs for noarch. We don't want to do build-id processing for noarch packages. It might be that noarch packages do contain architecture depended files, but those are already handled by processBinaryFiles. +This fixes the building of openbios in fedora. +https://bugzilla.redhat.com/show_bug.cgi?id=1433129 + Signed-off-by: Mark Wielaard +(cherry picked from commit 5e82c7e8a8fc05195cdf622d0a120b9e70a9371b) --- build/files.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/build/files.c b/build/files.c -index 6021643..35b2dd0 100644 +index 6c0ca39ef..9e58ae547 100644 --- a/build/files.c +++ b/build/files.c -@@ -2384,10 +2384,14 @@ static rpmRC processPackageFiles(rpmSpec spec, rpmBuildPkgFlags pkgFlags, +@@ -2378,10 +2378,14 @@ static rpmRC processPackageFiles(rpmSpec spec, rpmBuildPkgFlags pkgFlags, goto exit; #if HAVE_LIBDW @@ -37,5 +41,5 @@ index 6021643..35b2dd0 100644 #endif -- -1.8.3.1 +2.13.2 diff --git a/0018-update-build-id-endian.patch b/0022-debugedit-Fix-cross-endian-build-id-reading-and-upda.patch similarity index 72% rename from 0018-update-build-id-endian.patch rename to 0022-debugedit-Fix-cross-endian-build-id-reading-and-upda.patch index 18690a3..0f04113 100644 --- a/0018-update-build-id-endian.patch +++ b/0022-debugedit-Fix-cross-endian-build-id-reading-and-upda.patch @@ -1,5 +1,31 @@ +From 5598e24ef8aef14727ff72eea71ec460200bc2e3 Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Fri, 17 Mar 2017 21:03:35 +0100 +Subject: [PATCH 22/49] debugedit: Fix cross-endian build-id reading and + updating section data. + +debugedit doesn't read raw mmap data any longer. Which made the complex +way to read the build-id unnecessary (and it was broken for cross-endian). +Just use gelf_getnote to read the notes. + +Also in some special cases when only the debug_info or build_id data +was updated, but no section changed size and we had to preserve the +allocated section headers we could hit a bug in elfutils that could +trash some section data in case there were gaps between non-dirty and +dirty sections. See https://sourceware.org/bugzilla/show_bug.cgi?id=21199 +Add a workaround for that issue. + +This fixes the kompose package build on fedora ppc64. +And makes it possible to replicate that issue on x86_64. + +Signed-off-by: Mark Wielaard +(cherry picked from commit a6e767600309bdb1f8af33b44563a1187fb0dbc4) +--- + tools/debugedit.c | 63 +++++++++++++++++++++++++++---------------------------- + 1 file changed, 31 insertions(+), 32 deletions(-) + diff --git a/tools/debugedit.c b/tools/debugedit.c -index 4798c63..47e5bbf 100644 +index 87a423fdb..0f373162d 100644 --- a/tools/debugedit.c +++ b/tools/debugedit.c @@ -2581,40 +2581,25 @@ main (int argc, char *argv[]) @@ -89,3 +115,6 @@ index 4798c63..47e5bbf 100644 { Elf *elf = dso->elf; GElf_Off last_offset; +-- +2.13.2 + diff --git a/0023-minisymtab-exe-sh.patch b/0023-minisymtab-exe-sh.patch deleted file mode 100644 index 9ad8630..0000000 --- a/0023-minisymtab-exe-sh.patch +++ /dev/null @@ -1,35 +0,0 @@ -commit 95822abd90b9b3991b15ba82193abb5b9998dc99 -Author: Mark Wielaard -Date: Sat Apr 15 13:34:18 2017 +0200 - - find-debuginfo.sh: Only add minisymtab for executables or shared libraries. - - It only makes sense to add a minisymtab for executables and shared - libraries. Other executable ELF files (like kernel modules) don't need it. - Since those don't have a dynsym section trying to add it will fail and - produce confusing errors from nm. - - Signed-off-by: Mark Wielaard - -diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh -index 6f38e19..39bb0b7 100755 ---- a/scripts/find-debuginfo.sh -+++ b/scripts/find-debuginfo.sh -@@ -358,7 +358,16 @@ do_file() - fi - - # strip -g implies we have full symtab, don't add mini symtab in that case. -- $strip_g || ($include_minidebug && add_minidebug "${debugfn}" "$f") -+ # It only makes sense to add a minisymtab for executables and shared -+ # libraries. Other executable ELF files (like kernel modules) don't need it. -+ if [ "$include_minidebug" = "true" -a "$strip_g" = "false" ]; then -+ skip_mini=true -+ case "$(file -bi "$f")" in -+ application/x-sharedlib*) skip_mini=false ;; -+ application/x-executable*) skip_mini=false ;; -+ esac -+ $skip_mini || add_minidebug "${debugfn}" "$f" -+ fi - - echo "./${f#$RPM_BUILD_ROOT}" >> "$ELFBINSFILE" - diff --git a/0023-tests-tpmbuild.at-Make-file-sed-regexp-more-strict-t.patch b/0023-tests-tpmbuild.at-Make-file-sed-regexp-more-strict-t.patch new file mode 100644 index 0000000..09bdeaf --- /dev/null +++ b/0023-tests-tpmbuild.at-Make-file-sed-regexp-more-strict-t.patch @@ -0,0 +1,60 @@ +From 8cd45c82a968404929e00dce65644f81e906591b Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Fri, 3 Mar 2017 23:51:13 +0100 +Subject: [PATCH 23/49] tests/tpmbuild.at: Make file sed regexp more strict to + extract BuildID. + +In some testcases we extract the BuildID with the file command. +Unfortunately the file command output changed slightly between versions. +Make the sed regexp more strict by only matching a hex-string. +Also properly "escape" [ and ] which inside an AT_CHECK should be [[ and ]]. + +Tested against file versions 5.11, 5.29 and 5.30. + +Signed-off-by: Mark Wielaard +(cherry picked from commit f0a581925ad4c948dc58cc8f9a55399ad8de351e) +--- + tests/rpmbuild.at | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +diff --git a/tests/rpmbuild.at b/tests/rpmbuild.at +index a46822f52..dcbdd2cad 100644 +--- a/tests/rpmbuild.at ++++ b/tests/rpmbuild.at +@@ -423,11 +423,11 @@ hello2_file=./usr/local/bin/hello2 + test -f $hello_file || echo "no hello file: $hello_file" + test -f $hello2_file || echo "no hello2 file: $hello2_file" + +-id1=$(file $hello_file | sed 's/.*, BuildID[.*]=\(.*\),.*/\1/') +-id2=$(file $hello2_file | sed 's/.*, BuildID[.*]=\(.*\),.*/\1/') +-id1debug=$(file $hello_file_debug | sed 's/.*, BuildID[.*]=\(.*\),.*/\1/') +-id2debug=$(file $hello2_file_debug | sed 's/.*, BuildID[.*]=\(.*\),.*/\1/') +-idmulti=$(file $hello_multi_file | sed 's/.*, BuildID[.*]=\(.*\),.*/\1/') ++id1=$(file $hello_file | sed 's/.*, BuildID\[[.*\]]=\([[0-9a-f]]*\),.*/\1/') ++id2=$(file $hello2_file | sed 's/.*, BuildID\[[.*\]]=\([[0-9a-f]]*\),.*/\1/') ++id1debug=$(file $hello_file_debug | sed 's/.*, BuildID\[[.*\]]=\([[0-9a-f]]*\),.*/\1/') ++id2debug=$(file $hello2_file_debug | sed 's/.*, BuildID\[[.*\]]=\([[0-9a-f]]*\),.*/\1/') ++idmulti=$(file $hello_multi_file | sed 's/.*, BuildID\[[.*\]]=\([[0-9a-f]]*\),.*/\1/') + + test "$id1" = "$id1debug" || echo "id1: $id1 != id1debug: $id1debug" + test "$id2" = "$id2debug" || echo "id2: $id2 != id2debug: $id2debug" +@@ -516,11 +516,11 @@ hello2_file=./usr/local/bin/hello2 + test -f $hello_file || echo "no hello file: $hello_file" + test -f $hello2_file || echo "no hello2 file: $hello2_file" + +-id1=$(file $hello_file | sed 's/.*, BuildID[.*]=\(.*\),.*/\1/') +-id2=$(file $hello2_file | sed 's/.*, BuildID[.*]=\(.*\),.*/\1/') +-id1debug=$(file $hello_file_debug | sed 's/.*, BuildID[.*]=\(.*\),.*/\1/') +-id2debug=$(file $hello2_file_debug | sed 's/.*, BuildID[.*]=\(.*\),.*/\1/') +-idmulti=$(file $hello_multi_file | sed 's/.*, BuildID[.*]=\(.*\),.*/\1/') ++id1=$(file $hello_file | sed 's/.*, BuildID\[[.*\]]=\([[0-9a-f]]*\),.*/\1/') ++id2=$(file $hello2_file | sed 's/.*, BuildID\[[.*\]]=\([[0-9a-f]]*\),.*/\1/') ++id1debug=$(file $hello_file_debug | sed 's/.*, BuildID\[[.*\]]=\([[0-9a-f]]*\),.*/\1/') ++id2debug=$(file $hello2_file_debug | sed 's/.*, BuildID\[[.*\]]=\([[0-9a-f]]*\),.*/\1/') ++idmulti=$(file $hello_multi_file | sed 's/.*, BuildID\[[.*\]]=\([[0-9a-f]]*\),.*/\1/') + + test "$id1" = "$id1debug" || echo "id1: $id1 != id1debug: $id1debug" + test "$id2" = "$id2debug" || echo "id2: $id2 != id2debug: $id2debug" +-- +2.13.2 + diff --git a/0019-fix-sed-build-id-match-test.patch b/0024-tests-rpmbuildid.at-Make-file-sed-regexp-more-strict.patch similarity index 71% rename from 0019-fix-sed-build-id-match-test.patch rename to 0024-tests-rpmbuildid.at-Make-file-sed-regexp-more-strict.patch index cdbf6f4..751e539 100644 --- a/0019-fix-sed-build-id-match-test.patch +++ b/0024-tests-rpmbuildid.at-Make-file-sed-regexp-more-strict.patch @@ -1,71 +1,22 @@ -commit f0a581925ad4c948dc58cc8f9a55399ad8de351e -Author: Mark Wielaard -Date: Fri Mar 3 23:51:13 2017 +0100 +From 58f2b095c0d1507ad09990669f1ae03f6f1d931f Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Mon, 20 Mar 2017 09:55:44 +0100 +Subject: [PATCH 24/49] tests/rpmbuildid.at: Make file sed regexp more strict + to extract BuildID. - tests/tpmbuild.at: Make file sed regexp more strict to extract BuildID. - - In some testcases we extract the BuildID with the file command. - Unfortunately the file command output changed slightly between versions. - Make the sed regexp more strict by only matching a hex-string. - Also properly "escape" [ and ] which inside an AT_CHECK should be [[ and ]]. - - Tested against file versions 5.11, 5.29 and 5.30. - - Signed-off-by: Mark Wielaard +Like commit f0a5819 for rpmbuild.at. In the case of rpmbuildid.at the +sed expression looked to work, but only matched by accident. Make the sed +regexp more strict by only matching a hex-string. And properly "escape" +[ and ] which inside an AT_CHECK should be [[ and ]]. -diff --git a/tests/rpmbuild.at b/tests/rpmbuild.at -index a46822f..dcbdd2c 100644 ---- a/tests/rpmbuild.at -+++ b/tests/rpmbuild.at -@@ -423,11 +423,11 @@ hello2_file=./usr/local/bin/hello2 - test -f $hello_file || echo "no hello file: $hello_file" - test -f $hello2_file || echo "no hello2 file: $hello2_file" - --id1=$(file $hello_file | sed 's/.*, BuildID[.*]=\(.*\),.*/\1/') --id2=$(file $hello2_file | sed 's/.*, BuildID[.*]=\(.*\),.*/\1/') --id1debug=$(file $hello_file_debug | sed 's/.*, BuildID[.*]=\(.*\),.*/\1/') --id2debug=$(file $hello2_file_debug | sed 's/.*, BuildID[.*]=\(.*\),.*/\1/') --idmulti=$(file $hello_multi_file | sed 's/.*, BuildID[.*]=\(.*\),.*/\1/') -+id1=$(file $hello_file | sed 's/.*, BuildID\[[.*\]]=\([[0-9a-f]]*\),.*/\1/') -+id2=$(file $hello2_file | sed 's/.*, BuildID\[[.*\]]=\([[0-9a-f]]*\),.*/\1/') -+id1debug=$(file $hello_file_debug | sed 's/.*, BuildID\[[.*\]]=\([[0-9a-f]]*\),.*/\1/') -+id2debug=$(file $hello2_file_debug | sed 's/.*, BuildID\[[.*\]]=\([[0-9a-f]]*\),.*/\1/') -+idmulti=$(file $hello_multi_file | sed 's/.*, BuildID\[[.*\]]=\([[0-9a-f]]*\),.*/\1/') - - test "$id1" = "$id1debug" || echo "id1: $id1 != id1debug: $id1debug" - test "$id2" = "$id2debug" || echo "id2: $id2 != id2debug: $id2debug" -@@ -516,11 +516,11 @@ hello2_file=./usr/local/bin/hello2 - test -f $hello_file || echo "no hello file: $hello_file" - test -f $hello2_file || echo "no hello2 file: $hello2_file" - --id1=$(file $hello_file | sed 's/.*, BuildID[.*]=\(.*\),.*/\1/') --id2=$(file $hello2_file | sed 's/.*, BuildID[.*]=\(.*\),.*/\1/') --id1debug=$(file $hello_file_debug | sed 's/.*, BuildID[.*]=\(.*\),.*/\1/') --id2debug=$(file $hello2_file_debug | sed 's/.*, BuildID[.*]=\(.*\),.*/\1/') --idmulti=$(file $hello_multi_file | sed 's/.*, BuildID[.*]=\(.*\),.*/\1/') -+id1=$(file $hello_file | sed 's/.*, BuildID\[[.*\]]=\([[0-9a-f]]*\),.*/\1/') -+id2=$(file $hello2_file | sed 's/.*, BuildID\[[.*\]]=\([[0-9a-f]]*\),.*/\1/') -+id1debug=$(file $hello_file_debug | sed 's/.*, BuildID\[[.*\]]=\([[0-9a-f]]*\),.*/\1/') -+id2debug=$(file $hello2_file_debug | sed 's/.*, BuildID\[[.*\]]=\([[0-9a-f]]*\),.*/\1/') -+idmulti=$(file $hello_multi_file | sed 's/.*, BuildID\[[.*\]]=\([[0-9a-f]]*\),.*/\1/') - - test "$id1" = "$id1debug" || echo "id1: $id1 != id1debug: $id1debug" - test "$id2" = "$id2debug" || echo "id2: $id2 != id2debug: $id2debug" -commit 09b5082f1073451423c6d5ebffed781e25472fd6 -Author: Mark Wielaard -Date: Mon Mar 20 09:27:05 2017 +0100 - - tests/rpmbuildid.at: Make file sed regexp more strict to extract BuildID. - - Like commit f0a5819 for rpmbuild.at. In the case of rpmbuildid.at the - sed expression looked to work, but only matched by accident. Make the sed - regexp more strict by only matching a hex-string. And properly "escape" - [ and ] which inside an AT_CHECK should be [[ and ]]. - - Signed-off-by: Mark Wielaard +Signed-off-by: Mark Wielaard +(cherry picked from commit 60f958ab41f854f8839fe04f1a67d1752ad7eda0) +--- + tests/rpmbuildid.at | 44 ++++++++++++++++++++++---------------------- + 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/tests/rpmbuildid.at b/tests/rpmbuildid.at -index 15c0620..1c06ca1 100644 +index a0e39782c..158ce122d 100644 --- a/tests/rpmbuildid.at +++ b/tests/rpmbuildid.at @@ -97,7 +97,7 @@ main_file=./usr/local/bin/hello @@ -266,3 +217,6 @@ index 15c0620..1c06ca1 100644 if test "$id1" == "$id2"; then echo "equal"; else echo "unequal $id1 $id2"; fi ], +-- +2.13.2 + diff --git a/0020-build-files-exec-build-id.patch b/0025-build-files.c-Only-check-build-ids-for-executable-fi.patch similarity index 54% rename from 0020-build-files-exec-build-id.patch rename to 0025-build-files.c-Only-check-build-ids-for-executable-fi.patch index 3a27056..93c0662 100644 --- a/0020-build-files-exec-build-id.patch +++ b/0025-build-files.c-Only-check-build-ids-for-executable-fi.patch @@ -1,8 +1,29 @@ +From c21bf3aefdcfb22bc3f41888ef090c6d5a45baec Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Mon, 20 Mar 2017 11:52:00 +0100 +Subject: [PATCH 25/49] build/files.c: Only check build-ids for executable + files in the main package. + +generateBuildIDs should mimic what find-debuginfo.sh does. Only check +build-ids for executable files in non-debuginfo packages. This moves the +isDbg check up so the is executeble check can be done when the file is +part of the main package. + +This fixes the build of qemu and uboot-tools in fedora. Both ship +non-executable ELF bios files in architecture specific packages. +https://bugzilla.redhat.com/show_bug.cgi?id=1433837 + +Signed-off-by: Mark Wielaard +(cherry picked from commit c9035d464a6ac3853b5dc705e0df1734ce915cd4) +--- + build/files.c | 19 ++++++++++++++----- + 1 file changed, 14 insertions(+), 5 deletions(-) + diff --git a/build/files.c b/build/files.c -index 6021643..afa01cd 100644 +index 9e58ae547..9f7def78c 100644 --- a/build/files.c +++ b/build/files.c -@@ -1711,6 +1711,19 @@ static int generateBuildIDs(FileList fl) +@@ -1684,6 +1684,19 @@ static int generateBuildIDs(FileList fl) for (i = 0, flp = fl->files.recs; i < fl->files.used; i++, flp++) { struct stat sbuf; if (lstat(flp->diskPath, &sbuf) == 0 && S_ISREG (sbuf.st_mode)) { @@ -22,7 +43,7 @@ index 6021643..afa01cd 100644 int fd = open (flp->diskPath, O_RDONLY); if (fd >= 0) { /* Only real ELF files, that are ET_EXEC, ET_DYN or -@@ -1732,12 +1745,8 @@ static int generateBuildIDs(FileList fl) +@@ -1705,12 +1718,8 @@ static int generateBuildIDs(FileList fl) is 128 bits) and 64 bytes (largest sha3 is 512 bits), common is 20 bytes (sha1 is 160 bits). */ if (len >= 16 && len <= 64) { @@ -36,3 +57,6 @@ index 6021643..afa01cd 100644 needDbg = 1; addid = 1; } +-- +2.13.2 + diff --git a/0025-buildid-reset-attrs.patch b/0025-buildid-reset-attrs.patch deleted file mode 100644 index 5a9b3f3..0000000 --- a/0025-buildid-reset-attrs.patch +++ /dev/null @@ -1,233 +0,0 @@ -commit b91dc6106e360f13ff365dfac247191942039152 -Author: Mark Wielaard -Date: Wed Mar 15 20:07:29 2017 +0100 - - Make sure to reset file attributes for generated build-id directories. - - [Note this patch is currently being tested in Fedora. See bug below.] - - When creating the build-id directories we should reset the file attributes - to the defaults. Otherwise if the file list contained an %attr or %defattr - the directories would come out with the wrong mode. - - Includes a testcase based on a spec by Igor Gnatenko that fails before - and Check that build-id directories are created with the right permissions - even if the spec file sets attrs explicitly. - - https://bugzilla.redhat.com/show_bug.cgi?id=1432372 - - Signed-off-by: Mark Wielaard - -[Just the testcase] - -diff --git a/tests/Makefile.am b/tests/Makefile.am -index 815a390..ad41957 100644 ---- a/tests/Makefile.am -+++ b/tests/Makefile.am -@@ -69,6 +69,8 @@ EXTRA_DIST += data/RPMS/hello-2.0-1.i686.rpm - EXTRA_DIST += data/RPMS/hello-2.0-1.x86_64.rpm - EXTRA_DIST += data/SRPMS/foo-1.0-1.src.rpm - EXTRA_DIST += data/SRPMS/hello-1.0-1.src.rpm -+EXTRA_DIST += data/SOURCES/hello.c -+EXTRA_DIST += data/SPECS/hello-attr-buildid.spec - - # testsuite voodoo - AUTOTEST = $(AUTOM4TE) --language=autotest -diff --git a/tests/data/SOURCES/hello.c b/tests/data/SOURCES/hello.c -new file mode 100644 -index 0000000..020484e ---- /dev/null -+++ b/tests/data/SOURCES/hello.c -@@ -0,0 +1,8 @@ -+#include -+ -+int -+main (void) -+{ -+ printf ("Hello, world!\n"); -+ return 0; -+} -diff --git a/tests/data/SPECS/hello-attr-buildid.spec b/tests/data/SPECS/hello-attr-buildid.spec -new file mode 100644 -index 0000000..cdab95f ---- /dev/null -+++ b/tests/data/SPECS/hello-attr-buildid.spec -@@ -0,0 +1,27 @@ -+Name: test -+Version: 1.0 -+Release: 1 -+Summary: Test -+ -+License: Public Domain -+URL: https://fedoraproject.org -+Source: hello.c -+ -+%description -+%{summary}. -+ -+%prep -+%autosetup -c -D -T -+cp -a %{S:0} . -+ -+%build -+gcc -g hello.c -o hello -+ -+%install -+mkdir -p %{buildroot}%{_bindir} -+install -D -p -m 0755 -t %{buildroot}%{_bindir} hello -+ -+%files -+%attr(644,root,root) %{_bindir}/hello -+ -+%changelog -diff --git a/tests/rpmbuildid.at b/tests/rpmbuildid.at -index 15c0620..1cae26d 100644 ---- a/tests/rpmbuildid.at -+++ b/tests/rpmbuildid.at -@@ -1166,3 +1166,39 @@ if test "$id1" == "$id2"; then echo "equal"; else echo "unequal $id1 $id2"; fi - ], - [ignore]) - AT_CLEANUP -+ -+# ------------------------------ -+# Check that build-id directories are created with the right permissions -+# even if the spec file sets attrs explicitly. -+AT_SETUP([rpmbuild buildid attrs]) -+AT_KEYWORDS([build] [debuginfo] [buildid]) -+AT_CHECK([ -+rm -rf ${TOPDIR} -+AS_MKDIR_P(${TOPDIR}/SOURCES) -+ -+# Setup sources -+cp "${abs_srcdir}"/data/SOURCES/hello.c ${TOPDIR}/SOURCES -+ -+# Build, contains one ELF which should have a buildid. -+run rpmbuild \ -+ --macros=${abs_top_builddir}/macros:${abs_top_builddir}/tests/testing/usr/local/lib/rpm/platform/%{_target_cpu}-%{_target_os}/macros:${top_srcdir}/macros.debug \ -+ --rcfile=${abs_top_builddir}/rpmrc \ -+ --define="_build_id_links compat" \ -+ --define "_unique_debug_names 1" \ -+ --define "_unique_debug_srcs 1" \ -+ --quiet -ba "${abs_srcdir}"/data/SPECS/hello-attr-buildid.spec -+ -+run rpm -qp --qf "[[%{filenames} %{filemodes:perms}\n]]" \ -+ ${abs_builddir}/testing/build/RPMS/*/test-1.0-1*rpm \ -+ | grep "build-id d" -+ -+run rpm -qp --qf "[[%{filenames} %{filemodes:perms}\n]]" \ -+ ${abs_builddir}/testing/build/RPMS/*/test-debuginfo-1.0-1*rpm \ -+ | grep "build-id d" -+], -+[0], -+[/usr/lib/.build-id drwxr-xr-x -+/usr/lib/debug/.build-id drwxr-xr-x -+], -+[ignore]) -+AT_CLEANUP - -commit 9d942049cf929d5a053c239cdd64f5b97d182c14 -Author: Mark Wielaard -Date: Fri May 19 23:11:39 2017 +0200 - - rpmbuild: Reset attrFlags in generateBuildIDs. - - Debuginfo directories and files could be marked as configuration files - if the file list ended with a config file. - - Patch by Panu Matilainen. Testcase by me. - - https://bugzilla.redhat.com/show_bug.cgi?id=1449732 - - Signed-off-by: Mark Wielaard - -diff --git a/build/files.c b/build/files.c -index 791bbe2..86c601b 100644 ---- a/build/files.c -+++ b/build/files.c -@@ -1860,6 +1860,8 @@ static int generateBuildIDs(FileList fl) - Uses parseForAttr to reset ar, arFlags, and specdFlags. - Note that parseForAttr pokes at the attrstr, so we cannot - just pass a static string. */ -+ fl->cur.attrFlags = 0; -+ fl->def.attrFlags = 0; - fl->def.verifyFlags = RPMVERIFY_ALL; - fl->cur.verifyFlags = RPMVERIFY_ALL; - fl->def.specdFlags |= SPECD_VERIFY; - -diff --git a/tests/data/SPECS/hello-config-buildid.spec b/tests/data/SPECS/hello-config-buildid.spec -new file mode 100644 -index 0000000..ca2d30d ---- /dev/null -+++ b/tests/data/SPECS/hello-config-buildid.spec -@@ -0,0 +1,30 @@ -+Name: test -+Version: 1.0 -+Release: 1 -+Summary: Test -+ -+License: Public Domain -+URL: https://fedoraproject.org -+Source: hello.c -+ -+%description -+%{summary}. -+ -+%prep -+%autosetup -c -D -T -+cp -a %{S:0} . -+ -+%build -+gcc -g hello.c -o hello -+ -+%install -+mkdir -p %{buildroot}/bin -+install -D -p -m 0755 -t %{buildroot}/bin hello -+mkdir -p %{buildroot}/etc -+echo "settings" > %{buildroot}/etc/config.file -+ -+%files -+%attr(644,root,root) /bin/hello -+%config(noreplace) /etc/config.file -+ -+%changelog -diff --git a/tests/rpmbuildid.at b/tests/rpmbuildid.at -index 88ce226..4fab3d5 100644 ---- a/tests/rpmbuildid.at -+++ b/tests/rpmbuildid.at -@@ -1324,3 +1324,35 @@ run rpm -qp --qf "[[%{filenames} %{filemodes:perms}\n]]" \ - ], - [ignore]) - AT_CLEANUP -+ -+# ------------------------------ -+# Check that build-id directories are created with the right attributes -+# even if the spec file sets config explicitly. -+AT_SETUP([rpmbuild buildid config attrs]) -+AT_KEYWORDS([build] [debuginfo] [buildid]) -+AT_CHECK([ -+rm -rf ${TOPDIR} -+AS_MKDIR_P(${TOPDIR}/SOURCES) -+ -+# Setup sources -+cp "${abs_srcdir}"/data/SOURCES/hello.c ${TOPDIR}/SOURCES -+ -+# Build, contains one ELF which should have a buildid. -+run rpmbuild \ -+ --macros=${abs_top_builddir}/macros:${abs_top_builddir}/tests/testing/usr/local/lib/rpm/platform/%{_target_cpu}-%{_target_os}/macros:${top_srcdir}/macros.debug \ -+ --rcfile=${abs_top_builddir}/rpmrc \ -+ --define="_build_id_links compat" \ -+ --define "_unique_debug_names 1" \ -+ --define "_unique_debug_srcs 1" \ -+ --quiet -ba "${abs_srcdir}"/data/SPECS/hello-config-buildid.spec -+ -+# Should contain one config file. -+run rpm -c -qp ${abs_builddir}/testing/build/RPMS/*/test-1.0-1*rpm -+# Should not contain config files. -+run rpm -c -qp ${abs_builddir}/testing/build/RPMS/*/test-debuginfo-1.0-1*rpm -+], -+[0], -+[/etc/config.file -+], -+[ignore]) -+AT_CLEANUP - diff --git a/0021-debugedit-Fix-off-by-one-adding-DW_FORM_string-repla.patch b/0026-debugedit-Fix-off-by-one-adding-DW_FORM_string-repla.patch similarity index 87% rename from 0021-debugedit-Fix-off-by-one-adding-DW_FORM_string-repla.patch rename to 0026-debugedit-Fix-off-by-one-adding-DW_FORM_string-repla.patch index a8e016c..0209e61 100644 --- a/0021-debugedit-Fix-off-by-one-adding-DW_FORM_string-repla.patch +++ b/0026-debugedit-Fix-off-by-one-adding-DW_FORM_string-repla.patch @@ -1,8 +1,8 @@ -From e6cbf971242e424264711f9ffad57eee7f6d6f67 Mon Sep 17 00:00:00 2001 +From 419ae36f2c0dad195737982b446fcace507d0814 Mon Sep 17 00:00:00 2001 From: Mark Wielaard -Date: Tue, 21 Mar 2017 16:46:37 +0100 -Subject: [PATCH] debugedit: Fix off-by-one adding DW_FORM_string replacement - slashes. +Date: Tue, 21 Mar 2017 16:57:44 +0100 +Subject: [PATCH 26/49] debugedit: Fix off-by-one adding DW_FORM_string + replacement slashes. We would put one too many slashes in between the new dest_dir and file name part of the replacement of a DW_FORM_string in the .debug_info. If there @@ -22,7 +22,7 @@ Signed-off-by: Mark Wielaard 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/tools/debugedit.c b/tools/debugedit.c -index 0f37316..b618dce 100644 +index 0f373162d..b618dceb5 100644 --- a/tools/debugedit.c +++ b/tools/debugedit.c @@ -1507,12 +1507,16 @@ edit_attributes (DSO *dso, unsigned char *ptr, struct abbrev_tag *t, int phase) @@ -47,5 +47,5 @@ index 0f37316..b618dce 100644 } } -- -1.8.3.1 +2.13.2 diff --git a/0022-unbreak-short-circuit.patch b/0027-Unbreak-short-circuited-binary-builds.patch similarity index 67% rename from 0022-unbreak-short-circuit.patch rename to 0027-Unbreak-short-circuited-binary-builds.patch index ca57624..36fda10 100644 --- a/0022-unbreak-short-circuit.patch +++ b/0027-Unbreak-short-circuited-binary-builds.patch @@ -1,34 +1,37 @@ -commit eea78b023539875309b7d38e4c8924f647644924 -Author: Panu Matilainen -Date: Thu Jan 5 13:47:28 2017 +0200 +From 6328e1e0da3ba26885f095ccbd83d223d5830527 Mon Sep 17 00:00:00 2001 +From: Panu Matilainen +Date: Thu, 5 Jan 2017 13:47:28 +0200 +Subject: [PATCH 27/49] Unbreak short-circuited binary builds - Unbreak short-circuited binary builds - - Commit bbfe1f86b2e4b5c0bd499d9f3dd9de9c9c20fff2 broke short-circuited - binary builds (which can be handy for testing when working on large - packages), eg: - rpmbuild -bi foo.spec; rpmbuild -bb --short-circuit foo.spec - - The problem is that in a short-circuited build all the links already - exist and point to the right place, but the code doesn't realize this - and creates new links instead, which leaves the old links unowned - in the buildroot which ultimately causes the build to fail with - "Installed (but unpackaged) file(s) found" for the previously created - build-id links. - - When checking for pre-existing links see if they already point to - the right file and in that case just reuse it instead of creating new ones. - Keep track of duplicate build-ids found by noticing existing links that - point to different targets. But don't do this for compat links, they should - just point to the last (duplicate) main build-id symlink found. - - Signed-off-by: Mark Wielaard +Commit bbfe1f86b2e4b5c0bd499d9f3dd9de9c9c20fff2 broke short-circuited +binary builds (which can be handy for testing when working on large +packages), eg: + rpmbuild -bi foo.spec; rpmbuild -bb --short-circuit foo.spec + +The problem is that in a short-circuited build all the links already +exist and point to the right place, but the code doesn't realize this +and creates new links instead, which leaves the old links unowned +in the buildroot which ultimately causes the build to fail with +"Installed (but unpackaged) file(s) found" for the previously created +build-id links. + +When checking for pre-existing links see if they already point to +the right file and in that case just reuse it instead of creating new ones. +Keep track of duplicate build-ids found by noticing existing links that +point to different targets. But don't do this for compat links, they should +just point to the last (duplicate) main build-id symlink found. + +Signed-off-by: Mark Wielaard +(cherry picked from commit eea78b023539875309b7d38e4c8924f647644924) +--- + build/files.c | 71 ++++++++++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 51 insertions(+), 20 deletions(-) diff --git a/build/files.c b/build/files.c -index cca14b9..93021d1 100644 +index 9f7def78c..2f02587f0 100644 --- a/build/files.c +++ b/build/files.c -@@ -1592,11 +1592,12 @@ exit: +@@ -1565,11 +1565,12 @@ exit: static int addNewIDSymlink(FileList fl, char *targetpath, char *idlinkpath, @@ -42,7 +45,7 @@ index cca14b9..93021d1 100644 char *origpath, *linkpath; if (isDbg) -@@ -1606,6 +1607,26 @@ static int addNewIDSymlink(FileList fl, +@@ -1579,6 +1580,26 @@ static int addNewIDSymlink(FileList fl, origpath = linkpath; while (faccessat(AT_FDCWD, linkpath, F_OK, AT_SYMLINK_NOFOLLOW) == 0) { @@ -69,7 +72,7 @@ index cca14b9..93021d1 100644 if (nr > 0) free(linkpath); nr++; -@@ -1613,21 +1634,16 @@ static int addNewIDSymlink(FileList fl, +@@ -1586,21 +1607,16 @@ static int addNewIDSymlink(FileList fl, isDbg ? ".debug" : ""); } @@ -94,7 +97,7 @@ index cca14b9..93021d1 100644 /* Lets see why there are multiple build-ids. If the original targets are hard linked, then it is OK, otherwise warn something fishy is going on. Would be nice to call -@@ -1656,8 +1672,8 @@ static int addNewIDSymlink(FileList fl, +@@ -1629,8 +1645,8 @@ static int addNewIDSymlink(FileList fl, free(origpath); if (nr > 0) free(linkpath); @@ -105,7 +108,7 @@ index cca14b9..93021d1 100644 return rc; } -@@ -1897,6 +1913,7 @@ static int generateBuildIDs(FileList fl) +@@ -1872,6 +1888,7 @@ static int generateBuildIDs(FileList fl) || (rc = addFile(fl, buildidsubdir, NULL)) == 0) { char *linkpattern, *targetpattern; char *linkpath, *targetpath; @@ -113,7 +116,7 @@ index cca14b9..93021d1 100644 if (isDbg) { linkpattern = "%s/%s"; targetpattern = "../../../../..%s"; -@@ -1908,7 +1925,7 @@ static int generateBuildIDs(FileList fl) +@@ -1883,7 +1900,7 @@ static int generateBuildIDs(FileList fl) buildidsubdir, &ids[i][2]); rasprintf(&targetpath, targetpattern, paths[i]); rc = addNewIDSymlink(fl, targetpath, linkpath, @@ -122,7 +125,7 @@ index cca14b9..93021d1 100644 /* We might want to have a link from the debug build_ids dir to the main one. We create it -@@ -1931,16 +1948,30 @@ static int generateBuildIDs(FileList fl) +@@ -1906,16 +1923,30 @@ static int generateBuildIDs(FileList fl) && build_id_links == BUILD_IDS_COMPAT) { /* buildidsubdir already points to the debug buildid. We just need to setup @@ -160,7 +163,7 @@ index cca14b9..93021d1 100644 } if (rc == 0 && isDbg -@@ -1978,7 +2009,7 @@ static int generateBuildIDs(FileList fl) +@@ -1953,7 +1984,7 @@ static int generateBuildIDs(FileList fl) rasprintf(&targetpath, "../../../../..%s", targetstr); rc = addNewIDSymlink(fl, targetpath, @@ -169,3 +172,6 @@ index cca14b9..93021d1 100644 free(targetstr); } } +-- +2.13.2 + diff --git a/0028-find-debuginfo.sh-Only-add-minisymtab-for-executable.patch b/0028-find-debuginfo.sh-Only-add-minisymtab-for-executable.patch new file mode 100644 index 0000000..173a38b --- /dev/null +++ b/0028-find-debuginfo.sh-Only-add-minisymtab-for-executable.patch @@ -0,0 +1,42 @@ +From 349489c3219e31efd552d87e255b06a864d1c034 Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Sun, 16 Apr 2017 18:16:02 +0200 +Subject: [PATCH 28/49] find-debuginfo.sh: Only add minisymtab for executables + or shared libraries. + +It only makes sense to add a minisymtab for executables and shared +libraries. Other executable ELF files (like kernel modules) don't need it. +Since those don't have a dynsym section trying to add it will fail and +produce confusing errors from nm. + +Signed-off-by: Mark Wielaard +(cherry picked from commit 3790a6872749a9601be6044be7d8fb0951131376) +--- + scripts/find-debuginfo.sh | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh +index 1420ef6cd..f1ffcd7d8 100644 +--- a/scripts/find-debuginfo.sh ++++ b/scripts/find-debuginfo.sh +@@ -347,7 +347,16 @@ while read nlinks inum f; do + fi + + # strip -g implies we have full symtab, don't add mini symtab in that case. +- $strip_g || ($include_minidebug && add_minidebug "${debugfn}" "$f") ++ # It only makes sense to add a minisymtab for executables and shared ++ # libraries. Other executable ELF files (like kernel modules) don't need it. ++ if [ "$include_minidebug" = "true" -a "$strip_g" = "false" ]; then ++ skip_mini=true ++ case "$(file -bi "$f")" in ++ application/x-sharedlib*) skip_mini=false ;; ++ application/x-executable*) skip_mini=false ;; ++ esac ++ $skip_mini || add_minidebug "${debugfn}" "$f" ++ fi + + echo "./${f#$RPM_BUILD_ROOT}" >> "$ELFBINSFILE" + +-- +2.13.2 + diff --git a/0024-no-recompute-build-id.patch b/0029-debugedit-Add-n-no-recompute-build-id.patch similarity index 86% rename from 0024-no-recompute-build-id.patch rename to 0029-debugedit-Add-n-no-recompute-build-id.patch index b0e7eab..68169b0 100644 --- a/0024-no-recompute-build-id.patch +++ b/0029-debugedit-Add-n-no-recompute-build-id.patch @@ -1,23 +1,34 @@ -commit 8edddd82f855d547bd68ba4d693db497bbbed7ab -Author: Mark Wielaard -Date: Sat Apr 15 20:31:14 2017 +0200 +From 525282b9a8b78c2890c752e45c4dc7dcf25f42cb Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Sun, 16 Apr 2017 18:16:46 +0200 +Subject: [PATCH 29/49] debugedit: Add -n, --no-recompute-build-id. - debugedit: Add -n, --no-recompute-build-id. - - Some packages depend on the build-ids as generated during the build - and cannot handle rpmbuild recomputing them before generating the - package file list. Add -n, --no-recompute-build-id to debugedit and - add -n to find-debuginfo.sh set by defining the %_no_recompute_build_ids - macro for such packages. %_no_recompute_build_ids can not be used together - with %_unique_build_ids. - - Signed-off-by: Mark Wielaard +Some packages depend on the build-ids as generated during the build +and cannot handle rpmbuild recomputing them before generating the +package file list. Add -n, --no-recompute-build-id to debugedit and +add -n to find-debuginfo.sh set by defining the %_no_recompute_build_ids +macro for such packages. %_no_recompute_build_ids can not be used together +with %_unique_build_ids. + +Signed-off-by: Mark Wielaard + +(cherry picked from commit 6e9fd97f6dba9e04cfd33225b610272b964cc5fc) + +Conflicts: + macros.in + scripts/find-debuginfo.sh +--- + macros.in | 7 ++- + scripts/find-debuginfo.sh | 20 +++++++- + tests/rpmbuildid.at | 122 ++++++++++++++++++++++++++++++++++++++++++++++ + tools/debugedit.c | 6 ++- + 4 files changed, 151 insertions(+), 4 deletions(-) diff --git a/macros.in b/macros.in -index f7d16de..cf22628 100644 +index e48ef60c8..c5b1a0b26 100644 --- a/macros.in +++ b/macros.in -@@ -172,7 +172,7 @@ +@@ -180,7 +180,7 @@ # the script. See the script for details. # %__debug_install_post \ @@ -26,7 +37,7 @@ index f7d16de..cf22628 100644 %{nil} # Template for debug information sub-package. -@@ -498,6 +498,11 @@ package or when debugging this package.\ +@@ -488,6 +488,11 @@ package or when debugging this package.\ # onto debugedit --build-id-seed to be used to prime the build-id note hash. %_unique_build_ids 1 @@ -39,7 +50,7 @@ index f7d16de..cf22628 100644 # release and architecture. If set to 1 this will pass # --unique-debug-arch "%{_arch}" to find-debuginfo.sh to create diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh -index b52822e..86a248d 100755 +index f1ffcd7d8..1d3dc0623 100644 --- a/scripts/find-debuginfo.sh +++ b/scripts/find-debuginfo.sh @@ -2,7 +2,7 @@ @@ -69,7 +80,7 @@ index b52822e..86a248d 100755 # DWZ parameters. run_dwz=false dwz_low_mem_die_limit= -@@ -110,6 +114,9 @@ while [ $# -gt 0 ]; do +@@ -107,6 +111,9 @@ while [ $# -gt 0 ]; do -m) include_minidebug=true ;; @@ -79,7 +90,7 @@ index b52822e..86a248d 100755 -i) include_gdb_index=true ;; -@@ -159,6 +166,11 @@ if test -z "$unique_debug_arch" -a -n "$unique_debug_src_base"; then +@@ -149,6 +156,11 @@ if test -z "$unique_debug_arch" -a -n "$unique_debug_src_base"; then exit 2 fi @@ -91,7 +102,7 @@ index b52822e..86a248d 100755 i=0 while ((i < nout)); do outs[$i]="$BUILDDIR/${outs[$i]}" -@@ -310,8 +322,12 @@ +@@ -310,8 +322,12 @@ while read nlinks inum f; do debug_base_name="$BUILDDIR" debug_dest_name="/usr/src/debug/${unique_debug_src_base}-${ver_rel}.${unique_debug_arch}" fi @@ -101,12 +112,12 @@ index b52822e..86a248d 100755 + fi id=$(${lib_rpm_dir}/debugedit -b $debug_base_name -d $debug_dest_name \ - -i $build_id_seed -l "$SOURCEFILE" "$f") || exit -+ $no_recompute -i $build_id_seed -l "$SOURCEFILE" "$f") || exit ++ $no_recompute -i $build_id_seed -l "$SOURCEFILE" "$f") || exit if [ $nlinks -gt 1 ]; then eval linkedid_$inum=\$id fi diff --git a/tests/rpmbuildid.at b/tests/rpmbuildid.at -index dc47b90..88ce226 100644 +index 158ce122d..4fab3d5dc 100644 --- a/tests/rpmbuildid.at +++ b/tests/rpmbuildid.at @@ -1060,6 +1060,128 @@ debug dup id in debug package @@ -239,7 +250,7 @@ index dc47b90..88ce226 100644 # with _unique_build_ids defined. AT_SETUP([rpmbuild buildid unique r1 r2]) diff --git a/tools/debugedit.c b/tools/debugedit.c -index b618dce..8444e03 100644 +index b618dceb5..8444e030e 100644 --- a/tools/debugedit.c +++ b/tools/debugedit.c @@ -85,6 +85,7 @@ char *dest_dir = NULL; @@ -269,3 +280,6 @@ index b618dce..8444e03 100644 goto print; /* Clear the old bits so they do not affect the new hash. */ +-- +2.13.2 + diff --git a/0030-Fix-non-standard-inherented-modes-of-directories-in-.patch b/0030-Fix-non-standard-inherented-modes-of-directories-in-.patch new file mode 100644 index 0000000..2ac432a --- /dev/null +++ b/0030-Fix-non-standard-inherented-modes-of-directories-in-.patch @@ -0,0 +1,39 @@ +From ba8f2239de528f02d272aed71599a4a560ddd238 Mon Sep 17 00:00:00 2001 +From: Robin Lee +Date: Sat, 8 Apr 2017 21:21:39 +0800 +Subject: [PATCH 30/49] Fix non-standard inherented modes of directories in + debuginfo + +In case that binary compiled from source generated in /tmp, a +/usr/src/debug/tmp directory will be created with the same mode as +/tmp, a.k.a 777, which should be avoided. + +Fixes: rhbz#641022 +(cherry picked from commit c707ab26362e795d3f9dba4eb87dc7ed99a28bcb) +--- + scripts/find-debuginfo.sh | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + mode change 100644 => 100755 scripts/find-debuginfo.sh + +diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh +old mode 100644 +new mode 100755 +index 1d3dc0623..5087c4050 +--- a/scripts/find-debuginfo.sh ++++ b/scripts/find-debuginfo.sh +@@ -443,9 +443,10 @@ if [ -s "$SOURCEFILE" ]; then + mkdir -p "${RPM_BUILD_ROOT}${debug_dest_name}" + LC_ALL=C sort -z -u "$SOURCEFILE" | grep -E -v -z '(|)$' | + (cd "${debug_base_name}"; cpio -pd0mL "${RPM_BUILD_ROOT}${debug_dest_name}") +- # stupid cpio creates new directories in mode 0700, fixup ++ # stupid cpio creates new directories in mode 0700, ++ # and non-standard modes may be inherented from original directories, fixup + find "${RPM_BUILD_ROOT}${debug_dest_name}" -type d -print0 | +- xargs --no-run-if-empty -0 chmod a+rx ++ xargs --no-run-if-empty -0 chmod 0755 + fi + + if [ -d "${RPM_BUILD_ROOT}/usr/lib" -o -d "${RPM_BUILD_ROOT}/usr/src" ]; then +-- +2.13.2 + diff --git a/0031-debugedit-Only-output-comp_dir-under-build-dir-once.patch b/0031-debugedit-Only-output-comp_dir-under-build-dir-once.patch new file mode 100644 index 0000000..99891e7 --- /dev/null +++ b/0031-debugedit-Only-output-comp_dir-under-build-dir-once.patch @@ -0,0 +1,81 @@ +From 387acd5cb74c968b4751a1c2c731964fc1ab6c3f Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Fri, 21 Apr 2017 17:33:26 +0200 +Subject: [PATCH 31/49] debugedit: Only output comp_dir under build dir (once). + +The fix for rhbz#444310 (commit c1a5eb - Include empty CU current dirs) +was a little greedy. It would also include comp_dirs outside the build +root. Those are unnecessary and we don't have a good way to store them. +Such dirs (e.g. /tmp) would then show up at the root of /usr/src/debug. + +Fix this by including only comp_dirs under base_dir. Also only output +all dirs once (during phase zero) and don't output empty dirs (which +was harmless but would produce a warning from cpio). + +This still includes all empty dirs from the original rhbz#444310 +nodir testcase and it is an alternative fix for rhbz#641022 +(commit c707ab). + +Both fixes are necessary in case of an unexpected mode for a directory +actually in the build root that we want to include in the source list. + +Signed-off-by: Mark Wielaard +(cherry picked from commit e795899780337dea751d85db8f381eff3fe75275) +--- + tools/debugedit.c | 39 ++++++++++++++++----------------------- + 1 file changed, 16 insertions(+), 23 deletions(-) + +diff --git a/tools/debugedit.c b/tools/debugedit.c +index 8444e030e..bf115136c 100644 +--- a/tools/debugedit.c ++++ b/tools/debugedit.c +@@ -1680,30 +1680,23 @@ edit_attributes (DSO *dso, unsigned char *ptr, struct abbrev_tag *t, int phase) + /* Ensure the CU current directory will exist even if only empty. Source + filenames possibly located in its parent directories refer relatively to + it and the debugger (GDB) cannot safely optimize out the missing +- CU current dir subdirectories. */ +- if (comp_dir && list_file_fd != -1) ++ CU current dir subdirectories. Only do this once in phase one. And ++ only do this for dirs under our build/base_dir. Don't output the ++ empty string (in case the comp_dir == base_dir). */ ++ if (phase == 0 && base_dir && comp_dir && list_file_fd != -1) + { +- const char *p = NULL; +- size_t size; +- +- if (base_dir) +- { +- p = skip_dir_prefix (comp_dir, base_dir); +- if (p == NULL && dest_dir != NULL) +- p = skip_dir_prefix (comp_dir, dest_dir); +- } +- +- if (p == NULL) +- p = comp_dir; +- +- size = strlen (p) + 1; +- while (size > 0) +- { +- ssize_t ret = write (list_file_fd, p, size); +- if (ret == -1) +- break; +- size -= ret; +- p += ret; ++ const char *p = skip_dir_prefix (comp_dir, base_dir); ++ if (p != NULL && p[0] != '\0') ++ { ++ size_t size = strlen (p) + 1; ++ while (size > 0) ++ { ++ ssize_t ret = write (list_file_fd, p, size); ++ if (ret == -1) ++ break; ++ size -= ret; ++ p += ret; ++ } + } + } + +-- +2.13.2 + diff --git a/find-debuginfo-split-traversal-and-extraction.patch b/0032-find-debuginfo.sh-Split-directory-traversal-and-debu.patch similarity index 71% rename from find-debuginfo-split-traversal-and-extraction.patch rename to 0032-find-debuginfo.sh-Split-directory-traversal-and-debu.patch index 6ceb7be..919bc07 100644 --- a/find-debuginfo-split-traversal-and-extraction.patch +++ b/0032-find-debuginfo.sh-Split-directory-traversal-and-debu.patch @@ -1,19 +1,30 @@ -commit 038bfe01796f751001e02de41c5d8678f511f366 -Author: Michal Marek -Date: Sat Sep 10 23:13:24 2016 +0200 +From 534fae47e4d05fd27c277c9e04ad238e608289f5 Mon Sep 17 00:00:00 2001 +From: Michal Marek +Date: Sat, 10 Sep 2016 23:13:24 +0200 +Subject: [PATCH 32/49] find-debuginfo.sh: Split directory traversal and + debuginfo extraction - find-debuginfo.sh: Split directory traversal and debuginfo extraction - - This siplifies the handling of hardlinks a bit and allows a later patch - to parallelize the debuginfo extraction. - - Signed-off-by: Michal Marek +This siplifies the handling of hardlinks a bit and allows a later patch +to parallelize the debuginfo extraction. + +Signed-off-by: Michal Marek + +(cherry picked from commit 038bfe01796f751001e02de41c5d8678f511f366) + +Conflicts: + scripts/find-debuginfo.sh +--- + scripts/find-debuginfo.sh | 53 ++++++++++++++++++++++++++++++----------------- + 1 file changed, 34 insertions(+), 19 deletions(-) + mode change 100755 => 100644 scripts/find-debuginfo.sh diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh -index d83c3e2..6dcd5a4 100644 +old mode 100755 +new mode 100644 +index 5087c4050..097b749bb --- a/scripts/find-debuginfo.sh +++ b/scripts/find-debuginfo.sh -@@ -283,32 +283,36 @@ +@@ -283,32 +283,36 @@ set -o pipefail strict_error=ERROR $strict || strict_error=WARNING @@ -65,17 +76,17 @@ index d83c3e2..6dcd5a4 100644 echo "extracting debug info from $f" build_id_seed= -@@ -328,9 +332,6 @@ +@@ -328,9 +332,6 @@ while read nlinks inum f; do fi id=$(${lib_rpm_dir}/debugedit -b $debug_base_name -d $debug_dest_name \ - $no_recompute -i $build_id_seed -l "$SOURCEFILE" "$f") || exit + $no_recompute -i $build_id_seed -l "$SOURCEFILE" "$f") || exit - if [ $nlinks -gt 1 ]; then - eval linkedid_$inum=\$id - fi if [ -z "$id" ]; then echo >&2 "*** ${strict_error}: No build ID note found in $f" $strict && exit 2 -@@ -376,7 +377,21 @@ +@@ -376,7 +377,21 @@ while read nlinks inum f; do echo "./${f#$RPM_BUILD_ROOT}" >> "$ELFBINSFILE" @@ -98,3 +109,6 @@ index d83c3e2..6dcd5a4 100644 # Invoke the DWARF Compressor utility. if $run_dwz \ +-- +2.13.2 + diff --git a/0033-find-debuginfo.sh-Use-return-not-continue-to-break-o.patch b/0033-find-debuginfo.sh-Use-return-not-continue-to-break-o.patch new file mode 100644 index 0000000..0069967 --- /dev/null +++ b/0033-find-debuginfo.sh-Use-return-not-continue-to-break-o.patch @@ -0,0 +1,37 @@ +From 3e0419ebc11494d9848decfdfb4909cbce9448b7 Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Wed, 28 Jun 2017 14:21:32 +0200 +Subject: [PATCH 33/49] find-debuginfo.sh: Use 'return', not 'continue', to + break out do_file(). + +commit 038bfe "Split directory traversal and debuginfo extraction" +put the core of a while loop into its own function 'do_file()'. +That means that instead of using 'continue' to break out early it now +needs to use 'return'. Otherwise the script will give errors like: + + continue: only meaningful in a `for', `while', or `until' loop + +https://bugzilla.redhat.com/show_bug.cgi?id=1465170 + +Signed-off-by: Mark Wielaard +(cherry picked from commit a08e154459d160ff9a9a5576266e685ab85bfc5d) +--- + scripts/find-debuginfo.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh +index 097b749bb..c435a02e4 100644 +--- a/scripts/find-debuginfo.sh ++++ b/scripts/find-debuginfo.sh +@@ -351,7 +351,7 @@ do_file() + # just has its file names collected and adjusted. + case "$dn" in + /usr/lib/debug/*) +- continue ;; ++ return ;; + esac + + mkdir -p "${debugdn}" +-- +2.13.2 + diff --git a/find-debuginfo-process-files-in-parallel.patch b/0034-find-debuginfo.sh-Process-files-in-parallel.patch similarity index 76% rename from find-debuginfo-process-files-in-parallel.patch rename to 0034-find-debuginfo.sh-Process-files-in-parallel.patch index 030c5b2..9b73611 100644 --- a/find-debuginfo-process-files-in-parallel.patch +++ b/0034-find-debuginfo.sh-Process-files-in-parallel.patch @@ -1,17 +1,26 @@ -commit 1b338aa84d4c67fefa957352a028eaca1a45d1f6 -Author: Michal Marek -Date: Sat Sep 10 23:13:25 2016 +0200 +From aede94115e077e87504b03bf668ef375290200ad Mon Sep 17 00:00:00 2001 +From: Michal Marek +Date: Sat, 10 Sep 2016 23:13:25 +0200 +Subject: [PATCH 34/49] find-debuginfo.sh: Process files in parallel - find-debuginfo.sh: Process files in parallel - - Add a -j option, which, when used, will spawn processes to do the - debuginfo extraction in parallel. A pipe is used to dispatch the files among - the processes. - - Signed-off-by: Michal Marek +Add a -j option, which, when used, will spawn processes to do the +debuginfo extraction in parallel. A pipe is used to dispatch the files among +the processes. + +Signed-off-by: Michal Marek + +(cherry picked from commit 1b338aa84d4c67fefa957352a028eaca1a45d1f6) + +Conflicts: + macros.in + scripts/find-debuginfo.sh +--- + macros.in | 2 +- + scripts/find-debuginfo.sh | 63 ++++++++++++++++++++++++++++++++++++++++++++--- + 2 files changed, 61 insertions(+), 4 deletions(-) diff --git a/macros.in b/macros.in -index b03c5a9..8bde2d7 100644 +index c5b1a0b26..93e360c79 100644 --- a/macros.in +++ b/macros.in @@ -180,7 +180,7 @@ @@ -24,10 +33,10 @@ index b03c5a9..8bde2d7 100644 # Template for debug information sub-package. diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh -index 6dcd5a4..2016222 100644 +index c435a02e4..d8b718bdf 100644 --- a/scripts/find-debuginfo.sh +++ b/scripts/find-debuginfo.sh -@@ -74,6 +74,9 @@ +@@ -74,6 +74,9 @@ unique_debug_arch= # Base given by --unique-debug-src-base unique_debug_src_base= @@ -37,7 +46,7 @@ index 6dcd5a4..2016222 100644 BUILDDIR=. out=debugfiles.list nout=0 -@@ -137,6 +140,13 @@ +@@ -137,6 +140,13 @@ while [ $# -gt 0 ]; do -r) strip_r=true ;; @@ -51,7 +60,7 @@ index 6dcd5a4..2016222 100644 *) BUILDDIR=$1 shift -@@ -389,9 +399,56 @@ +@@ -389,9 +399,56 @@ do_file() fi } @@ -111,3 +120,6 @@ index 6dcd5a4..2016222 100644 # Invoke the DWARF Compressor utility. if $run_dwz \ +-- +2.13.2 + diff --git a/find-debuginfo-untangle-unique-build-options.patch b/0035-Untangle-unique-build-options-in-find-debuginfo.sh.patch similarity index 82% rename from find-debuginfo-untangle-unique-build-options.patch rename to 0035-Untangle-unique-build-options-in-find-debuginfo.sh.patch index c0e06ad..a536590 100644 --- a/find-debuginfo-untangle-unique-build-options.patch +++ b/0035-Untangle-unique-build-options-in-find-debuginfo.sh.patch @@ -1,24 +1,29 @@ -commit 4842adfd91c3b37744c66d9f01c0112468fdbf37 -Author: Michael Schroeder -Date: Tue Mar 28 14:20:50 2017 +0200 +From ac275c650fee13ec0fd204bf2b05fbff01a053cd Mon Sep 17 00:00:00 2001 +From: Michael Schroeder +Date: Tue, 28 Mar 2017 14:20:50 +0200 +Subject: [PATCH 35/49] Untangle unique build options in find-debuginfo.sh - Untangle unique build options in find-debuginfo.sh - - Rename --ver-rel option to --build-id-seed, so that it reflects what - it does, not how it is used. - - Remove implcit usage of the old --ver-rel option for --unique-debug-arch - and --unique-debug-src-base, instead already call find-debuginfo.sh with - the version included. - - Rename --unique-debug-arch to --unique-debug-suffix because it now - also contains the package version. +Rename --ver-rel option to --build-id-seed, so that it reflects what +it does, not how it is used. + +Remove implcit usage of the old --ver-rel option for --unique-debug-arch +and --unique-debug-src-base, instead already call find-debuginfo.sh with +the version included. + +Rename --unique-debug-arch to --unique-debug-suffix because it now +also contains the package version. + +(cherry picked from commit 4842adfd91c3b37744c66d9f01c0112468fdbf37) +--- + macros.in | 13 +++++++++++- + scripts/find-debuginfo.sh | 53 ++++++++++++++++------------------------------- + 2 files changed, 30 insertions(+), 36 deletions(-) diff --git a/macros.in b/macros.in -index 7656c06..0ddde29 100644 +index 93e360c79..b5bf26ac9 100644 --- a/macros.in +++ b/macros.in -@@ -172,7 +172,18 @@ +@@ -180,7 +180,18 @@ # the script. See the script for details. # %__debug_install_post \ @@ -39,7 +44,7 @@ index 7656c06..0ddde29 100644 # Template for debug information sub-package. diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh -index 8effac8..1ebc159 100755 +index d8b718bdf..cd2931c0d 100644 --- a/scripts/find-debuginfo.sh +++ b/scripts/find-debuginfo.sh @@ -6,7 +6,7 @@ @@ -127,7 +132,7 @@ index 8effac8..1ebc159 100755 debugdn=${debugdir}${dn} debugfn=${debugdn}/${bn} } -@@ -310,23 +310,21 @@ +@@ -325,23 +310,21 @@ do_file() [ -f "${debugfn}" ] && return echo "extracting debug info from $f" @@ -148,11 +153,11 @@ index 8effac8..1ebc159 100755 no_recompute="-n" fi - id=$(${lib_rpm_dir}/debugedit -b $debug_base_name -d $debug_dest_name \ -- $no_recompute -i $build_id_seed -l "$SOURCEFILE" "$f") || exit +- $no_recompute -i $build_id_seed -l "$SOURCEFILE" "$f") || exit + id=$(${lib_rpm_dir}/debugedit -b "$debug_base_name" -d "$debug_dest_name" \ -+ $no_recompute -i \ -+ ${build_id_seed:+--build-id-seed="$build_id_seed"} \ -+ -l "$SOURCEFILE" "$f") || exit ++ $no_recompute -i \ ++ ${build_id_seed:+--build-id-seed="$build_id_seed"} \ ++ -l "$SOURCEFILE" "$f") || exit if [ -z "$id" ]; then echo >&2 "*** ${strict_error}: No build ID note found in $f" $strict && exit 2 @@ -165,3 +170,6 @@ index 8effac8..1ebc159 100755 fi mkdir -p "${RPM_BUILD_ROOT}${debug_dest_name}" +-- +2.13.2 + diff --git a/0036-Support-debugsource-subpackages.patch b/0036-Support-debugsource-subpackages.patch new file mode 100644 index 0000000..7d42e05 --- /dev/null +++ b/0036-Support-debugsource-subpackages.patch @@ -0,0 +1,125 @@ +From 01145b9b68b89d0d4d6d5a77d9af70dba7dbc9a3 Mon Sep 17 00:00:00 2001 +From: Michael Schroeder +Date: Tue, 28 Mar 2017 14:21:40 +0200 +Subject: [PATCH 36/49] Support debugsource subpackages + +This can be enabled by setting the _debugsource_packages macro. + +(cherry picked from commit 538cecf0f1fe127dc416afce7a7ee6f94fdb1ad7) +--- + macros.in | 28 +++++++++++++++++++++++++--- + scripts/find-debuginfo.sh | 17 ++++++++++++++++- + 2 files changed, 41 insertions(+), 4 deletions(-) + +diff --git a/macros.in b/macros.in +index b5bf26ac9..d104ad5a7 100644 +--- a/macros.in ++++ b/macros.in +@@ -191,13 +191,12 @@ + %{?_unique_debug_srcs:--unique-debug-src-base "%{name}-%{VERSION}-%{RELEASE}.%{_arch}"} \\\ + %{?_find_debuginfo_dwz_opts} \\\ + %{?_find_debuginfo_opts} \\\ ++ %{?_debugsource_packages:-S debugsourcefiles.list} \\\ + "%{_builddir}/%{?buildsubdir}"\ + %{nil} + + # Template for debug information sub-package. +-%debug_package \ +-%ifnarch noarch\ +-%global __debug_package 1\ ++%_debuginfo_template \ + %package debuginfo\ + Summary: Debug information for package %{name}\ + Group: Development/Debug\ +@@ -208,6 +207,26 @@ Debug information is useful when developing applications that use this\ + package or when debugging this package.\ + %files debuginfo -f debugfiles.list\ + %defattr(-,root,root)\ ++%{nil} ++ ++%_debugsource_template \ ++%package debugsource\ ++Summary: Debug sources for package %{name}\ ++Group: Development/Debug\ ++AutoReqProv: 0\ ++%description debugsource\ ++This package provides debug sources for package %{name}.\ ++Debug sources are useful when developing applications that use this\ ++package or when debugging this package.\ ++%files debugsource -f debugsourcefiles.list\ ++%defattr(-,root,root)\ ++%{nil} ++ ++%debug_package \ ++%ifnarch noarch\ ++%global __debug_package 1\ ++%_debuginfo_template\ ++%{?_debugsource_packages:%_debugsource_template}\ + %endif\ + %{nil} + +@@ -517,6 +536,9 @@ package or when debugging this package.\ + # directory under /usr/debug/src as --. + %_unique_debug_srcs 1 + ++# Whether rpm should put debug source files into its own subpackage ++#%_debugsource_packages 1 ++ + # + # Use internal dependency generator rather than external helpers? + %_use_internal_dependency_generator 1 +diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh +index cd2931c0d..bede833d7 100644 +--- a/scripts/find-debuginfo.sh ++++ b/scripts/find-debuginfo.sh +@@ -4,6 +4,7 @@ + # + # Usage: find-debuginfo.sh [--strict-build-id] [-g] [-r] [-m] [-i] [-n] + # [-o debugfiles.list] ++# [-S debugsourcefiles.list] + # [--run-dwz] [--dwz-low-mem-die-limit N] + # [--dwz-max-die-limit N] + # [--build-id-seed VERSION-RELEASE] +@@ -79,6 +80,7 @@ n_jobs=1 + + BUILDDIR=. + out=debugfiles.list ++srcout= + nout=0 + while [ $# -gt 0 ]; do + case "$1" in +@@ -147,6 +149,10 @@ while [ $# -gt 0 ]; do + -j*) + n_jobs=${1#-j} + ;; ++ -S) ++ srcout=$2 ++ shift ++ ;; + *) + BUILDDIR=$1 + shift +@@ -512,10 +518,19 @@ if [ -d "${RPM_BUILD_ROOT}/usr/lib" -o -d "${RPM_BUILD_ROOT}/usr/src" ]; then + + (cd "${RPM_BUILD_ROOT}/usr" + test ! -d lib/debug || find lib/debug ! -type d +- test ! -d src/debug || find src/debug -mindepth 1 -maxdepth 1 ++ test ! -d src/debug -o -n "$srcout" || find src/debug -mindepth 1 -maxdepth 1 + ) | sed 's,^,/usr/,' >> "$LISTFILE" + fi + ++if [ -n "$srcout" ]; then ++ > "$srcout" ++ if [ -d "${RPM_BUILD_ROOT}/usr/src/debug" ]; then ++ (cd "${RPM_BUILD_ROOT}/usr" ++ find src/debug -mindepth 1 -maxdepth 1 ++ ) | sed 's,^,/usr/,' >> "$srcout" ++ fi ++fi ++ + # Append to $1 only the lines from stdin not already in the file. + append_uniq() + { +-- +2.13.2 + diff --git a/debugsrc-and-sub-debuginfo-packages.patch b/0037-Support-debuginfo-subpackages.patch similarity index 67% rename from debugsrc-and-sub-debuginfo-packages.patch rename to 0037-Support-debuginfo-subpackages.patch index b60cb53..9417e7f 100644 --- a/debugsrc-and-sub-debuginfo-packages.patch +++ b/0037-Support-debuginfo-subpackages.patch @@ -1,134 +1,27 @@ -commit 538cecf0f1fe127dc416afce7a7ee6f94fdb1ad7 -Author: Michael Schroeder -Date: Tue Mar 28 14:21:40 2017 +0200 +From bc5c404e7415108f15a8cd5e8514a74b43a7755a Mon Sep 17 00:00:00 2001 +From: Michael Schroeder +Date: Fri, 24 Mar 2017 15:35:23 +0100 +Subject: [PATCH 37/49] Support debuginfo subpackages - Support debugsource subpackages - - This can be enabled by setting the _debugsource_packages macro. +We do this by filtering the debuginfo files generated by find-debuginfo.sh +with the files from the (sub)packages. -diff --git a/macros.in b/macros.in -index 0ddde29..007b8d4 100644 ---- a/macros.in -+++ b/macros.in -@@ -183,13 +183,12 @@ - %{?_unique_debug_srcs:--unique-debug-src-base "%{name}-%{VERSION}-%{RELEASE}.%{_arch}"} \\\ - %{?_find_debuginfo_dwz_opts} \\\ - %{?_find_debuginfo_opts} \\\ -+ %{?_debugsource_packages:-S debugsourcefiles.list} \\\ - "%{_builddir}/%{?buildsubdir}"\ - %{nil} - - # Template for debug information sub-package. --%debug_package \ --%ifnarch noarch\ --%global __debug_package 1\ -+%_debuginfo_template \ - %package debuginfo\ - Summary: Debug information for package %{name}\ - Group: Development/Debug\ -@@ -201,6 +200,26 @@ Debug information is useful when developing applications that use this\ - package or when debugging this package.\ - %files debuginfo -f debugfiles.list\ - %defattr(-,root,root)\ -+%{nil} -+ -+%_debugsource_template \ -+%package debugsource\ -+Summary: Debug sources for package %{name}\ -+Group: Development/Debug\ -+AutoReqProv: 0\ -+%description debugsource\ -+This package provides debug sources for package %{name}.\ -+Debug sources are useful when developing applications that use this\ -+package or when debugging this package.\ -+%files debugsource -f debugsourcefiles.list\ -+%defattr(-,root,root)\ -+%{nil} -+ -+%debug_package \ -+%ifnarch noarch\ -+%global __debug_package 1\ -+%_debuginfo_template\ -+%{?_debugsource_packages:%_debugsource_template}\ - %endif\ - %{nil} - -@@ -527,6 +546,9 @@ package or when debugging this package.\ - # directory under /usr/debug/src as --. - %_unique_debug_srcs 1 - -+# Whether rpm should put debug source files into its own subpackage -+#%_debugsource_packages 1 -+ - # - # Use internal dependency generator rather than external helpers? - %_use_internal_dependency_generator 1 -diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh -index 1ebc159..aaf4c75 100755 ---- a/scripts/find-debuginfo.sh -+++ b/scripts/find-debuginfo.sh -@@ -4,6 +4,7 @@ - # - # Usage: find-debuginfo.sh [--strict-build-id] [-g] [-r] [-m] [-i] [-n] - # [-o debugfiles.list] -+# [-S debugsourcefiles.list] - # [--run-dwz] [--dwz-low-mem-die-limit N] - # [--dwz-max-die-limit N] - # [--build-id-seed VERSION-RELEASE] -@@ -79,6 +80,7 @@ n_jobs=1 - - BUILDDIR=. - out=debugfiles.list -+srcout= - nout=0 - while [ $# -gt 0 ]; do - case "$1" in -@@ -147,6 +149,10 @@ while [ $# -gt 0 ]; do - -j*) - n_jobs=${1#-j} - ;; -+ -S) -+ srcout=$2 -+ shift -+ ;; - *) - BUILDDIR=$1 - shift -@@ -512,10 +518,19 @@ if [ -d "${RPM_BUILD_ROOT}/usr/lib" -o -d "${RPM_BUILD_ROOT}/usr/src" ]; then - - (cd "${RPM_BUILD_ROOT}/usr" - test ! -d lib/debug || find lib/debug ! -type d -- test ! -d src/debug || find src/debug -mindepth 1 -maxdepth 1 -+ test ! -d src/debug -o -n "$srcout" || find src/debug -mindepth 1 -maxdepth 1 - ) | sed 's,^,/usr/,' >> "$LISTFILE" - fi - -+if [ -n "$srcout" ]; then -+ > "$srcout" -+ if [ -d "${RPM_BUILD_ROOT}/usr/src/debug" ]; then -+ (cd "${RPM_BUILD_ROOT}/usr" -+ find src/debug -mindepth 1 -maxdepth 1 -+ ) | sed 's,^,/usr/,' >> "$srcout" -+ fi -+fi -+ - # Append to $1 only the lines from stdin not already in the file. - append_uniq() - { +This commit is heavily based on a patch by Richard Biener. -commit 980749fdce055254ca92ee7e2595b16750b699a2 -Author: Michael Schroeder -Date: Fri Mar 24 15:35:23 2017 +0100 +(cherry picked from commit 980749fdce055254ca92ee7e2595b16750b699a2) - Support debuginfo subpackages - - We do this by filtering the debuginfo files generated by find-debuginfo.sh - with the files from the (sub)packages. - - This commit is heavily based on a patch by Richard Biener. +Conflicts: + build/files.c +--- + build/files.c | 285 ++++++++++++++++++++++++++++++++++++++++++++-- + build/parsePreamble.c | 10 +- + build/parseSpec.c | 2 +- + build/rpmbuild_internal.h | 17 +++ + macros.in | 3 + + 5 files changed, 304 insertions(+), 13 deletions(-) diff --git a/build/files.c b/build/files.c -index f58569e..e3fc8d6 100644 +index 2f02587f0..779a2a102 100644 --- a/build/files.c +++ b/build/files.c @@ -40,6 +40,16 @@ @@ -148,7 +41,7 @@ index f58569e..e3fc8d6 100644 /** */ enum specfFlags_e { -@@ -1738,9 +1748,8 @@ static int generateBuildIDs(FileList fl) +@@ -1702,9 +1712,8 @@ static int generateBuildIDs(FileList fl) if (lstat(flp->diskPath, &sbuf) == 0 && S_ISREG (sbuf.st_mode)) { /* We determine whether this is a main or debug ELF based on path. */ @@ -159,7 +52,7 @@ index f58569e..e3fc8d6 100644 /* For the main package files mimic what find-debuginfo.sh does. Only check build-ids for executable files. Debug files are -@@ -1833,8 +1842,6 @@ static int generateBuildIDs(FileList fl) +@@ -1797,8 +1806,6 @@ static int generateBuildIDs(FileList fl) if (rc == 0) { char *attrstr; /* Add .build-id directories to hold the subdirs/symlinks. */ @@ -168,7 +61,7 @@ index f58569e..e3fc8d6 100644 mainiddir = rpmGetPath(fl->buildRoot, BUILD_ID_DIR, NULL); debugiddir = rpmGetPath(fl->buildRoot, DEBUG_ID_DIR, NULL); -@@ -1898,8 +1905,8 @@ static int generateBuildIDs(FileList fl) +@@ -1864,8 +1871,8 @@ static int generateBuildIDs(FileList fl) /* Don't add anything more when an error occured. But do cleanup. */ if (rc == 0) { @@ -179,7 +72,7 @@ index f58569e..e3fc8d6 100644 char *buildidsubdir; char subdir[4]; -@@ -2001,7 +2008,7 @@ static int generateBuildIDs(FileList fl) +@@ -1967,7 +1974,7 @@ static int generateBuildIDs(FileList fl) which don't end in ".debug". */ int pathlen = strlen(paths[i]); int debuglen = strlen(".debug"); @@ -188,7 +81,7 @@ index f58569e..e3fc8d6 100644 int vralen = vra == NULL ? 0 : strlen(vra); if (pathlen > prefixlen + debuglen + vralen && strcmp ((paths[i] + pathlen - debuglen), -@@ -2659,24 +2666,273 @@ exit: +@@ -2621,24 +2628,273 @@ exit: return rc; } @@ -462,7 +355,7 @@ index f58569e..e3fc8d6 100644 if (pkg->fileList == NULL) continue; -@@ -2685,9 +2941,16 @@ rpmRC processBinaryFiles(rpmSpec spec, rpmBuildPkgFlags pkgFlags, +@@ -2647,9 +2903,16 @@ rpmRC processBinaryFiles(rpmSpec spec, rpmBuildPkgFlags pkgFlags, nvr = headerGetAsString(pkg->header, RPMTAG_NVRA); rpmlog(RPMLOG_NOTICE, _("Processing files: %s\n"), nvr); free(nvr); @@ -482,7 +375,7 @@ index f58569e..e3fc8d6 100644 goto exit; a = headerGetString(pkg->header, RPMTAG_ARCH); -@@ -2722,6 +2985,8 @@ rpmRC processBinaryFiles(rpmSpec spec, rpmBuildPkgFlags pkgFlags, +@@ -2684,6 +2947,8 @@ rpmRC processBinaryFiles(rpmSpec spec, rpmBuildPkgFlags pkgFlags, } exit: check_fileList = freeStringBuf(check_fileList); @@ -492,7 +385,7 @@ index f58569e..e3fc8d6 100644 return rc; } diff --git a/build/parsePreamble.c b/build/parsePreamble.c -index 6d25f4c..5715d25 100644 +index 6be440369..3bb833cff 100644 --- a/build/parsePreamble.c +++ b/build/parsePreamble.c @@ -544,6 +544,13 @@ static void fillOutMainPackage(Header h) @@ -509,7 +402,7 @@ index 6d25f4c..5715d25 100644 static rpmRC readIcon(Header h, const char * file) { char *fn = NULL; -@@ -1197,8 +1204,7 @@ int parsePreamble(rpmSpec spec, int initialPackage) +@@ -1171,8 +1178,7 @@ int parsePreamble(rpmSpec spec, int initialPackage) } if (pkg != spec->packages) { @@ -520,10 +413,10 @@ index 6d25f4c..5715d25 100644 if (checkForRequired(pkg->header, NVR)) { diff --git a/build/parseSpec.c b/build/parseSpec.c -index 2928e85..d0c42a4 100644 +index 9fff0e2c8..582060770 100644 --- a/build/parseSpec.c +++ b/build/parseSpec.c -@@ -572,7 +572,7 @@ static void initSourceHeader(rpmSpec spec) +@@ -564,7 +564,7 @@ static void initSourceHeader(rpmSpec spec) } /* Add extra provides to package. */ @@ -533,10 +426,10 @@ index 2928e85..d0c42a4 100644 const char *arch, *name; char *evr, *isaprov; diff --git a/build/rpmbuild_internal.h b/build/rpmbuild_internal.h -index 948dc31..46d9676 100644 +index 7dd577f26..7ec05b9c9 100644 --- a/build/rpmbuild_internal.h +++ b/build/rpmbuild_internal.h -@@ -442,6 +442,13 @@ +@@ -442,6 +442,13 @@ int addReqProv(Package pkg, rpmTagVal tagN, /** \ingroup rpmbuild @@ -550,7 +443,7 @@ index 948dc31..46d9676 100644 * Add rpmlib feature dependency. * @param pkg package * @param feature rpm feature name (i.e. "rpmlib(Foo)" for feature Foo) -@@ -463,6 +470,16 @@ int rpmlibNeedsFeature(Package pkg, const char * feature, const char * featureEV +@@ -453,6 +460,16 @@ int rpmlibNeedsFeature(Package pkg, const char * feature, const char * featureEV RPM_GNUC_INTERNAL rpmRC checkForEncoding(Header h, int addtag); @@ -568,10 +461,10 @@ index 948dc31..46d9676 100644 } #endif diff --git a/macros.in b/macros.in -index 007b8d4..cb65f4f 100644 +index d104ad5a7..0c055a7fd 100644 --- a/macros.in +++ b/macros.in -@@ -549,6 +549,9 @@ package or when debugging this package.\ +@@ -539,6 +539,9 @@ package or when debugging this package.\ # Whether rpm should put debug source files into its own subpackage #%_debugsource_packages 1 @@ -581,67 +474,6 @@ index 007b8d4..cb65f4f 100644 # # Use internal dependency generator rather than external helpers? %_use_internal_dependency_generator 1 +-- +2.13.2 -commit a517554e36666f58724620347a4b8224471d2225 -Author: Michael Schroeder -Date: Wed Mar 29 14:55:10 2017 +0200 - - Also add directories to split debuginfo packages - - This gets rid of the last difference between debuginfo subpackages - and normal debuginfo packages. - -diff --git a/build/files.c b/build/files.c -index e3fc8d6..5022069 100644 ---- a/build/files.c -+++ b/build/files.c -@@ -2745,8 +2745,9 @@ static void filterDebuginfoPackage(rpmSpec spec, Package pkg, - { - rpmfi fi; - ARGV_t files = NULL; -- Package dbg = NULL; -- char *path = NULL; -+ ARGV_t dirs = NULL; -+ int lastdiridx = -1, dirsadded; -+ char *path = NULL, *p, *pmin; - size_t buildrootlen = strlen(buildroot); - - /* ignore noarch subpackages */ -@@ -2779,12 +2780,37 @@ static void filterDebuginfoPackage(rpmSpec spec, Package pkg, - argvAdd(&files, "%defattr(-,root,root)"); - argvAddDir(&files, DEBUG_LIB_DIR); - } -+ - /* Add the files main debug-info file */ - argvAdd(&files, path + buildrootlen); -+ -+ /* Add the dir(s) */ -+ dirsadded = 0; -+ pmin = path + buildrootlen + strlen(DEBUG_LIB_DIR); -+ while ((p = strrchr(path + buildrootlen, '/')) != NULL && p > pmin) { -+ *p = 0; -+ if (lastdiridx >= 0 && !strcmp(dirs[lastdiridx], path + buildrootlen)) -+ break; /* already added this one */ -+ argvAdd(&dirs, path + buildrootlen); -+ dirsadded++; -+ } -+ if (dirsadded) -+ lastdiridx = argvCount(dirs) - dirsadded; /* remember longest dir */ - } - path = _free(path); - } - -+ /* add collected directories to file list */ -+ if (dirs) { -+ int i; -+ argvSort(dirs, NULL); -+ for (i = 0; dirs[i]; i++) { -+ if (!i || strcmp(dirs[i], dirs[i - 1]) != 0) -+ argvAddDir(&files, dirs[i]); -+ } -+ dirs = argvFree(dirs); -+ } -+ - if (files) { - /* we have collected some files. Now put them in a debuginfo - * package. If this is not the main package, clone the main diff --git a/0038-Also-add-directories-to-split-debuginfo-packages.patch b/0038-Also-add-directories-to-split-debuginfo-packages.patch new file mode 100644 index 0000000..1620994 --- /dev/null +++ b/0038-Also-add-directories-to-split-debuginfo-packages.patch @@ -0,0 +1,70 @@ +From 9f826d903dabbc2ce199560e296224c320bb840f Mon Sep 17 00:00:00 2001 +From: Michael Schroeder +Date: Wed, 29 Mar 2017 14:55:10 +0200 +Subject: [PATCH 38/49] Also add directories to split debuginfo packages + +This gets rid of the last difference between debuginfo subpackages +and normal debuginfo packages. + +(cherry picked from commit a517554e36666f58724620347a4b8224471d2225) +--- + build/files.c | 30 ++++++++++++++++++++++++++++-- + 1 file changed, 28 insertions(+), 2 deletions(-) + +diff --git a/build/files.c b/build/files.c +index 779a2a102..f27dcc7c1 100644 +--- a/build/files.c ++++ b/build/files.c +@@ -2707,8 +2707,9 @@ static void filterDebuginfoPackage(rpmSpec spec, Package pkg, + { + rpmfi fi; + ARGV_t files = NULL; +- Package dbg = NULL; +- char *path = NULL; ++ ARGV_t dirs = NULL; ++ int lastdiridx = -1, dirsadded; ++ char *path = NULL, *p, *pmin; + size_t buildrootlen = strlen(buildroot); + + /* ignore noarch subpackages */ +@@ -2741,12 +2742,37 @@ static void filterDebuginfoPackage(rpmSpec spec, Package pkg, + argvAdd(&files, "%defattr(-,root,root)"); + argvAddDir(&files, DEBUG_LIB_DIR); + } ++ + /* Add the files main debug-info file */ + argvAdd(&files, path + buildrootlen); ++ ++ /* Add the dir(s) */ ++ dirsadded = 0; ++ pmin = path + buildrootlen + strlen(DEBUG_LIB_DIR); ++ while ((p = strrchr(path + buildrootlen, '/')) != NULL && p > pmin) { ++ *p = 0; ++ if (lastdiridx >= 0 && !strcmp(dirs[lastdiridx], path + buildrootlen)) ++ break; /* already added this one */ ++ argvAdd(&dirs, path + buildrootlen); ++ dirsadded++; ++ } ++ if (dirsadded) ++ lastdiridx = argvCount(dirs) - dirsadded; /* remember longest dir */ + } + path = _free(path); + } + ++ /* add collected directories to file list */ ++ if (dirs) { ++ int i; ++ argvSort(dirs, NULL); ++ for (i = 0; dirs[i]; i++) { ++ if (!i || strcmp(dirs[i], dirs[i - 1]) != 0) ++ argvAddDir(&files, dirs[i]); ++ } ++ dirs = argvFree(dirs); ++ } ++ + if (files) { + /* we have collected some files. Now put them in a debuginfo + * package. If this is not the main package, clone the main +-- +2.13.2 + diff --git a/debugedit-prefix.patch b/0039-debugedit-skip_dir_prefix-should-check-for-dir-separ.patch similarity index 57% rename from debugedit-prefix.patch rename to 0039-debugedit-skip_dir_prefix-should-check-for-dir-separ.patch index b50e4c2..1e4af80 100644 --- a/debugedit-prefix.patch +++ b/0039-debugedit-skip_dir_prefix-should-check-for-dir-separ.patch @@ -1,5 +1,27 @@ +From faaf3bbfc261f49eda996801b50996fb1066092f Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Wed, 28 Jun 2017 20:25:39 +0200 +Subject: [PATCH 39/49] debugedit: skip_dir_prefix should check for dir + separator. + +To count as a real directory prefix the string matched should either +be equal to the given prefix or start with the prefix plus '/'. + +skip_dir_prefix is always used with base_dir or dest_dir which don't +end with a slash themselves. + +This really only is an issue if a package would put a directory named +similar to the package source dir (which cargo on fedora does, by adding +a directory named cargo-vendor in the builddir itself). + +Signed-off-by: Mark Wielaard +(cherry picked from commit 2ea5619e375f0717b755c8aa4a38254ea622b833) +--- + tools/debugedit.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + diff --git a/tools/debugedit.c b/tools/debugedit.c -index abd2ca4..a271b91 100644 +index bf115136c..682189929 100644 --- a/tools/debugedit.c +++ b/tools/debugedit.c @@ -662,7 +662,8 @@ canonicalize_path (const char *s, char *d) @@ -31,3 +53,6 @@ index abd2ca4..a271b91 100644 } /* Most strings will be in the existing debug string table. But to +-- +2.13.2 + diff --git a/0040-find-debuginfo.sh-Filter-out-all-built-in-like-fake-.patch b/0040-find-debuginfo.sh-Filter-out-all-built-in-like-fake-.patch new file mode 100644 index 0000000..5952a03 --- /dev/null +++ b/0040-find-debuginfo.sh-Filter-out-all-built-in-like-fake-.patch @@ -0,0 +1,43 @@ +From b4d166652011f0d0e8573feb616283698f6cf848 Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Wed, 28 Jun 2017 13:34:55 +0200 +Subject: [PATCH 40/49] find-debuginfo.sh: Filter out all like fake + file names. + +There is no official way to mark an instruction range as being not +part of some actual source code, but as part of a compiler built-in +construct in DWARF. So different compilers have come up with fake +source file names like or <__thread_local_inner macros>. +We already filtered out the strings "" and "". +Just filter out all '(^|/)<[a-z _-]+>$'. They are fake files! + +This is mainly to appease the rustc compiler which generates lots of +different variants to encode some instruction sequence is part of an +compiler generated macro expansion. + +Signed-off-by: Mark Wielaard +(cherry picked from commit ff239ff4b06c86485eccaf8f4ecadc9bceb34748) +--- + scripts/find-debuginfo.sh | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh +index bede833d7..eb62a158a 100644 +--- a/scripts/find-debuginfo.sh ++++ b/scripts/find-debuginfo.sh +@@ -502,7 +502,11 @@ if [ -s "$SOURCEFILE" ]; then + fi + + mkdir -p "${RPM_BUILD_ROOT}${debug_dest_name}" +- LC_ALL=C sort -z -u "$SOURCEFILE" | grep -E -v -z '(|)$' | ++ # Filter out anything compiler generated which isn't a source file. ++ # e.g. , , <__thread_local_inner macros>. ++ # Some compilers generate them as if they are part of the working ++ # directory (which is why we match against ^ or /). ++ LC_ALL=C sort -z -u "$SOURCEFILE" | grep -E -v -z '(^|/)<[a-z _-]+>$' | + (cd "${debug_base_name}"; cpio -pd0mL "${RPM_BUILD_ROOT}${debug_dest_name}") + # stupid cpio creates new directories in mode 0700, + # and non-standard modes may be inherented from original directories, fixup +-- +2.13.2 + diff --git a/find-debuginfo-dwz-multi.patch b/0041-find-debuginfo.sh-Don-t-create-dwz-multi-file-if-the.patch similarity index 63% rename from find-debuginfo-dwz-multi.patch rename to 0041-find-debuginfo.sh-Don-t-create-dwz-multi-file-if-the.patch index e7a8c83..0a36004 100644 --- a/find-debuginfo-dwz-multi.patch +++ b/0041-find-debuginfo.sh-Don-t-create-dwz-multi-file-if-the.patch @@ -1,24 +1,28 @@ -commit 0f162dc41f2051eab237bd223356d88e94a07580 -Author: Mark Wielaard -Date: Mon Jun 26 17:38:30 2017 +0200 +From f22cb2890026544499ee4f1a309a44c71e0b8152 Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Mon, 26 Jun 2017 17:38:30 +0200 +Subject: [PATCH 41/49] find-debuginfo.sh: Don't create dwz multi file if there + is only one .debug. - find-debuginfo.sh: Don't create dwz multi file if there is only one .debug. - - dwz -m multi only works when there are multiple .debug input files. - With just one .debug file it doesn't really make sense to extract - the shared debug info into a separate file and dwz will complain: - - dwz: Too few files for multifile optimization. - - So only add -m multi if there is more than one .debug file. - - Signed-off-by: Mark Wielaard +dwz -m multi only works when there are multiple .debug input files. +With just one .debug file it doesn't really make sense to extract +the shared debug info into a separate file and dwz will complain: + + dwz: Too few files for multifile optimization. + +So only add -m multi if there is more than one .debug file. + +Signed-off-by: Mark Wielaard +(cherry picked from commit 0f162dc41f2051eab237bd223356d88e94a07580) +--- + scripts/find-debuginfo.sh | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh -index 85a862f..360982d 100755 +index eb62a158a..3bfc15a79 100644 --- a/scripts/find-debuginfo.sh +++ b/scripts/find-debuginfo.sh -@@ -458,8 +458,8 @@ fi +@@ -442,8 +442,8 @@ fi # Invoke the DWARF Compressor utility. if $run_dwz \ && [ -d "${RPM_BUILD_ROOT}/usr/lib/debug" ]; then @@ -29,7 +33,7 @@ index 85a862f..360982d 100755 dwz_multifile_name="${RPM_PACKAGE_NAME}-${RPM_PACKAGE_VERSION}-${RPM_PACKAGE_RELEASE}.${RPM_ARCH}" dwz_multifile_suffix= dwz_multifile_idx=0 -@@ -468,14 +468,16 @@ if $run_dwz \ +@@ -452,14 +452,16 @@ if $run_dwz \ dwz_multifile_suffix=".${dwz_multifile_idx}" done dwz_multfile_name="${dwz_multifile_name}${dwz_multifile_suffix}" @@ -48,3 +52,6 @@ index 85a862f..360982d 100755 else echo >&2 "*** ERROR: DWARF compression requested, but no dwz installed" exit 2 +-- +2.13.2 + diff --git a/find-debuginfo-and-macro-docs.patch b/0042-Update-find-debuginfo.sh-options-and-macros-document.patch similarity index 81% rename from find-debuginfo-and-macro-docs.patch rename to 0042-Update-find-debuginfo.sh-options-and-macros-document.patch index 98197ae..6c0586d 100644 --- a/find-debuginfo-and-macro-docs.patch +++ b/0042-Update-find-debuginfo.sh-options-and-macros-document.patch @@ -1,20 +1,25 @@ -commit 173e5642a97c535f8bdaac5bf88854a103cc125b -Author: Mark Wielaard -Date: Mon Jun 26 13:35:48 2017 +0200 +From 201b856c02aeb3c4fc6b3a8b96ce8817278f4fbf Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Mon, 26 Jun 2017 13:35:48 +0200 +Subject: [PATCH 42/49] Update find-debuginfo.sh options and macros + documentation. - Update find-debuginfo.sh options and macros documentation. - - This adds some missing documentation for rpm macros and find-debuginfo.sh - options that were recently added (or renamed). -j N, --build-id-seed SEED, - --unique-debug-suffix SUFFIX and --unique-debug-src-base BASE. - - Signed-off-by: Mark Wielaard +This adds some missing documentation for rpm macros and find-debuginfo.sh +options that were recently added (or renamed). -j N, --build-id-seed SEED, +--unique-debug-suffix SUFFIX and --unique-debug-src-base BASE. + +Signed-off-by: Mark Wielaard +(cherry picked from commit 173e5642a97c535f8bdaac5bf88854a103cc125b) +--- + macros.in | 14 ++++++++------ + scripts/find-debuginfo.sh | 28 ++++++++++++++++++++++------ + 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/macros.in b/macros.in -index b095719..3e9b73f 100644 +index 0c055a7fd..2a114ccd7 100644 --- a/macros.in +++ b/macros.in -@@ -522,8 +522,9 @@ package or when debugging this package.\ +@@ -514,8 +514,9 @@ package or when debugging this package.\ # Whether build-ids should be made unique between package version/releases # when generating debuginfo packages. If set to 1 this will pass @@ -26,7 +31,7 @@ index b095719..3e9b73f 100644 %_unique_build_ids 1 # Do not recompute build-ids but keep whatever is in the ELF file already. -@@ -533,15 +534,16 @@ package or when debugging this package.\ +@@ -525,15 +526,16 @@ package or when debugging this package.\ # Whether .debug files should be made unique between package version, # release and architecture. If set to 1 this will pass @@ -48,7 +53,7 @@ index b095719..3e9b73f 100644 # Whether rpm should put debug source files into its own subpackage diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh -index 0233d92..85a862f 100755 +index 3bfc15a79..185d25f96 100644 --- a/scripts/find-debuginfo.sh +++ b/scripts/find-debuginfo.sh @@ -3,11 +3,14 @@ @@ -104,3 +109,6 @@ index 0233d92..85a862f 100755 # # All file names in switches are relative to builddir (. if not given). # +-- +2.13.2 + diff --git a/0001-Add-OpenSSL-support-for-digest-and-signatures.patch b/0043-Add-OpenSSL-support-for-digest-and-signatures.patch similarity index 99% rename from 0001-Add-OpenSSL-support-for-digest-and-signatures.patch rename to 0043-Add-OpenSSL-support-for-digest-and-signatures.patch index 9026897..a67536f 100644 --- a/0001-Add-OpenSSL-support-for-digest-and-signatures.patch +++ b/0043-Add-OpenSSL-support-for-digest-and-signatures.patch @@ -1,7 +1,7 @@ -From 64c75ba68118e47f65eedf15855d8a50deeebcd1 Mon Sep 17 00:00:00 2001 +From 709e675cdf0c8f9b07507aad12400398f354cc90 Mon Sep 17 00:00:00 2001 From: Stephen Gallagher Date: Mon, 16 Jan 2017 09:19:43 -0500 -Subject: [PATCH] Add OpenSSL support for digest and signatures +Subject: [PATCH 43/49] Add OpenSSL support for digest and signatures Autotools: add --with-crypto=openssl This enables RPM to locate the appropriate flags for compiling @@ -16,6 +16,10 @@ See also: https://github.com/rpm-software-management/rpm/issues/119 (cherry picked from commit 64028f9a1c25ada8ffc7a48775f526600edcbf85) + +Conflicts: + Makefile.am + configure.ac --- INSTALL | 27 +- Makefile.am | 17 +- @@ -70,7 +74,7 @@ index 60536e316..8eefef799 100644 default database backend. BDB can be downloaded from http://www.oracle.com/technology/software/products/berkeley-db/index.html diff --git a/Makefile.am b/Makefile.am -index 6b37b5898..42a77c0d4 100644 +index 1b77730aa..a5268030b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -41,6 +41,7 @@ AM_CPPFLAGS += -I$(top_srcdir)/build @@ -136,7 +140,7 @@ index 6b37b5898..42a77c0d4 100644 if LIBELF diff --git a/configure.ac b/configure.ac -index 91fadbade..d21b67220 100644 +index e6362535b..65052870a 100644 --- a/configure.ac +++ b/configure.ac @@ -243,18 +243,30 @@ AC_CHECK_HEADERS([dwarf.h], [ @@ -1165,5 +1169,5 @@ index 000000000..aea460e39 + return sa; +} -- -2.12.0 +2.13.2 diff --git a/0001-Use-RPMTAG_-NAME-instead-of-RPMTAG_-FLAGS-in-parsePr.patch b/0044-Use-RPMTAG_-NAME-instead-of-RPMTAG_-FLAGS-in-parsePr.patch similarity index 97% rename from 0001-Use-RPMTAG_-NAME-instead-of-RPMTAG_-FLAGS-in-parsePr.patch rename to 0044-Use-RPMTAG_-NAME-instead-of-RPMTAG_-FLAGS-in-parsePr.patch index b44247a..51bcc14 100644 --- a/0001-Use-RPMTAG_-NAME-instead-of-RPMTAG_-FLAGS-in-parsePr.patch +++ b/0044-Use-RPMTAG_-NAME-instead-of-RPMTAG_-FLAGS-in-parsePr.patch @@ -1,7 +1,7 @@ -From 6739797e1c4a1c24f691568956597adcaece788e Mon Sep 17 00:00:00 2001 +From 287cda21a5594ad41ffbd29eb01022f314637bdf Mon Sep 17 00:00:00 2001 From: Florian Festi Date: Tue, 28 Feb 2017 10:57:56 +0100 -Subject: [PATCH 1/6] Use RPMTAG_*NAME instead of RPMTAG_*FLAGS in +Subject: [PATCH 44/49] Use RPMTAG_*NAME instead of RPMTAG_*FLAGS in parsePreamble.c and parseRCPOT() Using the FLGS tags is awkward and inconsistent with other part of the code @@ -148,5 +148,5 @@ index 73915015a..ce192fa9c 100644 if (rc) { -- -2.13.1 +2.13.2 diff --git a/0002-Fix-check-for-weak-deps-in-external-dependency-gener.patch b/0045-Fix-check-for-weak-deps-in-external-dependency-gener.patch similarity index 85% rename from 0002-Fix-check-for-weak-deps-in-external-dependency-gener.patch rename to 0045-Fix-check-for-weak-deps-in-external-dependency-gener.patch index 1bc5774..70c443c 100644 --- a/0002-Fix-check-for-weak-deps-in-external-dependency-gener.patch +++ b/0045-Fix-check-for-weak-deps-in-external-dependency-gener.patch @@ -1,7 +1,8 @@ -From 01dc6ada3bf33a06ad58d3b1246c287ac148d912 Mon Sep 17 00:00:00 2001 +From 4fb394a677c17a33c7e3f3455a1a6c109200b87e Mon Sep 17 00:00:00 2001 From: Florian Festi Date: Tue, 28 Feb 2017 17:42:21 +0100 -Subject: [PATCH 2/6] Fix check for weak deps in external dependency generator +Subject: [PATCH 45/49] Fix check for weak deps in external dependency + generator (cherry picked from commit 43d230884365d90d42184a0000f44bb33e5f1ab8) --- @@ -32,5 +33,5 @@ index ce192fa9c..921814ad1 100644 continue; tagflags = RPMSENSE_FIND_REQUIRES; -- -2.13.1 +2.13.2 diff --git a/0003-Fix-check-whether-to-allow-rich-deps-in-a-given-tag.patch b/0046-Fix-check-whether-to-allow-rich-deps-in-a-given-tag.patch similarity index 93% rename from 0003-Fix-check-whether-to-allow-rich-deps-in-a-given-tag.patch rename to 0046-Fix-check-whether-to-allow-rich-deps-in-a-given-tag.patch index cb5b200..8033857 100644 --- a/0003-Fix-check-whether-to-allow-rich-deps-in-a-given-tag.patch +++ b/0046-Fix-check-whether-to-allow-rich-deps-in-a-given-tag.patch @@ -1,7 +1,7 @@ -From 950eafdaac08cb618a4b5a8c923f1535985bcdc3 Mon Sep 17 00:00:00 2001 +From 9a316cbeb61549b3004692c9dd8437b9fa805e74 Mon Sep 17 00:00:00 2001 From: Florian Festi Date: Thu, 9 Mar 2017 12:12:32 +0100 -Subject: [PATCH 3/6] Fix check whether to allow rich deps in a given tag +Subject: [PATCH 46/49] Fix check whether to allow rich deps in a given tag Broken with 9d5bbd9774d00f50749bb045217eaf91c87b6de0 @@ -55,5 +55,5 @@ index bd728ed2d..6c2aead4e 100644 goto exit; } -- -2.13.1 +2.13.2 diff --git a/0004-Re-enable-rich-dependecies-for-build-requires-and-co.patch b/0047-Re-enable-rich-dependecies-for-build-requires-and-co.patch similarity index 83% rename from 0004-Re-enable-rich-dependecies-for-build-requires-and-co.patch rename to 0047-Re-enable-rich-dependecies-for-build-requires-and-co.patch index 9e88f86..b087748 100644 --- a/0004-Re-enable-rich-dependecies-for-build-requires-and-co.patch +++ b/0047-Re-enable-rich-dependecies-for-build-requires-and-co.patch @@ -1,7 +1,7 @@ -From 96772ee932bbfb3f340589fa5cbbe3ec99125cfd Mon Sep 17 00:00:00 2001 +From 27c263a877dd4bfac12ae716038dfbb0a305625b Mon Sep 17 00:00:00 2001 From: Florian Festi Date: Thu, 9 Mar 2017 14:02:10 +0100 -Subject: [PATCH 4/6] Re-enable rich dependecies for build requires and +Subject: [PATCH 47/49] Re-enable rich dependecies for build requires and conflicts (cherry picked from commit cb3dc0b43bd9a119196a527504d03d57d0785092) @@ -26,5 +26,5 @@ index 6c2aead4e..4d500c1df 100644 case RPMTAG_FILETRIGGERIN: nametag = RPMTAG_FILETRIGGERNAME; -- -2.13.1 +2.13.2 diff --git a/0005-add-support-for-rich-dependencies-from-dependency-ge.patch b/0048-add-support-for-rich-dependencies-from-dependency-ge.patch similarity index 98% rename from 0005-add-support-for-rich-dependencies-from-dependency-ge.patch rename to 0048-add-support-for-rich-dependencies-from-dependency-ge.patch index fe4b513..02db161 100644 --- a/0005-add-support-for-rich-dependencies-from-dependency-ge.patch +++ b/0048-add-support-for-rich-dependencies-from-dependency-ge.patch @@ -1,7 +1,7 @@ -From 9ff717b63e94eb6a330050036506f8b78bf1401f Mon Sep 17 00:00:00 2001 +From c1ed362facbab3d08b5576950d4c6a68cfae9e75 Mon Sep 17 00:00:00 2001 From: Igor Gnatenko Date: Sat, 25 Feb 2017 12:28:16 +0100 -Subject: [PATCH 5/6] add support for rich dependencies from dependency +Subject: [PATCH 48/49] add support for rich dependencies from dependency generators Mostly achieved by replacing custom parser with the parseRCPOT(). @@ -9,6 +9,9 @@ Mostly achieved by replacing custom parser with the parseRCPOT(). Closes: https://github.com/rpm-software-management/rpm/issues/167 Signed-off-by: Igor Gnatenko (cherry picked from commit 8f509d669b9ae79c86dd510c5a4bc5109f60d733) + +Conflicts: + build/rpmfc.c --- build/parsePreamble.c | 4 +-- build/parseReqs.c | 9 +++-- @@ -272,5 +275,5 @@ index 921814ad1..7fa8227d0 100644 if (rc) { -- -2.13.1 +2.13.2 diff --git a/0006-Pass-proper-file-index-when-recording-generated-depe.patch b/0049-Pass-proper-file-index-when-recording-generated-depe.patch similarity index 83% rename from 0006-Pass-proper-file-index-when-recording-generated-depe.patch rename to 0049-Pass-proper-file-index-when-recording-generated-depe.patch index 7907672..bb98401 100644 --- a/0006-Pass-proper-file-index-when-recording-generated-depe.patch +++ b/0049-Pass-proper-file-index-when-recording-generated-depe.patch @@ -1,7 +1,7 @@ -From 34979267904cec0c53cad1e1361db733f56dcbf8 Mon Sep 17 00:00:00 2001 +From d6a1e94f18d2f73e7b03025d891aa7e407cb169a Mon Sep 17 00:00:00 2001 From: Florian Festi Date: Wed, 31 May 2017 10:42:03 +0200 -Subject: [PATCH 6/6] Pass proper file index when recording generated +Subject: [PATCH 49/49] Pass proper file index when recording generated dependencies Resolves regression introduced with 8f509d6 @@ -26,5 +26,5 @@ index 7fa8227d0..72f29ddf5 100644 } -- -2.13.1 +2.13.2 diff --git a/0050-fixup-Support-debuginfo-subpackages.patch b/0050-fixup-Support-debuginfo-subpackages.patch new file mode 100644 index 0000000..95caa0c --- /dev/null +++ b/0050-fixup-Support-debuginfo-subpackages.patch @@ -0,0 +1,25 @@ +From bacdd7eeac9abb5046f5163a79ec8296287d83fc Mon Sep 17 00:00:00 2001 +From: Igor Gnatenko +Date: Fri, 30 Jun 2017 16:52:03 +0200 +Subject: [PATCH 50/50] fixup! Support debuginfo subpackages + +--- + build/files.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/build/files.c b/build/files.c +index 933fad35b..f27dcc7c1 100644 +--- a/build/files.c ++++ b/build/files.c +@@ -2930,7 +2930,7 @@ rpmRC processBinaryFiles(rpmSpec spec, rpmBuildPkgFlags pkgFlags, + rpmlog(RPMLOG_NOTICE, _("Processing files: %s\n"), nvr); + free(nvr); + +- if ((rc = processPackageFiles(spec, pkgFlags, pkg, didInstall, test)) != RPMRC_OK) ++ if ((rc = processPackageFiles(spec, pkgFlags, pkg, installSpecialDoc, test)) != RPMRC_OK) + goto exit; + + if (maindbg) +-- +2.13.2 + diff --git a/find-debuginfo-filter-built-ins.patch b/find-debuginfo-filter-built-ins.patch deleted file mode 100644 index 02903c2..0000000 --- a/find-debuginfo-filter-built-ins.patch +++ /dev/null @@ -1,36 +0,0 @@ -commit 78df22afc540c6c34003c3cb8ecc3ee686fbef76 -Author: Mark Wielaard -Date: Wed Jun 28 13:25:12 2017 +0200 - - find-debuginfo.sh: Filter out all like fake file names. - - There is no official way to mark an instruction range as being not - part of some actual source code, but as part of a compiler built-in - construct in DWARF. So different compilers have come up with fake - source file names like or <__thread_local_inner macros>. - We already filtered out the strings "" and "". - Just filter out all '(^|/)<[a-z _-]+>$'. They are fake files! - - This is mainly to appease the rustc compiler which generates lots of - different variants to encode some instruction sequence is part of an - compiler generated macro expansion. - - Signed-off-by: Mark Wielaard - -diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh -index 0233d92..555e7b8 100755 ---- a/scripts/find-debuginfo.sh -+++ b/scripts/find-debuginfo.sh -@@ -502,7 +502,11 @@ if [ -s "$SOURCEFILE" ]; then - fi - - mkdir -p "${RPM_BUILD_ROOT}${debug_dest_name}" -- LC_ALL=C sort -z -u "$SOURCEFILE" | grep -E -v -z '(|)$' | -+ # Filter out anything compiler generated which isn't a source file. -+ # e.g. , , <__thread_local_inner macros>. -+ # Some compilers generate them as if they are part of the working -+ # directory (which is why we match against ^ or /). -+ LC_ALL=C sort -z -u "$SOURCEFILE" | grep -E -v -z '(^|/)<[a-z _-]+>$' | - (cd "${debug_base_name}"; cpio -pd0mL "${RPM_BUILD_ROOT}${debug_dest_name}") - # stupid cpio creates new directories in mode 0700, - # and non-standard modes may be inherented from original directories, fixup diff --git a/find-debuginfo-split-traversal-and-extraction-fix.patch b/find-debuginfo-split-traversal-and-extraction-fix.patch deleted file mode 100644 index 46fadc4..0000000 --- a/find-debuginfo-split-traversal-and-extraction-fix.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- rpm-4.13.0.1/scripts/find-debuginfo.sh.orig 2017-06-28 13:00:10.780609617 +0200 -+++ rpm-4.13.0.1/scripts/find-debuginfo.sh 2017-06-28 13:00:38.331005393 +0200 -@@ -351,7 +351,7 @@ - # just has its file names collected and adjusted. - case "$dn" in - /usr/lib/debug/*) -- continue ;; -+ return ;; - esac - - mkdir -p "${debugdn}" diff --git a/rpm-4.13.x-writable-tmp-dir.patch b/rpm-4.13.x-writable-tmp-dir.patch deleted file mode 100644 index f2dda3f..0000000 --- a/rpm-4.13.x-writable-tmp-dir.patch +++ /dev/null @@ -1,107 +0,0 @@ -commit c707ab26362e795d3f9dba4eb87dc7ed99a28bcb -Author: Robin Lee -Date: Sat Apr 8 21:21:39 2017 +0800 - - Fix non-standard inherented modes of directories in debuginfo - - In case that binary compiled from source generated in /tmp, a - /usr/src/debug/tmp directory will be created with the same mode as - /tmp, a.k.a 777, which should be avoided. - - Fixes: rhbz#641022 - -diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh -old mode 100644 -new mode 100755 -index 547dbd9..6f38e19 ---- a/scripts/find-debuginfo.sh -+++ b/scripts/find-debuginfo.sh -@@ -490,9 +490,10 @@ if [ -s "$SOURCEFILE" ]; then - mkdir -p "${RPM_BUILD_ROOT}${debug_dest_name}" - LC_ALL=C sort -z -u "$SOURCEFILE" | grep -E -v -z '(|)$' | - (cd "${debug_base_name}"; cpio -pd0mL "${RPM_BUILD_ROOT}${debug_dest_name}") -- # stupid cpio creates new directories in mode 0700, fixup -+ # stupid cpio creates new directories in mode 0700, -+ # and non-standard modes may be inherented from original directories, fixup - find "${RPM_BUILD_ROOT}${debug_dest_name}" -type d -print0 | -- xargs --no-run-if-empty -0 chmod a+rx -+ xargs --no-run-if-empty -0 chmod 0755 - fi - - if [ -d "${RPM_BUILD_ROOT}/usr/lib" -o -d "${RPM_BUILD_ROOT}/usr/src" ]; then - -commit e795899780337dea751d85db8f381eff3fe75275 -Author: Mark Wielaard -Date: Fri Apr 21 17:33:26 2017 +0200 - - debugedit: Only output comp_dir under build dir (once). - - The fix for rhbz#444310 (commit c1a5eb - Include empty CU current dirs) - was a little greedy. It would also include comp_dirs outside the build - root. Those are unnecessary and we don't have a good way to store them. - Such dirs (e.g. /tmp) would then show up at the root of /usr/src/debug. - - Fix this by including only comp_dirs under base_dir. Also only output - all dirs once (during phase zero) and don't output empty dirs (which - was harmless but would produce a warning from cpio). - - This still includes all empty dirs from the original rhbz#444310 - nodir testcase and it is an alternative fix for rhbz#641022 - (commit c707ab). - - Both fixes are necessary in case of an unexpected mode for a directory - actually in the build root that we want to include in the source list. - - Signed-off-by: Mark Wielaard - -diff --git a/tools/debugedit.c b/tools/debugedit.c -index 8444e03..bf11513 100644 ---- a/tools/debugedit.c -+++ b/tools/debugedit.c -@@ -1680,30 +1680,23 @@ edit_attributes (DSO *dso, unsigned char *ptr, struct abbrev_tag *t, int phase) - /* Ensure the CU current directory will exist even if only empty. Source - filenames possibly located in its parent directories refer relatively to - it and the debugger (GDB) cannot safely optimize out the missing -- CU current dir subdirectories. */ -- if (comp_dir && list_file_fd != -1) -+ CU current dir subdirectories. Only do this once in phase one. And -+ only do this for dirs under our build/base_dir. Don't output the -+ empty string (in case the comp_dir == base_dir). */ -+ if (phase == 0 && base_dir && comp_dir && list_file_fd != -1) - { -- const char *p = NULL; -- size_t size; -- -- if (base_dir) -- { -- p = skip_dir_prefix (comp_dir, base_dir); -- if (p == NULL && dest_dir != NULL) -- p = skip_dir_prefix (comp_dir, dest_dir); -- } -- -- if (p == NULL) -- p = comp_dir; -- -- size = strlen (p) + 1; -- while (size > 0) -- { -- ssize_t ret = write (list_file_fd, p, size); -- if (ret == -1) -- break; -- size -= ret; -- p += ret; -+ const char *p = skip_dir_prefix (comp_dir, base_dir); -+ if (p != NULL && p[0] != '\0') -+ { -+ size_t size = strlen (p) + 1; -+ while (size > 0) -+ { -+ ssize_t ret = write (list_file_fd, p, size); -+ if (ret == -1) -+ break; -+ size -= ret; -+ p += ret; -+ } - } - } - diff --git a/rpm.spec b/rpm.spec index b0c7533..03e728c 100644 --- a/rpm.spec +++ b/rpm.spec @@ -56,74 +56,79 @@ Patch4: rpm-4.8.1-use-gpg2.patch Patch5: rpm-4.12.0-rpm2cpio-hack.patch # Patches already upstream: -Patch100: rpm-4.13.0-python-rpmsign.patch +# All patches are tracked on https://pagure.io/rpm-fedora +Patch100: 0001-Use-correct-source-file-for-rpmsign-module.patch -Patch140: rpm-4.13.x-brp-python-bytecompile-Python3-only.patch -Patch142: rpm-4.13.x-fix-refcount-for-spec_type.patch +Patch140: 0002-brp-python-bytecompile-Process-python-lib-dirs-even-.patch +Patch142: 0003-Fix-number-of-references-on-spec_Type-114.patch # debuginfo backports (#1427970) -Patch250: 0001-Add-build-id-links-to-rpm-for-all-ELF-files.patch -Patch251: 0002-Make-it-possible-to-have-unique-build-ids-across-bui.patch -Patch252: 0003-Make-adding-GDB-index-sections-configurable.patch -Patch253: 0004-Add-option-to-have-unique-debug-file-names-across-ve.patch -Patch254: 0005-Fix-behavior-when-_build_id_links-is-undefined.patch -Patch255: 0006-Fix-debuginfo-etc-when-subpackages-have-different-ve.patch -Patch256: 0007-Only-process-regular-files-when-generating-build-ids.patch -Patch257: 0008-configure.ac-use-LIBDW-always-conditionally.patch -Patch258: 0009-Fix-libdw-configure-check.patch -Patch259: 0010-debugedit-Support-String-Line-table-rewriting-for-la.patch -Patch260: 0011-Add-option-to-have-unique-debug-source-dirs-across-v.patch +Patch250: 0004-Add-build-id-links-to-rpm-for-all-ELF-files.patch +Patch251: 0005-Make-it-possible-to-have-unique-build-ids-across-bui.patch +Patch252: 0006-Make-adding-GDB-index-sections-configurable.patch +Patch253: 0007-Add-option-to-have-unique-debug-file-names-across-ve.patch +Patch254: 0008-Fix-behavior-when-_build_id_links-is-undefined.patch +Patch255: 0009-Fix-debuginfo-etc-when-subpackages-have-different-ve.patch +Patch256: 0010-Only-process-regular-files-when-generating-build-ids.patch +Patch257: 0011-configure.ac-use-LIBDW-always-conditionally.patch +Patch258: 0012-Fix-libdw-configure-check.patch +Patch259: 0013-debugedit-Support-String-Line-table-rewriting-for-la.patch +Patch260: 0014-Add-option-to-have-unique-debug-source-dirs-across-v.patch # debuginfo build-id warn/error fix (#1430587) -Patch261: 0012-generateBuildIDs-Don-t-warn-or-error-for-object-file.patch -Patch262: 0013-missing_build_ids_terminate_build.patch -Patch263: 0014-generateBuildIDs-Fix-error-handling.patch -Patch264: 0015-reset-buildid-file-attrs.patch -Patch265: 0016-debugedit-replace-files.patch -Patch266: 0017-do-not-process-buildi-ds-for-noarch.patch -Patch267: 0018-update-build-id-endian.patch -Patch268: 0019-fix-sed-build-id-match-test.patch -Patch269: 0020-build-files-exec-build-id.patch -Patch270: 0021-debugedit-Fix-off-by-one-adding-DW_FORM_string-repla.patch -Patch271: 0022-unbreak-short-circuit.patch -Patch272: 0023-minisymtab-exe-sh.patch -Patch273: 0024-no-recompute-build-id.patch -Patch274: 0025-buildid-reset-attrs.patch +Patch261: 0015-generateBuildIDs-Don-t-warn-or-error-for-object-file.patch +Patch262: 0016-build-files.c-Unset-__debug_package-implies-missing-.patch +Patch263: 0017-generateBuildIDs-Fix-error-handling.patch +Patch264: 0018-Make-sure-to-reset-file-attributes-for-generated-bui.patch +Patch265: 0019-rpmbuild-Reset-attrFlags-in-generateBuildIDs.patch +Patch266: 0020-debugedit-Fix-edit_dwarf2_line-replace_dirs-replace_.patch +Patch267: 0021-build-files.c-processPackageFiles-Don-t-call-generat.patch +Patch268: 0022-debugedit-Fix-cross-endian-build-id-reading-and-upda.patch +Patch269: 0023-tests-tpmbuild.at-Make-file-sed-regexp-more-strict-t.patch +Patch270: 0024-tests-rpmbuildid.at-Make-file-sed-regexp-more-strict.patch +Patch271: 0025-build-files.c-Only-check-build-ids-for-executable-fi.patch +Patch272: 0026-debugedit-Fix-off-by-one-adding-DW_FORM_string-repla.patch +Patch273: 0027-Unbreak-short-circuited-binary-builds.patch +Patch274: 0028-find-debuginfo.sh-Only-add-minisymtab-for-executable.patch +Patch275: 0029-debugedit-Add-n-no-recompute-build-id.patch +Patch276: 0030-Fix-non-standard-inherented-modes-of-directories-in-.patch # World writable empty (tmp) dirs in debuginfo packages (#641022) -Patch280: rpm-4.13.x-writable-tmp-dir.patch +Patch280: 0031-debugedit-Only-output-comp_dir-under-build-dir-once.patch # Parallel debuginfo processing -Patch281: find-debuginfo-split-traversal-and-extraction.patch -Patch282: find-debuginfo-split-traversal-and-extraction-fix.patch -Patch283: find-debuginfo-process-files-in-parallel.patch +Patch281: 0032-find-debuginfo.sh-Split-directory-traversal-and-debu.patch +Patch282: 0033-find-debuginfo.sh-Use-return-not-continue-to-break-o.patch +Patch283: 0034-find-debuginfo.sh-Process-files-in-parallel.patch # Support debugsource and debuginfo subpackages -Patch285: find-debuginfo-untangle-unique-build-options.patch -Patch286: debugsrc-and-sub-debuginfo-packages.patch +Patch284: 0035-Untangle-unique-build-options-in-find-debuginfo.sh.patch +Patch285: 0036-Support-debugsource-subpackages.patch +Patch286: 0037-Support-debuginfo-subpackages.patch +Patch287: 0038-Also-add-directories-to-split-debuginfo-packages.patch # debugedit check prefix match ends with slash. -Patch290: debugedit-prefix.patch +Patch290: 0039-debugedit-skip_dir_prefix-should-check-for-dir-separ.patch # find-debuginfo.sh: Filter out all like fake file names. -Patch291: find-debuginfo-filter-built-ins.patch +Patch291: 0040-find-debuginfo.sh-Filter-out-all-built-in-like-fake-.patch # Don't create dwz multi file if there is only one .debug. -Patch292: find-debuginfo-dwz-multi.patch +Patch292: 0041-find-debuginfo.sh-Don-t-create-dwz-multi-file-if-the.patch # Update find-debuginfo.sh options and macros documentation. -Patch293: find-debuginfo-and-macro-docs.patch +Patch293: 0042-Update-find-debuginfo.sh-options-and-macros-document.patch # OpenSSL backend -Patch300: 0001-Add-OpenSSL-support-for-digest-and-signatures.patch +Patch300: 0043-Add-OpenSSL-support-for-digest-and-signatures.patch # Rich dependencies coming from dependency generatos -Patch310: 0001-Use-RPMTAG_-NAME-instead-of-RPMTAG_-FLAGS-in-parsePr.patch -Patch311: 0002-Fix-check-for-weak-deps-in-external-dependency-gener.patch -Patch312: 0003-Fix-check-whether-to-allow-rich-deps-in-a-given-tag.patch -Patch313: 0004-Re-enable-rich-dependecies-for-build-requires-and-co.patch -Patch314: 0005-add-support-for-rich-dependencies-from-dependency-ge.patch -Patch315: 0006-Pass-proper-file-index-when-recording-generated-depe.patch +Patch310: 0044-Use-RPMTAG_-NAME-instead-of-RPMTAG_-FLAGS-in-parsePr.patch +Patch311: 0045-Fix-check-for-weak-deps-in-external-dependency-gener.patch +Patch312: 0046-Fix-check-whether-to-allow-rich-deps-in-a-given-tag.patch +Patch313: 0047-Re-enable-rich-dependecies-for-build-requires-and-co.patch +Patch314: 0048-add-support-for-rich-dependencies-from-dependency-ge.patch +Patch315: 0049-Pass-proper-file-index-when-recording-generated-depe.patch # These are not yet upstream Patch902: rpm-4.7.1-geode-i686.patch