Page MenuHomeFreeBSD

D41705.diff
No OneTemporary

D41705.diff

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 <bsd.obj.mk>
-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"
diff --git a/release/Makefile.mfsbsd b/release/Makefile.mfsbsd
new file mode 100644
--- /dev/null
+++ b/release/Makefile.mfsbsd
@@ -0,0 +1,122 @@
+#
+# $FreeBSD$
+#
+#
+# Makefile for building mfsBSD images.
+#
+
+MFSBSD_TYPES?= mfsbsd-se
+MFSBSD_FORMATS?= img iso
+MFSBSD-SEIMG_DESC= Special edition mfsBSD .img file including base.txz and kernel.txz
+MFSBSD-SEISO_DESC= Special edition mfsBSD .iso file including base.txz and kernel.txz
+
+#
+# Paths
+#
+MFSBSD_DIR?= ${WORLDDIR}/contrib/mfsbsd
+MFSBSD_SRCDIR?= /usr/src
+MFSBSD_TMPDIR?= ${.OBJDIR}/../contrib/mfsbsd_tmp
+MFSBSD_WRKDIR?= ${MFSBSD_TMPDIR}/work
+MFSBSD_DISTDIR!= make -C ${MFSBSD_DIR} -V _DESTDIR WRKDIR=${MFSBSD_WRKDIR}
+MFSBSD_ROOTDIR!= make -C ${MFSBSD_DIR} -V _ROOTDIR WRKDIR=${MFSBSD_WRKDIR}
+MFSBSD_MKINCLUDEDIR?= /usr/share/mk
+
+#
+# Build defaults
+#
+MFSBSD_JOBS!= sysctl -n hw.ncpu
+MFSBSD_KERNCONF?= GENERIC
+MFSBSD_PKGSTATIC?= /usr/local/sbin/pkg-static
+
+.if defined(WITH_MFSBSD) && !empty(WITH_MFSBSD)
+CLEANDIRS+= ${MFSBSD_TMPDIR}
+. 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)
+. for TYPE in ${MFSBSD_TYPES}
+. for FORMAT in ${MFSBSD_FORMATS}
+ ${IMAKE} ${.MAKEFLAGS} -C ${.CURDIR} ${TYPE}.${FORMAT}
+. endfor
+. endfor
+.endif
+
+mfsbsd-se.img: mfsbsd-before-build mfsbsd-build mfsbsd-build-install
+ cd ${MFSBSD_TMPDIR} && ${IMAKE} -m ${MFSBSD_MKINCLUDEDIR} \
+ ${.MAKEFLAGS} MAKEJOBS=${MFSBSD_JOBS} WRKDIR=${MFSBSD_WRKDIR} \
+ SE=1 IMAGE=${.TARGET} BASE=${.OBJDIR} image
+ install -m 0644 ${MFSBSD_TMPDIR}/${.TARGET} .
+
+mfsbsd-se.iso: mfsbsd-before-build mfsbsd-build mfsbsd-build-install
+ cd ${MFSBSD_TMPDIR} && ${IMAKE} -m ${MFSBSD_MKINCLUDEDIR} \
+ ${.MAKEFLAGS} MAKEJOBS=${MFSBSD_JOBS} WRKDIR=${MFSBSD_WRKDIR} \
+ SE=1 ISOIMAGE=${.TARGET} BASE=${.OBJDIR} iso
+ install -m 0644 ${MFSBSD_TMPDIR}/${.TARGET} .
+
+mfsbsd-before-build: ${MFSBSD_WRKDIR}/.tmp_done
+${MFSBSD_WRKDIR}/.tmp_done:
+# Copy mfsBSD source files to the temporary folder. This is necessary to
+# prevent mfsBSD build process from writing to the src contrib directory.
+ mkdir -p ${MFSBSD_WRKDIR}
+ cp -rpf ${MFSBSD_DIR}/. ${MFSBSD_TMPDIR}/
+ touch ${MFSBSD_WRKDIR}/.tmp_done
+.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
+
+mfsbsd-build: ${MFSBSD_WRKDIR}/.build_done
+${MFSBSD_WRKDIR}/.build_done:
+ cd ${MFSBSD_SRCDIR} && ${IMAKE} \
+ ${.MAKEFLAGS} -j${MFSBSD_JOBS} buildworld buildkernel
+ touch ${MFSBSD_WRKDIR}/.build_done
+
+mfsbsd-build-install: ${MFSBSD_WRKDIR}/.install_done
+${MFSBSD_WRKDIR}/.install_done:
+ ${IMAKE} ${.MAKEFLAGS} -C ${.CURDIR} obj bootonly
+ cd ${MFSBSD_TMPDIR} && ${IMAKE} \
+ ${.MAKEFLAGS} MAKEJOBS=${MFSBSD_JOBS} WRKDIR=${MFSBSD_WRKDIR} \
+ KERNCONF=${MFSBSD_KERNCONF} \
+ SE=1 BASE=${.OBJDIR} install
+
+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}
+ install -m 0644 ${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)
+ ${IMAKE} -C ${.CURDIR} ${.MAKEFLAGS} mfsbsd-image
+.endif
+
+mfsbsd-clean:
+ cd ${MFSBSD_DIR} && env MAKEOBJDIR=${MFSBSD_TMPDIR} \
+ ${IMAKE} ${.MAKEFLAGS} WRKDIR=${MFSBSD_WRKDIR} clean-all
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"
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()

File Metadata

Mime Type
text/plain
Expires
Wed, Oct 2, 7:29 PM (19 h, 1 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
13323379
Default Alt Text
D41705.diff (7 KB)

Event Timeline