summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorFlorian Festi <ffesti@redhat.com>2021-01-11 11:07:59 +0100
committerPanu Matilainen <pmatilai@redhat.com>2022-11-09 16:23:43 +0200
commite8e2a121ba6c604f342f86d0c73dca32bd7d687c (patch)
tree2336ca3fe1669d301a6c0f7c6e4bfe82232b4f0b /tests
parent524bfcb816ea0fa21bbe9891073409df9d239d4f (diff)
downloadrpm-e8e2a121ba6c604f342f86d0c73dca32bd7d687c.tar.gz
Add Dynamic Spec generation
Read in *.specpart files from %{specpartsdir} aka $RPM_SPECPARTS_DIR after the %install script. This allows the build process to add sub packages to the build. In the future more changes to the packages may be possible - like amending package declarations. The %{specpartsdir} is created by the %setup pseudo macro inside of the buildsubdir. It's presence allows build scripts to check if this feature is supported in the running rpmbuild instance.
Diffstat (limited to 'tests')
-rw-r--r--tests/data/SPECS/dynamic.spec39
-rw-r--r--tests/rpmbuild.at43
-rw-r--r--tests/rpmspec.at1
3 files changed, 83 insertions, 0 deletions
diff --git a/tests/data/SPECS/dynamic.spec b/tests/data/SPECS/dynamic.spec
new file mode 100644
index 000000000..5dbaa8584
--- /dev/null
+++ b/tests/data/SPECS/dynamic.spec
@@ -0,0 +1,39 @@
+Summary: dynamic hello -- hello, world rpm
+Name: dynamic
+Version: 1.0
+Release: 1
+Group: Utilities
+License: GPL
+Distribution: RPM test suite.
+URL: http://rpm.org
+BuildArch: noarch
+
+%description
+Simple rpm demonstration.
+
+%prep
+%setup -q -T -c
+
+%build
+echo "Q: Why?\nA: Because we can!" > FAQ
+
+%install
+mkdir -p $RPM_BUILD_ROOT/usr/local/bin
+echo " " > $RPM_BUILD_ROOT/usr/local/bin/hello
+
+
+echo "%package docs" >> %{specpartsdir}/docs.specpart
+%{?!FAIL:echo "Summary: Documentation for dynamic spec" >> %{specpartsdir}/docs.specpart}
+echo "BuildArch: noarch" >> %{specpartsdir}/docs.specpart
+echo "%description docs" >> %{specpartsdir}/docs.specpart
+echo "Test for dynamically generated spec files" >> %{specpartsdir}/docs.specpart
+echo "%files docs" >> $RPM_SPECPARTS_DIR/docs.specpart
+echo "%doc FAQ" >> $RPM_SPECPARTS_DIR/docs.specpart
+
+%files
+%defattr(-,root,root)
+%attr(0751,root,root) /usr/local/bin/hello
+
+%changelog
+* Mon Oct 24 2022 Florian Festi <ffesti@redhat.com>
+- create.
diff --git a/tests/rpmbuild.at b/tests/rpmbuild.at
index 2fe29705e..00f89209b 100644
--- a/tests/rpmbuild.at
+++ b/tests/rpmbuild.at
@@ -2272,3 +2272,46 @@ runroot rpmbuild \
],
[ignore])
AT_CLEANUP
+
+# ------------------------------
+# Check if dynamic spec generation works
+AT_SETUP([rpmbuild with dynamic spec generation])
+AT_KEYWORDS([build])
+RPMDB_INIT
+AT_CHECK([
+
+runroot rpmbuild --define "_prefix /usr/local" -ba /data/SPECS/dynamic.spec
+],
+[0],
+[ignore],
+[ignore])
+
+AT_CHECK([
+
+runroot rpm -qp --qf "%{Summary}\n" /build/RPMS/noarch/dynamic-docs-1.0-1.noarch.rpm
+runroot rpm -ql /build/RPMS/noarch/dynamic-docs-1.0-1.noarch.rpm
+],
+[0],
+[Documentation for dynamic spec
+/usr/local/share/doc/dynamic-docs-1.0
+/usr/local/share/doc/dynamic-docs-1.0/FAQ
+],
+[])
+AT_CLEANUP
+
+# ------------------------------
+# Check failing dynamic spec generation
+AT_SETUP([rpmbuild with dynamic spec generation fail])
+AT_KEYWORDS([build])
+RPMDB_INIT
+AT_CHECK([
+
+runroot rpmbuild --quiet -D "FAIL 1" -ba /data/SPECS/dynamic.spec
+],
+[1],
+[],
+[error: Summary field must be present in package: dynamic-docs
+error: parsing failed
+])
+
+AT_CLEANUP
diff --git a/tests/rpmspec.at b/tests/rpmspec.at
index 5dfd18d5a..1e1792bfb 100644
--- a/tests/rpmspec.at
+++ b/tests/rpmspec.at
@@ -333,6 +333,7 @@ if [ $STATUS -ne 0 ]; then
exit $STATUS
fi
cd 'hello-1.0'
+/usr/bin/mkdir SPECPARTS
/usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
echo "Patch #0 (hello-1.0-modernize.patch):"
/usr/bin/patch --no-backup-if-mismatch -f -p1 -b --suffix .modernize --fuzz=0 < /build/SOURCES/hello-1.0-modernize.patch