release: update to use git instead of svn:

release.sh:
  - Bump the version number.
  - Default VCSCMD to '/usr/local/bin/git clone'.
  - Rename SVN* variables to GIT* equivalents.
  - Remove dead code to inject a trailing '/' between two variables.
  - Remove SRC_FORCE_CHECKOUT.
  - Exit if the build host does not have devel/git installed.
  - Install devel/git in the build chroot(8) for newvers.sh.

release.conf.sample:
  - Update sample configuration variables to the git equivalent.

relnotes-search.sh:
  - Remove script.  It is specifically for use with svn.

Sponsored by:	Rubicon Communications, LLC (netgate.com)
This commit is contained in:
Glen Barber 2020-07-31 19:31:52 +00:00
parent 40056899f6
commit 66fe2bef95
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/projects/release-git/; revision=363740
3 changed files with 54 additions and 184 deletions

View file

@ -12,23 +12,19 @@
## Set the directory within which the release will be built.
CHROOTDIR="/scratch"
## Set the svn host.
SVNROOT="svn://svn.FreeBSD.org/"
## Set the version control system host.
GITROOT="https://cgit-beta.freebsd.org/"
GITSRC="src.git"
GITPORTS="ports.git"
GITDOC="doc.git"
## Set the src/, ports/, and doc/ branches or tags.
SRCBRANCH="base/head@rHEAD"
DOCBRANCH="doc/head@rHEAD"
PORTBRANCH="ports/head@rHEAD"
SRCBRANCH="main"
DOCBRANCH="main"
PORTBRANCH="main"
## Run svn co --force for src checkout.
#SRC_FORCE_CHECKOUT=yes
## Sample configuration for using git instead of svn.
#VCSCMD="/usr/local/bin/git clone --branch master"
#SVNROOT=""
#SRCBRANCH="https://github.com/freebsd/freebsd"
#DOCBRANCH="https://github.com/freebsd/freebsd-doc"
#PORTBRANCH="https://github.com/freebsd/freebsd-ports"
## Sample configuration for using git from ports.
#GITCMD="/usr/local/bin/git clone --branch main"
## Set to override the default target architecture.
#TARGET="amd64"

View file

