summaryrefslogtreecommitdiff
path: root/Master/tl-portable
blob: feba0264816a12334132bbdf73c88716aa85b32c (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
#! /bin/sh
# $Id$
# Copyright 2008 Siep Kroonenberg.
# You may freely use, modify and/or distribute this file.

if test "x$1" = x--help; then
  cat <<END_USAGE
Usage: tl-portable
Start a new subshell with the environment set so TeX Live
can be run with minimal impact on the host, that is,
run more or less directly from DVD or USB.

For more, see the "Maximally portable" section in the TeX Live
documentation (http://tug.org/texlive).
END_USAGE

  exit 0
fi

#calculate TeX Live root
#it appears that dirname isn't always available
TEXDIR0=$0
TEXDIR=${TEXDIR0%/*}
if test "$TEXDIR" = "$TEXDIR0"; then
  TEXDIR="."
fi
unset TEXDIR0

dirsave=`pwd`
cd $TEXDIR
TEXDIR=`pwd`
export TEXDIR
cd $dirsave

# Test whether the TeX Live directory is writable.  We need an actual
# write test, because network drives aren't always identified
# correctly.  We accept negatives at face value.

if test -w $TEXDIR; then
# make sure $TEXDIR is really writable
testfile=1
  while test -e $TEXDIR/$testfile
    do testfile=`expr $testfile + 1`
  done
  echo Testing whether $TEXDIR is writable...
  touch $TEXDIR/$testfile 2>/dev/null
  if test -e $TEXDIR/$testfile; then
    rm $TEXDIR/$testfile
    echo $TEXDIR is writable.
    TEXDIRW=$TEXDIR
  else
    echo $TEXDIR is not writable.
    TEXDIRW=$HOME/.tlportable2008
  fi
else
  TEXDIRW=$HOME/.tlportable2008
fi
export TEXDIRW
echo Using $TEXDIRW for generated files.

# Use $TEXMFHOME for private data,
# $TEXMFLOCAL for department- or workgroup data.
# It is allright if $TEXMFLOCAL does not exist.

TEXMFSYSVAR=$TEXDIRW/texmf-var
if test -d $TEXDIR/texmf-var; then
  TEXMFSYSVAR=$TEXDIR/texmf-var
fi
export TEXMFSYSVAR
TEXMFSYSCONFIG=$TEXDIRW/texmf-config
if test -f $TEXDIR/texmf-config; then
  TEXMFSYSCONFIG=$TEXDIR/texmf-config
fi
export TEXMFSYSCONFIG
TEXMFMAIN=$TEXDIR/texmf
export TEXMFMAIN
TEXMFDIST=$TEXDIR/texmf-dist
export TEXMFDIST
TEXMFLOCAL=$TEXDIR/texmf-local
export TEXMFLOCAL
TEXMFHOME=$TEXDIRW/texmf-home
export TEXMFHOME
TEXMFVAR=$TEXDIRW/texmf-var
export TEXMFVAR
TEXMFCONFIG=$TEXDIRW/texmf-config
export TEXMFCONFIG

platform=`$TEXDIR/install-tl --print-arch`

if test "$platform" = ""; then
  echo 'Platform unsupported'
  exit 1
elif test ! -d $TEXDIR/bin/$platform; then
  echo 'Platform unsupported'
  exit 1
fi

if $TEXDIR/install-tl --portable; then :; else
  echo "$0: Initialization of TeX Live failed!" >&2
  exit 1
fi

# Try to block initialization scripts.
# Set custom prompt for secondary shell, but
# I know of no good way to do this for the C shell.

ENV=/dev/null
export ENV
PATH=$TEXDIR/bin/$platform:$PATH
export PATH
if test "$SHELL" = /bin/bash; then
  PS1='TL \w\$ '
  export PS1
  exec $SHELL --norc -i
elif test "$SHELL" = /bin/zsh; then
  PS1='TL %d%% '
  export PS1
  exec $SHELL -f -i
elif test "$SHELL" = /bin/csh; then
  exec $SHELL -f -i
elif test "$SHELL" = /bin/tcsh; then
  exec $SHELL -f -i
else
  PS1='TL $PWD\$ '
  export PS1
  exec $SHELL -f -i
fi