diff --git a/release/Makefile b/release/Makefile --- a/release/Makefile +++ b/release/Makefile @@ -7,13 +7,15 @@ # memstick: Builds memory stick image (memstick.img) # mini-memstick: Builds minimal memory stick image (mini-memstick.img) # ftp: Sets up FTP distribution area (ftp) -# release: Invokes real-release, vm-release, and cloudware-release targets +# release: Invokes real-release, vm-release, cloudware-release, and mfsbsd-release targets # real-release: Build all media and FTP distribution area # vm-release: Build all virtual machine image targets # cloudware-release: Build all cloud hosting provider targets -# install: Invokes the release-install and vm-install targets +# mfsbsd-release: Build all mfsBSD image targets +# install: Invokes the release-install, vm-install, and mfsbsd-install targets # release-install: Copies all release installation media into ${DESTDIR} # vm-install: Copies all virtual machine images into ${DESTDIR} +# mfsbsd-install: Copies all mfsBSD images into ${DESTDIR} # # Variables affecting the build process: # WORLDDIR: location of src tree -- must have built world and default kernel @@ -30,6 +32,7 @@ # WITH_COMPRESSED_VMIMAGES: if set, compress virtual machine disk images # with xz(1) (extremely time consuming) # WITH_CLOUDWARE: if set, build cloud hosting disk images with the release +# WITH_MFSBSD: if set, build mfsBSD images with the release # TARGET/TARGET_ARCH: architecture of built release # @@ -113,7 +116,7 @@ beforeclean: chflags -R noschg . .include -clean: beforeclean +clean: beforeclean mfsbsd-clean base.txz: mkdir -p ${DISTDIR} @@ -312,7 +315,7 @@ mkdir -p ftp cp *.txz MANIFEST ftp -release: real-release vm-release cloudware-release +release: real-release vm-release cloudware-release mfsbsd-release ${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} release-done true @@ -323,7 +326,7 @@ ${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} obj ${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} ${RELEASE_TARGETS} -install: release-install vm-install +install: release-install vm-install mfsbsd-install release-install: .if defined(DESTDIR) && !empty(DESTDIR) @@ -343,3 +346,4 @@ .include "${.CURDIR}/Makefile.inc1" .include "${.CURDIR}/Makefile.vm" +.include "${.CURDIR}/Makefile.mfsbsd" \ No newline at end of file diff --git a/release/Makefile.mfsbsd b/release/Makefile.mfsbsd new file mode 100644 --- /dev/null +++ b/release/Makefile.mfsbsd @@ -0,0 +1,101 @@ +# +# $FreeBSD$ +# +# +# Makefile for building mfsBSD images. +# + +MFSBSD_FORMATS?= img iso +MFSBSD_TYPES?= mfsbsd-se +MFSBSD-SEIMG_DESC= Special edition mfsBSD disc image including base.txz and kernel.txz +MFSBSD-SEISO_DESC= Special edition mfsBSD optical image including base.txz and kernel.txz + +MFSBSD_MKINCLUDEDIR?= /usr/share/mk +MFSBSD_PKGSTATIC?= /usr/local/sbin/pkg-static +MFSBSD_DIR!= realpath ${WORLDDIR}/contrib/mfsbsd +MFSBSD_WRKDIR?= ${.OBJDIR}/../contrib/mfsbsd + +.if defined(WITH_MFSBSD) && !empty(WITH_MFSBSD) +. for TYPE in ${MFSBSD_TYPES} +. for FORMAT in ${MFSBSD_FORMATS} +CLEANFILES+= ${TYPE}.${FORMAT} +. endfor +. endfor +.endif + +mfsbsd-base: mfsbsd-image + +mfsbsd-image: +.if defined(WITH_MFSBSD) && !empty(WITH_MFSBSD) + mkdir -p ${MFSBSD_WRKDIR} +. for TYPE in ${MFSBSD_TYPES} +. for FORMAT in ${MFSBSD_FORMATS} +. if !exists(${MFSBSD_PKGSTATIC}) +# If pkg-static is not present at the device, mfsBSD build process +# cannot proceed further. Thus, creating .packages_done bypasses +# that specific part of the build process that requires pkg-static. + touch ${MFSBSD_WRKDIR}/.packages_done +. endif + ${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} ${TYPE}-${FORMAT} \ + MFSBSD_TYPE=${TYPE} MFSBSD_FORMAT=${FORMAT} + mv ${MFSBSD_DIR}/${TYPE}.${FORMAT} ${.OBJDIR}/ +. endfor +. endfor +.endif + +mfsbsd-se-img: +.if defined(MFSBSD_TYPE) && !empty(MFSBSD_TYPE) +. if defined(MFSBSD_FORMAT) && !empty(MFSBSD_FORMAT) + env MAKEOBJDIR=${MFSBSD_DIR} ${MAKE} -C ${MFSBSD_DIR} SE=1 \ + ${.MAKEFLAGS} -m"${MFSBSD_MKINCLUDEDIR}" BASE=${.OBJDIR} \ + IMAGE=${MFSBSD_TYPE}.${MFSBSD_FORMAT} WRKDIR=${MFSBSD_WRKDIR} +. endif +.endif + +mfsbsd-se-iso: +.if defined(MFSBSD_TYPE) && !empty(MFSBSD_TYPE) +. if defined(MFSBSD_FORMAT) && !empty(MFSBSD_FORMAT) + env MAKEOBJDIR=${MFSBSD_DIR} ${MAKE} -C ${MFSBSD_DIR} iso SE=1 \ + ${.MAKEFLAGS} -m"${MFSBSD_MKINCLUDEDIR}" BASE=${.OBJDIR} \ + ISOIMAGE=${MFSBSD_TYPE}.${MFSBSD_FORMAT} WRKDIR=${MFSBSD_WRKDIR} +. endif +.endif + +list-mfsbsd: + @${ECHO} + @${ECHO} "Supported mfsBSD image targets:" +.for TYPE in ${MFSBSD_TYPES} +. for FORMAT in ${MFSBSD_FORMATS} + @${ECHO} " ${TYPE}.${FORMAT}: ${${TYPE:tu}${FORMAT:tu}_DESC}" +. endfor +.endfor + +mfsbsd-install: +.if defined(WITH_MFSBSD) && !empty(WITH_MFSBSD) + mkdir -p ${DESTDIR}/mfsbsdimages +. for TYPE in ${MFSBSD_TYPES} +. for FORMAT in ${MFSBSD_FORMATS} + cp -p ${TYPE}.${FORMAT} \ + ${DESTDIR}/mfsbsdimages/${OSRELEASE}-${TYPE}.${FORMAT} +. endfor +. endfor + cd ${DESTDIR}/mfsbsdimages && sha512 ${OSRELEASE}* > \ + ${DESTDIR}/mfsbsdimages/CHECKSUM.SHA512 + cd ${DESTDIR}/mfsbsdimages && sha256 ${OSRELEASE}* > \ + ${DESTDIR}/mfsbsdimages/CHECKSUM.SHA256 +.endif + +mfsbsd-release: +.if defined(WITH_MFSBSD) && !empty(WITH_MFSBSD) + ${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} mfsbsd-image +.endif + +mfsbsd-clean: + env MAKEOBJDIR=${MFSBSD_DIR} ${MAKE} -C ${MFSBSD_DIR} clean-all \ + ${.MAKEFLAGS} -m"${MFSBSD_MKINCLUDEDIR}" BASE=${.OBJDIR} \ + WRKDIR=${MFSBSD_WRKDIR} +.for TYPE in ${MFSBSD_TYPES} +. for FORMAT in ${MFSBSD_FORMATS} + rm -f ${MFSBSD_DIR}/${TYPE}.${FORMAT}* +. endfor +.endfor \ No newline at end of file diff --git a/release/release.conf.sample b/release/release.conf.sample --- a/release/release.conf.sample +++ b/release/release.conf.sample @@ -114,3 +114,10 @@ ## If WITH_CLOUDWARE is set to a non-empty value, this is a list of providers ## to create disk images. #CLOUDWARE="EC2 GCE OCI VAGRANT-VIRTUALBOX VAGRANT-VMWARE" + +## Set to a non-empty value to build mfsBSD images as part of the release build. +#WITH_MFSBSD= + +## If WITH_MFSBSD is set to a non-empty value, this is a list of mfsBSD +## image formats to create. +#MFSBSD_FORMATS="img iso" \ No newline at end of file diff --git a/release/release.sh b/release/release.sh --- a/release/release.sh +++ b/release/release.sh @@ -118,6 +118,9 @@ # cloud providers as part of the release. WITH_CLOUDWARE= + # Set to non-empty value to build mfsBSD images as part of the release. + WITH_MFSBSD= + return 0 } # env_setup() @@ -193,7 +196,8 @@ RELEASE_RMAKEFLAGS="${ARCH_FLAGS} \ KERNCONF=\"${KERNEL}\" ${CONF_FILES} ${SRCPORTS} \ WITH_DVD=${WITH_DVD} WITH_VMIMAGES=${WITH_VMIMAGES} \ - WITH_CLOUDWARE=${WITH_CLOUDWARE} XZ_THREADS=${XZ_THREADS}" + WITH_CLOUDWARE=${WITH_CLOUDWARE} WITH_MFSBSD=${WITH_MFSBSD} \ + XZ_THREADS=${XZ_THREADS}" return 0 } # env_check()