# E - Sample List File

This appendix provides a sample list file that shows the capabilities and format of EPM list files.

## The CUPS List File

The Common UNIX Printing System provides an EPM list file to generate software distributions for most UNIX operating systems. This is an annotated version of the CUPS 1.1.5 list file.

### Variables Used for the Distribution

The CUPS makefile defines the following variables for the distribution:

`BINDIR`
  The directory for user programs.
`DATADIR`
  The directory for data files.
`DOCDIR`
  The directory for documentation files.
`INCLUDEDIR`
  The directory for header files.
`LIBDIR`
  The directory for library files.
`LOCALEDIR`
  The directory for message (localization) files.
`LOGDIR`
  The directory for log files.
`MANDIR`
  The directory for man pages.
`PAMDIR`
  The directory for PAM configuration files.
`REQUESTS`
  The directory for request files.
`SBINDIR`
  The directory for administration programs.
`SERVERBIN`
  The directory for server programs.
`SERVERROOT`
  The directory for server configuration files.

### Product Information

The list file starts with the product information:

    %product Common UNIX Printing System
    %copyright 1993-2003 by Easy Software Products, All Rights Reserved.
    %vendor Easy Software Products
    %license LICENSE.txt
    %readme README.txt
    %version 1.1.5
    %incompat printpro

One incompatibility is flagged against the "printpro" package, since ESP Print Pro provides its own CUPS distribution.

### Server Programs

Next comes the server programs; these are identical for all systems:

    %system all
    # Server files
    f 0555 root sys $SBINDIR/cupsd scheduler/cupsd

    d 0555 root sys $SERVERBIN -
    d 0555 root sys $SERVERBIN/backend -
    f 0555 root sys $SERVERBIN/backend/ipp backend/ipp
    l 0555 root sys $SERVERBIN/backend/http ipp
    f 0555 root sys $SERVERBIN/backend/lpd backend/lpd
    f 0555 root sys $SERVERBIN/backend/parallel backend/parallel
    f 0555 root sys $SERVERBIN/backend/serial backend/serial
    f 0555 root sys $SERVERBIN/backend/socket backend/socket
    f 0555 root sys $SERVERBIN/backend/usb backend/usb
    d 0555 root sys $SERVERBIN/cgi-bin -
    f 0555 root sys $SERVERBIN/cgi-bin/admin.cgi cgi-bin/admin.cgi
    f 0555 root sys $SERVERBIN/cgi-bin/classes.cgi cgi-bin/classes.cgi
    f 0555 root sys $SERVERBIN/cgi-bin/jobs.cgi cgi-bin/jobs.cgi
    f 0555 root sys $SERVERBIN/cgi-bin/printers.php cgi-bin/printers.php
    d 0555 root sys $SERVERBIN/daemon -
    f 0555 root sys $SERVERBIN/daemon/cups-lpd scheduler/cups-lpd
    f 0555 root sys $SERVERBIN/daemon/cups-polld scheduler/cups-polld
    d 0555 root sys $SERVERBIN/filter -
    f 0555 root sys $SERVERBIN/filter/pstoraster pstoraster/pstoraster
    f 0555 root sys $SERVERBIN/filter/pdftops pdftops/pdftops
    f 0555 root sys $SERVERBIN/filter/imagetops filter/imagetops
    f 0555 root sys $SERVERBIN/filter/pstops filter/pstops
    f 0555 root sys $SERVERBIN/filter/texttops filter/texttops
    f 0555 root sys $SERVERBIN/filter/rastertoepson filter/rastertoepson
    f 0555 root sys $SERVERBIN/filter/rastertohp filter/rastertohp
    f 0555 root sys $SERVERBIN/filter/hpgltops filter/hpgltops
    f 0555 root sys $SERVERBIN/filter/imagetoraster filter/imagetoraster

### Administration Commands

