aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlen Barber <gjb@FreeBSD.org>2020-07-31 19:31:52 +0000
committerGlen Barber <gjb@FreeBSD.org>2020-07-31 19:31:52 +0000
commit66fe2bef957566358732720d66971e0813439243 (patch)
tree77cde31a1ae0b71656cb57266d22c7ec3eb29573
parent40056899f641d741d8c0c71161ffa665f4502af3 (diff)
downloadsrc-66fe2bef957566358732720d66971e0813439243.tar.gz
src-66fe2bef957566358732720d66971e0813439243.zip
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)
Notes
Notes: svn path=/projects/release-git/; revision=363740
-rw-r--r--release/release.conf.sample26
-rwxr-xr-xrelease/release.sh81
-rwxr-xr-xrelease/scripts/relnotes-search.sh133
3 files changed, 55 insertions, 185 deletions
diff --git a/release/release.conf.sample b/release/release.conf.sample
index d4843a90cc00..23de28670a82 100644
--- a/release/release.conf.sample
+++ b/release/release.conf.sample
@@ -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"
-
-## 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"
+SRCBRANCH="main"
+DOCBRANCH="main"
+PORTBRANCH="main"
+
+## Sample configuration for using git from ports.
+#GITCMD="/usr/local/bin/git clone --branch main"
## Set to override the default target architecture.
#TARGET="amd64"
diff --git a/release/release.sh b/release/release.sh
index c7ae9959e7dc..160a5e4aaf61 100755
--- a/release/release.sh
+++ b/release/release.sh
@@ -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.
diff --git a/release/scripts/relnotes-search.sh b/release/scripts/relnotes-search.sh
deleted file mode 100755
index 895f3998f8ad..000000000000
--- a/release/scripts/relnotes-search.sh
+++ /dev/null
@@ -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 $?