blob: fa50b4fc9bf3fb2cf406cb0481aa9b2227f278a0 (
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
132
133
134
135
136
137
138
139
|
#!/bin/sh -e
# $Id$
# Copyright 2008, 2009, 2010, 2011 Norbert Preining
# This file is licensed under the GNU General Public License version 2
# or any later version.
#
# Creates a .run file for updating the texlive.infra
# packages on Unix, similar to the .exe we create for Windows. Both are
# created in the nightly cron from tl-update-tlcritical.
TMP=`mktemp -d`
CWD=`pwd`
TLNET=$1
if test ! -d "$TLNET"; then
echo "$0: No tlnet directory given as argument, aborting." >&2
exit 1
fi
ARCHIVE=$TLNET/archive
if test ! -d "$ARCHIVE"; then
echo "$0: subdirectory archive/ in $TLNET not found, aborting." >&2
exit 1
fi
TLRELEASE=`sed -n 's!^depend release/!!p' $TLNET/tlpkg/texlive.tlpdb`
cd $TMP
mkdir master
cd master
# unpack texlive.infra archives for all platforms, except w32.
for pkg in texlive.infra; do
for i in $ARCHIVE/$pkg*.tar.xz; do
case "$i" in
*win32*) ;;
*) xzdec <$i | tar -xf - ;;
esac
done
done
cd ..
# create the script which will be run on the user's machine to do the update.
#
cat >runme.sh <<END_RUNME
#!/bin/sh
# Updater for tlmgr and infrastructure on Unix.
# Runs in unpacked archive directory.
WORKINGRELEASE=$TLRELEASE
END_RUNME
# append to runme literally now.
cat >>runme.sh <<'END_RUNME'
ROOT=`kpsewhich --var-value=SELFAUTOPARENT`
if test -r "$ROOT/tlpkg/texlive.tlpdb"; then
echo "$0: updating in $ROOT..."
tlmgrversion=`tlmgr version | grep '^TeX Live.*version' | awk '{print $NF}'`
echo "$0: tlmgr version says this is TeX Live $tlmgrversion"
if test "x$WORKINGRELEASE" != "x$tlmgrversion"; then
if test "x$1" = "x--upgrade"; then
echo "$0: upgrading from $tlmgrversion to $WORKINGRELEASE."
else
echo "$0: upgrading from $tlmgrversion not supported:" >&2
echo "$0: can only upgrade (cautiously) from $WORKINGRELEASE." >&2
exit 1
fi
else
echo "$0: proceeding with tlmgr update."
fi
# move the architecture-specific files to the top level.
mv ./master/bin .
mkdir ./installer
mv ./master/tlpkg/installer/xz ./installer
mv ./master/tlpkg/installer/wget ./installer
# install the architecture-independent files.
(cd master && tar cf - *) | (cd $ROOT && tar xf -)
# try to get the list of installed architectures by listing the
# directories in $ROOT/bin.
t_objdir=$ROOT/tlpkg/tlpobj # target tlpobj directory
t_instdir=$ROOT/tlpkg/installer # target installer dir
# ensure these target directories exist.
mkdir -p $t_instdir/xz
mkdir -p $t_instdir/wget
# start the list of tlpobjs we will install
tlpobjs="$t_objdir/texlive.infra.tlpobj"
for a in $ROOT/bin/*; do
test -d "$a" || continue # skip any cruft files
b=`basename $a` # just the architecture name
# add the tlpobjs for this platform t the list.
tlpobjs="$tlpobjs $t_objdir/texlive.infra.$b.tlpobj"
# install the bin dir for this platform.
(cd bin && tar cf - $b) | (cd $ROOT/bin && tar xf -)
# copy the installer binaries.
cp installer/xz/xzdec.$b $t_instdir/xz/
cp installer/xz/xz.$b $t_instdir/xz/
test -r installer/wget/wget.$b \
&& cp installer/wget/wget.$b $t_instdir/wget
done
else
cat <<END_ABORT_NODIR >&2
$0: Cannot find TeX Live root using kpsewhich --var-value=SELFAUTOPARENT.
$0: Please call update-tlmgr-latest.sh --noexec --keep
$0: and then call the runme.sh script in the unpacked directory
$0: with the directory root as the first argument, something like:
$0: sh runme.sh /path/to/your/texlive/installation/2010
END_ABORT_NODIR
exit 1
fi
# invoke secret tlmgr action with the tlpobjs we found.
# Hopefully the result will be a clean tlpdb state.
tlmgr -v _include_tlpobj $tlpobjs
echo "$0: done."
END_RUNME
chmod ugo+x runme.sh
# make the self-extracting archive back in the directory from where we
# were invoked.
cd $CWD
mydir=`cd \`dirname $0\` && pwd` # Master/tlpkg/bin
rev=`svnversion $mydir | sed s/[^0-9].*//` # just the number, no status
makeself $TMP update-tlmgr-r$rev.sh "TeX Live Manager Updater" ./runme.sh
rm -rf $TMP
# vim:set tabstop=2 expandtab: #
|