The administration commands are all pretty much the same. The only difference is that IRIX needs a symlink for the `lpc` program in the `/usr/etc` directory.

    l 0555 root sys $BINDIR/disable $SBINDIR/accept
    l 0555 root sys $BINDIR/enable $SBINDIR/accept
    l 0555 root sys $LIBDIR/accept $SBINDIR/accept
    l 0555 root sys $LIBDIR/lpadmin $SBINDIR/lpadmin
    l 0555 root sys $LIBDIR/reject accept
    f 0555 root sys $SBINDIR/accept systemv/accept
    f 0555 root sys $SBINDIR/lpadmin systemv/lpadmin
    f 0555 root sys $SBINDIR/lpc berkeley/lpc
    f 0555 root sys $SBINDIR/lpinfo systemv/lpinfo
    f 0555 root sys $SBINDIR/lpmove systemv/lpmove
    l 0555 root sys $SBINDIR/reject accept

    %system irix
    l 0555 root sys /usr/etc/lpc $SBINDIR/lpc
    %system all

### User Commands

The user commands are all pretty much the same. As with the administration commands, IRIX needs the Berkeley commands linked to a different directory, `/usr/bsd`.

    f 0555 root sys $BINDIR/cancel systemv/cancel
    f 0555 root sys $BINDIR/lp systemv/lp
    f 0555 root sys $BINDIR/lpoptions systemv/lpoptions
    f 4555 root sys $BINDIR/lppasswd systemv/lppasswd
    f 0555 root sys $BINDIR/lpq berkeley/lpq
    f 0555 root sys $BINDIR/lpr berkeley/lpr
    f 0555 root sys $BINDIR/lprm berkeley/lprm
    f 0555 root sys $BINDIR/lpstat systemv/lpstat

    %system irix
    l 0555 root sys /usr/bsd/lpq $BINDIR/lpq
    l 0555 root sys /usr/bsd/lpr $BINDIR/lpr
    l 0555 root sys /usr/bsd/lprm $BINDIR/lprm
    %system all

### Shared Libraries

Shared libraries present their own challenges. HP-UX uses a different extension for shared libraries than other operating systems.

    %system hpux
    f 0555 root sys $LIBDIR/libcups.sl.2 cups/libcups.sl.2
    l 0555 root sys $LIBDIR/libcups.sl libcups.sl.2
    f 0555 root sys $LIBDIR/libcupsimage.sl.2 filter/libcupsimage.sl.2
    l 0555 root sys $LIBDIR/libcupsimage.sl libcupsimage.sl.2
    %system !hpux
    f 0555 root sys $LIBDIR/libcups.so.2 cups/libcups.so.2
    l 0555 root sys $LIBDIR/libcups.so libcups.so.2
    f 0555 root sys $LIBDIR/libcupsimage.so.2 filter/libcupsimage.so.2
    l 0555 root sys $LIBDIR/libcupsimage.so libcupsimage.so.2
    %system all

### Directories

The CUPS distribution uses three directories to hold the log, request, and temporary files.

    d 0755 root sys $LOGDIR -
    d 0700 lp sys $REQUESTS -
    d 1700 lp sys $REQUESTS/tmp -

### Data Files

