summaryrefslogtreecommitdiff
path: root/update.sh
blob: d3fce80cd105c3d1743e844886531e8c70c08573 (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
#!/bin/bash
# (c) 2016-2021 Norbert Preining
# License: GPLv3+
#
# USAGE:
# call this script with the two envvars below set to proper values
# eg:
#   TLCHECKOUT=/path/to/tl/svn/checkout TLNETDEST=/path/to/created/repo update.sh
# at the moment the generated repository in TLCHECKOUT is *not* signed
# due to the --no-sign option. You would need the TL distribtuion key
# to sign. But you can sign with a different key and tell the users to
# use tlmgr key add etc, see manual.

TLCHECKOUT=${TLCHECKOUT:-/home/norbert/Development/TeX/texlive.git}
TLNETDEST=${TLNETDEST:-/home/norbert/Domains/server/texlive.info/contrib/current}
TLCATALOGUE=${TLCATALOGUE:-/home/norbert/Development/TeX/texcatalogue-svn}

# how to sign
export TL_GNUPGOPTS="--local-user 0xEC00B8DAD32266AA"

# we don't do TeX Catalogue updates
#unset TEX_CATALOGUE

do_sign=true
if [ "$1" = "-no-sign" ] ; then
  do_sign=false
  shift
fi

do_tlpdb=false
do_container=false
do_collection=false
if [ "$1" = "container" ] ; then
  do_container=true
elif [ "$1" = "tlpdb" ] ; then
  do_tlpdb=true
elif [ "$1" = "collection" ] ; then
  do_collection=true
else
  do_tlpdb=true
  do_container=true
  do_collection=true
fi

if $do_collection ; then
  col=tlpkg/tlpsrc/collection-contrib.tlpsrc
  echo "category Collection" > $col
  echo "shortdesc tlcontrib packages" >> $col
  echo "longdesc collections of all packages in contrib.texlive.info" >> $col
  for i in `ls tlpkg/tlpsrc/*.tlpsrc | sort` ; do
    bn=`basename $i .tlpsrc`
    if [ "$bn" = "00texlive.autopatterns" -o "$bn" = "00texlive.config" -o "$bn" = 00texlive.installation \
       -o "$bn" = collection-contrib -o "$bn" = "ketcindy" ] ; then
      continue
    fi
    echo "depend $bn" >> $col
  done

  git add $col
  if ! git diff --cached --exit-code >/dev/null ; then 
    # something is staged
    echo "collection contrib is updated, diff is as following:"
    git diff --cached
    echo ""
    echo -n "Do you want to commit these changes (y/N): "
    read REPLY <&2
    case $REPLY in
      y*|Y*) git commit -m "collection-contrib updated" ;;
      *) echo "Ok, leave it for now!" ;;
    esac
  fi
fi

if $do_tlpdb ; then
  # update tlpdb
  $TLCHECKOUT/Master/tlpkg/bin/tl-update-tlpdb \
	--w32-pattern-warning -from-git \
	--catalogue=$TLCATALOGUE	\
	--master=`pwd`
fi


if $do_sign ; then
  gpgcmd=
else
  gpgcmd=-no-sign
fi
if $do_container ; then
  $TLCHECKOUT/Master/tlpkg/bin/tl-update-containers \
	-master `pwd` \
  $gpgcmd \
	-location $TLNETDEST	\
	-all # sometimes we need -recreate

  grep ^name tlpkg/texlive.tlpdb | grep -v 00texlive | grep -v '\.' | awk '{print$2}' | sort > $TLNETDEST/packages.txt
fi

# sometimes -recreate might be necessary to fully rebuild!