mirror of
https://git.hardenedbsd.org/hardenedbsd/HardenedBSD.git
synced 2024-11-26 02:20:51 +01:00
Add the ability to build a release from an SVN checkout instead of a CVS
checkout. If SVNROOT is specified, then the source tree will be checked out from that SVN repository instead of using CVS. ports and docs still use CVS. If SVNROOT is not specified, then the source tree will be checked out using CVS. An explicit SVN branch can be specified using SVNBRANCH (e.g. SVNBRANCH=stable/8). If SVNBRANCH is not set but RELEASETAG is set to a CVS branch (such as RELENG_8) the appropriate SVN branch will be inferred from the CVS branch using svnbranch.awk. Note that there are still several open questions about using SVN instead of CVS in the release process. However, this does enable one to build a release from an SVN repository if needed. Approved by: re (kensmith)
This commit is contained in:
parent
e70dd3b105
commit
b03ddec95f
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=196221
@ -1,7 +1,8 @@
|
||||
# $FreeBSD$
|
||||
#
|
||||
# make release [BUILDNAME=somename] CHROOTDIR=/some/dir CVSROOT=/cvs/dir \
|
||||
# [RELEASETAG=tag]
|
||||
# [RELEASETAG=tag] [SVNROOT=svn://svn.freebsd.org/base] \
|
||||
# [SVNBRANCH=some/branch]
|
||||
#
|
||||
# Where "/some/dir" is the pathname of a directory on a some filesystem with
|
||||
# at least 1000MB of free space, "somename" is what you want the release to
|
||||
@ -9,6 +10,11 @@
|
||||
# which CVS "tag" name should be used when checking out the sources to build
|
||||
# the release (default is HEAD).
|
||||
#
|
||||
# Please note the support for building from SVN is preliminary and there
|
||||
# are still questions about things like how to handle updates of
|
||||
# /usr/src on production systems (csup(1) replacement). It is a work
|
||||
# in progress and may change as the other issues get worked out.
|
||||
#
|
||||
# Please note: the md(4) driver must be present in the kernel
|
||||
# (either by being compiled in or available as a kld(4) module),
|
||||
# otherwise the target 'release.8' and possibly others will fail.
|
||||
@ -49,12 +55,25 @@ BUILDNAME?=${BASE}-${DATE}-SNAP
|
||||
# To add other options to the CVS command, set
|
||||
#CVSARGS="-lfq"
|
||||
#
|
||||
# To prefix the cvs command
|
||||
# To prefix the CVS command
|
||||
#CVSPREFIX="/usr/bin/time"
|
||||
#
|
||||
# Where the CVS repository is
|
||||
#CVSROOT="/home/ncvs"
|
||||
#
|
||||
# To add other options to the Subversion subcommands (co,up), set
|
||||
#SVNCMDARGS="-r '{ 01/01/2002 00:00:00 UTC }'"
|
||||
#
|
||||
# To prefix the Subversion command
|
||||
#SVNPREFIX="/usr/bin/time"
|
||||
#
|
||||
# Where the Subversion repository is
|
||||
#SVNROOT=svn://svn.freebsd.org/base
|
||||
#
|
||||
# Subversion branch to build for src. If this is not set then it is
|
||||
# automatically computed from RELEASETAG.
|
||||
#SVNBRANCH=stable/7
|
||||
#
|
||||
# Non-zero if ${RELEASETAG} is in the form "RELENG_ver_RELEASE"; we
|
||||
# are building an official release. Otherwise, we are building for
|
||||
# a branch.
|
||||
@ -68,6 +87,16 @@ PORTSRELEASETAG?= ${AUXRELEASETAG}
|
||||
.endif
|
||||
.endif
|
||||
|
||||
# Determine the Subversion source branch that corresponds to the requested
|
||||
# RELEASETAG.
|
||||
.if !defined(SVNBRANCH)
|
||||
.if defined(RELEASETAG)
|
||||
SVNBRANCH!= echo "${RELEASETAG}" | awk -f ${.CURDIR}/svnbranch.awk
|
||||
.else
|
||||
SVNBRANCH= head
|
||||
.endif
|
||||
.endif
|
||||
|
||||
# If you want to pass flags to the world build such as -j X, use
|
||||
# WORLD_FLAGS. Similarly, you can specify make flags for kernel
|
||||
# builds via KERNEL_FLAGS.
|
||||
@ -341,8 +370,17 @@ CVS_PORTSARGS+= -r ${PORTSRELEASETAG}
|
||||
WORLDDIR?= ${.CURDIR}/..
|
||||
|
||||
release rerelease:
|
||||
.if !defined(CHROOTDIR) || !defined(BUILDNAME) || !defined(CVSROOT)
|
||||
@echo "To make a release you must set CHROOTDIR, BUILDNAME and CVSROOT" && false
|
||||
.if !defined(CHROOTDIR) || !defined(BUILDNAME)
|
||||
@echo "To make a release you must set CHROOTDIR and BUILDNAME" && false
|
||||
.endif
|
||||
.if !defined(NOPORTSATALL) && !defined(EXTPORTSDIR) && !defined(CVSROOT)
|
||||
@echo "Building ports requires CVSROOT or EXTPORTSDIR" && false
|
||||
.endif
|
||||
.if !defined(NODOC) && !defined(EXTDOCDIR) && !defined(CVSROOT)
|
||||
@echo "Building docs requires CVSROOT or EXTDOCDIR" && false
|
||||
.endif
|
||||
.if !defined(EXTSRCDIR) && !defined(CVSROOT) && !defined(SVNROOT)
|
||||
@echo "The source tree requires SVNROOT, CVSROOT, or EXTSRCDIR" && false
|
||||
.endif
|
||||
.if defined(NOPORTSATALL) && !defined(NODOC)
|
||||
@echo "Ports are required for building the release docs. Either set NODOC or"
|
||||
@ -387,6 +425,10 @@ release rerelease:
|
||||
.if defined(EXTSRCDIR)
|
||||
cd ${CHROOTDIR}/usr && \
|
||||
cp -R -H ${EXTSRCDIR} src
|
||||
.elif defined(SVNROOT)
|
||||
cd ${CHROOTDIR}/usr && \
|
||||
${SVNPREFIX} svn co ${SVNCMDARGS} ${SVNROOT}/${SVNBRANCH} \
|
||||
${RELEASESRCMODULE}
|
||||
.else
|
||||
cd ${CHROOTDIR}/usr && \
|
||||
${CVSPREFIX} cvs -R ${CVSARGS} -d ${CVSROOT} \
|
||||
@ -432,7 +474,10 @@ release rerelease:
|
||||
.endif
|
||||
.if make(rerelease)
|
||||
.if !defined(RELEASENOUPDATE) && !defined(EXTSRCDIR)
|
||||
.if !defined(RELEASETAG)
|
||||
.if defined(SVNROOT)
|
||||
cd ${CHROOTDIR}/usr/src && ${SVNPREFIX} svn switch ${SVNCMDARGS} \
|
||||
${SVNROOT}/${SVNBRANCH}
|
||||
.elif !defined(RELEASETAG)
|
||||
cd ${CHROOTDIR}/usr/src && ${CVSPREFIX} cvs -R ${CVSARGS} -q \
|
||||
update ${CVSCMDARGS} -P -d -A
|
||||
.else
|
||||
|
28
release/svnbranch.awk
Normal file
28
release/svnbranch.awk
Normal file
@ -0,0 +1,28 @@
|
||||
# $FreeBSD$
|
||||
|
||||
BEGIN {
|
||||
FS = "_"
|
||||
}
|
||||
|
||||
/RELENG_.*_RELEASE/ {
|
||||
if (NF == 5) {
|
||||
printf "release/%s.%s.%s", $2, $3, $4
|
||||
exit
|
||||
}
|
||||
}
|
||||
|
||||
/RELENG_.*/ {
|
||||
if (NF == 3) {
|
||||
printf "releng/%s.%s", $2, $3
|
||||
exit
|
||||
}
|
||||
|
||||
if (NF == 2) {
|
||||
printf "stable/%s", $2
|
||||
exit
|
||||
}
|
||||
}
|
||||
|
||||
// {
|
||||
printf "unknown_branch"
|
||||
}
|
Loading…
Reference in New Issue
Block a user