Bug 180192 - [PATCH] release/release.sh bugfixes+small improvements
Summary: [PATCH] release/release.sh bugfixes+small improvements
Status: Closed FIXED
Alias: None
Product: Base System
Classification: Unclassified
Component: conf (show other bugs)
Version: 9.1-STABLE
Hardware: Any Any
: Normal Affects Only Me
Assignee: Glen Barber
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-07-02 10:20 UTC by Anes Mukhametov
Modified: 2013-07-08 02:50 UTC (History)
1 user (show)

See Also:


Attachments
release.diff (4.62 KB, patch)
2013-07-02 10:20 UTC, Anes Mukhametov
no flags Details | Diff
release.diff (4.64 KB, patch)
2013-07-02 10:57 UTC, Anes Mukhametov
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Anes Mukhametov 2013-07-02 10:20:00 UTC
	Changeset for release/release.sh with updates in release/release.conf.sample.
	1. Fixed bug when textproc/docproj was not installed when NODOCS was unset, added some cleanup.
	2. Fixed bug when NOPORTS and NODOCS were passed as make vars even if they were unset.
		They should not pass because of definedness check.
	3. Added www/w3m to workaround docs build failures.
	4. Added WITHOUT_X11=yes WITHOUT_PYTHON=yes to docproj and w3m make variables.
	5. Added support of multiple kerneles build.
	6. Added SRC_FORCE_CHECKOUT config variable which tells to checkout with "--force" option.
		Useful when one puts custom kernels to sys/${TARGET}/conf before source tree checkout.
Comment 1 Glen Barber freebsd_committer freebsd_triage 2013-07-02 11:07:37 UTC
Responsible Changed
From-To: freebsd-bugs->gjb

Grab.
Comment 2 Glen Barber freebsd_committer freebsd_triage 2013-07-05 23:05:03 UTC
State Changed
From-To: open->patched

Patched in head, pending MFC.  Thanks!
Comment 3 dfilter service freebsd_committer freebsd_triage 2013-07-05 23:05:03 UTC
Author: gjb
Date: Fri Jul  5 22:04:49 2013
New Revision: 252846
URL: http://svnweb.freebsd.org/changeset/base/252846

Log:
  - Add SRC_FORCE_CHECKOUT configuration option to force svn to checkout
    the src/ tree into a directory that contains files/directories, such
    as a case where a custom kernel configuration file is specified.
  
  - Allow specification of multiple KERNCONFs to pass to 'make release'.
  
  - Move evaluation of NODOCS/NOPORTS earlier, and set based on how the
    release process expects these options to be evaluated.
  
  - Wrap KERNCONF specification in double quotes, and use 'eval' so multiple
    kernel configurations do not cause the build to fail in strange ways.
  
  - Set WITHOUT_X11 for the port build flags for the documentation toolchain
    build.  Also run 'clean distclean' targets during port build.
  
  PR:		180192
  Submitted by:	Anes Mukhametov
  MFC after:	3 days
  Approved by:	kib (mentor, implicit)

Modified:
  head/release/release.conf.sample
  head/release/release.sh

Modified: head/release/release.conf.sample
==============================================================================
--- head/release/release.conf.sample	Fri Jul  5 21:41:05 2013	(r252845)
+++ head/release/release.conf.sample	Fri Jul  5 22:04:49 2013	(r252846)
@@ -14,6 +14,9 @@ SRCBRANCH="base/head"
 DOCBRANCH="doc/head"
 PORTBRANCH="ports/head"
 
+## Run svn co --force for src checkout.
+#SRC_FORCE_CHECKOUT=yes
+
 ## Set the src/, ports/, and doc/ revisions.
 SRCREVISION="-rHEAD"
 DOCREVISION="-rHEAD"
@@ -23,6 +26,8 @@ PORTREVISION="-rHEAD"
 #TARGET="amd64"
 #TARGET_ARCH="amd64"
 #KERNEL="GENERIC"