@ -38,7 +38,7 @@
export PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin"
VERSION=2
VERSION=3
# Prototypes that can be redefined per-chroot or per-target.
load_chroot_env() { }
@ -51,7 +51,7 @@ usage() {
}
# env_setup(): Set up the default build environment variables, such as the
# CHROOTDIR, VCSCMD, SVNROOT, etc. This is called before the release.conf
# CHROOTDIR, VCSCMD, GITROOT, etc. This is called before the release.conf
# file is sourced, if '-c <release.conf>' is specified.
env_setup() {
# The directory within which the release will be built.
@ -60,27 +60,29 @@ env_setup() {
# The default version control system command to obtain the sources.
for _dir in /usr/bin /usr/local/bin; do
for _svn in svn svnlite; do
[ -x "${_dir}/${_svn}" ] && VCSCMD="${_dir}/${_svn}"
[ ! -z "${VCSCMD}" ] && break 2
done
[ -x "${_dir}/git" ] && VCSCMD="/${_dir}/git"
[ ! -z "${VCSCMD}" ] && break 2
done
VCSCMD="${VCSCMD} checkout"
# The default svn checkout server, and svn branches for src/, doc/,
if [ -z "${VCSCMD}" ]; then
echo "*** The devel/git port/package is required."
exit 1
fi
VCSCMD="/usr/local/bin/git clone"
# The default git checkout server, and branches for src/, doc/,
# and ports/.
SVNROOT="svn://svn.FreeBSD.org/"
SRCBRANCH="base/head@rHEAD"
DOCBRANCH="doc/head@rHEAD"
PORTBRANCH="ports/head@rHEAD"
GITROOT="https://cgit-beta.FreeBSD.org/"
SRCBRANCH="main"
DOCBRANCH="main"
PORTBRANCH="main"
GITSRC="src.git"
GITPORTS="ports.git"
GITDOC="doc.git"
# Set for embedded device builds.
EMBEDDEDBUILD=
# Sometimes one needs to checkout src with --force svn option.
# If custom kernel configs copied to src tree before checkout, e.g.
SRC_FORCE_CHECKOUT=
# The default make.conf and src.conf to use. Set to /dev/null
# by default to avoid polluting the chroot(8) environment with
# non-default settings.
@ -128,20 +130,11 @@ env_setup() {
# in env_setup() if '-c <release.conf>' is specified.
env_check() {
chroot_build_release_cmd="chroot_build_release"
# Fix for backwards-compatibility with release.conf that does not have
# the trailing '/'.
case ${SVNROOT} in
*svn*)
SVNROOT="${SVNROOT}/"
;;
*)
;;
esac
# Prefix the branches with the SVNROOT for the full checkout URL.
SRCBRANCH="${SVNROOT}${SRCBRANCH}"
DOCBRANCH="${SVNROOT}${DOCBRANCH}"
PORTBRANCH="${SVNROOT}${PORTBRANCH}"
# Prefix the branches with the GITROOT for the full checkout URL.
SRC="${GITROOT}${GITSRC}"
DOC="${GITROOT}${GITDOC}"
PORT="${GITROOT}${GITPORTS}"
if [ -n "${EMBEDDEDBUILD}" ]; then
WITH_DVD=
@ -187,11 +180,6 @@ env_check() {
else
ARCH_FLAGS=
fi
# Force src checkout if configured
FORCE_SRC_KEY=
if [ -n "${SRC_FORCE_CHECKOUT}" ]; then
FORCE_SRC_KEY="--force"
fi
if [ -z "${CHROOTDIR}" ]; then
echo "Please set CHROOTDIR."
@ -231,13 +219,13 @@ chroot_setup() {
mkdir -p ${CHROOTDIR}/usr
if [ -z "${SRC_UPDATE_SKIP}" ]; then
${VCSCMD} ${FORCE_SRC_KEY} ${SRCBRANCH} ${CHROOTDIR}/usr/src
${VCSCMD} ${SRC} -b ${SRCBRANCH} ${CHROOTDIR}/usr/src
fi
if [ -z "${NODOC}" ] && [ -z "${DOC_UPDATE_SKIP}" ]; then
${VCSCMD} ${DOCBRANCH} ${CHROOTDIR}/usr/doc
${VCSCMD} ${DOC} -b ${DOCBRANCH} ${CHROOTDIR}/usr/doc
fi
if [ -z "${NOPORTS}" ] && [ -z "${PORTS_UPDATE_SKIP}" ]; then
${VCSCMD} ${PORTBRANCH} ${CHROOTDIR}/usr/ports
${VCSCMD} ${PORT} -b ${PORTBRANCH} ${CHROOTDIR}/usr/ports
fi
if [ -z "${CHROOTBUILD_SKIP}" ]; then
@ -274,6 +262,25 @@ extra_chroot_setup() {
cp ${SRC_CONF} ${CHROOTDIR}/${SRC_CONF}
fi
# Install git from ports or packages if the ports tree is
# available and VCSCMD is unset.
if [ -d ${CHROOTDIR}/usr/ports ]; then
# Trick the ports 'run-autotools-fixup' target to do the right
# thing.
_OSVERSION=$(chroot ${CHROOTDIR} /usr/bin/uname -U)
REVISION=$(chroot ${CHROOTDIR} make -C /usr/src/release -V REVISION)
BRANCH=$(chroot ${CHROOTDIR} make -C /usr/src/release -V BRANCH)
UNAME_r=${REVISION}-${BRANCH}
GITUNSETOPTS="CONTRIB CURL CVS GITWEB GUI HTMLDOCS"
GITUNSETOPTS="${GITUNSETOPTS} ICONV NLS P4 PERL"
GITUNSETOPTS="${GITUNSETOPTS} SEND_EMAIL SUBTREE SVN"
GITUNSETOPTS="${GITUNSETOPTS} PCRE PCRE2"
eval chroot ${CHROOTDIR} env OPTIONS_UNSET="${GITUNSETOPTS}" \
make -C \ /usr/ports/devel/git FORCE_PKG_REGISTER=1 \
WRKDIRPREFIX=/tmp/ports \
DISTDIR=/tmp/distfiles \
install clean distclean
fi
if [ -d ${CHROOTDIR}/usr/ports ]; then
# Trick the ports 'run-autotools-fixup' target to do the right
# thing.

View file

@ -1,133 +0,0 @@
#!/bin/sh
#-
# Copyright (c) 2014 The FreeBSD Foundation
# All rights reserved.
#
# This software were developed by Glen Barber
# under sponsorship from the FreeBSD Foundation.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
# $FreeBSD$
#
set -C
PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin"
export PATH
usage() {
echo "Usage:"
echo -n "$(basename ${0}) [-rNNNNNN]"
echo " [-l /path/for/output] /path/to/branch"
echo " -r: The oldest commit to include in the search"
echo ""
exit 1
}
main() {
while getopts "l:r:" arg ; do
case ${arg} in
l)
# Disallow '-rNNNNNN' argument for oldest
# revision # from becoming the log file
# accidentally.
where="${OPTARG##-r*}"
[ -z "${where}" ] && usage
if [ -e "${where}" ]; then
echo "Log file already exists:"
echo " (${where})"
return 2
fi
;;
r)
rev="${OPTARG##-r}"
c=$(echo -n ${rev} | tr -d '0-9' | wc -c)
if [ ${c} -ne 0 ]; then
echo "Revision number must be numeric."
return 2
fi
# Since the last specified revision is
# specified, mangle the variable to
# make svn syntax happy.
rev="-r${rev}:rHEAD"
;;
*)
usage
;;
esac
done
shift $(( ${OPTIND} - 1 ))
# This assumes a local working copy, which svn search
# allows exactly one repository path (although the root
# can still be the path).
[ "$#" -ne 1 ] && usage
# If no log file, write to stdout.
[ -z "${where}" ] && where=/dev/stdout
svn=
# Where is svn?
for s in /usr/bin /usr/local/bin; do
if [ -x ${s}/svn ]; then
svn=${s}/svn
break
fi
if [ -x ${s}/svnlite ]; then
svn=${s}/svnlite
break
fi
done
# Did we find svn?
if [ -z "${svn}" ]; then
echo "svn(1) binary not found."
return 2
fi
# Is more than one path specified? (This should never
# be triggered, because the argument count is checked
# above, but better safe than sorry.)
if [ $# -gt 1 ]; then
echo "Cannot specify more than one working path."
return 2
fi
# Does the directory exist?
if [ ! -d "${1}" ]; then
echo "Specified path (${1}) is not a directory."
return 2
fi
# Is it a subversion repository checkout?
${svn} info ${1} >/dev/null 2>&1
if [ "$?" -ne 0 ]; then
echo "Cannot determine svn repository information for ${1}"
return 2
fi
# All tests passed. Let's see what can possibly go wrong
# from here. The search string specified should match this
# in PCRE speak: ':[\t ]*'
${svn} log ${rev} --search 'Relnotes:*[A-Za-z0-9]*' ${1} > ${where}
return $?
}
main "${@}"
exit $?