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 <ignatenkobrain@fedoraproject.org>
This commit is contained in:
Igor Gnatenko 2017-06-30 17:03:35 +02:00
parent 97b56ab27d
commit 082d5d0331
59 changed files with 1501 additions and 1135 deletions

View File

@ -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?= <nforro@redhat.com> From: =?UTF-8?q?Nikola=20Forr=C3=B3?= <nforro@redhat.com>
Date: Wed, 20 Apr 2016 15:39:36 +0200 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 +- python/setup.py.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-) 1 file changed, 1 insertion(+), 1 deletion(-)
@ -20,3 +21,6 @@ index b2c394136..f94873fe5 100644
include_dirs = pkgconfig('--cflags'), include_dirs = pkgconfig('--cflags'),
libraries = pkgconfig('--libs') + ['rpmsign'], libraries = pkgconfig('--libs') + ['rpmsign'],
extra_compile_args = cflags, extra_compile_args = cflags,
--
2.13.2

View File

@ -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 <ffesti@redhat.com> From: Florian Festi <ffesti@redhat.com>
Date: Tue, 14 Feb 2017 14:04:35 +0100 Date: Tue, 14 Feb 2017 14:04:35 +0100
Subject: [PATCH] brp-python-bytecompile: Process python lib dirs even without Subject: [PATCH 02/49] brp-python-bytecompile: Process python lib dirs even
standard Python without standard Python
There is no need for /usr/bin/python when byte compiling files in 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 /usr/lib/pythonX.Y (only /usr/bin/pythonX.Y). Moved check so we do not exit
prematurely. prematurely.
Fixes: rhbz#1411588 Fixes: rhbz#1411588
(cherry picked from commit a8e51b3bb05c6acb1d9b2e3d34f859ddda1677be)
--- ---
scripts/brp-python-bytecompile | 13 ++++++------- scripts/brp-python-bytecompile | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-) 1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/scripts/brp-python-bytecompile b/scripts/brp-python-bytecompile 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 --- a/scripts/brp-python-bytecompile
+++ b/scripts/brp-python-bytecompile +++ b/scripts/brp-python-bytecompile
@@ -6,12 +6,6 @@ if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then @@ -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. # 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" "/" 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

View File

@ -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 <pmoravco@redhat.com> From: Pavlina Moravcova Varekova <pmoravco@redhat.com>
Date: Tue, 21 Feb 2017 11:37:20 +0100 Date: Tue, 21 Feb 2017 11:48:27 +0100
Subject: [PATCH] Fix number of references on spec_Type (#114) 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.c | 14 +++++++++++---
python/spec-py.h | 2 +- python/spec-py.h | 2 +-
2 files changed, 12 insertions(+), 4 deletions(-) 2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/python/spec-py.c b/python/spec-py.c 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 --- a/python/spec-py.c
+++ b/python/spec-py.c +++ b/python/spec-py.c
@@ -45,8 +45,14 @@ struct specPkgObject_s { @@ -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 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 --- a/python/spec-py.h
+++ b/python/spec-py.h +++ b/python/spec-py.h
@@ -13,6 +13,6 @@ extern PyTypeObject specPkg_Type; @@ -13,6 +13,6 @@ extern PyTypeObject specPkg_Type;
@ -75,5 +79,5 @@ index 558fbf2..65b8dc3 100644
#endif /* RPMPYTHON_SPEC */ #endif /* RPMPYTHON_SPEC */
-- --
2.7.4 2.13.2

View File

@ -1,8 +1,7 @@
From 189b4f88c8e100155ec23a1e0b214bdc8473532a Mon Sep 17 00:00:00 2001 From 46b763e54de34d0dd28d82e3a87b59c6a94a4c07 Mon Sep 17 00:00:00 2001
Message-Id: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com>
From: Mark Wielaard <mjw@redhat.com> From: Mark Wielaard <mjw@redhat.com>
Date: Tue, 14 Jun 2016 17:07:12 +0200 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 This patch moves the main ELF file build-id symlinks from the
debuginfo package into the main package. And uses different 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". using the new keyword "buildid".
Signed-off-by: Mark Wielaard <mjw@redhat.com> Signed-off-by: Mark Wielaard <mjw@redhat.com>
(cherry picked from commit bbfe1f86b2e4b5c0bd499d9f3dd9de9c9c20fff2)
--- ---
build/Makefile.am | 4 + build/Makefile.am | 4 +
build/files.c | 375 ++++++++++++++++++++ build/files.c | 375 ++++++++++++++++++++
@ -48,7 +48,7 @@ Signed-off-by: Mark Wielaard <mjw@redhat.com>
create mode 100644 tests/rpmbuildid.at create mode 100644 tests/rpmbuildid.at
diff --git a/build/Makefile.am b/build/Makefile.am diff --git a/build/Makefile.am b/build/Makefile.am
index dbda716..71edbd1 100644 index dbda716ac..71edbd1c4 100644
--- a/build/Makefile.am --- a/build/Makefile.am
+++ b/build/Makefile.am +++ b/build/Makefile.am
@@ -26,3 +26,7 @@ librpmbuild_la_LIBADD = \ @@ -26,3 +26,7 @@ librpmbuild_la_LIBADD = \
@ -60,7 +60,7 @@ index dbda716..71edbd1 100644
+librpmbuild_la_LIBADD += @WITH_LIBELF_LIB@ @WITH_LIBDW_LIB@ +librpmbuild_la_LIBADD += @WITH_LIBELF_LIB@ @WITH_LIBDW_LIB@
+endif +endif
diff --git a/build/files.c b/build/files.c diff --git a/build/files.c b/build/files.c
index b76ce04..b010483 100644 index b76ce048f..b010483e4 100644
--- a/build/files.c --- a/build/files.c
+++ b/build/files.c +++ b/build/files.c
@@ -14,6 +14,11 @@ @@ -14,6 +14,11 @@
@ -467,10 +467,10 @@ index b76ce04..b010483 100644
genSourceRpmName(spec); genSourceRpmName(spec);
diff --git a/configure.ac b/configure.ac diff --git a/configure.ac b/configure.ac
index b2ec501..08eceeb 100644 index 91fadbade..8890c3c32 100644
--- a/configure.ac --- a/configure.ac
+++ b/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]) 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])], AC_ARG_WITH(external_db, [AS_HELP_STRING([--with-external-db],[build against an external Berkeley db])],
[case "$with_external_db" in [case "$with_external_db" in
diff --git a/macros.in b/macros.in diff --git a/macros.in b/macros.in
index fd57f2e..e43d62b0 100644 index fd57f2eba..e43d62b0a 100644
--- a/macros.in --- a/macros.in
+++ b/macros.in +++ b/macros.in
@@ -449,6 +449,34 @@ package or when debugging this package.\ @@ -449,6 +449,34 @@ package or when debugging this package.\
@ -532,7 +532,7 @@ index fd57f2e..e43d62b0 100644
%_use_internal_dependency_generator 1 %_use_internal_dependency_generator 1
diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh 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 --- a/scripts/find-debuginfo.sh
+++ b/scripts/find-debuginfo.sh +++ b/scripts/find-debuginfo.sh
@@ -207,57 +207,6 @@ debug_link() @@ -207,57 +207,6 @@ debug_link()
@ -631,7 +631,7 @@ index 4293261..c9e2293 100644
# dwz invalidates .gnu_debuglink CRC32 in the main files. # dwz invalidates .gnu_debuglink CRC32 in the main files.
diff --git a/tests/Makefile.am b/tests/Makefile.am diff --git a/tests/Makefile.am b/tests/Makefile.am
index 7a5cc65..10555ce 100644 index 7a5cc6544..10555ce9a 100644
--- a/tests/Makefile.am --- a/tests/Makefile.am
+++ b/tests/Makefile.am +++ b/tests/Makefile.am
@@ -19,6 +19,7 @@ TESTSUITE_AT += rpmquery.at @@ -19,6 +19,7 @@ TESTSUITE_AT += rpmquery.at
@ -644,7 +644,7 @@ index 7a5cc65..10555ce 100644
TESTSUITE_AT += rpmdeps.at TESTSUITE_AT += rpmdeps.at
diff --git a/tests/data/SPECS/hello2cp.spec b/tests/data/SPECS/hello2cp.spec diff --git a/tests/data/SPECS/hello2cp.spec b/tests/data/SPECS/hello2cp.spec
new file mode 100644 new file mode 100644
index 0000000..33d8dc2 index 000000000..33d8dc260
--- /dev/null --- /dev/null
+++ b/tests/data/SPECS/hello2cp.spec +++ b/tests/data/SPECS/hello2cp.spec
@@ -0,0 +1,64 @@ @@ -0,0 +1,64 @@
@ -714,7 +714,7 @@ index 0000000..33d8dc2
+- create. +- create.
diff --git a/tests/data/SPECS/hello2ln.spec b/tests/data/SPECS/hello2ln.spec diff --git a/tests/data/SPECS/hello2ln.spec b/tests/data/SPECS/hello2ln.spec
new file mode 100644 new file mode 100644
index 0000000..2c40dcc index 000000000..2c40dcc32
--- /dev/null --- /dev/null
+++ b/tests/data/SPECS/hello2ln.spec +++ b/tests/data/SPECS/hello2ln.spec
@@ -0,0 +1,63 @@ @@ -0,0 +1,63 @@
@ -783,7 +783,7 @@ index 0000000..2c40dcc
+- create. +- create.
diff --git a/tests/rpmbuildid.at b/tests/rpmbuildid.at diff --git a/tests/rpmbuildid.at b/tests/rpmbuildid.at
new file mode 100644 new file mode 100644
index 0000000..eddca96 index 000000000..eddca969b
--- /dev/null --- /dev/null
+++ b/tests/rpmbuildid.at +++ b/tests/rpmbuildid.at
@@ -0,0 +1,761 @@ @@ -0,0 +1,761 @@
@ -1550,7 +1550,7 @@ index 0000000..eddca96
+AT_CLEANUP +AT_CLEANUP
\ No newline at end of file \ No newline at end of file
diff --git a/tests/rpmtests.at b/tests/rpmtests.at diff --git a/tests/rpmtests.at b/tests/rpmtests.at
index b51266a..5495cce 100644 index b51266a2d..5495cced1 100644
--- a/tests/rpmtests.at --- a/tests/rpmtests.at
+++ b/tests/rpmtests.at +++ b/tests/rpmtests.at
@@ -4,6 +4,7 @@ m4_include([rpmverify.at]) @@ -4,6 +4,7 @@ m4_include([rpmverify.at])
@ -1562,5 +1562,5 @@ index b51266a..5495cce 100644
m4_include([rpmvercmp.at]) m4_include([rpmvercmp.at])
m4_include([rpmdeps.at]) m4_include([rpmdeps.at])
-- --
2.9.3 2.13.2

View File

@ -1,10 +1,7 @@
From 2a97fb48279af17049f96c661db040173185a650 Mon Sep 17 00:00:00 2001 From 3edae790572203f07a28448fedfda82d0629f4fb 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: Mark Wielaard <mjw@redhat.com> From: Mark Wielaard <mjw@redhat.com>
Date: Tue, 14 Jun 2016 17:07:13 +0200 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. versions/releases.
Introduce a new macro _unique_build_ids that when set will pass the 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. both when set and unset.
Signed-off-by: Mark Wielaard <mjw@redhat.com> Signed-off-by: Mark Wielaard <mjw@redhat.com>
(cherry picked from commit 5ef1166ad96e3545784fa5420a49e1b2cd481e8e)
--- ---
macros.in | 8 +++- macros.in | 8 +++-
scripts/find-debuginfo.sh | 20 ++++++++- scripts/find-debuginfo.sh | 20 ++++++++-
@ -25,7 +23,7 @@ Signed-off-by: Mark Wielaard <mjw@redhat.com>
create mode 100644 tests/data/SPECS/hello-r2.spec create mode 100644 tests/data/SPECS/hello-r2.spec
diff --git a/macros.in b/macros.in diff --git a/macros.in b/macros.in
index e43d62b0..dcd0961 100644 index e43d62b0a..dcd09612c 100644
--- a/macros.in --- a/macros.in
+++ b/macros.in +++ b/macros.in
@@ -180,7 +180,7 @@ @@ -180,7 +180,7 @@
@ -51,7 +49,7 @@ index e43d62b0..dcd0961 100644
# Use internal dependency generator rather than external helpers? # Use internal dependency generator rather than external helpers?
%_use_internal_dependency_generator 1 %_use_internal_dependency_generator 1
diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh 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 --- a/scripts/find-debuginfo.sh
+++ b/scripts/find-debuginfo.sh +++ b/scripts/find-debuginfo.sh
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
@ -112,7 +110,7 @@ index c9e2293..2cb9570 100644
fi fi
diff --git a/tests/data/SPECS/hello-r2.spec b/tests/data/SPECS/hello-r2.spec diff --git a/tests/data/SPECS/hello-r2.spec b/tests/data/SPECS/hello-r2.spec
new file mode 100644 new file mode 100644
index 0000000..ca5091d index 000000000..ca5091d10
--- /dev/null --- /dev/null
+++ b/tests/data/SPECS/hello-r2.spec +++ b/tests/data/SPECS/hello-r2.spec
@@ -0,0 +1,58 @@ @@ -0,0 +1,58 @@
@ -175,7 +173,7 @@ index 0000000..ca5091d
+* Tue Oct 20 1998 Jeff Johnson <jbj@redhat.com> +* Tue Oct 20 1998 Jeff Johnson <jbj@redhat.com>
+- create. +- create.
diff --git a/tests/rpmbuildid.at b/tests/rpmbuildid.at diff --git a/tests/rpmbuildid.at b/tests/rpmbuildid.at
index eddca96..1da6302 100644 index eddca969b..1da63022d 100644
--- a/tests/rpmbuildid.at --- a/tests/rpmbuildid.at
+++ b/tests/rpmbuildid.at +++ b/tests/rpmbuildid.at
@@ -758,4 +758,98 @@ debug id in debug package @@ -758,4 +758,98 @@ debug id in debug package
@ -280,7 +278,7 @@ index eddca96..1da6302 100644
+[ignore]) +[ignore])
+AT_CLEANUP +AT_CLEANUP
diff --git a/tools/debugedit.c b/tools/debugedit.c diff --git a/tools/debugedit.c b/tools/debugedit.c
index cf89312..c0147f0 100644 index cf89312fa..c0147f086 100644
--- a/tools/debugedit.c --- a/tools/debugedit.c
+++ b/tools/debugedit.c +++ b/tools/debugedit.c
@@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
@ -347,5 +345,5 @@ index cf89312..c0147f0 100644
if (base_dir) if (base_dir)
canonicalize_path(base_dir, base_dir); canonicalize_path(base_dir, base_dir);
-- --
2.9.3 2.13.2

View File

@ -1,10 +1,7 @@
From 270b8627b03bc39fb008a7da1a4fd6b259ff92b8 Mon Sep 17 00:00:00 2001 From 68a0323ab1738aee40f9f5a60a7fb3163162bf39 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: Mark Wielaard <mjw@redhat.com> From: Mark Wielaard <mjw@redhat.com>
Date: Tue, 14 Jun 2016 17:07:14 +0200 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 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 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. failing if not. Similar for dwz.
Signed-off-by: Mark Wielaard <mjw@redhat.com> Signed-off-by: Mark Wielaard <mjw@redhat.com>
(cherry picked from commit 67d3df338875ad5d9601e360bfdbd4289f271bc1)
Conflicts:
scripts/find-debuginfo.sh
--- ---
macros.debug | 1 + macros.debug | 1 +
macros.in | 8 ++++++- macros.in | 8 ++++++-
@ -21,7 +22,7 @@ Signed-off-by: Mark Wielaard <mjw@redhat.com>
4 files changed, 94 insertions(+), 5 deletions(-) 4 files changed, 94 insertions(+), 5 deletions(-)
diff --git a/macros.debug b/macros.debug diff --git a/macros.debug b/macros.debug
index 6a8432e..d273c08 100644 index 6a8432eb7..d273c0876 100644
--- a/macros.debug --- a/macros.debug
+++ b/macros.debug +++ b/macros.debug
@@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
@ -33,7 +34,7 @@ index 6a8432e..d273c08 100644
# Expanded at end of %install scriptlet # Expanded at end of %install scriptlet
diff --git a/macros.in b/macros.in diff --git a/macros.in b/macros.in
index dcd0961..c845f58 100644 index dcd09612c..c845f5841 100644
--- a/macros.in --- a/macros.in
+++ b/macros.in +++ b/macros.in
@@ -180,7 +180,7 @@ @@ -180,7 +180,7 @@
@ -59,7 +60,7 @@ index dcd0961..c845f58 100644
# The following settings are supported: # The following settings are supported:
# #
diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh 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 --- a/scripts/find-debuginfo.sh
+++ b/scripts/find-debuginfo.sh +++ b/scripts/find-debuginfo.sh
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
@ -141,7 +142,7 @@ index 2cb9570..8e60813 100644
rmdir "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz" 2>/dev/null rmdir "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz" 2>/dev/null
if [ -f "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz/${dwz_multifile_name}" ]; then if [ -f "${RPM_BUILD_ROOT}/usr/lib/debug/.dwz/${dwz_multifile_name}" ]; then
diff --git a/tests/rpmbuild.at b/tests/rpmbuild.at diff --git a/tests/rpmbuild.at b/tests/rpmbuild.at
index 1531700..a312324 100644 index 1531700e1..a3123244c 100644
--- a/tests/rpmbuild.at --- a/tests/rpmbuild.at
+++ b/tests/rpmbuild.at +++ b/tests/rpmbuild.at
@@ -532,3 +532,64 @@ usr/local/bin/hello2 @@ -532,3 +532,64 @@ usr/local/bin/hello2
@ -210,5 +211,5 @@ index 1531700..a312324 100644
+[ignore]) +[ignore])
+AT_CLEANUP +AT_CLEANUP
-- --
2.9.3 2.13.2