+## Multiple kernels may be set.
+#KERNEL="GENERIC XENHVM"
 
 ## Set to specify a custom make.conf and/or src.conf
 #MAKE_CONF="/etc/local/make.conf"

Modified: head/release/release.sh
==============================================================================
--- head/release/release.sh	Fri Jul  5 21:41:05 2013	(r252845)
+++ head/release/release.sh	Fri Jul  5 22:04:49 2013	(r252846)
@@ -45,6 +45,10 @@ SRCBRANCH="base/head"
 DOCBRANCH="doc/head"
 PORTBRANCH="ports/head"
 
+# 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 src/, doc/, and ports/ revisions.
 SRCREVISION="-rHEAD"
 DOCREVISION="-rHEAD"
@@ -109,6 +113,25 @@ while getopts c: opt; do
 done
 shift $(($OPTIND - 1))
 
+# If PORTS is set and NODOC is unset, force NODOC=yes because the ports tree
+# is required to build the documentation set.
+if [ "x${NOPORTS}" != "x" ] && [ "x${NODOC}" = "x" ]; then
+	echo "*** NOTICE: Setting NODOC=1 since ports tree is required"
+	echo "            and NOPORTS is set."
+	NODOC=yes
+fi
+
+# If NOPORTS and/or NODOC are unset, they must not pass to make as variables.
+# The release makefile verifies definedness of NOPORTS/NODOC variables
+# instead of their values.
+DOCPORTS=
+if [ "x${NOPORTS}" != "x" ]; then
+ DOCPORTS="NOPORTS=yes "
+fi
+if [ "x${NODOC}" != "x" ]; then
+ DOCPORTS="${DOCPORTS}NODOC=yes"
+fi
+
 # The aggregated build-time flags based upon variables defined within
 # this file, unless overridden by release.conf.  In most cases, these
 # will not need to be changed.
@@ -118,16 +141,14 @@ CHROOT_WMAKEFLAGS="${MAKE_FLAGS} ${WORLD
 CHROOT_IMAKEFLAGS="${CONF_FILES}"
 CHROOT_DMAKEFLAGS="${CONF_FILES}"
 RELEASE_WMAKEFLAGS="${MAKE_FLAGS} ${WORLD_FLAGS} ${ARCH_FLAGS} ${CONF_FILES}"
-RELEASE_KMAKEFLAGS="${MAKE_FLAGS} ${KERNEL_FLAGS} KERNCONF=${KERNEL} ${ARCH_FLAGS} ${CONF_FILES}"
-RELEASE_RMAKEFLAGS="${ARCH_FLAGS} KERNCONF=${KERNEL} ${CONF_FILES} \
-	NODOC=${NODOC} NOPORTS=${NOPORTS}"
-
-# If PORTS is set and NODOC is unset, force NODOC=yes because the ports tree
-# is required to build the documentation set.
-if [ "x${NOPORTS}" != "x" ] && [ "x${NODOC}" = "x" ]; then
-	echo "*** NOTICE: Setting NODOC=1 since ports tree is required"
-	echo "            and NOPORTS is set."
-	NODOC=1
+RELEASE_KMAKEFLAGS="${MAKE_FLAGS} ${KERNEL_FLAGS} KERNCONF=\"${KERNEL}\" ${ARCH_FLAGS} ${CONF_FILES}"
+RELEASE_RMAKEFLAGS="${ARCH_FLAGS} KERNCONF=\"${KERNEL}\" ${CONF_FILES} \
+	${DOCPORTS}"
+
+# Force src checkout if configured
+FORCE_SRC_KEY=
+if [ "x${SRC_FORCE_CHECKOUT}" != "x" ]; then
+ FORCE_SRC_KEY="--force"
 fi
 
 if [ ! ${CHROOTDIR} ]; then
@@ -144,7 +165,7 @@ set -e # Everything must succeed
 
 mkdir -p ${CHROOTDIR}/usr
 
