summaryrefslogtreecommitdiff
path: root/Master/Tools/tlrebuild
blob: 98e9a57b4fddf3cf61a0b419e4fcf18146aa9204 (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
#!/bin/sh
# $Id: //depot/Master/Tools/tlrebuild#19 $ $Date: 2005/10/19 $ $Author: karl $
# Originally written 2004, Karl Berry.  Public domain.
# 
# Rebuild the TeX Live distribution -- no actual recompilation of
# sources (run bash Build.sh for that), but all the infrastructure files.

mydir=`dirname $0`
tools=`cd $mydir && pwd`
PATH=$tools:$PATH; export PATH
umask 0

if test x$1 = x--no-tpm; then
  no_tpm=true
else
  no_tpm=false
fi
#
if test x$1 = x--no-images; then
  no_images=true
else
  no_images=false
fi
#
if test x$1 = x--no-test; then
  no_test=true
else
  no_test=false
fi

message() \
{
  printf "\f\n`date` $0: $*...\n"
}

# don't work with old stuff.
message "p4 sync"
p4 sync || exit 1

if $no_tpm; then :; else
# have to run multiple times to make the sizes converge, since the .tpm
# file is itself one of the files in the package.
# Fabrice says four times is the magic number.
message "update-tpm regeneration #1"
(update-tpm
message "#2"
 update-tpm
message "#3"
 update-tpm
message "#4"
 update-tpm || exit 1) | grep -v '^Writing '

# sanity check of tpms, hopefully nothing to report after the update.
message "tpm-check"
tpm-check || exit 1

master=`cd $mydir/.. && pwd`
for dir in texmf/tpm texmf-dist/tpm texmf-doc/tpm; do
  cd $master/$dir || exit 1
  message "$dir: finding changed tpms"
  changelist=`p4 diff -se ...`
  if test -n "$changelist"; then
    echo "$changelist" | p4 -x - edit 2>&1 | grep -v 'opened for edit'
    for f in $changelist; do
#echo "checking $f for unimportant change..."
      # revert tpms that differ only in the date.
      diff="`p4 diff $f \
             | egrep -v '^===|^---|^[0-9]+c[0-9]|TPM:Date' 2>/dev/null`"
      if test -z "$diff"; then
        p4 revert $f 2>&1 | grep -v 'was edit'
      else
        echo $f diff: $diff
      fi
    done
  fi

  # new tpms not in depot
  message "$dir: finding new tpms"
  find . -type f | p4 -x - add 2>&1 \
  | egrep -v 'already opened|add.*existing file'

  message "$dir: finding obsolete tpms"
  p4 diff -sd ... | p4 -x - delete  # old tpms no longer needed
done

# lists files used by the Unix installer.
message "update-lists for Unix installer"
update-lists || exit 1


# 
# if we have any files, submit to perforce (frightening but necessary).
if p4 change -o | grep '^Files:' >/dev/null; then
  message "submitting to p4"
  p4 change -o \
  | sed "s!<enter description here>!regenerated by $0!" \
  | p4 submit -i
else
  message "no changes to submit to p4"
fi

# keep writable for next time, trying to have rahtz/staw share /home/tlprod.
chmod a+rw $master/*/tpm/* >&/dev/null

message "ls-R updates"
update-lsr

fi  # end no-tpm

# 
$no_images && exit 0

message "making ISO images"
MakeImages.sh --debug --target=/home/ftp/texlive/Images/test


$no_test && exit 0

message "doing test installation"
instdir=/home/ftp/texlive/Contents/testinstalled
rm -rf $instdir

cd $master || exit
# D/1/$instdir/R -- target directory
# I -- do installation
time nice sh ./install-live.sh <<EOF
D
1
$instdir
R
I
EOF
chmod -R a+rwX $instdir