View File

@ -1,10 +1,7 @@
From 76e637c715e13fe7f746feb29af4a6fd0de3cbc7 Mon Sep 17 00:00:00 2001 From 5b29c09c31982a712844cb2bbcd0bfff09c457d1 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: Mark Wielaard <mjw@redhat.com> From: Mark Wielaard <mjw@redhat.com>
Date: Thu, 16 Jun 2016 14:24:22 +0200 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. version/release/arch.
Introduce a new macro _unique_debug_names that when set will pass Introduce a new macro _unique_debug_names that when set will pass
@ -14,6 +11,8 @@ files which end in "-<ver>-<rel>.<arch>.debug" instead of simply ".debug".
Adds testcases for dwz and buildid with and without unique debug file names. Adds testcases for dwz and buildid with and without unique debug file names.
Signed-off-by: Mark Wielaard <mjw@redhat.com> Signed-off-by: Mark Wielaard <mjw@redhat.com>
(cherry picked from commit 45bfecbf7dd4249abc197a5fc908e4efcc3108ad)
--- ---
build/files.c | 19 ++- build/files.c | 19 ++-
macros.debug | 3 + macros.debug | 3 +
@ -24,7 +23,7 @@ Signed-off-by: Mark Wielaard <mjw@redhat.com>
6 files changed, 494 insertions(+), 39 deletions(-) 6 files changed, 494 insertions(+), 39 deletions(-)
diff --git a/build/files.c b/build/files.c diff --git a/build/files.c b/build/files.c
index b010483..eb39856 100644 index b010483e4..eb398562a 100644
--- a/build/files.c --- a/build/files.c
+++ b/build/files.c +++ b/build/files.c
@@ -1790,6 +1790,16 @@ static int generateBuildIDs(FileList fl) @@ -1790,6 +1790,16 @@ static int generateBuildIDs(FileList fl)
@ -74,7 +73,7 @@ index b010483..eb39856 100644
free(ids); free(ids);
} }
diff --git a/macros.debug b/macros.debug diff --git a/macros.debug b/macros.debug
index d273c08..ee0cc9e 100644 index d273c0876..ee0cc9ebe 100644
--- a/macros.debug --- a/macros.debug
+++ b/macros.debug +++ b/macros.debug
@@ -1,4 +1,7 @@ @@ -1,4 +1,7 @@
@ -86,7 +85,7 @@ index d273c08..ee0cc9e 100644
%_enable_debug_packages 1 %_enable_debug_packages 1
%_include_minidebuginfo 1 %_include_minidebuginfo 1
diff --git a/macros.in b/macros.in diff --git a/macros.in b/macros.in
index c845f58..68bf391 100644 index c845f5841..68bf39194 100644
--- a/macros.in --- a/macros.in
+++ b/macros.in +++ b/macros.in
@@ -180,7 +180,7 @@ @@ -180,7 +180,7 @@
@ -113,7 +112,7 @@ index c845f58..68bf391 100644
# Use internal dependency generator rather than external helpers? # Use internal dependency generator rather than external helpers?
%_use_internal_dependency_generator 1 %_use_internal_dependency_generator 1
diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh 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 --- a/scripts/find-debuginfo.sh
+++ b/scripts/find-debuginfo.sh +++ b/scripts/find-debuginfo.sh
@@ -64,6 +64,9 @@ dwz_max_die_limit= @@ -64,6 +64,9 @@ dwz_max_die_limit=
@ -163,7 +162,7 @@ index 8e60813..3653c48 100644
debugdn=${debugdir}${dn} debugdn=${debugdir}${dn}
debugfn=${debugdn}/${bn} debugfn=${debugdn}/${bn}
diff --git a/tests/rpmbuild.at b/tests/rpmbuild.at diff --git a/tests/rpmbuild.at b/tests/rpmbuild.at
index a312324..0a2c01e 100644 index a3123244c..0a2c01efe 100644
--- a/tests/rpmbuild.at --- a/tests/rpmbuild.at
+++ b/tests/rpmbuild.at +++ b/tests/rpmbuild.at
@@ -386,8 +386,9 @@ AT_CLEANUP @@ -386,8 +386,9 @@ AT_CLEANUP
@ -378,7 +377,7 @@ index a312324..0a2c01e 100644
[0], [0],
[], [],
diff --git a/tests/rpmbuildid.at b/tests/rpmbuildid.at diff --git a/tests/rpmbuildid.at b/tests/rpmbuildid.at
index 1da6302..ede1181 100644 index 1da63022d..ede1181e1 100644
--- a/tests/rpmbuildid.at --- a/tests/rpmbuildid.at
+++ b/tests/rpmbuildid.at +++ b/tests/rpmbuildid.at
@@ -54,7 +54,8 @@ hello debuginfo build-id files: 0 @@ -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 if test "$id1" == "$id2"; then echo "equal"; else echo "unequal $id1 $id2"; fi
-- --
2.9.3 2.13.2

View File

@ -1,21 +1,20 @@
From 1a8a0364fd049f3b4432633160fba12aa137f88d Mon Sep 17 00:00:00 2001 From a040e812b39d1fcc6aa69ca6aa5ff2fe4316a018 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: Panu Matilainen <pmatilai@redhat.com> From: Panu Matilainen <pmatilai@redhat.com>
Date: Mon, 3 Oct 2016 12:36:46 +0300 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 Commit bbfe1f86b2e4b5c0bd499d9f3dd9de9c9c20fff2 tries to behave sanely
and use compat setting when %_build_id_links is undefined, but and use compat setting when %_build_id_links is undefined, but
rpmExpand() never returns NULL so the original check is incorrect. rpmExpand() never returns NULL so the original check is incorrect.
Check for empty string instead. Check for empty string instead.
(cherry picked from commit 2ea72daabe3f0c4bef628d5a16768f293ffab3df)
--- ---
build/files.c | 2 +- build/files.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-) 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/build/files.c b/build/files.c diff --git a/build/files.c b/build/files.c
index eb39856..6215bf8 100644 index eb398562a..6215bf85c 100644
--- a/build/files.c --- a/build/files.c
+++ b/build/files.c +++ b/build/files.c
@@ -1648,7 +1648,7 @@ static int generateBuildIDs(FileList fl) @@ -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 macro not set, assuming 'compat'\n"));
build_id_links = BUILD_IDS_COMPAT; build_id_links = BUILD_IDS_COMPAT;
-- --
2.9.3 2.13.2