-svn co ${SVNROOT}/${SRCBRANCH} ${CHROOTDIR}/usr/src $SRCREVISION
+svn co ${FORCE_SRC_KEY} ${SVNROOT}/${SRCBRANCH} ${CHROOTDIR}/usr/src $SRCREVISION
 if [ "x${NODOC}" = "x" ]; then
 	svn co ${SVNROOT}/${DOCBRANCH} ${CHROOTDIR}/usr/doc $DOCREVISION
 fi
@@ -164,10 +185,10 @@ trap "umount ${CHROOTDIR}/dev" EXIT # Cl
 build_doc_ports() {
 	## Trick the ports 'run-autotools-fixup' target to do the right thing.
 	_OSVERSION=$(sysctl -n kern.osreldate)
-	if [ -d ${CHROOTDIR}/usr/doc ] && [ "x${NODOC}" != "x" ]; then
-		PBUILD_FLAGS="OSVERSION=${_OSVERSION} WITHOUT_JADETEX=yes BATCH=yes"
+	if [ -d ${CHROOTDIR}/usr/doc ] && [ "x${NODOC}" = "x" ]; then
+		PBUILD_FLAGS="OSVERSION=${_OSVERSION} WITHOUT_JADETEX=yes WITHOUT_X11=yes BATCH=yes"
 		chroot ${CHROOTDIR} make -C /usr/ports/textproc/docproj \
-			${PBUILD_FLAGS} install
+			${PBUILD_FLAGS} install clean distclean
 	fi
 }
 
@@ -191,11 +212,11 @@ if [ "x${RELSTRING}" = "x" ]; then
 	RELSTRING="$(chroot ${CHROOTDIR} uname -s)-${OSRELEASE}-${TARGET_ARCH}"
 fi
 
-chroot ${CHROOTDIR} make -C /usr/src ${RELEASE_WMAKEFLAGS} buildworld
-chroot ${CHROOTDIR} make -C /usr/src ${RELEASE_KMAKEFLAGS} buildkernel
-chroot ${CHROOTDIR} make -C /usr/src/release ${RELEASE_RMAKEFLAGS} \
+eval chroot ${CHROOTDIR} make -C /usr/src ${RELEASE_WMAKEFLAGS} buildworld
+eval chroot ${CHROOTDIR} make -C /usr/src ${RELEASE_KMAKEFLAGS} buildkernel
+eval chroot ${CHROOTDIR} make -C /usr/src/release ${RELEASE_RMAKEFLAGS} \
 	release RELSTRING=${RELSTRING}
-chroot ${CHROOTDIR} make -C /usr/src/release ${RELEASE_RMAKEFLAGS} \
+eval chroot ${CHROOTDIR} make -C /usr/src/release ${RELEASE_RMAKEFLAGS} \
 	install DESTDIR=/R RELSTRING=${RELSTRING}
 
 cd ${CHROOTDIR}/R
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
Comment 4 Glen Barber freebsd_committer freebsd_triage 2013-07-08 02:46:20 UTC
State Changed
From-To: patched->closed

MFC complete.
Comment 5 dfilter service freebsd_committer freebsd_triage 2013-07-08 02:46:31 UTC
Author: gjb
Date: Mon Jul  8 01:46:11 2013
New Revision: 253019
URL: http://svnweb.freebsd.org/changeset/base/253019

Log:
  MFC r252846:
  
   - Add SRC_FORCE_CHECKOUT configuration option to force svn to checkout
     the src/ tree into a directory that contains files/directories, such
     as a case where a custom kernel configuration file is specified.
  
   - Allow specification of multiple KERNCONFs to pass to 'make release'.
  
   - Move evaluation of NODOCS/NOPORTS earlier, and set based on how the
     release process expects these options to be evaluated.
  
   - Wrap KERNCONF specification in double quotes, and use 'eval' so multiple
     kernel configurations do not cause the build to fail in strange ways.
  
   - Set WITHOUT_X11 for the port build flags for the documentation toolchain
     build.  Also run 'clean distclean' targets during port build.
  
  PR:		180192
  MFC after:	3 days
  Approved by:	kib (mentor, implicit)

