diff options
author | John Baldwin <jhb@FreeBSD.org> | 2001-08-30 18:10:26 +0000 |
---|---|---|
committer | John Baldwin <jhb@FreeBSD.org> | 2001-08-30 18:10:26 +0000 |
commit | 5356254edbea2842b834be5733d99380916965da (patch) | |
tree | 958c41741c8e6fb7112cab5e996aa1df9dd28dea /release | |
parent | 999accad69277f9c8b78831115557e9577c1da8f (diff) | |
download | src-5356254edbea2842b834be5733d99380916965da.tar.gz src-5356254edbea2842b834be5733d99380916965da.zip |
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
Notes
Notes:
svn path=/head/; revision=82583
Diffstat (limited to 'release')
-rwxr-xr-x | release/scripts/X11/build_x.sh | 127 |
1 files changed, 107 insertions, 20 deletions
diff --git a/release/scripts/X11/build_x.sh b/release/scripts/X11/build_x.sh index 24b56fe95379..73158590d6c0 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 |