xref: /freebsd/sys/contrib/openzfs/config/rpm.am (revision 8a62a2a5659d1839d8799b4274c04469d7f17c78)
1# SPDX-License-Identifier: CDDL-1.0
2###############################################################################
3# Copyright (C) 2007-2013 Lawrence Livermore National Security, LLC.
4# Copyright (C) 2007 The Regents of the University of California.
5# Written by Brian Behlendorf <behlendorf1@llnl.gov>.
6###############################################################################
7# Build targets for RPM packages.
8###############################################################################
9
10PHONY += srpm srpms srpm-kmod srpm-dkms srpm-utils
11PHONY += rpm rpms rpm-kmod rpm-dkms rpm-utils rpm-utils-initramfs
12PHONY += srpm-common rpm-common rpm-local
13
14srpm-kmod srpm-dkms srpm-utils: dist
15
16srpm-kmod:
17	$(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-kmod" \
18		def='${SRPM_DEFINE_COMMON} ${SRPM_DEFINE_KMOD}' srpm-common
19
20srpm-dkms:
21	$(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-dkms" \
22		def='${SRPM_DEFINE_COMMON} ${SRPM_DEFINE_DKMS}' srpm-common
23
24srpm-utils:
25	$(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}" \
26		def='${SRPM_DEFINE_COMMON} ${SRPM_DEFINE_UTIL}' srpm-common
27
28srpm: srpm-kmod srpm-dkms srpm-utils
29srpms: srpm-kmod srpm-dkms srpm-utils
30
31rpm-kmod: srpm-kmod
32	$(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-kmod" \
33		def='${RPM_DEFINE_COMMON} ${RPM_DEFINE_KMOD}' rpm-common
34
35rpm-dkms: srpm-dkms
36	$(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-dkms" \
37		def='${RPM_DEFINE_COMMON} ${RPM_DEFINE_DKMS}' rpm-common
38
39# The rpm-utils and rpm-utils-initramfs targets are identical except for the
40# zfs-initramfs package: rpm-utils never includes it, rpm-utils-initramfs
41# includes it if detected at configure time. The zfs-initramfs package does
42# not work on any known RPM-based distribution and the resulting RPM is only
43# used to create a Debian package. The rpm-utils-initramfs target is not
44# intended to be specified by the user directly, it is provided as a
45# dependency of the deb-utils target.
46
47rpm-utils: srpm-utils
48	$(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}" \
49		def='${RPM_DEFINE_COMMON} ${RPM_DEFINE_UTIL}' rpm-common
50
51rpm-utils-initramfs: srpm-utils
52	$(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}" \
53		def='${RPM_DEFINE_COMMON} ${RPM_DEFINE_UTIL} ${RPM_DEFINE_INITRAMFS}' rpm-common
54
55rpm: rpm-kmod rpm-dkms rpm-utils
56rpms: rpm-kmod rpm-dkms rpm-utils
57
58rpm-local:
59	@(if test "${HAVE_RPMBUILD}" = "no"; then \
60		echo -e "\n" \
61	"*** Required util ${RPMBUILD} missing.  Please install the\n" \
62	"*** package for your distribution which provides ${RPMBUILD},\n" \
63	"*** re-run configure, and try again.\n"; \
64		exit 1; \
65	fi; \
66	mkdir -p $(rpmbuild)/TMP && \
67	mkdir -p $(rpmbuild)/BUILD && \
68	mkdir -p $(rpmbuild)/RPMS && \
69	mkdir -p $(rpmbuild)/SRPMS && \
70	mkdir -p $(rpmbuild)/SPECS && \
71	cp ${RPM_SPEC_DIR}/$(rpmspec) $(rpmbuild)/SPECS && \
72	mkdir -p $(rpmbuild)/SOURCES && \
73	cp $(top_srcdir)/scripts/kmodtool $(rpmbuild)/SOURCES && \
74	cp $(distdir).tar.gz $(rpmbuild)/SOURCES)
75
76srpm-common:
77	@(dist=`$(RPM) --eval %{?dist}`; \
78	rpmpkg=$(pkg)-$(VERSION)-$(RELEASE)$$dist*src.rpm; \
79	rpmspec=$(pkg).spec; \
80	rpmbuild=`mktemp -t -d $(PACKAGE)-build-$$USER-XXXXXXXX`; \
81	$(MAKE) $(AM_MAKEFLAGS) \
82		rpmbuild="$$rpmbuild" \
83		rpmspec="$$rpmspec" \
84		rpm-local || exit 1; \
85	LANG=C $(RPMBUILD) \
86		--define "_tmppath $$rpmbuild/TMP" \
87		--define "_builddir $$rpmbuild/BUILD" \
88		--define "_rpmdir $$rpmbuild/RPMS" \
89		--define "_srcrpmdir $$rpmbuild/SRPMS" \
90		--define "_specdir $$rpmbuild/SPECS" \
91		--define "_sourcedir $$rpmbuild/SOURCES" \
92		--define "_topdir $$rpmbuild" \
93		$(def) -bs $$rpmbuild/SPECS/$$rpmspec || exit 1; \
94	cp $$rpmbuild/SRPMS/$$rpmpkg . || exit 1; \
95	rm -R $$rpmbuild)
96
97rpm-common:
98	@(dist=`$(RPM) --eval %{?dist}`; \
99	rpmpkg=$(pkg)-$(VERSION)-$(RELEASE)$$dist*src.rpm; \
100	rpmspec=$(pkg).spec; \
101	rpmbuild=`mktemp -t -d $(PACKAGE)-build-$$USER-XXXXXXXX`; \
102	$(MAKE) $(AM_MAKEFLAGS) \
103		rpmbuild="$$rpmbuild" \
104		rpmspec="$$rpmspec" \
105		rpm-local || exit 1; \
106	LANG=C ${RPMBUILD} \
107		--define "_tmppath $$rpmbuild/TMP" \
108		--define "_builddir $$rpmbuild/BUILD" \
109		--define "_rpmdir $$rpmbuild/RPMS" \
110		--define "_srcrpmdir $$rpmbuild/SRPMS" \
111		--define "_specdir $$rpmbuild/SPECS" \
112		--define "_sourcedir $$rpmbuild/SOURCES" \
113		--define "_topdir $$rpmbuild" \
114		$(def) --rebuild $$rpmpkg || exit 1; \
115	cp $$rpmbuild/RPMS/*/* . || exit 1; \
116	rm -R $$rpmbuild)
117