[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 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 snippets for installing fonts for TeX
     #
     # Author: Florent Rougon <f.rougon@free.fr>
     #
     update_fontmaps()
     {
         update-updmap --quiet
         # 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.
         # According to the Debian TeX policy, running mktexlsr and updmap-sys
         # should work as long as tex-common is configured and these files are
         # available (general Debian policy wouldn't assure that without this
         # override from the Debian TeX policy).
         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
     
         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 snippets for installing 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
     
         # According to the Debian TeX policy, running mktexlsr and updmap-sys
         # should work as long as tex-common is configured and these files are
         # available (general Debian policy wouldn't assure that without this
         # override from the Debian TeX policy).
         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 tetex-bin 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 tetex-bin 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
         # 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 ] [ A ] [ next ]


The Debian TeX sub-policy

generated from $Id: Debian-TeX-Policy.sgml 442 2005-12-29 18:51:51Z frank $

The Debian teTeX mailing List debian-tetex-maint@lists.debian.org