From owner-svn-src-projects@freebsd.org Wed Jan 27 21:10:05 2016 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7C1C5A6FE74 for ; Wed, 27 Jan 2016 21:10:05 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 3C1DB1D6A; Wed, 27 Jan 2016 21:10:05 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u0RLA4oh095602; Wed, 27 Jan 2016 21:10:04 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u0RLA3AM095598; Wed, 27 Jan 2016 21:10:03 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201601272110.u0RLA3AM095598@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Wed, 27 Jan 2016 21:10:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r294942 - in projects/release-pkg: . release/scripts X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Jan 2016 21:10:05 -0000 Author: gjb Date: Wed Jan 27 21:10:03 2016 New Revision: 294942 URL: https://svnweb.freebsd.org/changeset/base/294942 Log: Add 'stagekernel' target, which invokes 'distributekernel' with -DNO_ROOT to create the METALOG mtree(8) file. Separate the default STAGEDIR for world (WSTAGEDIR) and kernel (KSTAGEDIR). Fix the 'create-kernel-packages' target to work properly. Evaluate if 'kernel' is set when invoking mtree-to-plist.awk, which splits the kernel and kernel.debug into separate plist files. Fix METALOG creation when building/packaging multiple kernels. Sponsored by: The FreeBSD Foundation Modified: projects/release-pkg/Makefile projects/release-pkg/Makefile.inc1 projects/release-pkg/release/scripts/mtree-to-plist.awk Modified: projects/release-pkg/Makefile ============================================================================== --- projects/release-pkg/Makefile Wed Jan 27 21:09:57 2016 (r294941) +++ projects/release-pkg/Makefile Wed Jan 27 21:10:03 2016 (r294942) @@ -125,7 +125,7 @@ TGTS= all all-man buildenv buildenvvars _worldtmp _legacy _bootstrap-tools _cleanobj _obj \ _build-tools _cross-tools _includes _libraries _depend \ build32 builddtb distribute32 install32 xdev xdev-build xdev-install \ - xdev-links native-xtools create-kernel-packages stageworld \ + xdev-links native-xtools create-kernel-packages stageworld stagekernel \ create-world-packages packages installconfig signpackages TGTS+= ${SUBDIR_TARGETS} Modified: projects/release-pkg/Makefile.inc1 ============================================================================== --- projects/release-pkg/Makefile.inc1 Wed Jan 27 21:09:57 2016 (r294941) +++ projects/release-pkg/Makefile.inc1 Wed Jan 27 21:10:03 2016 (r294942) @@ -267,6 +267,11 @@ TMPPATH= ${STRICTTMPPATH}:${PATH} 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 # @@ -1305,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 @@ -1357,7 +1362,11 @@ packagekernel: .endif .endif -STAGEDIR= ${MAKEOBJDIRPREFIX}${.CURDIR}/stage +stagekernel: + ${MAKE} -C ${.CURDIR} ${.MAKEFLAGS} distributekernel + +WSTAGEDIR= ${MAKEOBJDIRPREFIX}${.CURDIR}/worldstage +KSTAGEDIR= ${MAKEOBJDIRPREFIX}${.CURDIR}/kernelstage REPODIR= ${MAKEOBJDIRPREFIX}${.CURDIR}/repo PKGSIGNKEY?= # empty @@ -1365,10 +1374,12 @@ _pkgbootstrap: @env ASSUME_ALWAYS_YES=YES pkg bootstrap packages: _pkgbootstrap - @mkdir -p ${STAGEDIR} ${REPODIR} + @mkdir -p ${WSTAGEDIR} ${KSTAGEDIR} ${REPODIR} ${_+_}@cd ${.CURDIR}; \ - ${MAKE} DESTDIR=${DESTDIR:U${STAGEDIR}} -DNO_ROOT -B stageworld ; \ - ${MAKE} DESTDIR=${DESTDIR:U${STAGEDIR}} create-world-packages + ${MAKE} DESTDIR=${DESTDIR:U${WSTAGEDIR}} -DNO_ROOT -B stageworld ; \ + ${MAKE} DESTDIR=${DESTDIR:U${WSTAGEDIR}} create-world-packages ; \ + ${MAKE} DESTDIR=${DESTDIR:U${KSTAGEDIR}} -DNO_ROOT -B stagekernel ; \ + ${MAKE} DESTDIR=${DESTDIR:U${KSTAGEDIR}} DISTDIR=kernel create-kernel-packages create-world-packages: _pkgbootstrap @rm -f ${DESTDIR}/*.plist 2>/dev/null || : @@ -1404,55 +1415,65 @@ create-world-packages: _pkgbootstrap done create-kernel-packages: _pkgbootstrap - @cd ${DESTDIR}/${DISTDIR} ; \ - awk -f ${SRCDIR}/release/scripts/mtree-to-plist.awk \ - ${DESTDIR}/${DISTDIR}/kernel.meta +.if exists(${DESTDIR}/kernel.meta) .for flavor in release debug -.if exists(${DESTDIR}/${DISTDIR}/${flavor}.plist) - @rm -rf ${DESTDIR}/${DISTDIR}/${flavor}-manifestdir - @cp -r ${SRCDIR}/release/packages/kernel \ - ${DESTDIR}/${DISTDIR}/${flavor}-manifestdir @cd ${DESTDIR}/${DISTDIR} ; \ - sed -i '' -e "s/%VERSION%/${PKG_VERSION}/" \ + 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 ${KERNCONF} kernel ${flavor}/" \ - -e "s/%DESC%/FreeBSD ${KERNCONF} kernel ${flavor}/" \ - ${DESTDIR}/${DISTDIR}/${flavor}-manifestdir/+MANIFEST - @awk -F\" '/name/ { printf("===> Creating %s-", $$2) } /version/ {print $$2 }' \ - ${DESTDIR}/${DISTDIR}/${flavor}-manifestdir/+MANIFEST - @pkg -o ABI_FILE=${DESTDIR}/bin/sh create -m ${DESTDIR}/${DISTDIR}/${flavor}-manifestdir \ - -p ${DESTDIR}/${DISTDIR}/${flavor}.plist \ - -r ${DESTDIR}/${DISTDIR}/kernel \ - -o ${DESTDIR} -.endif + -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 config ABI)/latest .endfor -.for _kernel in ${BUILDKERNELS:S/${INSTALLKERNEL}//} - @cd ${DESTDIR}/${DISTDIR} ; \ - awk -f ${SRCDIR}/release/scripts/mtree-to-plist.awk \ - ${DESTDIR}/${DISTDIR}/kernel${_kernel}.meta +.endif +.if ${BUILDKERNELS:[#]} > 1 && !defined(NO_INSTALLEXTRAKERNELS) +.for _kernel in ${BUILDKERNELS:[2..-1]} +.if exists(${DESTDIR}/kernel.${_kernel}.meta) .for flavor in release debug -.if exists(${DESTDIR}/${DISTDIR}/${flavor}.plist) - @rm -rf ${DESTDIR}/${DISTDIR}/${flavor}-manifestdir - @cp -r ${SRCDIR}/release/packages/kernel \ - ${DESTDIR}/${DISTDIR}/${flavor}-manifestdir - @cd ${DESTDIR}/${DISTDIR} ; \ - sed -i '' -e "s/%VERSION%/${PKG_VERSION}/" \ + @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-${flavor}/" \ - -e "s/%COMMENT%/FreeBSD ${KERNCONF} kernel ${flavor}/" \ - -e "s/%DESC%/FreeBSD ${KERNCONF} kernel ${flavor}/" \ - ${DESTDIR}/${DISTDIR}/${flavor}-manifestdir/+MANIFEST - @awk -F\" '/name/ { printf("===> Creating %s-", $$2) } /version/ {print $$2 }' \ - ${DESTDIR}/${DISTDIR}/${flavor}-manifestdir/+MANIFEST - @pkg -o ABI_FILE=${DESTDIR}/bin/sh create -m ${DESTDIR}/${DISTDIR}/${flavor}-manifestdir \ - -p ${DESTDIR}/${DISTDIR}/${flavor}.plist \ - -r ${DESTDIR}/${DISTDIR}/kernel.${_kernel} \ - -o ${DESTDIR} -.endif + -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}/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 config ABI)/latest .endfor +.endif .endfor +.endif signpackages: _pkgbootstrap - @pkg -o ABI_FILE=${STAGEDIR}/bin/sh repo ${REPODIR}/$$(pkg config ABI) ${PKGSIGNKEY} + @pkg -o ABI_FILE=${WSTAGEDIR}/bin/sh repo ${REPODIR}/$$(pkg config ABI) ${PKGSIGNKEY} # # doxygen Modified: projects/release-pkg/release/scripts/mtree-to-plist.awk ============================================================================== --- projects/release-pkg/release/scripts/mtree-to-plist.awk Wed Jan 27 21:09:57 2016 (r294941) +++ projects/release-pkg/release/scripts/mtree-to-plist.awk Wed Jan 27 21:10:03 2016 (r294942) @@ -22,6 +22,12 @@ type="dir" } } + if (kernel != "") { + tags="package=kernel" + if (_kernconf != "") { + tags=tags""_kernconf + } + } if (length(tags) == 0) next if (tags ~ /package=/) { @@ -57,10 +63,22 @@ } } } else { - print "No packages specified in line: $0" > 2 + print "No packages specified in line: $0" next } - output=pkgname".plist" + if (kernel != "") { + output="kernel" + if (_kernconf != "") { + output=output"."_kernconf + } + if ($1 ~ /^\/usr\/lib\/debug\/boot/) { + output=output"-debug.plist" + } else { + output=output"-release.plist" + } + } else { + output=pkgname".plist" + } print "@"type"("uname","gname","mode","flags") " $1 > output }