View File

@ -1,10 +1,7 @@
From 53c9e8d00983b0d99caefc0ef94a18184c0ba85c Mon Sep 17 00:00:00 2001 From 932c2170e961d393569992b2f9c3ab8ee415f01b 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: Panu Matilainen <pmatilai@redhat.com> From: Panu Matilainen <pmatilai@redhat.com>
Date: Wed, 9 Nov 2016 09:16:48 +0200 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) versions (RhBug:1051407)
Rpm has always been a bit dazed and confused when it comes to specs 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 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 avoid stomping on anybodys toes, use uppercasing for the macro name (other
variants like %pkg_release are awfully commonly used). Pile 'em on, yay! 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/files.c | 2 +-
build/parsePreamble.c | 11 ++++++++++- 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(-) 3 files changed, 20 insertions(+), 11 deletions(-)
diff --git a/build/files.c b/build/files.c diff --git a/build/files.c b/build/files.c
index 6215bf8..2ede463 100644 index 6215bf85c..2ede463a1 100644
--- a/build/files.c --- a/build/files.c
+++ b/build/files.c +++ b/build/files.c
@@ -1797,7 +1797,7 @@ static int generateBuildIDs(FileList fl) @@ -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. */ /* Now add a subdir and symlink for each buildid found. */
diff --git a/build/parsePreamble.c b/build/parsePreamble.c diff --git a/build/parsePreamble.c b/build/parsePreamble.c
index 933f734..6be4403 100644 index 933f7340f..6be440369 100644
--- a/build/parsePreamble.c --- a/build/parsePreamble.c
+++ b/build/parsePreamble.c +++ b/build/parsePreamble.c
@@ -909,8 +909,17 @@ static rpmRC handlePreambleTag(rpmSpec spec, Package pkg, rpmTagVal tag, @@ -909,8 +909,17 @@ static rpmRC handlePreambleTag(rpmSpec spec, Package pkg, rpmTagVal tag,
@ -64,7 +67,7 @@ index 933f734..6be4403 100644
exit: exit:
return rc; return rc;
diff --git a/macros.in b/macros.in diff --git a/macros.in b/macros.in
index 68bf391..4d90282 100644 index 68bf39194..4d9028254 100644
--- a/macros.in --- a/macros.in
+++ b/macros.in +++ b/macros.in
@@ -180,7 +180,7 @@ @@ -180,7 +180,7 @@
@ -135,5 +138,5 @@ index 68bf391..4d90282 100644
# bzr doesn't seem to have its own command to apply patches? # bzr doesn't seem to have its own command to apply patches?
%__scm_apply_bzr(qp:m:)\ %__scm_apply_bzr(qp:m:)\
-- --
2.9.3 2.13.2

View File

@ -1,10 +1,7 @@
From eb21562bcec67746e756679a60995f68d7d45577 Mon Sep 17 00:00:00 2001 From 29f756e3fba09f6a66515970978367829862f35c Mon Sep 17 00:00:00 2001
Message-Id: <eb21562bcec67746e756679a60995f68d7d45577.1488964568.git.pmatilai@redhat.com>
In-Reply-To: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com>
References: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com>
From: Panu Matilainen <pmatilai@redhat.com> From: Panu Matilainen <pmatilai@redhat.com>
Date: Thu, 5 Jan 2017 12:13:54 +0200 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 Versioned shared libraries typically have several symlinks pointing
to them directly and indirectly. When %_build_id_links is set to compat or 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() symlinks since it filters on S_ISREG(), but since uses fstat()
on already open()'ed file it ends up stat()'ing the symlink target. on already open()'ed file it ends up stat()'ing the symlink target.
Flip stat() + open() around and use lstat() instead to fix it. Flip stat() + open() around and use lstat() instead to fix it.
(cherry picked from commit 1ce844ab263bf49ee6d5145ed09e73f2c17924cc)
--- ---
build/files.c | 11 +++++------ build/files.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-) 1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/build/files.c b/build/files.c diff --git a/build/files.c b/build/files.c
index 2ede463..ca04176 100644 index 2ede463a1..ca041764f 100644
--- a/build/files.c --- a/build/files.c
+++ b/build/files.c +++ b/build/files.c
@@ -1678,11 +1678,10 @@ static int generateBuildIDs(FileList fl) @@ -1678,11 +1678,10 @@ static int generateBuildIDs(FileList fl)
@ -49,5 +48,5 @@ index 2ede463..ca04176 100644
} }
-- --
2.9.3 2.13.2

View File

@ -1,23 +1,22 @@
From 1e38abe3e6697efcf55663060533e286e1e77ae4 Mon Sep 17 00:00:00 2001 From 1b34b839b788264ffcd3ab90a0612cad3b843f7f 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: Igor Gnatenko <i.gnatenko.brain@gmail.com> From: Igor Gnatenko <i.gnatenko.brain@gmail.com>
Date: Wed, 10 Aug 2016 13:58:30 +0200 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 References: https://bugzilla.redhat.com/show_bug.cgi?id=1365278
Reported-and-tested-by: Neal Gompa <ngompa13@gmail.com> Reported-and-tested-by: Neal Gompa <ngompa13@gmail.com>
Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com> Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
(cherry picked from commit a82119bf352400ee891105820b804bf946d5c6ee)
--- ---
configure.ac | 7 ++++--- configure.ac | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-) 1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/configure.ac b/configure.ac diff --git a/configure.ac b/configure.ac
index 08eceeb..5dd2bb6 100644 index 8890c3c32..33c8f344f 100644
--- a/configure.ac --- a/configure.ac
+++ b/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. # 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_HEADERS([elfutils/libdwelf.h],[
AC_CHECK_LIB(dw, dwelf_elf_gnu_build_id, [ AC_CHECK_LIB(dw, dwelf_elf_gnu_build_id, [
AC_DEFINE(HAVE_LIBDW, 1, 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 WITH_LIBDW=yes
]) ])
]) ])
@ -40,5 +39,5 @@ index 08eceeb..5dd2bb6 100644
#================= #=================
# Process --with/without-external-db # Process --with/without-external-db
-- --
2.9.3 2.13.2

View File

