[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ A ] [ next ]


The Debian TeX sub-policy
Appendix A - Sample code


This section contains sample code that implements the recommodations of this document.


A.1 Sample code for font packages

Sample postinst script:

     #
     # postinst-texfonts
     #
     # postinst snippet for installing Type 1 fonts for TeX
     #
     # Author: Florent Rougon <f.rougon@free.fr>
     #
     update_fontmaps()
     {
         update-updmap --quiet
         # All of the following needs an installed and configured
         # basic TeX system, so check this.
         if kpsewhich --version >/dev/null 2>&1; then
             # mktexlsr is recommended now because updmap-sys relies 
             # heavily on Kpathsea to locate updmap.cfg and the map files. 
             # Also, it is slightly better not to specify a particular 
             # directory to refresh because updmap.cfg is typically found 
             # in TEXMFSYSVAR while the map files are in TEXMFMAIN or
             # TEXMFDIST.
             if which mktexlsr >/dev/null; then mktexlsr; fi
             if which updmap-sys >/dev/null; then
                 printf "Running updmap-sys... "
                 updmap-sys --quiet
                 echo "done."
             fi
         fi
     
         return 0
     }
     
     case "$1" in
         configure|abort-upgrade|abort-remove|abort-deconfigure)
             update_fontmaps
         ;;
     
         *)
             echo "postinst called with unknown argument '$1'" >&2
             exit 1
         ;;
     esac

Sample postrm script:

     #
     # postrm-texfonts
     #
     # postrm snippet for installing Type 1 fonts for TeX
     #
     # Author: Florent Rougon <f.rougon@free.fr>
     #
     tell_that_errors_are_ok()
     {
         # Cheap option handling...
         if [ "$1" = -n ]; then
             prog="$2"
             endwith=' '
         else
             prog="$1"
             endwith='\n'
         fi
     
         printf "\
     Trying to run '$prog' (error messages can be ignored if tex-common
     is not configured)...$endwith"
     
         return 0
     }
     
     # The function name is *try_to*_update_fontmaps because the following
     # scenario might happen:
     #    1. this package is deconfigured
     #    2. tex-common and texlive-binaries are removed
     #    3. this package is removed or purged
     #
     # (cf. Policy § 6.5, step 2, about a conflicting package being removed due
     # to the installation of the package being discussed).
     #
     # In this case, update-updmap, mktexlsr and updmap-sys would all be gone once
     # tex-common and texlive-binaries are removed, so we must append "|| true" to 
     # their calls.
     try_to_update_fontmaps()
     {
         # Don't print alarming error messages if the programs aren't even
         # available.
         if which update-updmap >/dev/null; then
             tell_that_errors_are_ok -n update-updmap
             update-updmap --quiet || true
             echo "done."
         fi
     
         # All of the following needs an installed and configured basic TeX system.
         # If there is one, register the fonts. Otherwise, that will be done later
         # when the basic TeX system is configured, so we can exit without
         # worrying.
         kpsewhich --version >/dev/null 2>&1 || return 0
     
         # mktexlsr is recommended now because updmap-sys relies heavily on
         # Kpathsea to locate updmap.cfg and the map files. Also, it is slightly
         # better not to specify a particular directory to refresh because
         # updmap.cfg is typically found in TEXMFSYSVAR while the map files are in
         # TEXMFMAIN.
         if which mktexlsr >/dev/null; then
             tell_that_errors_are_ok mktexlsr
             mktexlsr || true
             echo "done."
         fi
     
         if which updmap-sys >/dev/null; then
             tell_that_errors_are_ok -n updmap-sys
             updmap-sys --quiet || true
             echo "done."
         fi
     
         return 0
     }
     
     case "$1" in
         remove|disappear)
             try_to_update_fontmaps
         ;;
     
         purge)
             # Supposing updmap.cfg & Co are clean (which I think is a reasonable
             # assumption), we don't need to call try_to_update_fontmaps().
             # Calling it on remove _and_ on purge just for hypothetical users
             # who would break their config before purging this package seems to
             # be more annoying than useful (it takes a lot of time).
         ;;
     
         upgrade|failed-upgrade|abort-upgrade|abort-install)
         ;;
     
         *)
             echo "postrm called with unknown argument '$1'" >&2
             exit 1
         ;;
     esac

[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ A ] [ next ]


The Debian TeX sub-policy

generated from $Id$

The Debian TeX mailing list mailto:debian-tex-maint@lists.debian.org