From 10761741bd66d2299d49a7094b916d694fcc03c7 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Fri, 20 Sep 2019 15:15:08 +0300 Subject: Resurrect %_missing_doc_files_terminate_build functionality Fixes regression from commit 1ba05a7456aafb52e89df5dd42d494d09f9ea6a4 where doc files always terminate build regardless of the macro value. Add a testcase to go. Fixes #807 (cherry picked from commit 9dff0b37bb3a6c6acbba6d5579d7a6fe03424683) --- build/files.c | 19 ++++++++++++++----- tests/Makefile.am | 1 + tests/data/SPECS/docmiss.spec | 24 ++++++++++++++++++++++++ tests/rpmbuild.at | 20 ++++++++++++++++++++ 4 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 tests/data/SPECS/docmiss.spec diff --git a/build/files.c b/build/files.c index ad4f462f1..6dfd801c8 100644 --- a/build/files.c +++ b/build/files.c @@ -1408,9 +1408,19 @@ static rpmRC addFile(FileList fl, const char * diskPath, statp = fakeStat(&(fl->cur), &statbuf); } else { int lvl = RPMLOG_ERR; + int ignore = 0; const char *msg = fl->cur.isDir ? _("Directory not found: %s\n") : _("File not found: %s\n"); - if (fl->cur.attrFlags & RPMFILE_EXCLUDE) { + if (fl->cur.attrFlags & RPMFILE_EXCLUDE) + ignore = 1; + if (fl->cur.attrFlags & RPMFILE_DOC) { + int strict_doc = + rpmExpandNumeric("%{?_missing_doc_files_terminate_build}"); + if (!strict_doc) + ignore = 1; + } + + if (ignore) { lvl = RPMLOG_WARNING; rc = RPMRC_OK; } @@ -2367,11 +2377,10 @@ static void processSpecialDir(rpmSpec spec, Package pkg, FileList fl, } if (install) { - rpmRC rc = doScript(spec, RPMBUILD_STRINGBUF, sdname, - getStringBuf(docScript), test, NULL); - - if (rc && rpmExpandNumeric("%{?_missing_doc_files_terminate_build}")) + if (doScript(spec, RPMBUILD_STRINGBUF, sdname, + getStringBuf(docScript), test, NULL)) { fl->processingFailed = 1; + } } basepath = rpmGenPath(spec->rootDir, "%{_builddir}", spec->buildSubdir); diff --git a/tests/Makefile.am b/tests/Makefile.am index 94ffd8da3..38121eda1 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -41,6 +41,7 @@ EXTRA_DIST += $(TESTSUITE_AT) ## testsuite data EXTRA_DIST += data/SPECS/attrtest.spec EXTRA_DIST += data/SPECS/buildrequires.spec +EXTRA_DIST += data/SPECS/docmiss.spec EXTRA_DIST += data/SPECS/hello.spec EXTRA_DIST += data/SPECS/hello-auto.spec EXTRA_DIST += data/SPECS/hello-r2.spec diff --git a/tests/data/SPECS/docmiss.spec b/tests/data/SPECS/docmiss.spec new file mode 100644 index 000000000..2c4937024 --- /dev/null +++ b/tests/data/SPECS/docmiss.spec @@ -0,0 +1,24 @@ +Name: docmiss +Version: 1.0 +Release: 1 +Summary: Testing missing doc behavior +Group: Testing +License: GPL + +%description +%{summary} + + +%prep +%setup -c -n %{name}-%{version} -T + +cat << EOF > COPYING +This is not a license +EOF + +cat << EOF > README +This is a dog project +EOF + +%files +%doc CREDITS COPYING README diff --git a/tests/rpmbuild.at b/tests/rpmbuild.at index 7d4e590b8..eefa26428 100644 --- a/tests/rpmbuild.at +++ b/tests/rpmbuild.at @@ -1613,6 +1613,26 @@ run rpmbuild \ []) AT_CLEANUP +AT_SETUP([rpmbuild missing doc]) +AT_KEYWORDS([build]) +AT_CHECK_UNQUOTED([ +rm -rf ${TOPDIR} + +for val in 1 0; do + run rpmbuild \ + -bb --quiet \ + --define "_missing_doc_files_terminate_build ${val}" \ + "${abs_srcdir}"/data/SPECS/docmiss.spec + echo $? +done +], +[], +[1 +0 +], +[ignore]) +AT_CLEANUP + AT_SETUP([%if, %else, %elif test basic]) AT_KEYWORDS([if else elif build]) AT_CHECK([ -- cgit v1.2.1