>Number:         180192
>Category:       conf
>Synopsis:       [PATCH] release/release.sh bugfixes+small improvements
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Tue Jul 02 09:20:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator:     Anes Mukhametov <[email protected]>
>Release:        FreeBSD 9.1-STABLE amd64
>Organization:
>Environment:
        
>Description:
        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.   
>How-To-Repeat:
        
>Fix:

        

--- release.diff begins here ---
Index: release.conf.sample
===================================================================
--- base/head/release/release.conf.sample.orig  (revision 252465)
+++ base/head/release/release.conf.sample       (working copy)
@@ -14,6 +14,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 @@
 #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"
Index: release.sh
===================================================================
--- base/head/release/release.sh.orig   (revision 252465)
+++ base/head/release/release.sh        (working copy)
@@ -45,6 +45,10 @@
 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 @@
 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_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}"
+RELEASE_KMAKEFLAGS="${MAKE_FLAGS} ${KERNEL_FLAGS} KERNCONF=\"${KERNEL}\" 
${ARCH_FLAGS} ${CONF_FILES}"
+RELEASE_RMAKEFLAGS="${ARCH_FLAGS} KERNCONF=\"${KERNEL}\" ${CONF_FILES} \
+       ${DOCPORTS}"
 
-# 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
+# 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 @@
 
 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,12 @@
 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 WITHOUT_PYTHON=yes BATCH=yes"
                chroot ${CHROOTDIR} make -C /usr/ports/textproc/docproj \
-                       ${PBUILD_FLAGS} install
+                       ${PBUILD_FLAGS} install clean distclean
+               #w3m needed to build docs
+               chroot ${CHROOTDIR} make -C /usr/ports/www/w3m ${PBUILD_FLAGS} 
install clean distclean
        fi
 }
 
@@ -192,10 +215,10 @@
 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_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
--- release.diff ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "[email protected]"

Reply via email to