CUPS has lots of data files. We use wildcards whenever possible.

    f 0444 root sys $LOCALEDIR/C/cups_C locale/C/cups_C
    f 0444 root sys $LOCALEDIR/de/cups_de locale/de/cups_de
    f 0444 root sys $LOCALEDIR/en/cups_en locale/en/cups_en
    f 0444 root sys $LOCALEDIR/es/cups_es locale/es/cups_es
    f 0444 root sys $LOCALEDIR/fr/cups_fr locale/fr/cups_fr
    f 0444 root sys $LOCALEDIR/it/cups_it locale/it/cups_it

    d 0555 root sys $DATADIR -

    d 0555 root sys $DATADIR/banners -
    f 0444 root sys $DATADIR/banners/classified data/classified
    f 0444 root sys $DATADIR/banners/confidential data/confidential
    f 0444 root sys $DATADIR/banners/secret data/secret
    f 0444 root sys $DATADIR/banners/standard data/standard
    f 0444 root sys $DATADIR/banners/topsecret data/topsecret
    f 0444 root sys $DATADIR/banners/unclassified data/unclassified

    d 0555 root sys $DATADIR/charsets -
    f 0444 root sys $DATADIR/charsets/windows-874 data/windows-874
    f 0444 root sys $DATADIR/charsets/windows-1250 data/windows-1250
    f 0444 root sys $DATADIR/charsets/windows-1251 data/windows-1251
    f 0444 root sys $DATADIR/charsets/windows-1252 data/windows-1252
    f 0444 root sys $DATADIR/charsets/windows-1253 data/windows-1253
    f 0444 root sys $DATADIR/charsets/windows-1254 data/windows-1254
    f 0444 root sys $DATADIR/charsets/windows-1255 data/windows-1255
    f 0444 root sys $DATADIR/charsets/windows-1256 data/windows-1256
    f 0444 root sys $DATADIR/charsets/windows-1257 data/windows-1257
    f 0444 root sys $DATADIR/charsets/windows-1258 data/windows-1258
    f 0444 root sys $DATADIR/charsets/iso-8859-1 data/iso-8859-1
    f 0444 root sys $DATADIR/charsets/iso-8859-14 data/iso-8859-14
    f 0444 root sys $DATADIR/charsets/iso-8859-15 data/iso-8859-15
    f 0444 root sys $DATADIR/charsets/iso-8859-2 data/iso-8859-2
    f 0444 root sys $DATADIR/charsets/iso-8859-3 data/iso-8859-3
    f 0444 root sys $DATADIR/charsets/iso-8859-4 data/iso-8859-4
    f 0444 root sys $DATADIR/charsets/iso-8859-5 data/iso-8859-5
    f 0444 root sys $DATADIR/charsets/iso-8859-6 data/iso-8859-6
    f 0444 root sys $DATADIR/charsets/iso-8859-7 data/iso-8859-7
    f 0444 root sys $DATADIR/charsets/iso-8859-8 data/iso-8859-8
    f 0444 root sys $DATADIR/charsets/iso-8859-9 data/iso-8859-9
    f 0444 root sys $DATADIR/charsets/utf-8 data/utf-8

    d 0555 root sys $DATADIR/data -
    f 0444 root sys $DATADIR/data/HPGLprolog data/HPGLprolog
    f 0444 root sys $DATADIR/data/psglyphs data/psglyphs
    f 0444 root sys $DATADIR/data/testprint.ps data/testprint.ps

    d 0555 root sys $DATADIR/fonts -
    f 0444 root sys $DATADIR/fonts fonts/*

    d 0555 root sys $DATADIR/pstoraster -
    f 0444 root sys $DATADIR/pstoraster/Fontmap pstoraster/Fontmap
    f 0444 root sys $DATADIR/pstoraster pstoraster/gs*.ps

    d 0555 root sys $DATADIR/model -
    f 0444 root sys $DATADIR/model ppd/*.ppd

    d 0555 root sys $DATADIR/templates -
    f 0444 root sys $DATADIR/templates templates/*.tmpl

### Config Files

The server configuration files and directories go in `$SERVERROOT`. The MIME configuration files are not treated as configuration files in the distribution since new versions of CUPS may add filters and file types that are required to make CUPS work. Local file types and filters should be added using the `local.types` and `local.convs` files.

###

    d 0555 root sys $SERVERROOT -
    d 0711 root sys $SERVERROOT/certs -
    d 0755 root sys $SERVERROOT/interfaces -
    d 0755 root sys $SERVERROOT/ppd -
    c 0644 root sys $SERVERROOT conf/*.conf
    f 0644 root sys $SERVERROOT/mime.convs conf/mime.convs
    f 0644 root sys $SERVERROOT/mime.types conf/mime.types

    PAM Files

    Programmable Authentication Modules ("PAM") is supported by
    many operating systems. Currently Linux PAM is the only
    implementation that uses a directory with separate configuration
    files; other operating systems use a single configuration file
    (/etc/pam.conf) and provide a default
    authentication configuration that works with CUPS.

    %system linux
    d 0555 root sys $PAMDIR -
    c 0644 root sys $PAMDIR/cups data/cups.pam
    c 0644 root sys $PAMDIR/cups.suse data/cups.suse
    %install if test -f /lib/security/pam_unix.so; then
    %install     mv $PAMDIR/cups.suse $PAMDIR/cups
    %install fi
    %system all

### Developer Files

The developer files include the C header files and static API library.

    d 0555 root sys $INCLUDEDIR/cups -
    f 0444 root sys $INCLUDEDIR/cups/cups.h cups/cups.h
    f 0444 root sys $INCLUDEDIR/cups/http.h cups/http.h
    f 0444 root sys $INCLUDEDIR/cups/image.h filter/image.h
    f 0444 root sys $INCLUDEDIR/cups/ipp.h cups/ipp.h
    f 0444 root sys $INCLUDEDIR/cups/language.h cups/language.h
    f 0444 root sys $INCLUDEDIR/cups/md5.h cups/md5.h
    f 0444 root sys $INCLUDEDIR/cups/ppd.h cups/ppd.h
    f 0444 root sys $INCLUDEDIR/cups/raster.h filter/raster.h

    f 0444 root sys $LIBDIR/libcups.a cups/libcups.a

### Documentation Files

The documentation files go under `$DOCDIR`. Wildcards take care of most of the work.

    d 0555 root sys $DOCDIR -
    f 0444 root sys $DOCDIR/cups.css doc/cups.css
    f 0444 root sys $DOCDIR doc/*.html
    f 0444 root sys $DOCDIR doc/*.pdf
    d 0555 root sys $DOCDIR/images -
    f 0444 root sys $DOCDIR/images doc/images/*.gif

### Man Pages

Man pages are almost as much fun as initialization scripts. IRIX is the oddball of the bunch and needs packed, formatted man pages. Solaris and HP-UX follow the System V convention of using section 1m for administration commands instead of section 8 as is used for all other UNIX's.

    # Man pages
    %system irix
    d 0555 root sys $MANDIR/a_man -
    d 0555 root sys $MANDIR/a_man/cat1 -
    d 0555 root sys $MANDIR/u_man -
    d 0555 root sys $MANDIR/u_man/cat1 -
    d 0555 root sys $MANDIR/u_man/cat5 -

    f 0444 root sys $MANDIR/a_man/cat1/accept.z man/accept.z
    l 0444 root sys $MANDIR/a_man/cat1/reject.z accept.z
    f 0444 root sys $MANDIR/u_man/cat1/backend.z man/backend.z
    f 0444 root sys $MANDIR/u_man/cat5/classes.conf.z man/classes.conf.z
    f 0444 root sys $MANDIR/a_man/cat1/cups-lpd.z man/cups-lpd.z
    f 0444 root sys $MANDIR/a_man/cat1/cups-polld.z man/cups-polld.z
    f 0444 root sys $MANDIR/u_man/cat5/cupsd.conf.z man/cupsd.conf.z
    f 0444 root sys $MANDIR/a_man/cat1/cupsd.z man/cupsd.z
    f 0444 root sys $MANDIR/a_man/cat1/enable.z man/enable.z
    l 0444 root sys $MANDIR/a_man/cat1/disable.z enable.z
    f 0444 root sys $MANDIR/u_man/cat1/filter.z man/filter.z
    f 0444 root sys $MANDIR/a_man/cat1/lpadmin.z man/lpadmin.z
    f 0444 root sys $MANDIR/a_man/cat1/lpc.z man/lpc.z
    f 0444 root sys $MANDIR/a_man/cat1/lpinfo.z man/lpinfo.z
    f 0444 root sys $MANDIR/a_man/cat1/lpmove.z man/lpmove.z
    f 0444 root sys $MANDIR/u_man/cat1/lpoptions.z man/lpoptions.z
    f 0444 root sys $MANDIR/u_man/cat1/lpq.z man/lpq.z
    f 0444 root sys $MANDIR/u_man/cat1/lprm.z man/lprm.z
    f 0444 root sys $MANDIR/u_man/cat1/lpr.z man/lpr.z
    f 0444 root sys $MANDIR/u_man/cat1/lpstat.z man/lpstat.z
    f 0444 root sys $MANDIR/u_man/cat1/lp.z man/lp.z
    l 0444 root sys $MANDIR/u_man/cat1/cancel.z lp.z
    f 0444 root sys $MANDIR/u_man/cat5/mime.convs.z man/mime.convs.z
    f 0444 root sys $MANDIR/u_man/cat5/mime.types.z man/mime.types.z
    f 0444 root sys $MANDIR/u_man/cat5/printers.conf.z man/printers.conf.z

    %system solaris hpux
    d 0555 root sys $MANDIR/man1 -
    d 0555 root sys $MANDIR/man5 -
    d 0555 root sys $MANDIR/man1m -

    f 0444 root sys $MANDIR/man1m/accept.1m man/accept.man
    l 0444 root sys $MANDIR/man1m/reject.1m accept.1m
    f 0444 root sys $MANDIR/man1/backend.1 man/backend.man
    f 0444 root sys $MANDIR/man1/classes.conf.5 man/classes.conf.man
    f 0444 root sys $MANDIR/man1m/cups-lpd.1m man/cups-lpd.man
    f 0444 root sys $MANDIR/man1m/cups-polld.1m man/cups-polld.man
    f 0444 root sys $MANDIR/man1m/cupsd.1m man/cupsd.man
    f 0444 root sys $MANDIR/man5/cupsd.conf.5 man/cupsd.conf.man
    f 0444 root sys $MANDIR/man1m/enable.1m man/enable.man
    l 0444 root sys $MANDIR/man1m/disable.1m enable.1m
    f 0444 root sys $MANDIR/man1/filter.1 man/filter.man
    f 0444 root sys $MANDIR/man1m/lpadmin.1m man/lpadmin.man
    f 0444 root sys $MANDIR/man1m/lpc.1m man/lpc.man
    f 0444 root sys $MANDIR/man1m/lpinfo.1m man/lpinfo.man
    f 0444 root sys $MANDIR/man1m/lpmove.1m man/lpmove.man
    f 0444 root sys $MANDIR/man1/lpoptions.1 man/lpoptions.man
    f 0444 root sys $MANDIR/man1/lpq.1 man/lpq.man
    f 0444 root sys $MANDIR/man1/lprm.1 man/lprm.man
    f 0444 root sys $MANDIR/man1/lpr.1 man/lpr.man
    f 0444 root sys $MANDIR/man1/lpstat.1 man/lpstat.man
    f 0444 root sys $MANDIR/man1/lp.1 man/lp.man
    l 0444 root sys $MANDIR/man1/cancel.1 lp.1
    f 0444 root sys $MANDIR/man5/mime.convs.5 man/mime.convs.man
    f 0444 root sys $MANDIR/man5/mime.types.5 man/mime.types.man
    f 0444 root sys $MANDIR/man5/printers.conf.5 man/printers.conf.man

    %system !irix !solaris !hpux
    d 0555 root sys $MANDIR/man1 -
    d 0555 root sys $MANDIR/man5 -
    d 0555 root sys $MANDIR/man8 -

    f 0444 root sys $MANDIR/man8/accept.8 man/accept.man
    l 0444 root sys $MANDIR/man8/reject.8 accept.8
    f 0444 root sys $MANDIR/man1/backend.1 man/backend.man
    f 0444 root sys $MANDIR/man1/classes.conf.5 man/classes.conf.man
    f 0444 root sys $MANDIR/man8/cups-lpd.8 man/cups-lpd.man
    f 0444 root sys $MANDIR/man8/cups-polld.8 man/cups-polld.man
    f 0444 root sys $MANDIR/man8/cupsd.8 man/cupsd.man
    f 0444 root sys $MANDIR/man5/cupsd.conf.5 man/cupsd.conf.man
    f 0444 root sys $MANDIR/man8/enable.8 man/enable.man
    l 0444 root sys $MANDIR/man8/disable.8 enable.8
    f 0444 root sys $MANDIR/man1/filter.1 man/filter.man
    f 0444 root sys $MANDIR/man8/lpadmin.8 man/lpadmin.man
    f 0444 root sys $MANDIR/man8/lpc.8 man/lpc.man
    f 0444 root sys $MANDIR/man8/lpinfo.8 man/lpinfo.man
    f 0444 root sys $MANDIR/man8/lpmove.8 man/lpmove.man
    f 0444 root sys $MANDIR/man1/lpoptions.1 man/lpoptions.man
    f 0444 root sys $MANDIR/man1/lpq.1 man/lpq.man
    f 0444 root sys $MANDIR/man1/lprm.1 man/lprm.man
    f 0444 root sys $MANDIR/man1/lpr.1 man/lpr.man
    f 0444 root sys $MANDIR/man1/lpstat.1 man/lpstat.man
    f 0444 root sys $MANDIR/man1/lp.1 man/lp.man
    l 0444 root sys $MANDIR/man1/cancel.1 lp.1
    f 0444 root sys $MANDIR/man5/mime.convs.5 man/mime.convs.man
    f 0444 root sys $MANDIR/man5/mime.types.5 man/mime.types.man
    f 0444 root sys $MANDIR/man5/printers.conf.5 man/printers.conf.man

### Startup Script

The CUPS startup script is last and specifies a script name of `cups`. Startup and shutdown scripts will be created with the names `S99cups` and `K00cups`, respectively.

    %system all
    i 0555 root sys cups cups.sh