f6ebb90
#!/bin/sh
f6ebb90
f6ebb90
LOCKFILE=/var/lock/ghc-doc-index.lock
f6ebb90
f6ebb90
# the lockfile is not meant to be perfect, it's just in case
f6ebb90
# two cron scripts get run close to each other to keep
f6ebb90
# them from stepping on each other's toes.
f6ebb90
if [ -f $LOCKFILE ]; then
f6ebb90
  echo "Locked with $LOCKFILE"
f6ebb90
  exit 0
f6ebb90
fi
f6ebb90
be3e3d6
if [ "$(id -u)" != "0" ]; then
be3e3d6
  echo Need to be root!
be3e3d6
  exit 1
be3e3d6
fi
be3e3d6
f6ebb90
trap "{ rm -f $LOCKFILE ; exit 255; }" EXIT
f6ebb90
touch $LOCKFILE
f6ebb90
f6ebb90
PKGDIRCACHE=/var/lib/ghc/pkg-dir.cache
f6ebb90
LISTING="env LANG=C ls -dl"
f6ebb90
f6ebb90
# only re-index ghc docs when there are changes
f6ebb90
cd /usr/share/doc/ghc/html/libraries
f6ebb90
if [ -r "$PKGDIRCACHE" ]; then
f6ebb90
  $LISTING */ > $PKGDIRCACHE.new
f6ebb90
  DIR_DIFF=$(diff $PKGDIRCACHE $PKGDIRCACHE.new)
f6ebb90
else
f6ebb90
  $LISTING */ > $PKGDIRCACHE
f6ebb90
fi
f6ebb90
if [ -x "gen_contents_index" -a ! -r "$PKGDIRCACHE.new" -o -n "$DIR_DIFF" ]; then
f6ebb90
  ./gen_contents_index
f6ebb90
fi
f6ebb90
f6ebb90
if [ -f $PKGDIRCACHE.new ]; then
f6ebb90
  mv -f $PKGDIRCACHE{.new,}
f6ebb90
fi