xref: /freebsd/release/Makefile (revision 54d2737e7fe48226c908dcccfbda2ca1c08e07fc)
1#
2# Makefile for building releases and release media.
3#
4# User-driven targets:
5#  cdrom: Builds release CD-ROM media (disc1.iso)
6#  dvdrom: Builds release DVD-ROM media (dvd1.iso)
7#  memstick: Builds memory stick image (memstick.img)
8#  mini-memstick: Builds minimal memory stick image (mini-memstick.img)
9#  ftp: Sets up FTP distribution area (ftp)
10#  release: Invokes real-release, vm-release, cloudware-release and oci-release targets
11#  real-release: Build all media and FTP distribution area
12#  vm-release: Build all virtual machine image targets
13#  cloudware-release: Build all cloud hosting provider targets
14#  oci-release: Build all OCI container images
15#  install: Invokes the release-install, vm-install and oci-install targets
16#  release-install: Copies all release installation media into ${DESTDIR}
17#  vm-install: Copies all virtual machine images into ${DESTDIR}
18#  cloud-install: Copies non-uploaded cloud images into ${DESTDIR}
19#  oci-install: Copies all OCI container images into ${DESTDIR}
20#
21# Variables affecting the build process:
22#  WORLDDIR: location of src tree -- must have built world and default kernel
23#            (by default, the directory above this one)
24#  PKGBASE:  if set, include pkgbase packages rather than dist tarballs in
25#            disc1 and dvd1 installation media
26#  PORTSDIR: location of ports tree to distribute (default: /usr/ports)
27#  XTRADIR:  xtra-bits-dir argument for <arch>/mkisoimages.sh
28#  NOPKG:    if set, do not distribute third-party packages
29#  NOPORTS:  if set, do not distribute ports tree
30#  NOSRC:    if set, do not distribute source tree
31#  WITH_DVD: if set, generate dvd1.iso
32#  WITH_COMPRESSED_IMAGES: if set, compress installation images with xz(1)
33#		(uncompressed images are not removed)
34#  WITH_VMIMAGES: if set, build virtual machine images with the release
35#  WITH_COMPRESSED_VMIMAGES: if set, compress virtual machine disk images
36#  		with xz(1) (extremely time consuming)
37#  WITH_CLOUDWARE: if set, build cloud hosting disk images with the release
38#  TARGET/TARGET_ARCH: architecture of built release
39#
40
41WORLDDIR?=	${.CURDIR}/..
42PORTSDIR?=	/usr/ports
43
44.include "${WORLDDIR}/share/mk/bsd.compat.pre.mk"
45
46.if !defined(TARGET) || empty(TARGET)
47TARGET=		${MACHINE}
48.endif
49.if !defined(TARGET_ARCH) || empty(TARGET_ARCH)
50.if ${TARGET} == ${MACHINE}
51TARGET_ARCH=	${MACHINE_ARCH}
52.else
53TARGET_ARCH=	${TARGET}
54.endif
55.endif
56IMAKE=		${MAKE} TARGET_ARCH=${TARGET_ARCH} TARGET=${TARGET} \
57		    -DNO_ROOT -DDB_FROM_SRC
58DISTDIR=	dist
59
60# Define OSRELEASE by using newvers.sh
61.if !defined(OSRELEASE) || empty(OSRELEASE)
62.for _V in TYPE BRANCH REVISION
63${_V}!=	eval $$(awk '/^${_V}=/{print}' ${.CURDIR}/../sys/conf/newvers.sh); echo $$${_V}
64.endfor
65.for _V in ${TARGET_ARCH}
66.if !empty(TARGET:M${_V})
67OSRELEASE=	${TYPE}-${REVISION}-${BRANCH}-${TARGET}
68VOLUME_LABEL=	${REVISION:C/[.-]/_/g}_${BRANCH:C/[.-]/_/g}_${TARGET}
69.else
70OSRELEASE=	${TYPE}-${REVISION}-${BRANCH}-${TARGET}-${TARGET_ARCH}
71VOLUME_LABEL=	${REVISION:C/[.-]/_/g}_${BRANCH:C/[.-]/_/g}_${TARGET_ARCH}
72.endif
73.endfor
74.endif
75
76.if ${.MAKE.OS} == "FreeBSD"
77# For installing packages into the release media.
78PKG_ENV+=	INSTALL_AS_USER=yes
79PKG_ENV+=	ASSUME_ALWAYS_YES=yes
80PKG_ARGS+=	-o METALOG=METALOG
81PKG_ARGS+=	-r ${.TARGET} -o REPOS_DIR=${.CURDIR}/pkg_repos
82# Pass -f to make sure pkg writes to the METALOG even if the package
83# is already installed from a previous build
84PKG_INSTALL=	env ${PKG_ENV} ${PKG_CMD} ${PKG_ARGS} install -f
85PKG_CLEAN=	env ${PKG_ENV} ${PKG_CMD} ${PKG_ARGS} clean -a
86.endif
87
88.if !defined(VOLUME_LABEL) || empty(VOLUME_LABEL)
89VOLUME_LABEL=	FreeBSD_Install
90.endif
91
92.if !exists(${PORTSDIR})
93NOPORTS= true
94.endif
95
96DISTRIBUTIONS= base.txz kernel.txz
97.if !defined(NOPORTS)
98DISTRIBUTIONS+= ports.txz
99.endif
100.if !defined(NOSRC)
101DISTRIBUTIONS+= src.txz
102.endif
103
104RELEASE_TARGETS= ftp
105IMAGES=
106.if exists(${.CURDIR}/${TARGET}/mkisoimages.sh)
107RELEASE_TARGETS+= cdrom
108IMAGES+=	disc1.iso bootonly.iso
109. if defined(WITH_DVD) && !empty(WITH_DVD)
110RELEASE_TARGETS+= dvdrom
111IMAGES+=	dvd1.iso
112. endif
113.endif
114.if exists(${.CURDIR}/${TARGET}/make-memstick.sh)
115RELEASE_TARGETS+= memstick.img
116RELEASE_TARGETS+= mini-memstick.img
117IMAGES+=	memstick.img
118IMAGES+=	mini-memstick.img
119.endif
120
121CLEANFILES=	packagesystem *.txz MANIFEST release ${IMAGES}
122.if defined(WITH_COMPRESSED_IMAGES) && !empty(WITH_COMPRESSED_IMAGES)
123. for I in ${IMAGES}
124CLEANFILES+=	${I}.xz
125. endfor
126.endif
127.if defined(WITH_DVD) && !empty(WITH_DVD)
128CLEANFILES+=	pkg-stage
129.endif
130CLEANDIRS=	dist pkgbase-repo pkgbase-repo-conf ftp disc1 disc1-disc1 disc1-memstick bootonly bootonly-bootonly bootonly-memstick dvd
131beforeclean:
132	chflags -R noschg .
133.include <bsd.obj.mk>
134clean: beforeclean
135
136#
137# Legacy distribution tarballs
138#
139base.txz: # Also (if enabled) tests, compat libs, and -dbg variants for all.
140	mkdir -p ${DISTDIR}
141	( cd ${WORLDDIR} && ${IMAKE} distributeworld DISTDIR=${.OBJDIR}/${DISTDIR} )
142	# Bootstrap etcupdate(8) database.
143	sh ${WORLDDIR}/usr.sbin/etcupdate/etcupdate.sh extract -B \
144	    -m "${MAKE}" -M "TARGET_ARCH=${TARGET_ARCH} TARGET=${TARGET}" \
145	    -s ${WORLDDIR} -d "${.OBJDIR}/${DISTDIR}/base/var/db/etcupdate" \
146	    -L /dev/stdout -N
147	echo "./var/db/etcupdate type=dir uname=root gname=wheel mode=0755" >> ${.OBJDIR}/${DISTDIR}/base.meta
148	sed -n 's,^\.,./var/db/etcupdate/current,p' \
149	    ${.OBJDIR}/${DISTDIR}/base/var/db/etcupdate/current/METALOG | \
150	    env -i LC_COLLATE=C sort >> ${.OBJDIR}/${DISTDIR}/base.meta
151	rm ${.OBJDIR}/${DISTDIR}/base/var/db/etcupdate/current/METALOG
152# Package all components
153	( cd ${WORLDDIR} && ${IMAKE} packageworld DISTDIR=${.OBJDIR}/${DISTDIR} )
154	mv ${DISTDIR}/*.txz .
155
156kernel.txz: # Also (if enabled) kernel-dbg.txz.
157	mkdir -p ${DISTDIR}
158	( cd ${WORLDDIR} && ${IMAKE} distributekernel DISTDIR=${.OBJDIR}/${DISTDIR} )
159	( cd ${WORLDDIR} && ${IMAKE} packagekernel DISTDIR=${.OBJDIR}/${DISTDIR} )
160	mv ${DISTDIR}/kernel*.txz .
161
162src.txz:
163	mkdir -p ${DISTDIR}/usr
164	ln -fs ${WORLDDIR} ${DISTDIR}/usr/src
165	( cd ${DISTDIR} && ${TAR_XZ_CMD} -cLvf ${.OBJDIR}/src.txz \
166	    --exclude .svn --exclude .zfs \
167	    --exclude .git --exclude @ --exclude usr/src/release/dist \
168	    --exclude usr/src/release/obj usr/src )
169
170ports.txz:
171	mkdir -p ${DISTDIR}/usr
172	ln -fs ${PORTSDIR} ${DISTDIR}/usr/ports
173	( cd ${DISTDIR} && ${TAR_XZ_CMD} -cLvf ${.OBJDIR}/ports.txz \
174	    --exclude .git --exclude .svn \
175	    --exclude usr/ports/distfiles --exclude usr/ports/packages \
176	    --exclude 'usr/ports/INDEX*' --exclude work usr/ports )
177
178packagesystem: ${DISTRIBUTIONS}
179	sh ${.CURDIR}/scripts/make-manifest.sh $$(ls *.txz | grep -v container) > MANIFEST
180	touch ${.TARGET}
181
182.if defined(PKGBASE)
183PKGBASE_REPO=	pkgbase-repo
184PKG_ABI=	$$(${PKG_CMD} -o ABI_FILE=${.TARGET}/usr/bin/uname config ABI)
185.endif
186
187pkgbase-repo:
188	mkdir -p pkgbase-repo
189	( ${IMAKE} -C ${WORLDDIR} packages REPODIR=${.OBJDIR}/pkgbase-repo )
190
191disc1: packagesystem ${PKGBASE_REPO}
192# Install system
193	mkdir -p ${.TARGET}
194	( cd ${WORLDDIR} && ${IMAKE} installworld installkernel distribution \
195	    DESTDIR=${.OBJDIR}/${.TARGET} MK_AT=no \
196	    MK_INSTALLLIB=no MK_MAIL=no \
197	    ${_ALL_LIBCOMPATS:@v@MK_LIB$v=no@} \
198	    MK_TOOLCHAIN=no \
199	    MK_RESCUE=no MK_DICT=no \
200	    MK_KERNEL_SYMBOLS=no MK_TESTS=no MK_DEBUG_FILES=no)
201.if defined(PKGBASE)
202# Create offline pkgbase repo on release media
203	mkdir -p ${.TARGET}/usr/freebsd-packages/repos/
204	${.CURDIR}/scripts/pkgbase-stage.lua disc \
205	    ${.OBJDIR}/pkgbase-repo/${PKG_ABI}/latest \
206	    ${.TARGET}/usr/freebsd-packages/offline \
207	    "${_ALL_libcompats}"
208	cp ${.CURDIR}/scripts/FreeBSD-base-offline.conf \
209		${.TARGET}/usr/freebsd-packages/repos/
210	mtree -c -p ${.TARGET}/usr/freebsd-packages | \
211	    mtree -C -k type,mode,link,size | \
212	    sed 's|^\.|./usr/freebsd-packages|g' >> ${.TARGET}/METALOG
213# Copy manifest only (no distfiles) to get checksums
214	mkdir -p ${.TARGET}/usr/freebsd-dist
215	cp MANIFEST ${.TARGET}/usr/freebsd-dist
216	echo "./usr/freebsd-dist type=dir uname=root gname=wheel mode=0755" >> ${.TARGET}/METALOG
217	echo "./usr/freebsd-dist/MANIFEST type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
218.else
219# Copy distfiles
220	mkdir -p ${.TARGET}/usr/freebsd-dist
221	for dist in MANIFEST $$(ls *.txz | grep -v container | grep -vE -- '(${base ${_ALL_libcompats}:L:ts|})-dbg'); \
222	    do cp $${dist} ${.TARGET}/usr/freebsd-dist; \
223	done
224	echo "./usr/freebsd-dist type=dir uname=root gname=wheel mode=0755" >> ${.TARGET}/METALOG
225	for dist in MANIFEST $$(ls *.txz | grep -v container | grep -vE -- '(${base ${_ALL_libcompats}:L:ts|})-dbg'); \
226	    do echo "./usr/freebsd-dist/$${dist} type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG; \
227	done
228.endif
229.if ${.MAKE.OS} == "FreeBSD" && (!defined(NOPKG) || empty(NOPKG))
230# Install packages onto release media.
231	${PKG_INSTALL} pkg || true
232	${PKG_INSTALL} wifi-firmware-kmod-release || true
233	${PKG_CLEAN} || true
234.endif
235# Set up installation environment
236	ln -fs /tmp/bsdinstall_etc/resolv.conf ${.TARGET}/etc/resolv.conf
237	echo sendmail_enable=\"NONE\" > ${.TARGET}/etc/rc.conf
238	echo hostid_enable=\"NO\" >> ${.TARGET}/etc/rc.conf
239	echo debug.witness.trace=0 >> ${.TARGET}/etc/sysctl.conf
240	echo vfs.mountroot.timeout=\"10\" >> ${.TARGET}/boot/loader.conf
241	echo kernels_autodetect=\"NO\" >> ${.TARGET}/boot/loader.conf
242	echo loader_menu_multi_user_prompt=\"Installer\" >> ${.TARGET}/boot/loader.conf
243	cp ${.CURDIR}/rc.local ${.TARGET}/etc
244	echo "./etc/resolv.conf type=link uname=root gname=wheel mode=0644 link=/tmp/bsdinstall_etc/resolv.conf" >> ${.TARGET}/METALOG
245	echo "./etc/rc.conf type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
246	echo "./etc/sysctl.conf type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
247	echo "./boot/loader.conf type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
248	echo "./etc/rc.local type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
249	touch ${.TARGET}
250
251bootonly: packagesystem
252# Install system
253	mkdir -p ${.TARGET}
254	( cd ${WORLDDIR} && ${IMAKE} installworld installkernel distribution \
255	    DESTDIR=${.OBJDIR}/${.TARGET} MK_AT=no \
256	    MK_GAMES=no \
257	    MK_INSTALLLIB=no MK_MAIL=no \
258	    ${_ALL_LIBCOMPATS:@v@MK_LIB$v=no@} \
259	    MK_TOOLCHAIN=no \
260	    MK_RESCUE=no MK_DICT=no \
261	    MK_KERNEL_SYMBOLS=no MK_TESTS=no MK_DEBUG_FILES=no)
262# Copy manifest only (no distfiles) to get checksums
263	mkdir -p ${.TARGET}/usr/freebsd-dist
264	cp MANIFEST ${.TARGET}/usr/freebsd-dist
265	echo "./usr/freebsd-dist type=dir uname=root gname=wheel mode=0755" >> ${.TARGET}/METALOG
266	echo "./usr/freebsd-dist/MANIFEST type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
267.if ${.MAKE.OS} == "FreeBSD" && (!defined(NOPKG) || empty(NOPKG))
268# Install packages onto release media.
269	${PKG_INSTALL} pkg || true
270	${PKG_CLEAN} || true
271.endif
272# Set up installation environment
273	ln -fs /tmp/bsdinstall_etc/resolv.conf ${.TARGET}/etc/resolv.conf
274	echo sendmail_enable=\"NONE\" > ${.TARGET}/etc/rc.conf
275	echo hostid_enable=\"NO\" >> ${.TARGET}/etc/rc.conf
276	echo debug.witness.trace=0 >> ${.TARGET}/etc/sysctl.conf
277	echo vfs.mountroot.timeout=\"10\" >> ${.TARGET}/boot/loader.conf
278	echo kernels_autodetect=\"NO\" >> ${.TARGET}/boot/loader.conf
279	echo loader_menu_multi_user_prompt=\"Installer\" >> ${.TARGET}/boot/loader.conf
280	cp ${.CURDIR}/rc.local ${.TARGET}/etc
281	echo "./etc/resolv.conf type=link uname=root gname=wheel mode=0644 link=/tmp/bsdinstall_etc/resolv.conf" >> ${.TARGET}/METALOG
282	echo "./etc/rc.conf type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
283	echo "./etc/sysctl.conf type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
284	echo "./boot/loader.conf type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
285	echo "./etc/rc.local type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
286
287dvd: packagesystem ${PKGBASE_REPO}
288# Install system
289	mkdir -p ${.TARGET}
290	( cd ${WORLDDIR} && ${IMAKE} installworld installkernel distribution \
291		DESTDIR=${.OBJDIR}/${.TARGET} MK_RESCUE=no MK_KERNEL_SYMBOLS=no \
292		MK_TESTS=no MK_DEBUG_FILES=no)
293.if defined(PKGBASE)
294# Create offline pkgbase repo on release media
295	mkdir -p ${.TARGET}/usr/freebsd-packages/repos/
296	${.CURDIR}/scripts/pkgbase-stage.lua dvd \
297	    ${.OBJDIR}/pkgbase-repo/${PKG_ABI}/latest \
298	    ${.TARGET}/usr/freebsd-packages/offline \
299	    "${_ALL_libcompats}"
300	cp ${.CURDIR}/scripts/FreeBSD-base-offline.conf \
301		${.TARGET}/usr/freebsd-packages/repos/
302	mtree -c -p ${.TARGET}/usr/freebsd-packages | \
303	    mtree -C -k type,mode,link,size | \
304	    sed 's|^\.|./usr/freebsd-packages|g' >> ${.TARGET}/METALOG
305# Copy manifest only (no distfiles) to get checksums
306	mkdir -p ${.TARGET}/usr/freebsd-dist
307	cp MANIFEST ${.TARGET}/usr/freebsd-dist
308	echo "./usr/freebsd-dist type=dir uname=root gname=wheel mode=0755" >> ${.TARGET}/METALOG
309	echo "./usr/freebsd-dist/MANIFEST type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
310.else
311# Copy distfiles
312	mkdir -p ${.TARGET}/usr/freebsd-dist
313	for dist in MANIFEST $$(ls *.txz | grep -v container); \
314	    do cp $${dist} ${.TARGET}/usr/freebsd-dist; \
315	done
316	echo "./usr/freebsd-dist type=dir uname=root gname=wheel mode=0755" >> ${.TARGET}/METALOG
317	for dist in MANIFEST $$(ls *.txz | grep -v container); \
318	    do echo "./usr/freebsd-dist/$${dist} type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG; \
319	done
320.endif
321.if ${.MAKE.OS} == "FreeBSD" && (!defined(NOPKG) || empty(NOPKG))
322# Install packages onto release media.
323	${PKG_INSTALL} pkg || true
324	${PKG_INSTALL} wifi-firmware-kmod-release || true
325	${PKG_CLEAN} || true
326.endif
327# Set up installation environment
328	ln -fs /tmp/bsdinstall_etc/resolv.conf ${.TARGET}/etc/resolv.conf
329	echo sendmail_enable=\"NONE\" > ${.TARGET}/etc/rc.conf
330	echo hostid_enable=\"NO\" >> ${.TARGET}/etc/rc.conf
331	echo debug.witness.trace=0 >> ${.TARGET}/etc/sysctl.conf
332	echo vfs.mountroot.timeout=\"10\" >> ${.TARGET}/boot/loader.conf
333	echo kernels_autodetect=\"NO\" >> ${.TARGET}/boot/loader.conf
334	echo loader_menu_multi_user_prompt=\"Installer\" >> ${.TARGET}/boot/loader.conf
335	cp ${.CURDIR}/rc.local ${.TARGET}/etc
336	echo "./etc/resolv.conf type=link uname=root gname=wheel mode=0644 link=/tmp/bsdinstall_etc/resolv.conf" >> ${.TARGET}/METALOG
337	echo "./etc/rc.conf type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
338	echo "./etc/sysctl.conf type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
339	echo "./boot/loader.conf type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
340	echo "./etc/rc.local type=file uname=root gname=wheel mode=0644" >> ${.TARGET}/METALOG
341	touch ${.TARGET}
342
343disc1-disc1 disc1-memstick: disc1
344	mkdir ${.TARGET}
345	tar -cf- -C disc1 . | tar -xf- -C ${.TARGET}
346
347bootonly-bootonly bootonly-memstick: bootonly
348	mkdir ${.TARGET}
349	tar -cf- -C bootonly . | tar -xf- -C ${.TARGET}
350
351release.iso: disc1.iso
352disc1.iso: disc1-disc1
353	cd disc1-disc1 && sh ${.CURDIR}/${TARGET}/mkisoimages.sh -b ${VOLUME_LABEL}_CD ../${.TARGET} ./METALOG ${XTRADIR}
354
355dvd1.iso: dvd pkg-stage
356	cd dvd && sh ${.CURDIR}/${TARGET}/mkisoimages.sh -b ${VOLUME_LABEL}_DVD ../${.TARGET} ./METALOG ${XTRADIR}
357
358bootonly.iso: bootonly-bootonly
359	cd bootonly-bootonly && sh ${.CURDIR}/${TARGET}/mkisoimages.sh -b ${VOLUME_LABEL}_BO ../${.TARGET} ./METALOG ${XTRADIR}
360
361memstick: memstick.img
362memstick.img: disc1-memstick
363	cd disc1-memstick && sh ${.CURDIR}/${TARGET}/make-memstick.sh ./METALOG ../${.TARGET}
364
365mini-memstick: mini-memstick.img
366mini-memstick.img: bootonly-memstick
367	cd bootonly-memstick && sh ${.CURDIR}/${TARGET}/make-memstick.sh ./METALOG ../${.TARGET}
368
369pkg-stage: dvd
370.if !defined(NOPKG) || empty(NOPKG)
371	env PORTSDIR=${PORTSDIR} REPOS_DIR=${.CURDIR}/pkg_repos/ \
372		sh ${.CURDIR}/scripts/pkg-stage.sh -N
373	mkdir -p ${.OBJDIR}/dvd/packages/repos/
374	cp ${.CURDIR}/scripts/FreeBSD_install_cdrom.conf \
375		${.OBJDIR}/dvd/packages/repos/
376.endif
377	touch ${.TARGET}
378
379cdrom: disc1.iso bootonly.iso
380dvdrom: dvd1.iso
381ftp: packagesystem
382	rm -rf ftp
383	mkdir -p ftp
384	cp *.txz MANIFEST ftp
385	rm -f ftp/container-*.txz
386
387release:	real-release vm-release cloudware-release oci-release
388	${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} release-done
389	true
390
391release-done:
392	touch release
393
394real-release:
395	${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} obj
396	${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} ${RELEASE_TARGETS}
397
398install:	release-install vm-install oci-install .WAIT cloud-install
399
400release-install:
401.if defined(DESTDIR) && !empty(DESTDIR)
402	mkdir -p ${DESTDIR}
403.endif
404	cp -a ftp ${DESTDIR}/
405.if !empty(IMAGES)
406.for I in ${IMAGES}
407	cp -p ${I} ${DESTDIR}/${OSRELEASE}-${I}
408. if defined(WITH_COMPRESSED_IMAGES) && !empty(WITH_COMPRESSED_IMAGES)
409	${XZ_CMD} -k ${DESTDIR}/${OSRELEASE}-${I}
410. endif
411.endfor
412	( cd ${DESTDIR} && sha512 ${OSRELEASE}* > ${DESTDIR}/CHECKSUM.SHA512 )
413	( cd ${DESTDIR} && sha256 ${OSRELEASE}* > ${DESTDIR}/CHECKSUM.SHA256 )
414.endif
415
416.include "${.CURDIR}/Makefile.inc1"
417.include "${.CURDIR}/Makefile.vm"
418.include "${.CURDIR}/Makefile.oci"
419