summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPanu Matilainen <pmatilai@redhat.com>2019-09-20 15:15:08 +0300
committerPanu Matilainen <pmatilai@redhat.com>2019-11-18 12:46:29 +0200
commit10761741bd66d2299d49a7094b916d694fcc03c7 (patch)
tree14e74f72bc387f29d848117530791d04f2889ca6
parentbc157802b5ffe516f9bc67397edfae4f25e98990 (diff)
downloadrpm-10761741bd66d2299d49a7094b916d694fcc03c7.tar.gz
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)
-rw-r--r--build/files.c19
-rw-r--r--tests/Makefile.am1
-rw-r--r--tests/data/SPECS/docmiss.spec24
-rw-r--r--tests/rpmbuild.at20
4 files changed, 59 insertions, 5 deletions
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([