@ -1,25 +1,23 @@
From 15617bfa3d12ebe3927b130a88df6dd12ee8d0f9 Mon Sep 17 00:00:00 2001 From f41a0a8c6839e3962e10a7bd3aad39127a764748 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: Mark Wielaard <mjw@redhat.com> From: Mark Wielaard <mjw@redhat.com>
Date: Wed, 24 Aug 2016 17:06:34 +0200 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 commit a82119 "configure.ac: use LIBDW always conditionally" contained
a typo that caused WITH_LIBDW_LIB never to be set when you were using a typo that caused WITH_LIBDW_LIB never to be set when you were using
libelf. Fixed by reverting the "!=" to "=" again. libelf. Fixed by reverting the "!=" to "=" again.
Signed-off-by: Mark Wielaard <mjw@redhat.com> Signed-off-by: Mark Wielaard <mjw@redhat.com>
(cherry picked from commit 10633641ec17081cca6332c3fb4abeea3df4059f)
--- ---
configure.ac | 2 +- configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-) 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac diff --git a/configure.ac b/configure.ac
index 5dd2bb6..4baa3f1 100644 index 33c8f344f..9596a97b3 100644
--- a/configure.ac --- a/configure.ac
+++ b/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. # Check for elfutils libdw library with dwelf_elf_gnu_build_id.
WITH_LIBDW_LIB= WITH_LIBDW_LIB=
@ -29,5 +27,5 @@ index 5dd2bb6..4baa3f1 100644
AC_CHECK_LIB(dw, dwelf_elf_gnu_build_id, [ AC_CHECK_LIB(dw, dwelf_elf_gnu_build_id, [
AC_DEFINE(HAVE_LIBDW, 1, AC_DEFINE(HAVE_LIBDW, 1,
-- --
2.9.3 2.13.2

View File

@ -1,10 +1,7 @@
From 481a17c207809d10efcc87c1f831c5eef83c069f Mon Sep 17 00:00:00 2001 From ddb7c4abddd746d7ec354fb89be16a2411a92cba 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: Mark Wielaard <mark@klomp.org> From: Mark Wielaard <mark@klomp.org>
Date: Fri, 17 Feb 2017 14:13:57 +0100 Date: Mon, 27 Feb 2017 16:28:18 +0100
Subject: [PATCH 10/11] debugedit: Support String/Line table rewriting for Subject: [PATCH 13/49] debugedit: Support String/Line table rewriting for
larger/smaller paths. larger/smaller paths.
debugedit --base to --dest rewriting of debug source file paths only 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. debug_macro section that can have references to the debug_str table.
Signed-off-by: Mark Wielaard <mark@klomp.org> Signed-off-by: Mark Wielaard <mark@klomp.org>
(cherry picked from commit 88989572fff1f31e0c4f972a6895585e4742ef4b)
--- ---
Makefile.am | 8 +- Makefile.am | 8 +-
configure.ac | 6 + configure.ac | 6 +
@ -56,7 +54,7 @@ Signed-off-by: Mark Wielaard <mark@klomp.org>
3 files changed, 1330 insertions(+), 253 deletions(-) 3 files changed, 1330 insertions(+), 253 deletions(-)
diff --git a/Makefile.am b/Makefile.am diff --git a/Makefile.am b/Makefile.am
index 6b37b58..1b77730 100644 index 6b37b5898..1b77730aa 100644
--- a/Makefile.am --- a/Makefile.am
+++ b/Makefile.am +++ b/Makefile.am
@@ -156,13 +156,18 @@ rpm2archive_LDADD += @WITH_NSS_LIB@ @WITH_POPT_LIB@ @WITH_ZLIB_LIB@ @WITH_ARCHIV @@ -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 rpmlibexec_PROGRAMS += rpmdeps
rpmdeps_SOURCES = tools/rpmdeps.c rpmdeps_SOURCES = tools/rpmdeps.c
diff --git a/configure.ac b/configure.ac diff --git a/configure.ac b/configure.ac
index 4baa3f1..743fe08 100644 index 9596a97b3..e6362535b 100644
--- a/configure.ac --- a/configure.ac
+++ b/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. # Check for elfutils libdw library with dwelf_elf_gnu_build_id.
WITH_LIBDW_LIB= WITH_LIBDW_LIB=
@ -117,7 +115,7 @@ index 4baa3f1..743fe08 100644
#================= #=================
# Process --with/without-external-db # Process --with/without-external-db
diff --git a/tools/debugedit.c b/tools/debugedit.c diff --git a/tools/debugedit.c b/tools/debugedit.c
index c0147f0..4798c63 100644 index c0147f086..4798c6370 100644
--- a/tools/debugedit.c --- a/tools/debugedit.c
+++ b/tools/debugedit.c +++ b/tools/debugedit.c
@@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
@ -2101,5 +2099,5 @@ index c0147f0..4798c63 100644
return 0; return 0;
-- --
2.9.3 2.13.2

View File

@ -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;

View File

@ -1,10 +1,7 @@
From cf12c3f2c985fcaf94bb5e2b24178290f5ef09ed Mon Sep 17 00:00:00 2001 From 0febf191cc874a822f045c24587d412e4d0ec33c Mon Sep 17 00:00:00 2001
Message-Id: <cf12c3f2c985fcaf94bb5e2b24178290f5ef09ed.1488964568.git.pmatilai@redhat.com>
In-Reply-To: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com>
References: <189b4f88c8e100155ec23a1e0b214bdc8473532a.1488964568.git.pmatilai@redhat.com>
From: Mark Wielaard <mark@klomp.org> From: Mark Wielaard <mark@klomp.org>
Date: Tue, 28 Feb 2017 20:45:24 +0100 Date: Tue, 28 Feb 2017 21:34:34 +0100
Subject: [PATCH 11/11] Add option to have unique debug source dirs across Subject: [PATCH 14/49] Add option to have unique debug source dirs across
version/release/arch. version/release/arch.
Introduce a new macro _unique_debug_srcs that when set will pass 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. the new _unique_debug_srcs macro is defined.
Signed-off-by: Mark Wielaard <mark@klomp.org> Signed-off-by: Mark Wielaard <mark@klomp.org>
(cherry picked from commit b32e980611c45a46e95fa8864b6faf0c0d732ddb)
Conflicts:
macros.in
scripts/find-debuginfo.sh
--- ---
macros.in | 8 ++++- macros.in | 8 ++++-
scripts/find-debuginfo.sh | 35 ++++++++++++++++++--- scripts/find-debuginfo.sh | 35 ++++++++++++++++++---
@ -45,7 +47,7 @@ Signed-off-by: Mark Wielaard <mark@klomp.org>
4 files changed, 123 insertions(+), 5 deletions(-) 4 files changed, 123 insertions(+), 5 deletions(-)
diff --git a/macros.in b/macros.in diff --git a/macros.in b/macros.in
index 4d90282..e48ef60 100644 index 4d9028254..e48ef60c8 100644
--- a/macros.in --- a/macros.in
+++ b/macros.in +++ b/macros.in
@@ -180,7 +180,7 @@ @@ -180,7 +180,7 @@
@ -71,7 +73,7 @@ index 4d90282..e48ef60 100644
# Use internal dependency generator rather than external helpers? # Use internal dependency generator rather than external helpers?
%_use_internal_dependency_generator 1 %_use_internal_dependency_generator 1
diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh 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 --- a/scripts/find-debuginfo.sh
+++ b/scripts/find-debuginfo.sh +++ b/scripts/find-debuginfo.sh
@@ -67,6 +67,9 @@ ver_rel= @@ -67,6 +67,9 @@ ver_rel=
@ -147,7 +149,7 @@ index 3653c48..1420ef6 100644
fi fi
diff --git a/tests/rpmbuild.at b/tests/rpmbuild.at diff --git a/tests/rpmbuild.at b/tests/rpmbuild.at
index 0a2c01e..a46822f 100644 index 0a2c01efe..a46822f52 100644
--- a/tests/rpmbuild.at --- a/tests/rpmbuild.at
+++ b/tests/rpmbuild.at +++ b/tests/rpmbuild.at
@@ -399,6 +399,7 @@ run rpmbuild --quiet \ @@ -399,6 +399,7 @@ run rpmbuild --quiet \
@ -242,7 +244,7 @@ index 0a2c01e..a46822f 100644
+[ignore]) +[ignore])
+AT_CLEANUP +AT_CLEANUP
diff --git a/tests/rpmbuildid.at b/tests/rpmbuildid.at diff --git a/tests/rpmbuildid.at b/tests/rpmbuildid.at
index ede1181..15c0620 100644 index ede1181e1..15c06202f 100644
--- a/tests/rpmbuildid.at --- a/tests/rpmbuildid.at
+++ b/tests/rpmbuildid.at +++ b/tests/rpmbuildid.at
@@ -71,6 +71,7 @@ run rpmbuild \ @@ -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 \ rpm2cpio ${abs_builddir}/testing/build/RPMS/*/hello-1.0-2.*.rpm \
-- --
2.9.3 2.13.2

View File

@ -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 <mark@klomp.org> From: Mark Wielaard <mark@klomp.org>
Date: Thu, 9 Mar 2017 09:30:17 +0100 Date: Thu, 9 Mar 2017 09:34:01 +0100
Subject: [PATCH] generateBuildIDs: Don't warn or error for object files Subject: [PATCH 15/49] generateBuildIDs: Don't warn or error for object files
without build-id. without build-id.
Only loadable ELF images (executables, shared libraries, kernel modules) 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. found without one.
Signed-off-by: Mark Wielaard <mark@klomp.org> Signed-off-by: Mark Wielaard <mark@klomp.org>
(cherry picked from commit e6bdf7a807ea5ca30bc467345dd1e07198945603)
--- ---
build/files.c | 15 +++++++++++---- build/files.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-) 1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/build/files.c b/build/files.c diff --git a/build/files.c b/build/files.c
index cbcc0a9..26f53bd 100644 index ca041764f..274b38c62 100644
--- a/build/files.c --- a/build/files.c
+++ b/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)) { if (lstat(flp->diskPath, &sbuf) == 0 && S_ISREG (sbuf.st_mode)) {
int fd = open (flp->diskPath, O_RDONLY); int fd = open (flp->diskPath, O_RDONLY);
if (fd >= 0) { if (fd >= 0) {
@ -29,7 +30,7 @@ index cbcc0a9..26f53bd 100644
const void *build_id; const void *build_id;
ssize_t len = dwelf_elf_gnu_build_id (elf, &build_id); ssize_t len = dwelf_elf_gnu_build_id (elf, &build_id);
/* len == -1 means error. Zero means no /* 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"), _("error reading build-id in %s: %s\n"),
flp->diskPath, elf_errmsg (-1)); flp->diskPath, elf_errmsg (-1));
} else if (len == 0) { } else if (len == 0) {
@ -48,5 +49,5 @@ index cbcc0a9..26f53bd 100644
rpmlog(terminate ? RPMLOG_ERR : RPMLOG_WARNING, rpmlog(terminate ? RPMLOG_ERR : RPMLOG_WARNING,
(len < 16 (len < 16
-- --
1.8.3.1 2.13.2

View File

@ -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);
}
}
}

View File

@ -0,0 +1,36 @@
From 5bc9efa303efe933b02cc8679ef3134668839831 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
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 <mark@klomp.org>
(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

View File

@ -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)

View File

@ -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 <mark@klomp.org> From: Mark Wielaard <mark@klomp.org>
Date: Thu, 9 Mar 2017 22:13:01 +0100 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 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 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. error message and explicitly set processingFailed.
Signed-off-by: Mark Wielaard <mark@klomp.org> Signed-off-by: Mark Wielaard <mark@klomp.org>
(cherry picked from commit 5bd77379eee167fbdb8d139dc9ab2da74f2a544f)
--- ---
build/files.c | 18 +++++++++++------- build/files.c | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-) 1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/build/files.c b/build/files.c diff --git a/build/files.c b/build/files.c
index b19abf2..fef0c69 100644 index b19abf299..fef0c6960 100644
--- a/build/files.c --- a/build/files.c
+++ b/build/files.c +++ b/build/files.c
@@ -1686,10 +1686,16 @@ static int generateBuildIDs(FileList fl) @@ -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. */ /* Verify that file attributes scope over hardlinks correctly. */
-- --
1.8.3.1 2.13.2

View File

@ -0,0 +1,194 @@
From 651264c51dfb13bf78bb969a429719f301497631 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
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 <mark@klomp.org>
(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 <stdio.h>
+
+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

View File

@ -0,0 +1,129 @@
From 20636f4358db0cb85f2251333190626dc2e4ee02 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
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 <mark@klomp.org>
(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

View File

@ -0,0 +1,37 @@
From 8e74618100580a1370b9045296c4d2d37340735f Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
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 <mark@klomp.org>
(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

View File

@ -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 <mark@klomp.org> From: Mark Wielaard <mark@klomp.org>
Date: Fri, 17 Mar 2017 10:51:36 +0100 Date: Fri, 17 Mar 2017 11:14:00 +0100
Subject: [PATCH] build/files.c (processPackageFiles): Don't call Subject: [PATCH 21/49] build/files.c (processPackageFiles): Don't call
generateBuildIDs for noarch. generateBuildIDs for noarch.
We don't want to do build-id processing for noarch packages. It might be 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 that noarch packages do contain architecture depended files, but those are
already handled by processBinaryFiles. 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 <mark@klomp.org> Signed-off-by: Mark Wielaard <mark@klomp.org>
(cherry picked from commit 5e82c7e8a8fc05195cdf622d0a120b9e70a9371b)
--- ---
build/files.c | 12 ++++++++---- build/files.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-) 1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/build/files.c b/build/files.c diff --git a/build/files.c b/build/files.c
index 6021643..35b2dd0 100644 index 6c0ca39ef..9e58ae547 100644
--- a/build/files.c --- a/build/files.c
+++ b/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; goto exit;
#if HAVE_LIBDW #if HAVE_LIBDW
@ -37,5 +41,5 @@ index 6021643..35b2dd0 100644
#endif #endif
-- --
1.8.3.1 2.13.2

View File

@ -1,5 +1,31 @@
From 5598e24ef8aef14727ff72eea71ec460200bc2e3 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
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 <mark@klomp.org>
(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 diff --git a/tools/debugedit.c b/tools/debugedit.c
index 4798c63..47e5bbf 100644 index 87a423fdb..0f373162d 100644
--- a/tools/debugedit.c --- a/tools/debugedit.c
+++ b/tools/debugedit.c +++ b/tools/debugedit.c
@@ -2581,40 +2581,25 @@ main (int argc, char *argv[]) @@ -2581,40 +2581,25 @@ main (int argc, char *argv[])
@ -89,3 +115,6 @@ index 4798c63..47e5bbf 100644
{ {
Elf *elf = dso->elf; Elf *elf = dso->elf;
GElf_Off last_offset; GElf_Off last_offset;
--
2.13.2

View File

@ -1,35 +0,0 @@
commit 95822abd90b9b3991b15ba82193abb5b9998dc99
Author: Mark Wielaard <mark@klomp.org>
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 <mark@klomp.org>
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"

View File

@ -0,0 +1,60 @@
From 8cd45c82a968404929e00dce65644f81e906591b Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
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 <mark@klomp.org>
(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

View File

@ -1,71 +1,22 @@
commit f0a581925ad4c948dc58cc8f9a55399ad8de351e From 58f2b095c0d1507ad09990669f1ae03f6f1d931f Mon Sep 17 00:00:00 2001
Author: Mark Wielaard <mark@klomp.org> From: Mark Wielaard <mark@klomp.org>
Date: Fri Mar 3 23:51:13 2017 +0100 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. 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
In some testcases we extract the BuildID with the file command. regexp more strict by only matching a hex-string. And properly "escape"
Unfortunately the file command output changed slightly between versions. [ and ] which inside an AT_CHECK should be [[ and ]].
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 <mark@klomp.org>
diff --git a/tests/rpmbuild.at b/tests/rpmbuild.at Signed-off-by: Mark Wielaard <mark@klomp.org>
index a46822f..dcbdd2c 100644 (cherry picked from commit 60f958ab41f854f8839fe04f1a67d1752ad7eda0)
--- a/tests/rpmbuild.at ---
+++ b/tests/rpmbuild.at tests/rpmbuildid.at | 44 ++++++++++++++++++++++----------------------
@@ -423,11 +423,11 @@ hello2_file=./usr/local/bin/hello2 1 file changed, 22 insertions(+), 22 deletions(-)
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 <mark@klomp.org>
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 <mark@klomp.org>
diff --git a/tests/rpmbuildid.at b/tests/rpmbuildid.at diff --git a/tests/rpmbuildid.at b/tests/rpmbuildid.at
index 15c0620..1c06ca1 100644 index a0e39782c..158ce122d 100644
--- a/tests/rpmbuildid.at --- a/tests/rpmbuildid.at
+++ b/tests/rpmbuildid.at +++ b/tests/rpmbuildid.at
@@ -97,7 +97,7 @@ main_file=./usr/local/bin/hello @@ -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 if test "$id1" == "$id2"; then echo "equal"; else echo "unequal $id1 $id2"; fi
], ],
--
2.13.2

View File

@ -1,8 +1,29 @@
From c21bf3aefdcfb22bc3f41888ef090c6d5a45baec Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
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 <mark@klomp.org>
(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 diff --git a/build/files.c b/build/files.c
index 6021643..afa01cd 100644 index 9e58ae547..9f7def78c 100644
--- a/build/files.c --- a/build/files.c
+++ b/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++) { for (i = 0, flp = fl->files.recs; i < fl->files.used; i++, flp++) {
struct stat sbuf; struct stat sbuf;
if (lstat(flp->diskPath, &sbuf) == 0 && S_ISREG (sbuf.st_mode)) { 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); int fd = open (flp->diskPath, O_RDONLY);
if (fd >= 0) { if (fd >= 0) {
/* Only real ELF files, that are ET_EXEC, ET_DYN or /* 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 is 128 bits) and 64 bytes (largest sha3 is 512
bits), common is 20 bytes (sha1 is 160 bits). */ bits), common is 20 bytes (sha1 is 160 bits). */
if (len >= 16 && len <= 64) { if (len >= 16 && len <= 64) {
@ -36,3 +57,6 @@ index 6021643..afa01cd 100644
needDbg = 1; needDbg = 1;
addid = 1; addid = 1;
} }
--
2.13.2

View File

@ -1,233 +0,0 @@
commit b91dc6106e360f13ff365dfac247191942039152
Author: Mark Wielaard <mark@klomp.org>
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 <mark@klomp.org>
[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 <stdio.h>
+
+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 <mark@klomp.org>
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 <mark@klomp.org>
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

View File

@ -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 <mark@klomp.org> From: Mark Wielaard <mark@klomp.org>
Date: Tue, 21 Mar 2017 16:46:37 +0100 Date: Tue, 21 Mar 2017 16:57:44 +0100
Subject: [PATCH] debugedit: Fix off-by-one adding DW_FORM_string replacement Subject: [PATCH 26/49] debugedit: Fix off-by-one adding DW_FORM_string
slashes. replacement slashes.
We would put one too many slashes in between the new dest_dir and file name 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 part of the replacement of a DW_FORM_string in the .debug_info. If there
@ -22,7 +22,7 @@ Signed-off-by: Mark Wielaard <mark@klomp.org>
1 file changed, 8 insertions(+), 4 deletions(-) 1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/tools/debugedit.c b/tools/debugedit.c diff --git a/tools/debugedit.c b/tools/debugedit.c
index 0f37316..b618dce 100644 index 0f373162d..b618dceb5 100644
--- a/tools/debugedit.c --- a/tools/debugedit.c
+++ b/tools/debugedit.c +++ b/tools/debugedit.c
@@ -1507,12 +1507,16 @@ edit_attributes (DSO *dso, unsigned char *ptr, struct abbrev_tag *t, int phase) @@ -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

View File

@ -1,34 +1,37 @@
commit eea78b023539875309b7d38e4c8924f647644924 From 6328e1e0da3ba26885f095ccbd83d223d5830527 Mon Sep 17 00:00:00 2001
Author: Panu Matilainen <pmatilai@redhat.com> From: Panu Matilainen <pmatilai@redhat.com>
Date: Thu Jan 5 13:47:28 2017 +0200 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
Commit bbfe1f86b2e4b5c0bd499d9f3dd9de9c9c20fff2 broke short-circuited packages), eg:
binary builds (which can be handy for testing when working on large rpmbuild -bi foo.spec; rpmbuild -bb --short-circuit foo.spec
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
The problem is that in a short-circuited build all the links already and creates new links instead, which leaves the old links unowned
exist and point to the right place, but the code doesn't realize this in the buildroot which ultimately causes the build to fail with
and creates new links instead, which leaves the old links unowned "Installed (but unpackaged) file(s) found" for the previously created
in the buildroot which ultimately causes the build to fail with build-id links.
"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.
When checking for pre-existing links see if they already point to Keep track of duplicate build-ids found by noticing existing links that
the right file and in that case just reuse it instead of creating new ones. point to different targets. But don't do this for compat links, they should
Keep track of duplicate build-ids found by noticing existing links that just point to the last (duplicate) main build-id symlink found.
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 <mark@klomp.org>
(cherry picked from commit eea78b023539875309b7d38e4c8924f647644924)
Signed-off-by: Mark Wielaard <mark@klomp.org> ---
build/files.c | 71 ++++++++++++++++++++++++++++++++++++++++++-----------------
1 file changed, 51 insertions(+), 20 deletions(-)
diff --git a/build/files.c b/build/files.c diff --git a/build/files.c b/build/files.c
index cca14b9..93021d1 100644 index 9f7def78c..2f02587f0 100644
--- a/build/files.c --- a/build/files.c
+++ b/build/files.c +++ b/build/files.c
@@ -1592,11 +1592,12 @@ exit: @@ -1565,11 +1565,12 @@ exit:
static int addNewIDSymlink(FileList fl, static int addNewIDSymlink(FileList fl,
char *targetpath, char *idlinkpath, char *targetpath, char *idlinkpath,
@ -42,7 +45,7 @@ index cca14b9..93021d1 100644
char *origpath, *linkpath; char *origpath, *linkpath;
if (isDbg) if (isDbg)
@@ -1606,6 +1607,26 @@ static int addNewIDSymlink(FileList fl, @@ -1579,6 +1580,26 @@ static int addNewIDSymlink(FileList fl,
origpath = linkpath; origpath = linkpath;
while (faccessat(AT_FDCWD, linkpath, F_OK, AT_SYMLINK_NOFOLLOW) == 0) { while (faccessat(AT_FDCWD, linkpath, F_OK, AT_SYMLINK_NOFOLLOW) == 0) {
@ -69,7 +72,7 @@ index cca14b9..93021d1 100644
if (nr > 0) if (nr > 0)
free(linkpath); free(linkpath);
nr++; nr++;
@@ -1613,21 +1634,16 @@ static int addNewIDSymlink(FileList fl, @@ -1586,21 +1607,16 @@ static int addNewIDSymlink(FileList fl,
isDbg ? ".debug" : ""); isDbg ? ".debug" : "");
} }
@ -94,7 +97,7 @@ index cca14b9..93021d1 100644
/* Lets see why there are multiple build-ids. If the original /* Lets see why there are multiple build-ids. If the original
targets are hard linked, then it is OK, otherwise warn targets are hard linked, then it is OK, otherwise warn
something fishy is going on. Would be nice to call 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); free(origpath);
if (nr > 0) if (nr > 0)
free(linkpath); free(linkpath);
@ -105,7 +108,7 @@ index cca14b9..93021d1 100644
return rc; 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) { || (rc = addFile(fl, buildidsubdir, NULL)) == 0) {
char *linkpattern, *targetpattern; char *linkpattern, *targetpattern;
char *linkpath, *targetpath; char *linkpath, *targetpath;
@ -113,7 +116,7 @@ index cca14b9..93021d1 100644
if (isDbg) { if (isDbg) {
linkpattern = "%s/%s"; linkpattern = "%s/%s";
targetpattern = "../../../../..%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]); buildidsubdir, &ids[i][2]);
rasprintf(&targetpath, targetpattern, paths[i]); rasprintf(&targetpath, targetpattern, paths[i]);
rc = addNewIDSymlink(fl, targetpath, linkpath, rc = addNewIDSymlink(fl, targetpath, linkpath,
@ -122,7 +125,7 @@ index cca14b9..93021d1 100644
/* We might want to have a link from the debug /* We might want to have a link from the debug
build_ids dir to the main one. We create it 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) { && build_id_links == BUILD_IDS_COMPAT) {
/* buildidsubdir already points to the /* buildidsubdir already points to the
debug buildid. We just need to setup debug buildid. We just need to setup
@ -160,7 +163,7 @@ index cca14b9..93021d1 100644
} }
if (rc == 0 && isDbg 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", rasprintf(&targetpath, "../../../../..%s",
targetstr); targetstr);
rc = addNewIDSymlink(fl, targetpath, rc = addNewIDSymlink(fl, targetpath,
@ -169,3 +172,6 @@ index cca14b9..93021d1 100644
free(targetstr); free(targetstr);
} }
} }
--
2.13.2

View File

@ -0,0 +1,42 @@
From 349489c3219e31efd552d87e255b06a864d1c034 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
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 <mark@klomp.org>
(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

View File

@ -1,23 +1,34 @@
commit 8edddd82f855d547bd68ba4d693db497bbbed7ab From 525282b9a8b78c2890c752e45c4dc7dcf25f42cb Mon Sep 17 00:00:00 2001
Author: Mark Wielaard <mark@klomp.org> From: Mark Wielaard <mark@klomp.org>
Date: Sat Apr 15 20:31:14 2017 +0200 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
Some packages depend on the build-ids as generated during the build package file list. Add -n, --no-recompute-build-id to debugedit and
and cannot handle rpmbuild recomputing them before generating the add -n to find-debuginfo.sh set by defining the %_no_recompute_build_ids
package file list. Add -n, --no-recompute-build-id to debugedit and macro for such packages. %_no_recompute_build_ids can not be used together
add -n to find-debuginfo.sh set by defining the %_no_recompute_build_ids with %_unique_build_ids.
macro for such packages. %_no_recompute_build_ids can not be used together
with %_unique_build_ids. Signed-off-by: Mark Wielaard <mark@klomp.org>
Signed-off-by: Mark Wielaard <mark@klomp.org> (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 diff --git a/macros.in b/macros.in
index f7d16de..cf22628 100644 index e48ef60c8..c5b1a0b26 100644
--- a/macros.in --- a/macros.in
+++ b/macros.in +++ b/macros.in
@@ -172,7 +172,7 @@ @@ -180,7 +180,7 @@
# the script. See the script for details. # the script. See the script for details.
# #
%__debug_install_post \ %__debug_install_post \
@ -26,7 +37,7 @@ index f7d16de..cf22628 100644
%{nil} %{nil}
# Template for debug information sub-package. # 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. # onto debugedit --build-id-seed to be used to prime the build-id note hash.
%_unique_build_ids 1 %_unique_build_ids 1
@ -39,7 +50,7 @@ index f7d16de..cf22628 100644
# release and architecture. If set to 1 this will pass # release and architecture. If set to 1 this will pass
# --unique-debug-arch "%{_arch}" to find-debuginfo.sh to create # --unique-debug-arch "%{_arch}" to find-debuginfo.sh to create
diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh 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 --- a/scripts/find-debuginfo.sh
+++ b/scripts/find-debuginfo.sh +++ b/scripts/find-debuginfo.sh
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
@ -69,7 +80,7 @@ index b52822e..86a248d 100755
# DWZ parameters. # DWZ parameters.
run_dwz=false run_dwz=false
dwz_low_mem_die_limit= dwz_low_mem_die_limit=
@@ -110,6 +114,9 @@ while [ $# -gt 0 ]; do @@ -107,6 +111,9 @@ while [ $# -gt 0 ]; do
-m) -m)
include_minidebug=true include_minidebug=true
;; ;;
@ -79,7 +90,7 @@ index b52822e..86a248d 100755
-i) -i)
include_gdb_index=true 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 exit 2
fi fi
@ -91,7 +102,7 @@ index b52822e..86a248d 100755
i=0 i=0
while ((i < nout)); do while ((i < nout)); do
outs[$i]="$BUILDDIR/${outs[$i]}" outs[$i]="$BUILDDIR/${outs[$i]}"
@@ -310,8 +322,12 @@ @@ -310,8 +322,12 @@ while read nlinks inum f; do
debug_base_name="$BUILDDIR" debug_base_name="$BUILDDIR"
debug_dest_name="/usr/src/debug/${unique_debug_src_base}-${ver_rel}.${unique_debug_arch}" debug_dest_name="/usr/src/debug/${unique_debug_src_base}-${ver_rel}.${unique_debug_arch}"
fi fi
@ -101,12 +112,12 @@ index b52822e..86a248d 100755
+ fi + fi
id=$(${lib_rpm_dir}/debugedit -b $debug_base_name -d $debug_dest_name \ id=$(${lib_rpm_dir}/debugedit -b $debug_base_name -d $debug_dest_name \
- -i $build_id_seed -l "$SOURCEFILE" "$f") || exit - -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 if [ $nlinks -gt 1 ]; then
eval linkedid_$inum=\$id eval linkedid_$inum=\$id
fi fi
diff --git a/tests/rpmbuildid.at b/tests/rpmbuildid.at diff --git a/tests/rpmbuildid.at b/tests/rpmbuildid.at
index dc47b90..88ce226 100644 index 158ce122d..4fab3d5dc 100644
--- a/tests/rpmbuildid.at --- a/tests/rpmbuildid.at
+++ b/tests/rpmbuildid.at +++ b/tests/rpmbuildid.at
@@ -1060,6 +1060,128 @@ debug dup id in debug package @@ -1060,6 +1060,128 @@ debug dup id in debug package
@ -239,7 +250,7 @@ index dc47b90..88ce226 100644
# with _unique_build_ids defined. # with _unique_build_ids defined.
AT_SETUP([rpmbuild buildid unique r1 r2]) AT_SETUP([rpmbuild buildid unique r1 r2])
diff --git a/tools/debugedit.c b/tools/debugedit.c diff --git a/tools/debugedit.c b/tools/debugedit.c
index b618dce..8444e03 100644 index b618dceb5..8444e030e 100644
--- a/tools/debugedit.c --- a/tools/debugedit.c
+++ b/tools/debugedit.c +++ b/tools/debugedit.c
@@ -85,6 +85,7 @@ char *dest_dir = NULL; @@ -85,6 +85,7 @@ char *dest_dir = NULL;
@ -269,3 +280,6 @@ index b618dce..8444e03 100644
goto print; goto print;
/* Clear the old bits so they do not affect the new hash. */ /* Clear the old bits so they do not affect the new hash. */
--
2.13.2

View File

@ -0,0 +1,39 @@
From ba8f2239de528f02d272aed71599a4a560ddd238 Mon Sep 17 00:00:00 2001
From: Robin Lee <cheeselee@fedoraproject.org>
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 '(<internal>|<built-in>)$' |
(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

View File

@ -0,0 +1,81 @@
From 387acd5cb74c968b4751a1c2c731964fc1ab6c3f Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
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 <mark@klomp.org>
(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

View File

@ -1,19 +1,30 @@
commit 038bfe01796f751001e02de41c5d8678f511f366 From 534fae47e4d05fd27c277c9e04ad238e608289f5 Mon Sep 17 00:00:00 2001
Author: Michal Marek <mmarek@suse.com> From: Michal Marek <mmarek@suse.com>
Date: Sat Sep 10 23:13:24 2016 +0200 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.
This siplifies the handling of hardlinks a bit and allows a later patch
to parallelize the debuginfo extraction. Signed-off-by: Michal Marek <mmarek@suse.com>
Signed-off-by: Michal Marek <mmarek@suse.com> (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 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 --- a/scripts/find-debuginfo.sh
+++ b/scripts/find-debuginfo.sh +++ b/scripts/find-debuginfo.sh
@@ -283,32 +283,36 @@ @@ -283,32 +283,36 @@ set -o pipefail
strict_error=ERROR strict_error=ERROR
$strict || strict_error=WARNING $strict || strict_error=WARNING
@ -65,17 +76,17 @@ index d83c3e2..6dcd5a4 100644
echo "extracting debug info from $f" echo "extracting debug info from $f"
build_id_seed= build_id_seed=
@@ -328,9 +332,6 @@ @@ -328,9 +332,6 @@ while read nlinks inum f; do
fi fi
id=$(${lib_rpm_dir}/debugedit -b $debug_base_name -d $debug_dest_name \ 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 - if [ $nlinks -gt 1 ]; then
- eval linkedid_$inum=\$id - eval linkedid_$inum=\$id
- fi - fi
if [ -z "$id" ]; then if [ -z "$id" ]; then
echo >&2 "*** ${strict_error}: No build ID note found in $f" echo >&2 "*** ${strict_error}: No build ID note found in $f"
$strict && exit 2 $strict && exit 2
@@ -376,7 +377,21 @@ @@ -376,7 +377,21 @@ while read nlinks inum f; do
echo "./${f#$RPM_BUILD_ROOT}" >> "$ELFBINSFILE" echo "./${f#$RPM_BUILD_ROOT}" >> "$ELFBINSFILE"
@ -98,3 +109,6 @@ index d83c3e2..6dcd5a4 100644
# Invoke the DWARF Compressor utility. # Invoke the DWARF Compressor utility.
if $run_dwz \ if $run_dwz \
--
2.13.2

View File

@ -0,0 +1,37 @@
From 3e0419ebc11494d9848decfdfb4909cbce9448b7 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
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 <mark@klomp.org>
(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

View File

@ -1,17 +1,26 @@
commit 1b338aa84d4c67fefa957352a028eaca1a45d1f6 From aede94115e077e87504b03bf668ef375290200ad Mon Sep 17 00:00:00 2001
Author: Michal Marek <mmarek@suse.com> From: Michal Marek <mmarek@suse.com>
Date: Sat Sep 10 23:13:25 2016 +0200 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 <n> option, which, when used, will spawn <n> processes to do the
debuginfo extraction in parallel. A pipe is used to dispatch the files among
Add a -j <n> option, which, when used, will spawn <n> processes to do the the processes.
debuginfo extraction in parallel. A pipe is used to dispatch the files among
the processes. Signed-off-by: Michal Marek <mmarek@suse.com>
Signed-off-by: Michal Marek <mmarek@suse.com> (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 diff --git a/macros.in b/macros.in
index b03c5a9..8bde2d7 100644 index c5b1a0b26..93e360c79 100644
--- a/macros.in --- a/macros.in
+++ b/macros.in +++ b/macros.in
@@ -180,7 +180,7 @@ @@ -180,7 +180,7 @@
@ -24,10 +33,10 @@ index b03c5a9..8bde2d7 100644
# Template for debug information sub-package. # Template for debug information sub-package.
diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh 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 --- a/scripts/find-debuginfo.sh
+++ b/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 # Base given by --unique-debug-src-base
unique_debug_src_base= unique_debug_src_base=
@ -37,7 +46,7 @@ index 6dcd5a4..2016222 100644
BUILDDIR=. BUILDDIR=.
out=debugfiles.list out=debugfiles.list
nout=0 nout=0
@@ -137,6 +140,13 @@ @@ -137,6 +140,13 @@ while [ $# -gt 0 ]; do
-r) -r)
strip_r=true strip_r=true
;; ;;
@ -51,7 +60,7 @@ index 6dcd5a4..2016222 100644
*) *)
BUILDDIR=$1 BUILDDIR=$1
shift shift
@@ -389,9 +399,56 @@ @@ -389,9 +399,56 @@ do_file()
fi fi
} }
@ -111,3 +120,6 @@ index 6dcd5a4..2016222 100644
# Invoke the DWARF Compressor utility. # Invoke the DWARF Compressor utility.
if $run_dwz \ if $run_dwz \
--
2.13.2

View File

@ -1,24 +1,29 @@
commit 4842adfd91c3b37744c66d9f01c0112468fdbf37 From ac275c650fee13ec0fd204bf2b05fbff01a053cd Mon Sep 17 00:00:00 2001
Author: Michael Schroeder <mls@suse.de> From: Michael Schroeder <mls@suse.de>
Date: Tue Mar 28 14:20:50 2017 +0200 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.
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
Remove implcit usage of the old --ver-rel option for --unique-debug-arch the version included.
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 --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 diff --git a/macros.in b/macros.in
index 7656c06..0ddde29 100644 index 93e360c79..b5bf26ac9 100644
--- a/macros.in --- a/macros.in
+++ b/macros.in +++ b/macros.in
@@ -172,7 +172,18 @@ @@ -180,7 +180,18 @@
# the script. See the script for details. # the script. See the script for details.
# #
%__debug_install_post \ %__debug_install_post \
@ -39,7 +44,7 @@ index 7656c06..0ddde29 100644
# Template for debug information sub-package. # Template for debug information sub-package.
diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh 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 --- a/scripts/find-debuginfo.sh
+++ b/scripts/find-debuginfo.sh +++ b/scripts/find-debuginfo.sh
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
@ -127,7 +132,7 @@ index 8effac8..1ebc159 100755
debugdn=${debugdir}${dn} debugdn=${debugdir}${dn}
debugfn=${debugdn}/${bn} debugfn=${debugdn}/${bn}
} }
@@ -310,23 +310,21 @@ @@ -325,23 +310,21 @@ do_file()
[ -f "${debugfn}" ] && return [ -f "${debugfn}" ] && return
echo "extracting debug info from $f" echo "extracting debug info from $f"
@ -148,11 +153,11 @@ index 8effac8..1ebc159 100755
no_recompute="-n" no_recompute="-n"
fi fi
- id=$(${lib_rpm_dir}/debugedit -b $debug_base_name -d $debug_dest_name \ - 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" \ + id=$(${lib_rpm_dir}/debugedit -b "$debug_base_name" -d "$debug_dest_name" \
+ $no_recompute -i \ + $no_recompute -i \
+ ${build_id_seed:+--build-id-seed="$build_id_seed"} \ + ${build_id_seed:+--build-id-seed="$build_id_seed"} \
+ -l "$SOURCEFILE" "$f") || exit + -l "$SOURCEFILE" "$f") || exit
if [ -z "$id" ]; then if [ -z "$id" ]; then
echo >&2 "*** ${strict_error}: No build ID note found in $f" echo >&2 "*** ${strict_error}: No build ID note found in $f"
$strict && exit 2 $strict && exit 2
@ -165,3 +170,6 @@ index 8effac8..1ebc159 100755
fi fi
mkdir -p "${RPM_BUILD_ROOT}${debug_dest_name}" mkdir -p "${RPM_BUILD_ROOT}${debug_dest_name}"
--
2.13.2

View File

@ -0,0 +1,125 @@
From 01145b9b68b89d0d4d6d5a77d9af70dba7dbc9a3 Mon Sep 17 00:00:00 2001
From: Michael Schroeder <mls@suse.de>
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 <name>-<ver>-<rel>.<arch>
%_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

View File

@ -1,134 +1,27 @@
commit 538cecf0f1fe127dc416afce7a7ee6f94fdb1ad7 From bc5c404e7415108f15a8cd5e8514a74b43a7755a Mon Sep 17 00:00:00 2001
Author: Michael Schroeder <mls@suse.de> From: Michael Schroeder <mls@suse.de>
Date: Tue Mar 28 14:21:40 2017 +0200 Date: Fri, 24 Mar 2017 15:35:23 +0100
Subject: [PATCH 37/49] Support debuginfo subpackages
Support debugsource subpackages We do this by filtering the debuginfo files generated by find-debuginfo.sh
with the files from the (sub)packages.
This can be enabled by setting the _debugsource_packages macro.
diff --git a/macros.in b/macros.in This commit is heavily based on a patch by Richard Biener.
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 <name>-<ver>-<rel>.<arch>
%_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()
{
commit 980749fdce055254ca92ee7e2595b16750b699a2 (cherry picked from commit 980749fdce055254ca92ee7e2595b16750b699a2)
Author: Michael Schroeder <mls@suse.de>
Date: Fri Mar 24 15:35:23 2017 +0100
Support debuginfo subpackages Conflicts:
build/files.c
We do this by filtering the debuginfo files generated by find-debuginfo.sh ---
with the files from the (sub)packages. build/files.c | 285 ++++++++++++++++++++++++++++++++++++++++++++--
build/parsePreamble.c | 10 +-
This commit is heavily based on a patch by Richard Biener. 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 diff --git a/build/files.c b/build/files.c
index f58569e..e3fc8d6 100644 index 2f02587f0..779a2a102 100644
--- a/build/files.c --- a/build/files.c
+++ b/build/files.c +++ b/build/files.c
@@ -40,6 +40,16 @@ @@ -40,6 +40,16 @@
@ -148,7 +41,7 @@ index f58569e..e3fc8d6 100644
/** /**
*/ */
enum specfFlags_e { 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)) { if (lstat(flp->diskPath, &sbuf) == 0 && S_ISREG (sbuf.st_mode)) {
/* We determine whether this is a main or /* We determine whether this is a main or
debug ELF based on path. */ debug ELF based on path. */
@ -159,7 +52,7 @@ index f58569e..e3fc8d6 100644
/* For the main package files mimic what find-debuginfo.sh does. /* For the main package files mimic what find-debuginfo.sh does.
Only check build-ids for executable files. Debug files are 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) { if (rc == 0) {
char *attrstr; char *attrstr;
/* Add .build-id directories to hold the subdirs/symlinks. */ /* 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); mainiddir = rpmGetPath(fl->buildRoot, BUILD_ID_DIR, NULL);
debugiddir = rpmGetPath(fl->buildRoot, DEBUG_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 /* Don't add anything more when an error occured. But do
cleanup. */ cleanup. */
if (rc == 0) { if (rc == 0) {
@ -179,7 +72,7 @@ index f58569e..e3fc8d6 100644
char *buildidsubdir; char *buildidsubdir;
char subdir[4]; 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". */ which don't end in ".debug". */
int pathlen = strlen(paths[i]); int pathlen = strlen(paths[i]);
int debuglen = strlen(".debug"); int debuglen = strlen(".debug");
@ -188,7 +81,7 @@ index f58569e..e3fc8d6 100644
int vralen = vra == NULL ? 0 : strlen(vra); int vralen = vra == NULL ? 0 : strlen(vra);
if (pathlen > prefixlen + debuglen + vralen if (pathlen > prefixlen + debuglen + vralen
&& strcmp ((paths[i] + pathlen - debuglen), && strcmp ((paths[i] + pathlen - debuglen),
@@ -2659,24 +2666,273 @@ exit: @@ -2621,24 +2628,273 @@ exit:
return rc; return rc;
} }
@ -462,7 +355,7 @@ index f58569e..e3fc8d6 100644
if (pkg->fileList == NULL) if (pkg->fileList == NULL)
continue; 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); nvr = headerGetAsString(pkg->header, RPMTAG_NVRA);
rpmlog(RPMLOG_NOTICE, _("Processing files: %s\n"), nvr); rpmlog(RPMLOG_NOTICE, _("Processing files: %s\n"), nvr);
free(nvr); free(nvr);
@ -482,7 +375,7 @@ index f58569e..e3fc8d6 100644
goto exit; goto exit;
a = headerGetString(pkg->header, RPMTAG_ARCH); 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: exit:
check_fileList = freeStringBuf(check_fileList); check_fileList = freeStringBuf(check_fileList);
@ -492,7 +385,7 @@ index f58569e..e3fc8d6 100644
return rc; return rc;
} }
diff --git a/build/parsePreamble.c b/build/parsePreamble.c diff --git a/build/parsePreamble.c b/build/parsePreamble.c
index 6d25f4c..5715d25 100644 index 6be440369..3bb833cff 100644
--- a/build/parsePreamble.c --- a/build/parsePreamble.c
+++ b/build/parsePreamble.c +++ b/build/parsePreamble.c
@@ -544,6 +544,13 @@ static void fillOutMainPackage(Header h) @@ -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) static rpmRC readIcon(Header h, const char * file)
{ {
char *fn = NULL; 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) { if (pkg != spec->packages) {
@ -520,10 +413,10 @@ index 6d25f4c..5715d25 100644
if (checkForRequired(pkg->header, NVR)) { if (checkForRequired(pkg->header, NVR)) {
diff --git a/build/parseSpec.c b/build/parseSpec.c diff --git a/build/parseSpec.c b/build/parseSpec.c
index 2928e85..d0c42a4 100644 index 9fff0e2c8..582060770 100644
--- a/build/parseSpec.c --- a/build/parseSpec.c
+++ b/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. */ /* Add extra provides to package. */
@ -533,10 +426,10 @@ index 2928e85..d0c42a4 100644
const char *arch, *name; const char *arch, *name;
char *evr, *isaprov; char *evr, *isaprov;
diff --git a/build/rpmbuild_internal.h b/build/rpmbuild_internal.h 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 --- a/build/rpmbuild_internal.h
+++ b/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 /** \ingroup rpmbuild
@ -550,7 +443,7 @@ index 948dc31..46d9676 100644
* Add rpmlib feature dependency. * Add rpmlib feature dependency.
* @param pkg package * @param pkg package
* @param feature rpm feature name (i.e. "rpmlib(Foo)" for feature Foo) * @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 RPM_GNUC_INTERNAL
rpmRC checkForEncoding(Header h, int addtag); rpmRC checkForEncoding(Header h, int addtag);
@ -568,10 +461,10 @@ index 948dc31..46d9676 100644
} }
#endif #endif
diff --git a/macros.in b/macros.in diff --git a/macros.in b/macros.in
index 007b8d4..cb65f4f 100644 index d104ad5a7..0c055a7fd 100644
--- a/macros.in --- a/macros.in
+++ b/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 # Whether rpm should put debug source files into its own subpackage
#%_debugsource_packages 1 #%_debugsource_packages 1
@ -581,67 +474,6 @@ index 007b8d4..cb65f4f 100644
# #
# Use internal dependency generator rather than external helpers? # Use internal dependency generator rather than external helpers?
%_use_internal_dependency_generator 1 %_use_internal_dependency_generator 1
--
2.13.2
commit a517554e36666f58724620347a4b8224471d2225
Author: Michael Schroeder <mls@suse.de>
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

View File

@ -0,0 +1,70 @@
From 9f826d903dabbc2ce199560e296224c320bb840f Mon Sep 17 00:00:00 2001
From: Michael Schroeder <mls@suse.de>
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

View File

@ -1,5 +1,27 @@
From faaf3bbfc261f49eda996801b50996fb1066092f Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
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 <mark@klomp.org>
(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 diff --git a/tools/debugedit.c b/tools/debugedit.c
index abd2ca4..a271b91 100644 index bf115136c..682189929 100644
--- a/tools/debugedit.c --- a/tools/debugedit.c
+++ b/tools/debugedit.c +++ b/tools/debugedit.c
@@ -662,7 +662,8 @@ canonicalize_path (const char *s, char *d) @@ -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 /* Most strings will be in the existing debug string table. But to
--
2.13.2

View File

@ -0,0 +1,43 @@
From b4d166652011f0d0e8573feb616283698f6cf848 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
Date: Wed, 28 Jun 2017 13:34:55 +0200
Subject: [PATCH 40/49] find-debuginfo.sh: Filter out all <built-in> 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 <built-in> or <__thread_local_inner macros>.
We already filtered out the strings "<internal>" and "<built-in>".
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 <mark@klomp.org>
(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 '(<internal>|<built-in>)$' |
+ # Filter out anything compiler generated which isn't a source file.
+ # e.g. <internal>, <built-in>, <__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

View File

@ -1,24 +1,28 @@
commit 0f162dc41f2051eab237bd223356d88e94a07580 From f22cb2890026544499ee4f1a309a44c71e0b8152 Mon Sep 17 00:00:00 2001
Author: Mark Wielaard <mark@klomp.org> From: Mark Wielaard <mark@klomp.org>
Date: Mon Jun 26 17:38:30 2017 +0200 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
dwz -m multi only works when there are multiple .debug input files. the shared debug info into a separate file and dwz will complain:
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.
dwz: Too few files for multifile optimization. So only add -m multi if there is more than one .debug file.
So only add -m multi if there is more than one .debug file. Signed-off-by: Mark Wielaard <mark@klomp.org>
(cherry picked from commit 0f162dc41f2051eab237bd223356d88e94a07580)
Signed-off-by: Mark Wielaard <mark@klomp.org> ---
scripts/find-debuginfo.sh | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh 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 --- a/scripts/find-debuginfo.sh
+++ b/scripts/find-debuginfo.sh +++ b/scripts/find-debuginfo.sh
@@ -458,8 +458,8 @@ fi @@ -442,8 +442,8 @@ fi
# Invoke the DWARF Compressor utility. # Invoke the DWARF Compressor utility.
if $run_dwz \ if $run_dwz \
&& [ -d "${RPM_BUILD_ROOT}/usr/lib/debug" ]; then && [ -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_name="${RPM_PACKAGE_NAME}-${RPM_PACKAGE_VERSION}-${RPM_PACKAGE_RELEASE}.${RPM_ARCH}"
dwz_multifile_suffix= dwz_multifile_suffix=
dwz_multifile_idx=0 dwz_multifile_idx=0
@@ -468,14 +468,16 @@ if $run_dwz \ @@ -452,14 +452,16 @@ if $run_dwz \
dwz_multifile_suffix=".${dwz_multifile_idx}" dwz_multifile_suffix=".${dwz_multifile_idx}"
done done
dwz_multfile_name="${dwz_multifile_name}${dwz_multifile_suffix}" dwz_multfile_name="${dwz_multifile_name}${dwz_multifile_suffix}"
@ -48,3 +52,6 @@ index 85a862f..360982d 100755
else else
echo >&2 "*** ERROR: DWARF compression requested, but no dwz installed" echo >&2 "*** ERROR: DWARF compression requested, but no dwz installed"
exit 2 exit 2
--
2.13.2

View File

@ -1,20 +1,25 @@
commit 173e5642a97c535f8bdaac5bf88854a103cc125b From 201b856c02aeb3c4fc6b3a8b96ce8817278f4fbf Mon Sep 17 00:00:00 2001
Author: Mark Wielaard <mark@klomp.org> From: Mark Wielaard <mark@klomp.org>
Date: Mon Jun 26 13:35:48 2017 +0200 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,
This adds some missing documentation for rpm macros and find-debuginfo.sh --unique-debug-suffix SUFFIX and --unique-debug-src-base BASE.
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 <mark@klomp.org>
(cherry picked from commit 173e5642a97c535f8bdaac5bf88854a103cc125b)
Signed-off-by: Mark Wielaard <mark@klomp.org> ---
macros.in | 14 ++++++++------
scripts/find-debuginfo.sh | 28 ++++++++++++++++++++++------
2 files changed, 30 insertions(+), 12 deletions(-)
diff --git a/macros.in b/macros.in diff --git a/macros.in b/macros.in
index b095719..3e9b73f 100644 index 0c055a7fd..2a114ccd7 100644
--- a/macros.in --- a/macros.in
+++ b/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 # Whether build-ids should be made unique between package version/releases
# when generating debuginfo packages. If set to 1 this will pass # when generating debuginfo packages. If set to 1 this will pass
@ -26,7 +31,7 @@ index b095719..3e9b73f 100644
%_unique_build_ids 1 %_unique_build_ids 1
# Do not recompute build-ids but keep whatever is in the ELF file already. # 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, # Whether .debug files should be made unique between package version,
# release and architecture. If set to 1 this will pass # 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 # Whether rpm should put debug source files into its own subpackage
diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh 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 --- a/scripts/find-debuginfo.sh
+++ b/scripts/find-debuginfo.sh +++ b/scripts/find-debuginfo.sh
@@ -3,11 +3,14 @@ @@ -3,11 +3,14 @@
@ -104,3 +109,6 @@ index 0233d92..85a862f 100755
# #
# All file names in switches are relative to builddir (. if not given). # All file names in switches are relative to builddir (. if not given).
# #
--
2.13.2

View File

@ -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 <sgallagh@redhat.com> From: Stephen Gallagher <sgallagh@redhat.com>
Date: Mon, 16 Jan 2017 09:19:43 -0500 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 Autotools: add --with-crypto=openssl
This enables RPM to locate the appropriate flags for compiling 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 https://github.com/rpm-software-management/rpm/issues/119
(cherry picked from commit 64028f9a1c25ada8ffc7a48775f526600edcbf85) (cherry picked from commit 64028f9a1c25ada8ffc7a48775f526600edcbf85)
Conflicts:
Makefile.am
configure.ac
--- ---
INSTALL | 27 +- INSTALL | 27 +-
Makefile.am | 17 +- Makefile.am | 17 +-
@ -70,7 +74,7 @@ index 60536e316..8eefef799 100644
default database backend. BDB can be downloaded from default database backend. BDB can be downloaded from
http://www.oracle.com/technology/software/products/berkeley-db/index.html http://www.oracle.com/technology/software/products/berkeley-db/index.html
diff --git a/Makefile.am b/Makefile.am diff --git a/Makefile.am b/Makefile.am
index 6b37b5898..42a77c0d4 100644 index 1b77730aa..a5268030b 100644
--- a/Makefile.am --- a/Makefile.am
+++ b/Makefile.am +++ b/Makefile.am
@@ -41,6 +41,7 @@ AM_CPPFLAGS += -I$(top_srcdir)/build @@ -41,6 +41,7 @@ AM_CPPFLAGS += -I$(top_srcdir)/build
@ -136,7 +140,7 @@ index 6b37b5898..42a77c0d4 100644
if LIBELF if LIBELF
diff --git a/configure.ac b/configure.ac diff --git a/configure.ac b/configure.ac
index 91fadbade..d21b67220 100644 index e6362535b..65052870a 100644
--- a/configure.ac --- a/configure.ac
+++ b/configure.ac +++ b/configure.ac
@@ -243,18 +243,30 @@ AC_CHECK_HEADERS([dwarf.h], [ @@ -243,18 +243,30 @@ AC_CHECK_HEADERS([dwarf.h], [
@ -1165,5 +1169,5 @@ index 000000000..aea460e39
+ return sa; + return sa;
+} +}
-- --
2.12.0 2.13.2

View File

@ -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 <ffesti@redhat.com> From: Florian Festi <ffesti@redhat.com>
Date: Tue, 28 Feb 2017 10:57:56 +0100 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() parsePreamble.c and parseRCPOT()
Using the FLGS tags is awkward and inconsistent with other part of the code Using the FLGS tags is awkward and inconsistent with other part of the code
@ -148,5 +148,5 @@ index 73915015a..ce192fa9c 100644
if (rc) { if (rc) {
-- --
2.13.1 2.13.2

View File

@ -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 <ffesti@redhat.com> From: Florian Festi <ffesti@redhat.com>
Date: Tue, 28 Feb 2017 17:42:21 +0100 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) (cherry picked from commit 43d230884365d90d42184a0000f44bb33e5f1ab8)
--- ---
@ -32,5 +33,5 @@ index ce192fa9c..921814ad1 100644
continue; continue;
tagflags = RPMSENSE_FIND_REQUIRES; tagflags = RPMSENSE_FIND_REQUIRES;
-- --
2.13.1 2.13.2

View File

@ -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 <ffesti@redhat.com> From: Florian Festi <ffesti@redhat.com>
Date: Thu, 9 Mar 2017 12:12:32 +0100 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 Broken with 9d5bbd9774d00f50749bb045217eaf91c87b6de0
@ -55,5 +55,5 @@ index bd728ed2d..6c2aead4e 100644
goto exit; goto exit;
} }
-- --
2.13.1 2.13.2

View File

@ -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 <ffesti@redhat.com> From: Florian Festi <ffesti@redhat.com>
Date: Thu, 9 Mar 2017 14:02:10 +0100 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 conflicts
(cherry picked from commit cb3dc0b43bd9a119196a527504d03d57d0785092) (cherry picked from commit cb3dc0b43bd9a119196a527504d03d57d0785092)
@ -26,5 +26,5 @@ index 6c2aead4e..4d500c1df 100644
case RPMTAG_FILETRIGGERIN: case RPMTAG_FILETRIGGERIN:
nametag = RPMTAG_FILETRIGGERNAME; nametag = RPMTAG_FILETRIGGERNAME;
-- --
2.13.1 2.13.2

View File

@ -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 <ignatenko@redhat.com> From: Igor Gnatenko <ignatenko@redhat.com>
Date: Sat, 25 Feb 2017 12:28:16 +0100 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 generators
Mostly achieved by replacing custom parser with the parseRCPOT(). 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 Closes: https://github.com/rpm-software-management/rpm/issues/167
Signed-off-by: Igor Gnatenko <ignatenko@redhat.com> Signed-off-by: Igor Gnatenko <ignatenko@redhat.com>
(cherry picked from commit 8f509d669b9ae79c86dd510c5a4bc5109f60d733) (cherry picked from commit 8f509d669b9ae79c86dd510c5a4bc5109f60d733)
Conflicts:
build/rpmfc.c
--- ---
build/parsePreamble.c | 4 +-- build/parsePreamble.c | 4 +--
build/parseReqs.c | 9 +++-- build/parseReqs.c | 9 +++--
@ -272,5 +275,5 @@ index 921814ad1..7fa8227d0 100644
if (rc) { if (rc) {
-- --
2.13.1 2.13.2

View File

@ -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 <ffesti@redhat.com> From: Florian Festi <ffesti@redhat.com>
Date: Wed, 31 May 2017 10:42:03 +0200 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 dependencies
Resolves regression introduced with 8f509d6 Resolves regression introduced with 8f509d6
@ -26,5 +26,5 @@ index 7fa8227d0..72f29ddf5 100644
} }
-- --
2.13.1 2.13.2

View File

@ -0,0 +1,25 @@
From bacdd7eeac9abb5046f5163a79ec8296287d83fc Mon Sep 17 00:00:00 2001
From: Igor Gnatenko <ignatenko@redhat.com>
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

View File

@ -1,36 +0,0 @@
commit 78df22afc540c6c34003c3cb8ecc3ee686fbef76
Author: Mark Wielaard <mark@klomp.org>
Date: Wed Jun 28 13:25:12 2017 +0200
find-debuginfo.sh: Filter out all <built-in> 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 <built-in> or <__thread_local_inner macros>.
We already filtered out the strings "<internal>" and "<built-in>".
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 <mark@klomp.org>
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 '(<internal>|<built-in>)$' |
+ # Filter out anything compiler generated which isn't a source file.
+ # e.g. <internal>, <built-in>, <__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

View File

@ -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}"

View File

@ -1,107 +0,0 @@
commit c707ab26362e795d3f9dba4eb87dc7ed99a28bcb
Author: Robin Lee <cheeselee@fedoraproject.org>
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 '(<internal>|<built-in>)$' |
(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 <mark@klomp.org>
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 <mark@klomp.org>
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;
+ }
}
}

View File

@ -56,74 +56,79 @@ Patch4: rpm-4.8.1-use-gpg2.patch
Patch5: rpm-4.12.0-rpm2cpio-hack.patch Patch5: rpm-4.12.0-rpm2cpio-hack.patch
# Patches already upstream: # 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 Patch140: 0002-brp-python-bytecompile-Process-python-lib-dirs-even-.patch
Patch142: rpm-4.13.x-fix-refcount-for-spec_type.patch Patch142: 0003-Fix-number-of-references-on-spec_Type-114.patch
# debuginfo backports (#1427970) # debuginfo backports (#1427970)
Patch250: 0001-Add-build-id-links-to-rpm-for-all-ELF-files.patch Patch250: 0004-Add-build-id-links-to-rpm-for-all-ELF-files.patch
Patch251: 0002-Make-it-possible-to-have-unique-build-ids-across-bui.patch Patch251: 0005-Make-it-possible-to-have-unique-build-ids-across-bui.patch
Patch252: 0003-Make-adding-GDB-index-sections-configurable.patch Patch252: 0006-Make-adding-GDB-index-sections-configurable.patch
Patch253: 0004-Add-option-to-have-unique-debug-file-names-across-ve.patch Patch253: 0007-Add-option-to-have-unique-debug-file-names-across-ve.patch
Patch254: 0005-Fix-behavior-when-_build_id_links-is-undefined.patch Patch254: 0008-Fix-behavior-when-_build_id_links-is-undefined.patch
Patch255: 0006-Fix-debuginfo-etc-when-subpackages-have-different-ve.patch Patch255: 0009-Fix-debuginfo-etc-when-subpackages-have-different-ve.patch
Patch256: 0007-Only-process-regular-files-when-generating-build-ids.patch Patch256: 0010-Only-process-regular-files-when-generating-build-ids.patch
Patch257: 0008-configure.ac-use-LIBDW-always-conditionally.patch Patch257: 0011-configure.ac-use-LIBDW-always-conditionally.patch
Patch258: 0009-Fix-libdw-configure-check.patch Patch258: 0012-Fix-libdw-configure-check.patch
Patch259: 0010-debugedit-Support-String-Line-table-rewriting-for-la.patch Patch259: 0013-debugedit-Support-String-Line-table-rewriting-for-la.patch
Patch260: 0011-Add-option-to-have-unique-debug-source-dirs-across-v.patch Patch260: 0014-Add-option-to-have-unique-debug-source-dirs-across-v.patch
# debuginfo build-id warn/error fix (#1430587) # debuginfo build-id warn/error fix (#1430587)
Patch261: 0012-generateBuildIDs-Don-t-warn-or-error-for-object-file.patch Patch261: 0015-generateBuildIDs-Don-t-warn-or-error-for-object-file.patch
Patch262: 0013-missing_build_ids_terminate_build.patch Patch262: 0016-build-files.c-Unset-__debug_package-implies-missing-.patch
Patch263: 0014-generateBuildIDs-Fix-error-handling.patch Patch263: 0017-generateBuildIDs-Fix-error-handling.patch
Patch264: 0015-reset-buildid-file-attrs.patch Patch264: 0018-Make-sure-to-reset-file-attributes-for-generated-bui.patch
Patch265: 0016-debugedit-replace-files.patch Patch265: 0019-rpmbuild-Reset-attrFlags-in-generateBuildIDs.patch
Patch266: 0017-do-not-process-buildi-ds-for-noarch.patch Patch266: 0020-debugedit-Fix-edit_dwarf2_line-replace_dirs-replace_.patch
Patch267: 0018-update-build-id-endian.patch Patch267: 0021-build-files.c-processPackageFiles-Don-t-call-generat.patch
Patch268: 0019-fix-sed-build-id-match-test.patch Patch268: 0022-debugedit-Fix-cross-endian-build-id-reading-and-upda.patch
Patch269: 0020-build-files-exec-build-id.patch Patch269: 0023-tests-tpmbuild.at-Make-file-sed-regexp-more-strict-t.patch
Patch270: 0021-debugedit-Fix-off-by-one-adding-DW_FORM_string-repla.patch Patch270: 0024-tests-rpmbuildid.at-Make-file-sed-regexp-more-strict.patch
Patch271: 0022-unbreak-short-circuit.patch Patch271: 0025-build-files.c-Only-check-build-ids-for-executable-fi.patch
Patch272: 0023-minisymtab-exe-sh.patch Patch272: 0026-debugedit-Fix-off-by-one-adding-DW_FORM_string-repla.patch
Patch273: 0024-no-recompute-build-id.patch Patch273: 0027-Unbreak-short-circuited-binary-builds.patch
Patch274: 0025-buildid-reset-attrs.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) # 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 # Parallel debuginfo processing
Patch281: find-debuginfo-split-traversal-and-extraction.patch Patch281: 0032-find-debuginfo.sh-Split-directory-traversal-and-debu.patch
Patch282: find-debuginfo-split-traversal-and-extraction-fix.patch Patch282: 0033-find-debuginfo.sh-Use-return-not-continue-to-break-o.patch
Patch283: find-debuginfo-process-files-in-parallel.patch Patch283: 0034-find-debuginfo.sh-Process-files-in-parallel.patch
# Support debugsource and debuginfo subpackages # Support debugsource and debuginfo subpackages
Patch285: find-debuginfo-untangle-unique-build-options.patch Patch284: 0035-Untangle-unique-build-options-in-find-debuginfo.sh.patch
Patch286: debugsrc-and-sub-debuginfo-packages.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. # 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 <built-in> like fake file names. # find-debuginfo.sh: Filter out all <built-in> 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. # 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. # 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 # 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 # Rich dependencies coming from dependency generatos
Patch310: 0001-Use-RPMTAG_-NAME-instead-of-RPMTAG_-FLAGS-in-parsePr.patch Patch310: 0044-Use-RPMTAG_-NAME-instead-of-RPMTAG_-FLAGS-in-parsePr.patch
Patch311: 0002-Fix-check-for-weak-deps-in-external-dependency-gener.patch Patch311: 0045-Fix-check-for-weak-deps-in-external-dependency-gener.patch
Patch312: 0003-Fix-check-whether-to-allow-rich-deps-in-a-given-tag.patch Patch312: 0046-Fix-check-whether-to-allow-rich-deps-in-a-given-tag.patch
Patch313: 0004-Re-enable-rich-dependecies-for-build-requires-and-co.patch Patch313: 0047-Re-enable-rich-dependecies-for-build-requires-and-co.patch
Patch314: 0005-add-support-for-rich-dependencies-from-dependency-ge.patch Patch314: 0048-add-support-for-rich-dependencies-from-dependency-ge.patch
Patch315: 0006-Pass-proper-file-index-when-recording-generated-depe.patch Patch315: 0049-Pass-proper-file-index-when-recording-generated-depe.patch
# These are not yet upstream # These are not yet upstream
Patch902: rpm-4.7.1-geode-i686.patch Patch902: rpm-4.7.1-geode-i686.patch