diff options
Diffstat (limited to 'Makefile.inc1')
-rw-r--r-- | Makefile.inc1 | 165 |
1 files changed, 162 insertions, 3 deletions
diff --git a/Makefile.inc1 b/Makefile.inc1 index 222d7ec2b74f..8fc07557dbf1 100644 --- a/Makefile.inc1 +++ b/Makefile.inc1 @@ -177,6 +177,21 @@ VERSION= FreeBSD ${REVISION}-${BRANCH:C/-p[0-9]+$//} ${TARGET_ARCH} ${SRCRELDATE .export VERSION .endif +.if !defined(PKG_VERSION) +REVISION!= ${MAKE} -C ${SRCDIR}/release -V REVISION +BRANCH!= ${MAKE} -C ${SRCDIR}/release -V BRANCH +SRCRELDATE!= awk '/^\#define[[:space:]]*__FreeBSD_version/ { print $$3 }' \ + ${SRCDIR}/sys/sys/param.h +.if ${BRANCH:MSTABLE*} || ${BRANCH:MCURRENT*} +TIMENOW= %Y%m%d%H%M%S +EXTRA_REVISION= .s${TIMENOW:gmtime} +.endif +.if ${BRANCH:M*-p*} +EXTRA_REVISION= _${BRANCH:C/.*-p([0-9]+$)/\1/} +.endif +PKG_VERSION= ${REVISION}${EXTRA_REVISION} +.endif + KNOWN_ARCHES?= aarch64/arm64 \ amd64 \ arm \ @@ -248,10 +263,15 @@ TMPPATH= ${STRICTTMPPATH}:${PATH} # It may not be functional, e.g., due to new ABI # when in the middle of installing over this system. # -.if make(distributeworld) || make(installworld) +.if make(distributeworld) || make(installworld) || make(stageworld) INSTALLTMP!= /usr/bin/mktemp -d -u -t install .endif +.if make(stagekernel) || make(distributekernel) +TAGS+= kernel +PACKAGE= kernel +.endif + # # Building a world goes through the following stages # @@ -534,6 +554,9 @@ IMAKE+= -DNO_ROOT METALOG=${METALOG} INSTALLFLAGS+= -U -M ${METALOG} -D ${INSTALL_DDIR} MTREEFLAGS+= -W .endif +.if defined(BUILD_PKGS) +INSTALLFLAGS+= -h sha256 +.endif .if defined(DB_FROM_SRC) || defined(NO_ROOT) IMAKE_INSTALL= INSTALL="install ${INSTALLFLAGS}" IMAKE_MTREE= MTREE_CMD="mtree ${MTREEFLAGS}" @@ -921,7 +944,7 @@ DEBUG_DISTRIBUTIONS+= base ${EXTRA_DISTRIBUTIONS:S,doc,,:S,tests,,} MTREE_MAGIC?= mtree 2.0 -distributeworld installworld: _installcheck_world +distributeworld installworld stageworld: _installcheck_world mkdir -p ${INSTALLTMP} progs=$$(for prog in ${ITOOLS}; do \ if progpath=`which $$prog`; then \ @@ -1073,6 +1096,21 @@ reinstall: .MAKE .PHONY ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install32 .endif +restage: .MAKE .PHONY + @echo "--------------------------------------------------------------" + @echo ">>> Making hierarchy" + @echo "--------------------------------------------------------------" + ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 \ + LOCAL_MTREE=${LOCAL_MTREE:Q} hierarchy distribution + @echo + @echo "--------------------------------------------------------------" + @echo ">>> Installing everything" + @echo "--------------------------------------------------------------" + ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install +.if defined(LIB32TMP) && ${MK_LIB32} != "no" + ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install32 +.endif + redistribute: .MAKE .PHONY @echo "--------------------------------------------------------------" @echo ">>> Distributing everything" @@ -1272,7 +1310,7 @@ distributekernel distributekernel.debug: DESTDIR=${INSTALL_DDIR}/kernel.${_kernel} \ ${.TARGET:S/distributekernel/install/} .if defined(NO_ROOT) - sed -e 's|^./kernel|.|' \ + sed -e "s|^./kernel.${_kernel}|.|" \ ${DESTDIR}/${DISTDIR}/kernel.${_kernel}.premeta > \ ${DESTDIR}/${DISTDIR}/kernel.${_kernel}.meta .endif @@ -1324,6 +1362,127 @@ packagekernel: .endif .endif +stagekernel: + ${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} distributekernel + +WSTAGEDIR= ${MAKEOBJDIRPREFIX}${.CURDIR}/worldstage +KSTAGEDIR= ${MAKEOBJDIRPREFIX}${.CURDIR}/kernelstage +REPODIR= ${MAKEOBJDIRPREFIX}${.CURDIR}/repo +PKGSIGNKEY?= # empty + +_pkgbootstrap: +.if !exists(${LOCALBASE}/sbin/pkg) + @env ASSUME_ALWAYS_YES=YES pkg bootstrap +.endif + +packages: _pkgbootstrap + @mkdir -p ${WSTAGEDIR} ${KSTAGEDIR} ${REPODIR} + ${_+_}@cd ${.CURDIR}; \ + ${MAKE} DESTDIR=${DESTDIR:U${WSTAGEDIR}} -DNO_ROOT -B stageworld ; \ + ${MAKE} DESTDIR=${DESTDIR:U${KSTAGEDIR}} -DNO_ROOT -B stagekernel ; \ + ${MAKE} DESTDIR=${DESTDIR:U${WSTAGEDIR}} \ + PKG_VERSION=${PKG_VERSION} create-world-packages ; \ + ${MAKE} DESTDIR=${DESTDIR:U${KSTAGEDIR}} \ + PKG_VERSION=${PKG_VERSION} DISTDIR=kernel \ + create-kernel-packages + +create-world-packages: _pkgbootstrap + @rm -f ${DESTDIR}/*.plist 2>/dev/null || : + @cd ${DESTDIR} ; \ + awk -f ${SRCDIR}/release/scripts/mtree-to-plist.awk \ + ${DESTDIR}/METALOG + @for plist in ${DESTDIR}/*.plist; do \ + plist=$${plist##*/} ; \ + test -f ${SRCDIR}/release/packages/$${plist%.plist}.ucl || \ + ( echo "Unkown package FreeBSD-$${plist%.plist}" ; false ) ; \ + done + @cap_arg=`cd ${SRCDIR}/etc ; ${MAKE} -VCAP_MKDB_ENDIAN` ; \ + pwd_arg=`cd ${SRCDIR}/etc ; ${MAKE} -VPWD_MKDB_ENDIAN` ; \ + for plist in ${DESTDIR}/*.plist; do \ + plist=$${plist##*/} ; \ + pkgname=$${plist%.plist} ; \ + sed -e "s/%VERSION%/${PKG_VERSION}/" \ + -e "s/%PKGNAME%/$${pkgname}/" \ + -e "s/%COMMENT%/Generic comment for $${pkgname}/" \ + -e "s/%DESC%/Generic description for $${pkgname}/" \ + -e "s/%CAP_MKDB_ENDIAN%/$${cap_arg}/g" \ + -e "s/%PWD_MKDB_ENDIAN%/$${pwd_arg}/g" \ + ${SRCDIR}/release/packages/$${pkgname}.ucl \ + > ${DESTDIR}/$${pkgname}.ucl ; \ + awk -F\" ' \ + /^name/ { printf("===> Creating %s-", $$2); next } \ + /^version/ { print $$2; next } \ + ' ${DESTDIR}/$${pkgname}.ucl ; \ + pkg -o ABI_FILE=${DESTDIR}/bin/sh \ + create -M ${DESTDIR}/$${pkgname}.ucl \ + -p ${DESTDIR}/$${pkgname}.plist \ + -r ${DESTDIR} \ + -o ${REPODIR}/$$(pkg -o ABI_FILE=${DESTDIR}/bin/sh config ABI)/latest ; \ + done + +create-kernel-packages: _pkgbootstrap +.if exists(${DESTDIR}/kernel.meta) +.for flavor in release debug + @cd ${DESTDIR}/${DISTDIR} ; \ + awk -f ${SRCDIR}/release/scripts/mtree-to-plist.awk \ + -v kernel=yes \ + ${DESTDIR}/kernel.meta ; \ + cap_arg=`cd ${SRCDIR}/etc ; ${MAKE} -VCAP_MKDB_ENDIAN` ; \ + pwd_arg=`cd ${SRCDIR}/etc ; ${MAKE} -VPWD_MKDB_ENDIAN` ; \ + sed -e "s/%VERSION%/${PKG_VERSION}/" \ + -e "s/%PKGNAME%/kernel-${flavor}/" \ + -e "s/%COMMENT%/FreeBSD ${INSTKERNNAME} kernel ${flavor}/" \ + -e "s/%DESC%/FreeBSD ${INSTKERNNAME} kernel ${flavor}/" \ + -e "s/%CAP_MKDB_ENDIAN%/$${cap_arg}/g" \ + -e "s/%PWD_MKDB_ENDIAN%/$${pwd_arg}/g" \ + ${SRCDIR}/release/packages/kernel.ucl \ + > ${DESTDIR}/${DISTDIR}/kernel-${flavor}.ucl ; \ + awk -F\" ' \ + /name/ { printf("===> Creating %s-", $$2); next } \ + /version/ {print $$2; next } ' \ + ${DESTDIR}/${DISTDIR}/kernel-${flavor}.ucl ; \ + pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh \ + create -M ${DESTDIR}/${DISTDIR}/kernel-${flavor}.ucl \ + -p ${DESTDIR}/${DISTDIR}/kernel-${flavor}.plist \ + -r ${DESTDIR}/${DISTDIR} \ + -o ${REPODIR}/$$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/latest +.endfor +.endif +.if ${BUILDKERNELS:[#]} > 1 && !defined(NO_INSTALLEXTRAKERNELS) +.for _kernel in ${BUILDKERNELS:[2..-1]} +.if exists(${DESTDIR}/kernel.${_kernel}.meta) +.for flavor in release debug + @cd ${DESTDIR}/kernel.${_kernel} ; \ + awk -f ${SRCDIR}/release/scripts/mtree-to-plist.awk \ + -v kernel=yes -v _kernconf=${_kernel} \ + ${DESTDIR}/kernel.${_kernel}.meta ; \ + cap_arg=`cd ${SRCDIR}/etc ; ${MAKE} -VCAP_MKDB_ENDIAN` ; \ + pwd_arg=`cd ${SRCDIR}/etc ; ${MAKE} -VPWD_MKDB_ENDIAN` ; \ + sed -e "s/%VERSION%/${PKG_VERSION}/" \ + -e "s/%PKGNAME%/kernel-${_kernel:tl}-${flavor}/" \ + -e "s/%COMMENT%/FreeBSD ${_kernel} kernel ${flavor}/" \ + -e "s/%DESC%/FreeBSD ${_kernel} kernel ${flavor}/" \ + -e "s/%CAP_MKDB_ENDIAN%/$${cap_arg}/g" \ + -e "s/%PWD_MKDB_ENDIAN%/$${pwd_arg}/g" \ + ${SRCDIR}/release/packages/kernel.ucl \ + > ${DESTDIR}/kernel.${_kernel}/kernel.${_kernel}-${flavor}.ucl ; \ + awk -F\" ' \ + /name/ { printf("===> Creating %s-", $$2); next } \ + /version/ {print $$2; next } ' \ + ${DESTDIR}/kernel.${_kernel}/kernel.${_kernel}-${flavor}.ucl ; \ + pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh \ + create -M ${DESTDIR}/kernel.${_kernel}/kernel.${_kernel}-${flavor}.ucl \ + -p ${DESTDIR}/kernel.${_kernel}/kernel.${_kernel}-${flavor}.plist \ + -r ${DESTDIR}/kernel.${_kernel} \ + -o ${REPODIR}/$$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/latest +.endfor +.endif +.endfor +.endif + +signpackages: _pkgbootstrap + @pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh repo ${REPODIR}/$$(pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI) ${PKGSIGNKEY} + # # doxygen # |