Modified:
  stable/9/release/release.conf.sample
  stable/9/release/release.sh
Directory Properties:
  stable/9/release/   (props changed)

Modified: stable/9/release/release.conf.sample
==============================================================================
--- stable/9/release/release.conf.sample	Mon Jul  8 01:29:09 2013	(r253018)
+++ stable/9/release/release.conf.sample	Mon Jul  8 01:46:11 2013	(r253019)
@@ -14,6 +14,9 @@ SRCBRANCH="base/stable/9"
 DOCBRANCH="doc/head"
 PORTBRANCH="ports/head"
 
+## Run svn co --force for src checkout.
+#SRC_FORCE_CHECKOUT=yes
+
 ## Set the src/, ports/, and doc/ revisions.
 SRCREVISION="-rHEAD"
 DOCREVISION="-rHEAD"
@@ -23,6 +26,8 @@ PORTREVISION="-rHEAD"
 #TARGET="amd64"
 #TARGET_ARCH="amd64"
 #KERNEL="GENERIC"
+## Multiple kernels may be set.
+#KERNEL="GENERIC XENHVM"
 
 ## Set to specify a custom make.conf and/or src.conf
 #MAKE_CONF="/etc/local/make.conf"

Modified: stable/9/release/release.sh
==============================================================================
--- stable/9/release/release.sh	Mon Jul  8 01:29:09 2013	(r253018)
+++ stable/9/release/release.sh	Mon Jul  8 01:46:11 2013	(r253019)
@@ -45,6 +45,10 @@ SRCBRANCH="base/head"
 DOCBRANCH="doc/head"
 PORTBRANCH="ports/head"
 
+# 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 src/, doc/, and ports/ revisions.
 SRCREVISION="-rHEAD"
 DOCREVISION="-rHEAD"
@@ -109,6 +113,25 @@ while getopts c: opt; do
 done
 shift $(($OPTIND - 1))
 
+# If PORTS is set and NODOC is unset, force NODOC=yes because the ports tree
+# is required to build the documentation set.
+if [ "x${NOPORTS}" != "x" ] && [ "x${NODOC}" = "x" ]; then
+	echo "*** NOTICE: Setting NODOC=1 since ports tree is required"
+	echo "            and NOPORTS is set."
+	NODOC=yes
+fi
+
+# If NOPORTS and/or NODOC are unset, they must not pass to make as variables.
+# The release makefile verifies definedness of NOPORTS/NODOC variables
+# instead of their values.
+DOCPORTS=
+if [ "x${NOPORTS}" != "x" ]; then
+ DOCPORTS="NOPORTS=yes "
+fi
+if [ "x${NODOC}" != "x" ]; then
+ DOCPORTS="${DOCPORTS}NODOC=yes"
+fi
+
 # The aggregated build-time flags based upon variables defined within
 # this file, unless overridden by release.conf.  In most cases, these
 # will not need to be changed.
@@ -118,16 +141,14 @@ CHROOT_WMAKEFLAGS="${MAKE_FLAGS} ${WORLD
 CHROOT_IMAKEFLAGS="${CONF_FILES}"
 CHROOT_DMAKEFLAGS="${CONF_FILES}"
 RELEASE_WMAKEFLAGS="${MAKE_FLAGS} ${WORLD_FLAGS} ${ARCH_FLAGS} ${CONF_FILES}"
