diff options
Diffstat (limited to 'Master/Tools/MakeImages.sh')
-rwxr-xr-x | Master/Tools/MakeImages.sh | 303 |
1 files changed, 303 insertions, 0 deletions
diff --git a/Master/Tools/MakeImages.sh b/Master/Tools/MakeImages.sh new file mode 100755 index 00000000000..c8869a8d268 --- /dev/null +++ b/Master/Tools/MakeImages.sh @@ -0,0 +1,303 @@ +#!/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 <<EOF +S +F +D +1 +$WORK +R +B +N +N +Y +N +N +N +N +Y +N +N +Y +N +I +EOF +cd $WORK || exit 1 +mkdir texmf-dist/tpm/scheme +mkdir texmf-dist/tpm/support +mkdir texmf-dist/ispell +chmod -R u+w . +(cd $source || exit 1 + # copy top-level files that don't need name changes. +tar cf - xemtex \ + .mkisofsrc \ + AUTORUN.EXE autorun.ini autorun.inf \ + 00DEMO.TL \ + COPYING LICENSE.TL README.* \ + config* \ + *.html* | (cd $WORK && tar xf - ) +) +# other files to copy. +rm -f install-tl.sh +cp $source/install-demo.sh install-tl.sh +cp $source/install-pkg-live.sh install-pkg.sh +cp $source/common.sh common.sh +cp $source/utils.sh utils.sh +cp -rp $source/bin/win32/* bin/win32 +cp -rp $source/texmf/lists texmf/lists +cp -rp $source/texmf-dist/tpm texmf-dist/tpm +cp -rp $source/texmf/tpm texmf-dist/tpm +cp -rp $source/texmf-doc/tpm texmf-dist/tpm + +rm -f texmf/tpm/texlive-full.tpm +rm -f texmf/tpm/texlive-full.scheme + +rm -f $target/$NAME$V-demo-*.iso +rm -f $target/$NAME$V-demo-*.iso.md5 + +# we don't link links on the demo CD +(zip -r -o foo texmf-dist/fonts/map texmf-var/fonts/map; unzip -o -a foo; rm foo.zip) + +# let's have a fresh language.dat +cp texmf-var/tex/generic/config/language.dat texmf/tex/generic/config/language.dat +mkisofs $quiet -pad -J -dir-mode 0755 -r \ + -x texmf-local \ + -o $demo_iso . +md5sum $demo_iso >$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 |