svn commit: r364891 - in head: . release release/scripts

Glen Barber gjb at FreeBSD.org
Thu Aug 27 21:19:18 UTC 2020


Author: gjb
Date: Thu Aug 27 21:19:16 2020
New Revision: 364891
URL: https://svnweb.freebsd.org/changeset/base/364891

Log:
  Merge the projects/release-git branch to head.
  This allows building 13.x from Git instead of Subversion.
  
  No MFC to stable branches is planned at this time. [1]
  
  Discussed with:	git working group [1]
  Sponsored by:	Rubicon Communications, LLC (netgate.com)

Added:
  head/release/Makefile.inc1
     - copied unchanged from r364890, projects/release-git/release/Makefile.inc1
Deleted:
  head/release/scripts/relnotes-search.sh
Modified:
  head/Makefile.inc1
  head/release/Makefile
  head/release/Makefile.azure
  head/release/Makefile.ec2
  head/release/Makefile.gce
  head/release/Makefile.mirrors
  head/release/Makefile.vagrant
  head/release/release.conf.sample
  head/release/release.sh
Directory Properties:
  head/   (props changed)
  head/cddl/   (props changed)
  head/cddl/contrib/opensolaris/   (props changed)
  head/contrib/bc/   (props changed)
  head/contrib/byacc/   (props changed)
  head/contrib/elftoolchain/   (props changed)
  head/contrib/ipfilter/   (props changed)
  head/contrib/llvm-project/   (props changed)
  head/contrib/llvm-project/clang/   (props changed)
  head/contrib/llvm-project/compiler-rt/   (props changed)
  head/contrib/llvm-project/libcxx/   (props changed)
  head/contrib/llvm-project/libunwind/   (props changed)
  head/contrib/llvm-project/lld/   (props changed)
  head/contrib/llvm-project/lldb/   (props changed)
  head/contrib/llvm-project/llvm/   (props changed)
  head/contrib/llvm-project/openmp/   (props changed)
  head/contrib/lua/   (props changed)
  head/contrib/mtree/   (props changed)
  head/contrib/netbsd-tests/   (props changed)
  head/contrib/openbsm/   (props changed)
  head/contrib/sendmail/   (props changed)
  head/contrib/sqlite3/   (props changed)
  head/contrib/unbound/   (props changed)
  head/crypto/openssh/   (props changed)
  head/crypto/openssl/   (props changed)
  head/sys/cddl/contrib/opensolaris/   (props changed)
  head/sys/contrib/dev/acpica/   (props changed)
  head/sys/contrib/ipfilter/   (props changed)
  head/sys/gnu/dts/arm/   (props changed)
  head/sys/gnu/dts/arm64/   (props changed)
  head/sys/gnu/dts/include/   (props changed)
  head/sys/gnu/dts/riscv/   (props changed)

Modified: head/Makefile.inc1
==============================================================================
--- head/Makefile.inc1	Thu Aug 27 21:09:17 2020	(r364890)
+++ head/Makefile.inc1	Thu Aug 27 21:19:16 2020	(r364891)
@@ -510,6 +510,15 @@ VCS_REVISION=	$$(echo r${_VCS_REVISION})
 .export VCS_REVISION
 .endif
 
+.if !defined(GIT_CMD) || empty(GIT_CMD)
+. for _P in /usr/bin /usr/local/bin
+.  if exists(${_P}/git)
+GIT_CMD=   ${_P}/git
+.  endif
+. endfor
+.export GIT_CMD
+.endif
+
 .if !defined(OSRELDATE)
 .if exists(/usr/include/osreldate.h)
 OSRELDATE!=	awk '/^\#define[[:space:]]*__FreeBSD_version/ { print $$3 }' \

Modified: head/release/Makefile
==============================================================================
--- head/release/Makefile	Thu Aug 27 21:09:17 2020	(r364890)
+++ head/release/Makefile	Thu Aug 27 21:19:16 2020	(r364891)
@@ -90,15 +90,6 @@ EXTRA_PACKAGES+= src.txz
 .endif
 .if !defined(NODOC)
 EXTRA_PACKAGES+= reldoc
-. if !defined(SVN) || empty(SVN)
-.  for S in svn svnlite
-.   for D in /usr/local/bin /usr/bin
-.    if(exists(${D}/${S}))
-SVN?=	${D}/${S}
-.    endif
-.   endfor
-.  endfor
-. endif
 .endif
 
 RELEASE_TARGETS= ftp
