#!/bin/sh # $Id: //depot/Master/Tools/MakeImages.sh#124 $ $Date: 2005/10/27 $ $Author: karl $ # # Create the .iso file system images for TeX Live: # a) live: the complete uncompressed system (for DVD) # b) inst: compressed zip files and installer only (CD) # # In 2003, we also produced: # c) demo: live subset which can be run as is (CD) # but this was dropped in 2004. # # Copyright (c) Sebastian Rahtz 2003, 2004, 2005. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # Send bug reports or suggestions to tex-live@tug.org. unset CDPATH # avoid output from cd umask 0 HERE=`cd \`dirname $0\` && /bin/pwd` cd $HERE || exit 1 # the Tools directory source=`cd .. && /bin/pwd` NAME=texlive V=2005 D=`date +%Y%m%d` debug=${OVERRIDE_DEBUG-false} target=/home/ftp/texlive/Images/test work=/var/tmp/TL_$$ zippath=/usr/local/bin quiet= # for passing to mkisofs makelive=true makeinst=true makedemo=false while test $# -gt 0; do case $1 in --debug) debug=true; quiet=;; --noinst) makeinst=false;; --nolive) makelive=false;; --quiet) quiet=-quiet;; --source=*) source=`echo $1 | sed 's/.*=//'`;; --work=*) work=`echo $1 | sed 's/.*=//'`;; --target=*) target=`echo $1 | sed 's/.*=//'`;; --zippath=*) zippath=`echo $1 | sed 's/.*=//'`;; *) break;; esac shift done $debug && echo "source: [$source] target: [$target] work: [$work]" mkdir -p $target # MAKELIVE () { live_iso=$target/$NAME$V-live-$D.iso echo "--- (`date`) Writing complete live image to $live_iso." # Basically copy the source directory. (cd $source || exit 1 # Complication: get the right install-tl.sh. rm -f install-tl.sh cp -p install-live.sh install-tl.sh cp -p install-pkg-live.sh install-pkg.sh # Another complication: getting the release date into 00LIVE.TL. rm -f 00LIVE.TL p4 sync -f 00LIVE.TL chmod a+w 00LIVE.TL (echo; echo "Release date: $D.`date +%H`") >>00LIVE.TL # remove old images. rm -f $target/$NAME$V-live-*.iso $target/$NAME$V-live-*.iso.md5 # make new image, excluding the compressed stuff and more, # and moving everything to a texlive/ subdirectory, # since that's how we release it on the DVD. mkisofs $quiet -pad -J -dir-mode 0755 -r \ -root texlive \ -copyright LICENSE.TL \ -x 00INST.TL \ -x install-live.sh -x install-compr.sh \ -x install-pkg-compr.sh -x install-pkg-live.sh \ -x ./support/tests \ -x Tools \ -o $live_iso . md5sum $live_iso >$live_iso.md5 rm -f install-tl.sh install-pkg.sh ) # make symlink with short name, that we use in /etc/fstab. rm -f $target/$NAME-live.iso $target/$NAME-live.iso.md5 ln -s `basename $live_iso` $target/$NAME-live.iso ln -s `basename $live_iso`.md5 $target/$NAME-live.iso.md5 ls -l $live_iso } # MAKEINST () { inst_iso=$target/$NAME$V-inst-$D.iso echo "--- (`date`) Writing compressed/installable Unix image to $inst_iso." WORK=$work/TL test -d $WORK && rm -rf $WORK mkdir -p $WORK $debug && echo Copy top-level files cd $source tar cf - \ support \ .mkisofsrc config.* autorun.inf \ install-compr.sh install-pkg-compr.sh common.sh utils.sh \ COPYING \ LICENSE.TL \ README.* \ setup-win32/help/* \ setup-win32/msgs/* \ setup-win32/* \ Tools \ source \ texmf-doc/doc/*/texlive-* \ 00INST.TL *html \ | (cd $WORK && tar xf - ) # initial texmf-var mkdir $WORK/texmf-var cd $source/texmf-dist || exit 1 tar cf - \ tex/plain/config/language.def \ tex/context/config/cont-usr.tex \ | (cd $WORK/texmf-var; tar xf - ) cd $source/texmf || exit 1 # updmap.cfg gets generated at install time, we don't want to copy the # one from the distribution. tar cf - \ web2c/mktex.cnf \ dvips/config/config.ps \ dvipdfm/config/config \ tex/generic/config/pdftexconfig.tex \ xdvi/XDvi \ | (cd $WORK/texmf-var; tar xf - ) chmod -R u+rw $WORK/texmf-var # the originals are mostly 444 # make zip file out of texmf-var, so we don't have an ersatz tree # hanging around in the image to confuse users. mkdir -p $WORK/archive cd $WORK/texmf-var || exit 1 zip -qr $WORK/archive/texmf-var.zip . cd $WORK && rm -rf texmf-var $debug && echo Prepare zip files... PATH=$PATH:$zippath export PATH cd $source || exit 1 # people want to get the windows binaries, so don't exclude everything. # bzip2, perl, windvi, lib-* -- basically required. # Fabrice suggests dumping the below, but since we seem to have room for # now, let's include them. xemacs is the biggie. # w32progs="diff|grep|gsview|imagemagick|patch|sed|wget|xemacs" w32progs="xemacs" for i in texmf/lists/*; do # skip windows binaries for unix inst cd. Since the windows installer # requires cab files, we can't put them on one CD any more, no space. # All the lib-* packages are xemtex things, strange but true. echo "$i" | egrep "bin-($w32progs)|\.win32-static" >/dev/null \ && continue I=`basename $i` cat $i | zip -y -q -r $WORK/archive/$I.zip -@ done # copy tpm directories cd $source tar cf - texmf/lists texmf/tpm texmf-dist/tpm texmf-doc/tpm \ | (cd $WORK; tar xf - ) cd $WORK || exit 1 # fix up top level. rm -f install-tl.sh install-pkg.sh mv install-compr.sh install-tl.sh mv install-pkg-compr.sh install-pkg.sh chmod a+w 00INST.TL (echo; echo "Release date: $D.`date +%H`") >>00INST.TL rm -f $target/$NAME$V-inst-*.iso $target/$NAME$V-inst-*.iso.md5 mkisofs $quiet -pad -J -dir-mode 0755 -r \ -copyright LICENSE.TL \ -x 00LIVE.TL \ -x install-live.sh \ -x support/tests \ -x Tools \ -o $inst_iso . md5sum $inst_iso >$inst_iso.md5 # symlink with short name. rm -f $target/$NAME-inst.iso $target/$NAME-inst.iso.md5 ln -s `basename $inst_iso` $target/$NAME-inst.iso ln -s `basename $inst_iso`.md5 $target/$NAME-inst.iso.md5 } # MAKEDEMO () { demo_iso=$target/$NAME$V-demo-$D.iso echo "--- (`date`) Writing demo image (texlive-live scheme) to $demo_iso" WORK=$work/TeXLive cd $source test -d $WORK && rm -rf $WORK sh install-live.sh <$demo_iso.md5 rm -f $target/$NAME-demo.iso ln -s `basename $demo_iso` $target/$NAME-demo.iso ls -l $demo_iso cd $HERE } $makelive && MAKELIVE $makeinst && MAKEINST $makedemo && MAKEDEMO rm -rf $work $WORK