>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]"