@@ -173,7 +164,6 @@ ports.txz:
 reldoc:
 	cd ${DOCDIR}/en_US.ISO8859-1/htdocs/releases/${REVISION}R && \
 	    env MAN4DIR=${WORLDDIR}/share/man/man4 \
-	    SVN=${SVN} \
 	    _BRANCH=${BRANCH} \
 	    ${MAKE} all install clean "FORMATS=html txt" \
 	    INSTALL_COMPRESSED='' URLS_ABSOLUTE=YES DOCDIR=${.OBJDIR}/rdoc \
@@ -336,4 +326,5 @@ release-install:
 	cd ${DESTDIR} && sha512 ${OSRELEASE}* > ${DESTDIR}/CHECKSUM.SHA512
 	cd ${DESTDIR} && sha256 ${OSRELEASE}* > ${DESTDIR}/CHECKSUM.SHA256
 
+.include "${.CURDIR}/Makefile.inc1"
 .include "${.CURDIR}/Makefile.vm"

Modified: head/release/Makefile.azure
==============================================================================
--- head/release/Makefile.azure	Thu Aug 27 21:09:17 2020	(r364890)
+++ head/release/Makefile.azure	Thu Aug 27 21:19:16 2020	(r364891)
@@ -17,7 +17,7 @@ AZURE${VAR}!=	grep -E ^AZURE${VAR} ${AZURE_UPLOAD_CONF
 .endif
 
 .if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" || ${BRANCH} == "PRERELEASE"
-SNAPSHOT_DATE!=		date +-%Y-%m-%d
+SNAPSHOT_DATE!=		date +-${BUILDDATE}
 .endif
 
 AZURE_TARGET:=		${OSRELEASE}${SNAPSHOT_DATE}.vhd

Modified: head/release/Makefile.ec2
==============================================================================
--- head/release/Makefile.ec2	Thu Aug 27 21:09:17 2020	(r364890)
+++ head/release/Makefile.ec2	Thu Aug 27 21:19:16 2020	(r364891)
@@ -5,32 +5,8 @@
 # Makefile for creating an EC2 AMI from a disk image.
 #
 
-# Figure out where SVN is
-.if !defined(SVN_CMD) || empty(SVN_CMD)
-. for _P in /usr/bin /usr/local/bin
-.  for _S in svn svnlite
-.   if exists(${_P}/${_S})
-SVN_CMD=   ${_P}/${_S}
-.   endif
-.  endfor
-. endfor
-.endif
-.if exists(${SRCTOP}/.svn)
-.  if empty(EC2_SVNBRANCH)
-   EC2_SVNBRANCH!=	${SVN_CMD} info --show-item relative-url ${WORLDDIR} 2>/dev/null | sed -e 's/\^\///'
-.  export EC2_SVNBRANCH
-.  endif
-.  if empty(EC2_SVNREV)
-   EC2_SVNREV!=	${SVN_CMD} info --show-item last-changed-revision ${WORLDDIR} 2>/dev/null || true
-.  export EC2_SVNREV
-.  endif
-.else
-EC2_SVNBRANCH=	unknown
-EC2_SVNREV=	unknown
-.endif
-
 .if ${BRANCH} == "CURRENT" || ${BRANCH} == "STABLE" || ${BRANCH} == "PRERELEASE"
-AMINAMESUFFIX!=	date +-%Y-%m-%d
+AMINAMESUFFIX!=	date +-${BUILDDATE}
 .endif
 .if defined(EC2PUBLIC) && !empty(EC2PUBLIC)
 PUBLISH=	--public
@@ -40,7 +16,7 @@ PUBLICSNAP=	--publicsnap
 .endif
 .if defined(EC2SNSTOPIC) && !empty(EC2SNSTOPIC)
 EC2SNSREL=	${REVISION}-${BRANCH}
-EC2SNSVERS=	${EC2_SVNBRANCH}@${EC2_SVNREV}
+EC2SNSVERS=	${GITBRANCH}@${GITREV}
 .endif
 .if ${TARGET_ARCH} != "amd64"
 EC2ARCH=	--${TARGET_ARCH:S/aarch64/arm64/}
@@ -89,7 +65,7 @@ ec2ami: cw-ec2 ${CW_EC2_PORTINSTALL}
 	    ${EC2ARCH} --sriov --ena \
 	    ${.OBJDIR}/ec2.raw \
 	    "${TYPE} ${REVISION}-${BRANCH}-${TARGET}${AMINAMESUFFIX}" \
-	    "${TYPE}/${TARGET} ${EC2_SVNBRANCH}@${EC2_SVNREV}" \
+	    "${TYPE}/${TARGET} ${GITBRANCH}@${GITREV}" \
 	    ${AWSREGION} ${AWSBUCKET} ${AWSKEYFILE} \
 	    ${EC2SNSTOPIC} ${EC2SNSREL} ${EC2SNSVERS}
 	@touch ${.TARGET}

Modified: head/release/Makefile.gce
==============================================================================
--- head/release/Makefile.gce	Thu Aug 27 21:09:17 2020	(r364890)
+++ head/release/Makefile.gce	Thu Aug 27 21:19:16 2020	(r364891)
@@ -24,8 +24,7 @@ GCE_FAMILY=		${TYPE:tl}-${REVISION:S,.,-,}
 .endif
 
 .if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" || ${BRANCH} == "PRERELEASE"
-_SNAPSHOT_DATE!=	date +%Y%m%d
-SNAPSHOT_DATE=		-v${_SNAPSHOT_DATE}
+SNAPSHOT_DATE=		-v${BUILDDATE}
 GCE_FAMILY_SUFX=	-snap
 .endif
 

Copied: head/release/Makefile.inc1 (from r364890, projects/release-git/release/Makefile.inc1)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/release/Makefile.inc1	Thu Aug 27 21:19:16 2020	(r364891, copy of r364890, projects/release-git/release/Makefile.inc1)
@@ -0,0 +1,31 @@
+#
+# $FreeBSD$
+#
+
+# Figure out where the git binary is.
+.for _P in /usr/bin /usr/local/bin
+. if !defined(GIT_CMD) || empty(GIT_CMD)
+.  if exists(${_P}/git)
+GIT_CMD=   ${_P}/git
+.  endif
+. endif
+.endfor
+.if !defined(GIT_CMD) && empty(GIT_CMD)
+. error "Git binary not found.  Set GIT_CMD appropriately."
+.endif
+
+# Set the git branch and hash to export where needed.
+.if !defined(GITBRANCH) || empty(GITBRANCH)
+GITBRANCH!=	${GIT_CMD} -C ${.CURDIR} rev-parse --abbrev-ref HEAD 2>/dev/null | sed -e 's/\^\///'
+.export GITBRANCH
+.endif
+.if !defined(GITREV) || empty(GITREV)
+GITREV!=	${GIT_CMD} -C ${.CURDIR} rev-parse --verify --short HEAD 2>/dev/null || true
+.export GITREV
+.endif
+
+# Set the build date, primarily for snapshot builds.
+.if !defined(BUILDDATE) || empty(BUILDDATE)
+BUILDDATE!=		date +%Y%m%d
+.export BUILDDATE
+.endif

Modified: head/release/Makefile.mirrors
==============================================================================
--- head/release/Makefile.mirrors	Thu Aug 27 21:09:17 2020	(r364890)
+++ head/release/Makefile.mirrors	Thu Aug 27 21:19:16 2020	(r364891)
@@ -19,7 +19,6 @@ FTPDIR?=		${RELEASEDIR}/ftp-stage
 .if exists(${RELEASEDIR})
 STAGE_TARGETS?=		iso-images-stage
 .endif
-SRCBRANCH!=		${SVN_CMD} info --show-item relative-url ${WORLDDIR}
 
 .if (defined(EMBEDDED_TARGET) && !empty(EMBEDDED_TARGET)) || (defined(EMBEDDEDBUILD) && !empty(EMBEDDEDBUILD))
 . if ${TARGET:Marm*} != "" || ${EMBEDDED_TARGET:Marm*} != ""
@@ -31,26 +30,10 @@ EMBEDDED=		1
 .if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" || ${BRANCH} == "PRERELEASE" || ${BRANCH:MALPHA*} != ""
 SNAPSHOT=		1
 TLD?=			${FTPDIR}/snapshots
-. if !defined(SVNREVISION) || empty(SVNREVISION)
-.  for _D in /usr/bin /usr/local/bin
-.   for _S in svnversion svnliteversion
-.    if exists(${_D}/${_S})
-SVNVERSION?=		${_D}/${_S}
-.    endif
-.   endfor
-.  endfor
-.  if exists(${SVNVERSION}) && !empty(SVNVERSION)
-SVNREVISION!=		${SVNVERSION} ${WORLDDIR}/Makefile
-.  endif
-. endif # !defined(SVNREVISION)
-. if !defined(BUILDDATE) || empty(BUILDDATE)
-.  if exists(${.CURDIR}/${.OBJDIR}/dist/base/bin/sh)
-BUILDDATE!=		cd ${.CURDIR} && date -j -f '%s' $$(stat -f "%c" ${.OBJDIR}/dist/base/bin/sh) +%Y%m%d
-.  else
+.if !defined(BUILDDATE) || empty(BUILDDATE)
 BUILDDATE!=		date +%Y%m%d
-.  endif
-. endif
-_SNAP_SUFFIX:=		${BUILDDATE}-r${SVNREVISION}
+.endif
+_SNAP_SUFFIX:=		${BUILDDATE}-${GITREV}
 .else
 # release
 SNAPSHOT=
@@ -187,8 +170,8 @@ iso-images-stage:
 	mkdir -p ${FTP_DIR}
 	cp -p ${RELEASEDIR}/ftp/*.txz ${RELEASEDIR}/ftp/MANIFEST ${FTP_DIR}
 	echo ${BUILDDATE} > ${FTP_DIR}/BUILDDATE
-	echo ${SRCBRANCH} > ${FTP_DIR}/SRCBRANCH
-	echo r${SVNREVISION} > ${FTP_DIR}/REVISION
+	echo ${GITBRANCH} > ${FTP_DIR}/GITBRANCH
+	echo ${GITREV} > ${FTP_DIR}/REVISION
 	cd ${TLD}/${TARGET} && \
 		ln -s ${TARGET_ARCH}/${REVISION}-${BRANCH} \
 			${REVISION}-${BRANCH}

Modified: head/release/Makefile.vagrant
==============================================================================
--- head/release/Makefile.vagrant	Thu Aug 27 21:09:17 2020	(r364890)
+++ head/release/Makefile.vagrant	Thu Aug 27 21:19:16 2020	(r364891)
@@ -29,7 +29,7 @@ ATLAS${VAR}:=		${VAGRANT${VAR}}
 .endif
 
 .if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT" || ${BRANCH} == "PRERELEASE"
-SNAPSHOT_DATE!=		date +-%Y%m%d
+SNAPSHOT_DATE!=		date +-${BUILDDATE}
 .endif
 
 VAGRANT_VERSION!=	date +%Y.%m.%d

Modified: head/release/release.conf.sample
==============================================================================
--- head/release/release.conf.sample	Thu Aug 27 21:09:17 2020	(r364890)
+++ head/release/release.conf.sample	Thu Aug 27 21:19:16 2020	(r364891)
@@ -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 at rHEAD"
-DOCBRANCH="doc/head at rHEAD"
-PORTBRANCH="ports/head at 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 -q --branch main"
 
 ## Set to override the default target architecture.
 #TARGET="amd64"

Modified: head/release/release.sh
==============================================================================
--- head/release/release.sh	Thu Aug 27 21:09:17 2020	(r364890)
+++ head/release/release.sh	Thu Aug 27 21:19:16 2020	(r364891)
@@ -1,6 +1,7 @@
 #!/bin/sh
 #-
-# Copyright (c) 2013-2018 The FreeBSD Foundation
+# Copyright (c) 2020 Rubicon Communications, LLC (netgate.com)
+# Copyright (c) 2013-2019 The FreeBSD Foundation
 # Copyright (c) 2013 Glen Barber
 # Copyright (c) 2011 Nathan Whitehorn
 # All rights reserved.
@@ -38,7 +39,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 +52,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 +61,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 -q"
+
+	# The default git checkout server, and branches for src/, doc/,
 	# and ports/.
-	SVNROOT="svn://svn.FreeBSD.org/"
-	SRCBRANCH="base/head at rHEAD"
-	DOCBRANCH="doc/head at rHEAD"
-	PORTBRANCH="ports/head at 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 +131,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 +181,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 +220,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 +263,26 @@ 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.
+	_gitcmd="$(which git)"
+	if [ -d ${CHROOTDIR}/usr/ports -a -z "${_gitcmd}" ]; 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.


More information about the svn-src-head mailing list