summaryrefslogtreecommitdiff
path: root/Master/tlpkg/bin/tl-update-tlnet
blob: fe04787c98f51c2e87be89c1c8ed73b8e2a0755a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/bin/sh -e
# Update a TeX Live tlnet distribution

set -e

vc_id='$Id$'
unset CDPATH
unset LS_COLORS

while test $# -gt 0; do
  case $1 in
    --master) shift; Master=$1;;
    --testlocation) shift; tlwebtrybase=$1;;
    --*) echo "$0: unrecognized option \`$1'." >&2
         exit 1;;
    *) tlweb=$1
  esac
  shift
done

if test -z "$tlweb"  ; then
  tlweb=/home/ftp/texlive/tlnet/tldev
fi

if ! [ -r "$tlweb/tlpkg/texlive.tlpdb" ] ; then
  echo "Location for current tlnet $tlweb is invalid!"
  exit 1
fi

if test -z "$Master"; then
  mydir=`dirname $0`
  Master=`cd $mydir/../.. && pwd`
fi

if test -z "$tlwebtrybase" ; then
  tlwebtrybase=`cd $tlweb/../..; pwd`/tlnet-trial-`date +%y%m%d`
fi
# don't trap, don't remove in case of errors
#trap "rm -rf $tlwebtrybase" 0 1 2 15

tlwebtry=$tlwebtrybase/tldev.try
mkdir -p $tlweb/tlpkg
#
# KARL!!! Should we remove $tlwebtry before retrying?
mkdir -p $tlwebtry

echo "using tlweb=$tlweb"
echo "using tltry=$tlwebtry"
cp -al $tlweb/* $tlwebtry

cd $tlwebtry
cow-shell <<EOF
echo "Updating containers"
$Master/tlpkg/bin/tl-update-containers -location $tlwebtry
echo "Updating installer packages"
$Master/tlpkg/bin/tl-update-install-pkg -o $tlwebtry
EOF

# Now we have an updated tlweb in $tlwebtry where only the changed files
# are actual files, the rest are hard links
# now try to make a test installation

cd $tlwebtrybase
tar -xzf $tlwebtry/install-tl-unx.tar.gz
cd install-tl
# create profile:
echo "# texlive-profile
selected_scheme scheme-full
TEXDIR $tlwebtrybase/TLTEST/2008
TEXDIRW $tlwebtrybase/TLTEST/2008
TEXMFHOME ~/texmf
TEXMFLOCAL $tlwebtrybase/TLTEST/texmf-local
TEXMFSYSCONFIG $tlwebtrybase/TLTEST/2008/texmf-config
TEXMFSYSVAR $tlwebtrybase/TLTEST/2008/texmf-var
option_doc 1
option_fmt 1
option_letter 0
option_src 1
option_symlinks 0
" > texlive.profile

echo "Making test installation"
perl install-tl -location $tlwebtry -profile texlive.profile > install.log 2>&1 || true # that can fail, but we test the output!!

# the following long grep command should filter away all *normal*
# installation messages
# if there are any other messages the will end up on stdout and thus 
# mailed to the cron output ...
foo=`cat install.log | \
     grep -Ev '^Using automated installation using texlive.profile' | \
     grep -Ev '^Distribution: inst' | \
     grep -Ev '^Directory for temporary files' | \
     grep -Ev '^Installer directory:' | \
     grep -Ev '^Loading ' | \
     grep -Ev '^Installing: ' | \
     grep -Ev '^(re-)?running mktexlsr' | \
     grep -Ev '^mktexlsr: Updating ' | \
     grep -Ev '^mktexlsr: Done' | \
     grep -Ev '^writing fmtutil.cnf data to' | \
     grep -Ev '^writing updmap.cfg to' | \
     grep -Ev '^writing language.(dat|def) data to' | \
     grep -Ev '^running updmap-sys' | \
     grep -Ev '^pre-generation all format file' | \
     grep -Ev 'running post install action for' | \
     grep -Ev '^ See \./index.html for links to documentati' | \
     grep -Ev '^ (http://tug.org/texlive/) contains any upda' | \
     grep -Ev '^ TeX Live is a joint project of the TeX user groups' | \
     grep -Ev '^ please consider supporting it by joining the group b' | \
     grep -Ev '^ list of groups is available on the web at' | \
     grep -Ev '^ Add ' | \
     grep -Ev '^ Most importantly, add ' | \
     grep -Ev '^ to your PATH for current and future sessions' | \
     grep -Ev '^ Welcome to TeX Live' | \
	     cat`


if [ -z $foo ] ; then
  # there was no unexpected output, so just ship the new packages
  cd $tlwebtrybase
  rm -rf $tlweb
  mv $tlwebtry $tlweb
  echo "Everything updated, removing test installation"
  rm -rf $tlwebtrybase
  echo "Done"
else
  echo "TEST INSTALLATION FAILED, HERE IS THE OUTPUT:"
  echo "NOT REMOVING ANYTHING!"
  cat install.log
fi