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-unsubscr...@freebsd.org"

Reply via email to