summaryrefslogtreecommitdiffstats
path: root/release/scripts
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2001-08-30 18:10:26 +0000
committerjhb <jhb@FreeBSD.org>2001-08-30 18:10:26 +0000
commitd407e15c6370866720f45539d0e5f47d7ec4812f (patch)
tree958c41741c8e6fb7112cab5e996aa1df9dd28dea /release/scripts
parent31b4cb44e1cf38f1e76ddff683eea0914a6b801b (diff)
downloadFreeBSD-src-d407e15c6370866720f45539d0e5f47d7ec4812f.zip
FreeBSD-src-d407e15c6370866720f45539d0e5f47d7ec4812f.tar.gz
Overhaul this script a bit:
- build_x.sh now does all the steps to build an X dist rather than being a child script of package_x_dists.sh - Update the usage information to list the ports you need to install before running this script as well as needing to set CVSROOT. - Make sure CVSROOT is set. If not, exit with an error. - We now take two parameters: a work directory and an output directory. The work directory is used as scratch space. All of the bindist will end up in the output directory. - Only apply XF86.patch to the checked out XFree86 port if it exists. - Use XFree86's build-bindist tool to package up the dists using their distfiles rather than using our own packing lists that have to be manually updated each time the port changes. Example usage: env CVSROOT=/home/ncvs ./build_x.sh /usr/xtmp /usr/x11dists
Diffstat (limited to 'release/scripts')
-rwxr-xr-xrelease/scripts/X11/build_x.sh127
1 files changed, 107 insertions, 20 deletions
diff --git a/release/scripts/X11/build_x.sh b/release/scripts/X11/build_x.sh
index 24b56fe..7315859 100755
--- a/release/scripts/X11/build_x.sh
+++ b/release/scripts/X11/build_x.sh
@@ -1,28 +1,46 @@
#!/bin/sh
#
-# Builds X from the port and stores it under the specified directory.
+# This script builds X 3.3.x from the XFree86 and XFree86-contrib ports and
+# installs it into a work directory. Once that is done, it uses XFree86's
+# build-bindist command to package up the binary dists leaving them stored
+# in the 'dist/bindist' subdirectory of the specified output directory.
# usage information
#
usage() {
- echo "$0 <output dir>"
+ echo "$0 <work dir> <output dir>"
echo
- echo "Where <output dir> is the base directory to install X into. This"
- echo "script also assumes that it can checkout XFree86 into "
- echo `dirname $0`"/XFree86 and that it can get the distfiles from"
- echo "/usr/ports/distfiles (or fetch them into that directory)."
+ echo "Where <output dir> is the base directory to install X into,"
+ echo "and <work dir> is a scratch directory that the XFree86 ports"
+ echo "can be checked out into and built. This script also assumes"
+ echo "that it can get the distfiles from /usr/ports/distfiles (or"
+ echo "fetch them into that directory). The CVSROOT environment"
+ echo "variable should point to a FreeBSD CVS repository."
+ echo
+ echo "Before running this script, the following packages should be"
+ echo "installed:"
+ echo " XFree86"
+ echo " Tcl83, Tk83"
+ echo " ja-Tcl80, ja-Tk80"
echo
echo "Also, this should really be run as root."
exit 1
}
# check the command line
-if [ $# -ne 1 ]; then
+if [ $# -ne 2 ]; then
+ usage
+fi
+
+# check $CVSROOT
+if [ -z "$CVSROOT" ]; then
+ echo "\$CVSROOT not set!"
+ echo
usage
fi
-# setup the output dir
-output_dir=$1
+# setup the output directory
+output_dir=$2
case $output_dir in
/*)
;;
@@ -30,35 +48,104 @@ case $output_dir in
output_dir=`pwd`/${output_dir}
;;
esac
-if ! mkdir -p $1; then
+if [ -r ${output_dir} ]; then
+ if ! rm -rf ${output_dir}; then
+ echo "Could not remove ${output_dir}!"
+ echo
+ usage
+ fi
+fi
+if ! mkdir -p ${output_dir}; then
echo "Could not create ${output_dir}!"
echo
usage
fi
+if ! rmdir ${output_dir}; then
+ echo "Could not remove ${output_dir} the second time!"
+ echo
+ usage
+fi
-# extract the directory this script lives in
-home_dir=`dirname $0`
+# setup the work directory
+work_dir=$1
+if [ -r ${work_dir} ]; then
+ if ! rm -rf ${work_dir}; then
+ echo "Could not remove ${work_dir}!"
+ echo
+ usage
+ fi
+fi
+if ! mkdir -p ${work_dir}; then
+ echo "Could not create ${work_dir}!"
+ echo
+ usage
+fi
+if ! mkdir ${work_dir}/base; then
+ echo "Could not create ${work_dir}/base!"
+ echo
+ usage
+fi
+if ! mkdir ${work_dir}/dist; then
+ echo "Could not create ${work_dir}/dist!"
+ echo
+ usage
+fi
+if ! mkdir ${work_dir}/ports; then
+ echo "Could not create ${work_dir}/ports!"
+ echo
+ usage
+fi
# check out the XFree86 and XFree86-contrib ports and set them up
-if ! ( cd $home_dir && \
- cvs -R -d ${CVSROOT} co -P XFree86 XFree86-contrib ); then
+if ! ( cd ${work_dir}/ports && \
+ cvs -R -d ${CVSROOT} co -P XFree86 XFree86-contrib ); then
echo "Could not checkout the XFree86 port!"
echo
usage
fi
+if [ -r XF86.patch ]; then
+ if ! patch -d ${work_dir}/ports/XFree86 < XF86.patch; then
+ echo "Could not patch the XFree86 port!"
+ echo
+ usage
+ fi
+fi
# actually build X
-if ! ( cd $home_dir/XFree86 && \
- make BUILD_XDIST=yes DISTDIR=/usr/ports/distfiles \
- DESTDIR=${output_dir} NO_PKG_REGISTER=yes all install ); then
+if ! ( cd ${work_dir}/ports/XFree86 && \
+ make BUILD_XDIST=yes DISTDIR=/usr/ports/distfiles \
+ DESTDIR=${work_dir}/base NO_PKG_REGISTER=yes all install ); then
echo "Could not build XFree86!"
echo
usage
fi
-if ! ( cd $home_dir/XFree86-contrib && \
- make DISTDIR=/usr/ports/distfiles DESTDIR=${output_dir} \
- NO_PKG_REGISTER=yes all install ); then
+if ! ( cd ${work_dir}/ports/XFree86-contrib && \
+ make DISTDIR=/usr/ports/distfiles DESTDIR=${work_dir}/base \
+ NO_PKG_REGISTER=yes all install ); then
echo "Could not build XFree86-contrib!"
echo
usage
fi
+
+# now package up the bindists
+bindist_dir=${work_dir}/ports/XFree86/work/xc/programs/Xserver/hw/xfree86/etc/bindist
+if ! cp ${bindist_dir}/FreeBSD-ELF/* ${work_dir}/dist; then
+ echo "Could not copy over distribution lists!"
+ echo
+ usage
+fi
+if ! cp ${bindist_dir}/common/* ${work_dir}/dist; then
+ echo "Could not copy over distribution lists!"
+ echo
+ usage
+fi
+if ! ${bindist_dir}/build-bindist X ${work_dir}/base ${work_dir}/dist; then
+ echo "Could not package up binary dists!"
+ echo
+ usage
+fi
+if ! mv ${work_dir}/dist/bindist ${output_dir}; then
+ echo "Could not move binary dists into ${output_dir}!"
+ echo
+ usage
+fi
OpenPOWER on IntegriCloud