diff options
author | Glen Barber <gjb@FreeBSD.org> | 2020-07-31 19:31:52 +0000 |
---|---|---|
committer | Glen Barber <gjb@FreeBSD.org> | 2020-07-31 19:31:52 +0000 |
commit | 66fe2bef957566358732720d66971e0813439243 (patch) | |
tree | 77cde31a1ae0b71656cb57266d22c7ec3eb29573 | |
parent | 40056899f641d741d8c0c71161ffa665f4502af3 (diff) | |
download | src-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.sample | 26 | ||||
-rwxr-xr-x | release/release.sh | 81 | ||||
-rwxr-xr-x | release/scripts/relnotes-search.sh | 133 |
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 $? |