-RELEASE_KMAKEFLAGS="${MAKE_FLAGS} ${KERNEL_FLAGS} KERNCONF=${KERNEL} ${ARCH_FLAGS} ${CONF_FILES}"
-RELEASE_RMAKEFLAGS="${ARCH_FLAGS} KERNCONF=${KERNEL} ${CONF_FILES} \
-	NODOC=${NODOC} NOPORTS=${NOPORTS}"
-
-# If PORTS is set and NODOC is unset, force NODOC=yes because the ports tree
-# is required to build the documentation set.
-if [ "x${NOPORTS}" != "x" ] && [ "x${NODOC}" = "x" ]; then
-	echo "*** NOTICE: Setting NODOC=1 since ports tree is required"
-	echo "            and NOPORTS is set."
-	NODOC=1
+RELEASE_KMAKEFLAGS="${MAKE_FLAGS} ${KERNEL_FLAGS} KERNCONF=\"${KERNEL}\" ${ARCH_FLAGS} ${CONF_FILES}"
+RELEASE_RMAKEFLAGS="${ARCH_FLAGS} KERNCONF=\"${KERNEL}\" ${CONF_FILES} \
+	${DOCPORTS}"
+
+# Force src checkout if configured
+FORCE_SRC_KEY=
+if [ "x${SRC_FORCE_CHECKOUT}" != "x" ]; then
+ FORCE_SRC_KEY="--force"
 fi
 
 if [ ! ${CHROOTDIR} ]; then
@@ -144,7 +165,7 @@ set -e # Everything must succeed
 
 mkdir -p ${CHROOTDIR}/usr
 
-svn co ${SVNROOT}/${SRCBRANCH} ${CHROOTDIR}/usr/src $SRCREVISION
+svn co ${FORCE_SRC_KEY} ${SVNROOT}/${SRCBRANCH} ${CHROOTDIR}/usr/src $SRCREVISION
 if [ "x${NODOC}" = "x" ]; then
 	svn co ${SVNROOT}/${DOCBRANCH} ${CHROOTDIR}/usr/doc $DOCREVISION
 fi
@@ -164,10 +185,10 @@ trap "umount ${CHROOTDIR}/dev" EXIT # Cl
 build_doc_ports() {
 	## Trick the ports 'run-autotools-fixup' target to do the right thing.
 	_OSVERSION=$(sysctl -n kern.osreldate)
-	if [ -d ${CHROOTDIR}/usr/doc ] && [ "x${NODOC}" != "x" ]; then
-		PBUILD_FLAGS="OSVERSION=${_OSVERSION} WITHOUT_JADETEX=yes BATCH=yes"
+	if [ -d ${CHROOTDIR}/usr/doc ] && [ "x${NODOC}" = "x" ]; then
+		PBUILD_FLAGS="OSVERSION=${_OSVERSION} WITHOUT_JADETEX=yes WITHOUT_X11=yes BATCH=yes"
 		chroot ${CHROOTDIR} make -C /usr/ports/textproc/docproj \
-			${PBUILD_FLAGS} install
+			${PBUILD_FLAGS} install clean distclean
 	fi
 }
 
@@ -191,11 +212,11 @@ if [ "x${RELSTRING}" = "x" ]; then
 	RELSTRING="$(chroot ${CHROOTDIR} uname -s)-${OSRELEASE}-${TARGET_ARCH}"
 fi
 
-chroot ${CHROOTDIR} make -C /usr/src ${RELEASE_WMAKEFLAGS} buildworld
-chroot ${CHROOTDIR} make -C /usr/src ${RELEASE_KMAKEFLAGS} buildkernel
-chroot ${CHROOTDIR} make -C /usr/src/release ${RELEASE_RMAKEFLAGS} \
+eval chroot ${CHROOTDIR} make -C /usr/src ${RELEASE_WMAKEFLAGS} buildworld
+eval chroot ${CHROOTDIR} make -C /usr/src ${RELEASE_KMAKEFLAGS} buildkernel
+eval chroot ${CHROOTDIR} make -C /usr/src/release ${RELEASE_RMAKEFLAGS} \
 	release RELSTRING=${RELSTRING}
-chroot ${CHROOTDIR} make -C /usr/src/release ${RELEASE_RMAKEFLAGS} \
+eval chroot ${CHROOTDIR} make -C /usr/src/release ${RELEASE_RMAKEFLAGS} \
 	install DESTDIR=/R RELSTRING=${RELSTRING}
 
 cd ${CHROOTDIR}/R
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"