Makefile.bootcd revision 1.56
11.56Spgoyette#	$NetBSD: Makefile.bootcd,v 1.56 2025/04/27 21:35:36 pgoyette Exp $
21.1Shubertf#
31.1Shubertf# Makefile snipped to create a CD/DVD ISO
41.1Shubertf#
51.1Shubertf
61.1Shubertf# XXX TODO:
71.1Shubertf# 1) merge with src/distrib/cdrom
81.1Shubertf# 2) teach makefs to add data from more than 1 directory (see below)
91.1Shubertf
101.1Shubertf#
111.1Shubertf# Required variables:
121.1Shubertf#	CDBASE		Basename of the iso
131.1Shubertf#
141.1Shubertf# Optional variables:
151.42Schristos#	CDRELEASE	Set to 'true' to include $RELEASEDIR/$RELEASEMACHINEDIR on the CD
161.7Shubertf#	CDRELEASE_NOISOS Excludes installation/cdrom directory if set
171.39Smartin#	CDRELEASE_NODEBUG	Excludes debug sets if set
181.9Schristos#	CDSOURCE	Set to 'true' to include $RELEASEDIR/source on the CD
191.13Ssborrill#	CDEXTRA		Set to a list of files or directories containing extra
201.13Ssborrill#			stuff to put on CD (set by build.sh -C flag)
211.13Ssborrill#	CDBUILDEXTRA	Set to a list of files or directories containing extra
221.13Ssborrill#			stuff to put on CD (use in Makefiles)
231.13Ssborrill#	CDEXTRA_SKIP	A list of file exclusion paths to exclude when copying
241.13Ssborrill#			directories of extra stuff in CDEXTRA AND CDBUILDEXTRA
251.43Smartin#	CDDEV_POPULATE	Set to 'true' to fully populate /dev on the CD (and
261.43Smartin#			safe a tmpfs union mount)
271.1Shubertf#	BOOT		Defaults to $DESTDIR/usr/mdec/boot
281.1Shubertf#	BOOTXX_CD9660	Defaults to $DESTDIR/usr/mdec/bootxx_cd9660
291.1Shubertf#	CDBOOTOPTIONS	Options for installboot, eg -o console=com0,speed=9600
301.8Sbouyer#	CDMAKEFSOPTIONS	Options for makefs, eg bootimage=i386;bootxx,no-emul-boot
311.25Smartin#	CDMAKEFSEXTRAOPTS additional options for makefs, e.g. -F specfile
321.1Shubertf#	CDROMS_RELEASEDIR Where to install ${CDBASE}.iso
331.8Sbouyer#	CDINSTKERNEL	instkernel directory (relative to ${.CURDIR})
341.8Sbouyer#	CDKERNELS	couples of the form:
351.8Sbouyer#				source	name_on_cd
361.15Sad#	CDRUNTIME	files/directories to copy from $DESTDIR onto the CD
371.28Smartin#	CD_SETS		sets to be extracted onto the CD
381.28Smartin#	SETS_DIR	where the CD_SETS are found (default provided)
391.12Ssborrill# source kernels are copied from ${CDINSTKERNEL} (or its obj dir)
401.12Ssborrill# note that as of yet, bootxx_cd9660 can't load kernel names of more than
411.12Ssborrill# 8 chars (though they can be in a sub-directory meaning the pathname is
421.12Ssborrill# longer than 8 chars)
431.1Shubertf#
441.1Shubertf
451.1ShubertfBOOT?=		${DESTDIR}/usr/mdec/boot
461.1ShubertfBOOTXX_CD9660?=	${DESTDIR}/usr/mdec/bootxx_cd9660
471.1ShubertfCDRELEASE?=	false
481.9SchristosCDSOURCE?=	false
491.43SmartinCDDEV_POPULATE?=false
501.8Sbouyer.if ${CDRELEASE} == false
511.8SbouyerCDROMS_RELEASEDIR?=	${MACHINE}/installation/cdrom
521.8Sbouyer.else
531.20SrizCDROMS_RELEASEDIR?=	images
541.8Sbouyer.endif
551.7Shubertf.if defined(CDRELEASE_NOISOS)
561.48SniaCDRELEASE_EXCLUDE+=	-s ',./installation/cdrom.*,,gp'
571.7Shubertf.endif
581.45Snia.if defined(CDRELEASE_NOCOMPAT)
591.45Snia.  for sufx in tgz tar.xz
601.45SniaCDRELEASE_EXCLUDE+=	-s ',./binary/sets/base32.${sufx},,gp'
611.46SniaCDRELEASE_EXCLUDE+=	-s ',./binary/sets/base64.${sufx},,gp'
621.45Snia.  endfor
631.45Snia.endif
641.39Smartin.if defined(CDRELEASE_NODEBUG)
651.45Snia.  for sufx in tgz tar.xz
661.45SniaCDRELEASE_EXCLUDE+=	-s ',./binary/sets/debug.${sufx},,gp'
671.45SniaCDRELEASE_EXCLUDE+=	-s ',./binary/sets/debug32.${sufx},,gp'
681.45SniaCDRELEASE_EXCLUDE+=	-s ',./binary/sets/debug64.${sufx},,gp'
691.45SniaCDRELEASE_EXCLUDE+=	-s ',./binary/sets/xdebug.${sufx},,gp'
701.45Snia.  endfor
711.39Smartin.endif
721.46Snia.if defined(CDRELEASE_NOHTML)
731.46Snia.  for sufx in tgz tar.xz
741.46SniaCDRELEASE_EXCLUDE+=	-s ',./binary/sets/manhtml.${sufx},,gp'
751.46Snia.  endfor
761.46Snia.endif
771.46Snia.if defined(CDRELEASE_NOTESTS)
781.46Snia.  for sufx in tgz tar.xz
791.46SniaCDRELEASE_EXCLUDE+=	-s ',./binary/sets/tests.${sufx},,gp'
801.46Snia.  endfor
811.46Snia.endif
821.19Stsutsui.if !defined(CDRELEASE_LIVEIMAGE)
831.19StsutsuiCDRELEASE_EXCLUDE+=	-s ',./installation/liveimage.*,,gp'
841.19Stsutsui.endif
851.19Stsutsui.if !defined(CDRELEASE_INSTALLIMAGE)
861.19StsutsuiCDRELEASE_EXCLUDE+=	-s ',./installation/installimage.*,,gp'
871.19Stsutsui.endif
881.1Shubertf
891.28SmartinSETS_DIR?=	${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/sets
901.28Smartin
911.8Sbouyer.include <bsd.own.mk> 		# For PRINTOBJDIR
921.8Sbouyer.include <bsd.kernobj.mk>	# For KERNSRCDIR
931.8Sbouyer
941.18SjmcneillDISTRIBVER!=	${HOST_SH} ${KERNSRCDIR}/conf/osrelease.sh
951.8SbouyerDISTRIBREV!=	${HOST_SH} ${KERNSRCDIR}/conf/osrelease.sh -s
961.28SmartinCUROBJDIR!=	cd ${.CURDIR} && ${PRINTOBJDIR}
971.8SbouyerISO_VOLID!=	echo NETBSD_${DISTRIBREV} | tr a-z A-Z
981.8SbouyerPUBLISHER?= The_NetBSD_Project
991.8Sbouyer.if defined(CDMAKEFSOPTIONS)
1001.22Schristos_CDMAKEFSOPTIONS=	rockridge,label=${ISO_VOLID},publisher=${PUBLISHER},${CDMAKEFSOPTIONS}
1011.8Sbouyer.else
1021.22Schristos_CDMAKEFSOPTIONS=	rockridge,label=${ISO_VOLID},publisher=${PUBLISHER}
1031.8Sbouyer.endif
1041.8Sbouyer
1051.34Schristos.if ${MKREPRO_TIMESTAMP:Uno} != "no"
1061.34SchristosMAKEFS_TIMESTAMP=-T "${MKREPRO_TIMESTAMP}"
1071.37SchristosPAX_TIMESTAMP=--timestamp "${MKREPRO_TIMESTAMP}"
1081.33Schristos.endif
1091.49SchristosMAKESPEC=	${HOST_SH} ${NETBSDSRCDIR}/etc/makespec
1101.33Schristos
1111.28Smartin.if ${MKUNPRIVED} == "no"
1121.28SmartinCD_METALOG.unpriv=
1131.31Smartinmtunpriv=
1141.28Smartin.else
1151.28SmartinCD_METALOG.unpriv=-M ${METALOG}.sanitised
1161.29Smartinmtunpriv="-U"
1171.28Smartin.endif
1181.28Smartin
1191.1Shubertf# Stuff that should come from elsewhere - XXX where? - HF
1201.1ShubertfRM?=		rm
1211.1ShubertfMKDIR?=		mkdir -p
1221.1ShubertfCHMOD?=		chmod
1231.17SchristosECHO?=		echo
1241.1Shubertf
1251.18Sjmcneill.if ${CDRELEASE} == false
1261.18SjmcneillCDIMAGE=	${CDBASE}.iso
1271.47Snia.elif ${CDBASE:M*dvd}
1281.47SniaCDIMAGE=	NetBSD-${DISTRIBVER}-${CDBASE:S/dvd$//}-dvd.iso
1291.18Sjmcneill.else
1301.18SjmcneillCDIMAGE=	NetBSD-${DISTRIBVER}-${CDBASE:S/cd$//}.iso
1311.18Sjmcneill.endif
1321.28SmartinWORKSPEC=	fs.spec
1331.1Shubertf
1341.18SjmcneillCLEANFILES+=	${CDIMAGE}
1351.8SbouyerCLEANFILES+=	bootxx.${MACHINE}
1361.28SmartinCLEANFILES+=	${WORKSPEC}
1371.1Shubertf
1381.28SmartinCDSETSENV=	DESTDIR=${DESTDIR:Q} \
1391.28Smartin		MACHINE=${MACHINE:Q} \
1401.28Smartin		MACHINE_ARCH=${MACHINE_ARCH:Q} \
1411.28Smartin		AWK=${TOOL_AWK:Q} \
1421.28Smartin		CKSUM=${TOOL_CKSUM:Q} \
1431.28Smartin		DB=${TOOL_DB:Q} \
1441.28Smartin		HOST_SH=${HOST_SH:Q} \
1451.28Smartin		MAKE=${MAKE:Q} \
1461.28Smartin		MKTEMP=${TOOL_MKTEMP:Q} \
1471.28Smartin		MTREE=${TOOL_MTREE:Q} \
1481.28Smartin		PAX=${TOOL_PAX:Q} \
1491.28Smartin		COMPRESS_PROGRAM=${COMPRESS_PROGRAM:Q} \
1501.28Smartin		GZIP=${GZIP_FLAGS:Q} \
1511.28Smartin		PKG_CREATE=${TOOL_PKG_CREATE:Q} \
1521.28Smartin		SED=${TOOL_SED:Q} \
1531.28Smartin		TSORT=${TSORT:Q} \
1541.28Smartin		MKRUMP=no \
1551.28Smartin		MKCOMPAT=no \
1561.28Smartin		MKDEBUG=no \
1571.28Smartin		MKDEBUGLIB=no
1581.28Smartin
1591.28SmartinCDSETSCMD=	cd ${NETBSDSRCDIR}/distrib/sets && \
1601.28Smartin		${CDSETSENV} \
1611.28Smartin		${HOST_SH}
1621.1Shubertf
1631.1Shubertf.include "${NETBSDSRCDIR}/distrib/common/Makefile.distrib"
1641.1Shubertf
1651.8Sbouyer.if defined(CDINSTKERNEL)
1661.8Sbouyer_INSTKERNELNOBJDIR!=	cd ${.CURDIR}/${CDINSTKERNEL} && ${PRINTOBJDIR}
1671.8Sbouyer.endif
1681.8Sbouyer.if exists(${DESTDIR}/usr/mdec/bootxx_cd9660)
1691.8Sbouyer.if exists(${DESTDIR}/usr/mdec/boot.${MACHINE})
1701.8SbouyerBOOT2=boot.${MACHINE}
1711.8Sbouyer.else
1721.8SbouyerBOOT2=boot
1731.8Sbouyer.endif
1741.8Sbouyer.endif
1751.1Shubertf
1761.1Shubertfprepare:
1771.36Schristos	${MKDIR} ${MKDIRPERM} "${CUROBJDIR}/cdrom"
1781.56Spgoyette.if ${KERNEL_DIR:Uno} == "yes"
1791.56Spgoyette	${MKDIR} ${MKDIRPERM} "${CUROBJDIR}/cdrom/netbsd"
1801.56Spgoyette.endif
1811.8Sbouyer.if defined(CDKERNELS)
1821.8Sbouyer.for kernel target in ${CDKERNELS}
1831.36Schristos	${INSTALL} ${COPY} -m 0644 ${_INSTKERNELNOBJDIR}/${kernel} cdrom/${target}
1841.8Sbouyer.endfor
1851.8Sbouyer.if exists(${DESTDIR}/usr/mdec/bootxx_cd9660)
1861.8Sbouyer	${RM} -f cdrom/${BOOT2}
1871.36Schristos	${INSTALL} ${COPY} -m 0644 ${DESTDIR}/usr/mdec/${BOOT2} cdrom/${BOOT2}
1881.8Sbouyer	${RM} -f bootxx.${MACHINE}
1891.36Schristos	${INSTALL} ${COPY} -m 0644 ${DESTDIR}/usr/mdec/bootxx_cd9660 bootxx.${MACHINE}
1901.8Sbouyer	${CHMOD} +w bootxx.${MACHINE}
1911.8Sbouyer.if defined(CDBOOTOPTIONS)
1921.8Sbouyer	${TOOL_INSTALLBOOT} -m${MACHINE} -e ${CDBOOTOPTIONS} bootxx.${MACHINE}
1931.8Sbouyer.endif
1941.8Sbouyer.endif
1951.8Sbouyer.endif
1961.1Shubertf
1971.24Sdsl.if ${MAKEVERBOSE} >= 2
1981.24SdslPAX_v?= -v
1991.24Sdsl.else
2001.24SdslPAX_v?=
2011.24Sdsl.endif
2021.24Sdsl
2031.1Shubertf# Copy $RELEASEDIR/${MACHINE} in the CDROM dir
2041.1Shubertf#
2051.1Shubertf# XXX This could be done a lot easier if makefs(8) could
2061.1Shubertf# XXX include more than one directory on the image - HF
2071.1Shubertf#
2081.1Shubertfcopy-releasedir:
2091.18Sjmcneill	${RM} -f ${RELEASEDIR}/${CDROMS_RELEASEDIR}/${CDIMAGE}
2101.9Schristos	if ${CDRELEASE}; then 						\
2111.28Smartin		if [ ! -d ${RELEASEDIR}/${RELEASEMACHINEDIR} ]; then 	\
2121.14Smatt			echo "Missing ${RELEASEDIR}/${RELEASEMACHINEDIR}, aborting"; \
2131.9Schristos			exit 1; 					\
2141.9Schristos		fi; 							\
2151.44Sjmcneill		${MKDIR} ${MKDIRPERM} "${CUROBJDIR}/cdrom/${RELEASEMACHINEDIR}"; 	\
2161.44Sjmcneill		release_destdir="${CUROBJDIR}/cdrom/${RELEASEMACHINEDIR}";	\
2171.15Sad		cd ${RELEASEDIR}/${RELEASEMACHINEDIR}; 			\
2181.9Schristos		echo Copying $$(pwd) to $$release_destdir ...; 		\
2191.37Schristos		${TOOL_PAX} ${PAX_TIMESTAMP}				\
2201.24Sdsl			-rw -pe ${PAX_v}				\
2211.7Shubertf			${CDRELEASE_EXCLUDE}				\
2221.9Schristos			. $$release_destdir; 				\
2231.28Smartin		cd "${CUROBJDIR}";					\
2241.9Schristos	fi
2251.9Schristos	if ${CDSOURCE}; then 						\
2261.9Schristos		if [ ! -d ${RELEASEDIR}/source ]; then	 		\
2271.9Schristos			echo "Missing ${RELEASEDIR}/source, aborting"; 	\
2281.9Schristos			exit 1; 					\
2291.9Schristos		fi; 							\
2301.36Schristos		${MKDIR} ${MKDIRPERM} "${CUROBJDIR}/cdrom/source"; 	\
2311.28Smartin		release_destdir="${CUROBJDIR}/cdrom/source";	 	\
2321.9Schristos		cd ${RELEASEDIR}/source; 				\
2331.9Schristos		echo Copying $$(pwd) to $$release_destdir ...;		\
2341.37Schristos		${TOOL_PAX} ${PAX_TIMESTAMP} 				\
2351.24Sdsl			-rw -pe ${PAX_v}				\
2361.9Schristos			. $$release_destdir; 				\
2371.28Smartin		cd "${CUROBJDIR}";					\
2381.1Shubertf	fi
2391.28Smartin	if [ "X${CDRUNTIME}" != "X" ]; then				\
2401.15Sad		release_destdir=$${curdir}/cdrom;			\
2411.15Sad		cd $$release_destdir;					\
2421.15Sad		cd ${DESTDIR};						\
2431.15Sad		for cde in ${CDRUNTIME};				\
2441.15Sad		do							\
2451.37Schristos			${TOOL_PAX} ${PAX_TIMESTAMP} -rw -pp ${PAX_v}	\
2461.37Schristos				$${cde} $$release_destdir;		\
2471.15Sad		done;							\
2481.28Smartin		cd "${CUROBJDIR}";					\
2491.15Sad	fi
2501.13Ssborrill	if [ "X${CDEXTRA}${CDBUILDEXTRA}" != "X" ]; then		\
2511.13Ssborrill		skipflag="";						\
2521.16Shubertf		cdextra_skip="${CDEXTRA_SKIP}";				\
2531.16Shubertf		if [ "X$${cdextra_skip}" != "X" ]; then			\
2541.13Ssborrill			rm -f cdskip;					\
2551.16Shubertf			for skip in $${cdextra_skip};			\
2561.13Ssborrill			do						\
2571.13Ssborrill				echo $${skip} >> cdskip;		\
2581.13Ssborrill			done;						\
2591.28Smartin			skipflag="-X ${CUROBJDIR:Q}/cdskip";		\
2601.13Ssborrill		fi;							\
2611.16Shubertf		cdextra="${CDEXTRA}"; 					\
2621.16Shubertf		cdbuildextra="${CDBUILDEXTRA}"; 			\
2631.16Shubertf		for cde in $${cdextra} $${cdbuildextra};		\
2641.13Ssborrill		do							\
2651.28Smartin			release_destdir="${CUROBJDIR}/cdrom";		\
2661.13Ssborrill			if [ -f $${cde} ]; then				\
2671.13Ssborrill				echo Copying $${cde} to $$release_destdir ...;	\
2681.38Schristos				${INSTALL} ${COPY} -m 0644 $${cde} $${release_destdir};	\
2691.13Ssborrill			elif [ -d $${cde} ]; then			\
2701.13Ssborrill				cd $${cde};				\
2711.13Ssborrill				echo Copying $$(pwd) to $$release_destdir ...;	\
2721.13Ssborrill				${TOOL_MTREE} -c $${skipflag} |		\
2731.37Schristos					${TOOL_PAX} ${PAX_TIMESTAMP}	\
2741.37Schristos					-rw -pe ${PAX_v}		\
2751.37Schristos					-M $$release_destdir; 		\
2761.13Ssborrill			else						\
2771.13Ssborrill				echo "Missing $${cde}, aborting"; 	\
2781.13Ssborrill				exit 1; 				\
2791.13Ssborrill			fi; 						\
2801.28Smartin			cd "${CUROBJDIR}";				\
2811.13Ssborrill		done;							\
2821.11Sjnemeth	fi
2831.28Smartin.if !empty(CD_SETS)
2841.36Schristos	${MKDIR} ${MKDIRPERM} "${CUROBJDIR}/cdrom/etc/mtree"
2851.28Smartin.for set in ${CD_SETS}
2861.28Smartin	if [ -f ${CUROBJDIR:Q}/cdrom/etc/mtree/set.${set} ]; then	\
2871.28Smartin		${CHMOD} +w ${CUROBJDIR:Q}/cdrom/etc/mtree/set.${set};	\
2881.28Smartin	fi;								\
2891.28Smartin	${CDSETSCMD} ./maketars -i "${CUROBJDIR}/cdrom"			\
2901.29Smartin	    ${CD_METALOG.unpriv} ${mtunpriv} -N ${NETBSDSRCDIR}/etc	\
2911.53Schristos	    -xx -F "${CUROBJDIR}/cdrom/etc/mtree" 			\
2921.28Smartin	    -d "${DESTDIR:S,^$,/,}" ${set}
2931.28Smartin.endfor
2941.28Smartin	if [ -d "${CUROBJDIR}/cdrom/var/spool/ftp/hidden" ]; then	\
2951.28Smartin		${CHMOD} +r "${CUROBJDIR}/cdrom/var/spool/ftp/hidden";	\
2961.28Smartin	fi
2971.28Smartin.endif
2981.1Shubertf
2991.43Smartin.if ${CDDEV_POPULATE} != true
3001.43SmartinDELDEV=-e '/^\.\/dev\/.*type=char/d'
3011.43Smartin.endif
3021.43Smartin
3031.1Shubertfimage:
3041.28Smartin	@echo Preparing spec files for makefs...
3051.28Smartin	${RM} -f ${WORKSPEC}
3061.31Smartin	if [ -d cdrom/etc/mtree ]; then				\
3071.31Smartin		cat cdrom/etc/mtree/* |				\
3081.31Smartin		    ${TOOL_SED} -e 's/ size=[0-9]*//'		\
3091.43Smartin		     ${DELDEV}					\
3101.31Smartin		     -e '/^\.\/etc\/gettytab/d' > ${WORKSPEC};	\
3111.31Smartin	fi
3121.43Smartin	if [ -r cdrom/dev/MAKEDEV ] &&				\
3131.43Smartin		 ${CDDEV_POPULATE} == true; then		\
3141.32Smartin		${HOST_SH} cdrom/dev/MAKEDEV -s init |		\
3151.31Smartin		    ${TOOL_SED} -e '/^\. type=dir/d' 		\
3161.31Smartin			-e 's,^\.,./dev,' >> ${WORKSPEC};	\
3171.31Smartin	fi
3181.28Smartin.if defined(SPEC_IN)
3191.28Smartin	cat ${SPEC_IN} >> ${WORKSPEC}
3201.28Smartin.endif
3211.28Smartin.if defined(SECONDARY_BOOT)
3221.28Smartin	echo "./${SECONDARY_BOOT} type=file uname=root gname=wheel mode=0444" \
3231.28Smartin	    >> ${WORKSPEC}
3241.28Smartin.endif
3251.28Smartin.if defined(SPEC_EXTRA)
3261.28Smartin	cat ${SPEC_EXTRA} >> ${WORKSPEC}
3271.28Smartin.endif
3281.53Schristos	if [ ! -s ${WORKSPEC} ]; then \
3291.53Schristos	    ${MAKESPEC} -d cdrom . > ${WORKSPEC}; \
3301.55Schristos	else \
3311.55Schristos	    for i in ${RELEASEMACHINEDIR} source ${CDEXTRA} ${CDBUILDEXTRA}; do\
3321.55Schristos		if [ -n "$$i" ] && [ -e cdrom/$$i ]; then \
3331.55Schristos		    ${MAKESPEC} -d cdrom $$i >> ${WORKSPEC}; \
3341.55Schristos		fi; \
3351.55Schristos	    done; \
3361.53Schristos	fi
3371.53Schristos	${TOOL_MAKEFS} -N ${NETBSDSRCDIR}/etc -t cd9660 -F ${WORKSPEC} -xx \
3381.50Schristos	    ${MAKEFS_TIMESTAMP} ${CDMAKEFSEXTRAOPTS} -o ${_CDMAKEFSOPTIONS:Q} \
3391.50Schristos	    ${CDIMAGE} cdrom
3401.8Sbouyer
3411.8Sbouyer.if ${CDRELEASE} == false
3421.15Sadrelease: prepare .WAIT prepare_md_post .WAIT copy-releasedir .WAIT image_md_pre .WAIT image .WAIT image_md_post
3431.36Schristos	${MKDIR} ${MKDIRPERM} ${RELEASEDIR}/${CDROMS_RELEASEDIR}
3441.18Sjmcneill	${RELEASE_INSTALL} ${CDIMAGE} ${RELEASEDIR}/${CDROMS_RELEASEDIR}
3451.1Shubertf
3461.8Sbouyeriso_image:
3471.8Sbouyer.else
3481.1Shubertfrelease:
3491.8Sbouyer
3501.15Sadiso_image: prepare .WAIT prepare_md_post .WAIT copy-releasedir .WAIT image_md_pre .WAIT image .WAIT image_md_post
3511.36Schristos	${MKDIR} ${MKDIRPERM} ${RELEASEDIR}/${CDROMS_RELEASEDIR}
3521.18Sjmcneill	${RELEASE_INSTALL} ${CDIMAGE} ${RELEASEDIR}/${CDROMS_RELEASEDIR}
3531.8Sbouyer.endif
3541.1Shubertf
3551.1Shubertfclean:
3561.28Smartin	@if [ -d cdrom/var/spool/ftp/hidden ]; then 		\
3571.28Smartin		${CHMOD} +r cdrom/var/spool/ftp/hidden;		\
3581.28Smartin	fi	# XXX
3591.1Shubertf	${RM} -fr cdrom
3601.1Shubertf
3611.8Sbouyerprepare_md_post: .PHONY
3621.8Sbouyerimage_md_post: .PHONY
3631.15Sadimage_md_pre: .PHONY
3641.8Sbouyer
3651.1Shubertf.include <bsd.prog.mk>
366