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