From 20636f4358db0cb85f2251333190626dc2e4ee02 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 19 May 2017 23:11:39 +0200 Subject: [PATCH] rpmbuild: Reset attrFlags in generateBuildIDs. Debuginfo directories and files could be marked as configuration files if the file list ended with a config file. Patch by Panu Matilainen. Testcase by me. https://bugzilla.redhat.com/show_bug.cgi?id=1449732 Signed-off-by: Mark Wielaard (cherry picked from commit 9d942049cf929d5a053c239cdd64f5b97d182c14) Conflicts: tests/Makefile.am --- build/files.c | 2 ++ tests/Makefile.am | 1 + tests/data/SPECS/hello-config-buildid.spec | 30 ++++++++++++++++++++++++++++ tests/rpmbuildid.at | 32 ++++++++++++++++++++++++++++++ 4 files changed, 65 insertions(+) create mode 100644 tests/data/SPECS/hello-config-buildid.spec diff --git a/build/files.c b/build/files.c index 728a44ba2..6c0ca39ef 100644 --- a/build/files.c +++ b/build/files.c @@ -1782,6 +1782,8 @@ static int generateBuildIDs(FileList fl) Uses parseForAttr to reset ar, arFlags, and specdFlags. Note that parseForAttr pokes at the attrstr, so we cannot just pass a static string. */ + fl->cur.attrFlags = 0; + fl->def.attrFlags = 0; fl->def.verifyFlags = RPMVERIFY_ALL; fl->cur.verifyFlags = RPMVERIFY_ALL; fl->def.specdFlags |= SPECD_VERIFY; diff --git a/tests/Makefile.am b/tests/Makefile.am index d9586da1d..83586ec67 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -70,6 +70,7 @@ EXTRA_DIST += data/SRPMS/foo-1.0-1.src.rpm EXTRA_DIST += data/SRPMS/hello-1.0-1.src.rpm EXTRA_DIST += data/SOURCES/hello.c EXTRA_DIST += data/SPECS/hello-attr-buildid.spec +EXTRA_DIST += data/SPECS/hello-config-buildid.spec # testsuite voodoo AUTOTEST = $(AUTOM4TE) --language=autotest diff --git a/tests/data/SPECS/hello-config-buildid.spec b/tests/data/SPECS/hello-config-buildid.spec new file mode 100644 index 000000000..ca2d30db3 --- /dev/null +++ b/tests/data/SPECS/hello-config-buildid.spec @@ -0,0 +1,30 @@ +Name: test +Version: 1.0 +Release: 1 +Summary: Test + +License: Public Domain +URL: https://fedoraproject.org +Source: hello.c + +%description +%{summary}. + +%prep +%autosetup -c -D -T +cp -a %{S:0} . + +%build +gcc -g hello.c -o hello + +%install +mkdir -p %{buildroot}/bin +install -D -p -m 0755 -t %{buildroot}/bin hello +mkdir -p %{buildroot}/etc +echo "settings" > %{buildroot}/etc/config.file + +%files +%attr(644,root,root) /bin/hello +%config(noreplace) /etc/config.file + +%changelog diff --git a/tests/rpmbuildid.at b/tests/rpmbuildid.at index 1cae26dbf..a0e39782c 100644 --- a/tests/rpmbuildid.at +++ b/tests/rpmbuildid.at @@ -1202,3 +1202,35 @@ run rpm -qp --qf "[[%{filenames} %{filemodes:perms}\n]]" \ ], [ignore]) AT_CLEANUP + +# ------------------------------ +# Check that build-id directories are created with the right attributes +# even if the spec file sets config explicitly. +AT_SETUP([rpmbuild buildid config attrs]) +AT_KEYWORDS([build] [debuginfo] [buildid]) +AT_CHECK([ +rm -rf ${TOPDIR} +AS_MKDIR_P(${TOPDIR}/SOURCES) + +# Setup sources +cp "${abs_srcdir}"/data/SOURCES/hello.c ${TOPDIR}/SOURCES + +# Build, contains one ELF which should have a buildid. +run rpmbuild \ + --macros=${abs_top_builddir}/macros:${abs_top_builddir}/tests/testing/usr/local/lib/rpm/platform/%{_target_cpu}-%{_target_os}/macros:${top_srcdir}/macros.debug \ + --rcfile=${abs_top_builddir}/rpmrc \ + --define="_build_id_links compat" \ + --define "_unique_debug_names 1" \ + --define "_unique_debug_srcs 1" \ + --quiet -ba "${abs_srcdir}"/data/SPECS/hello-config-buildid.spec + +# Should contain one config file. +run rpm -c -qp ${abs_builddir}/testing/build/RPMS/*/test-1.0-1*rpm +# Should not contain config files. +run rpm -c -qp ${abs_builddir}/testing/build/RPMS/*/test-debuginfo-1.0-1*rpm +], +[0], +[/etc/config.file +], +[ignore]) +AT_CLEANUP