[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

`pms' from BOGUS (Debian vs. BOGUS)



***
*** Please reply also directly to me, since I'm not on the devel-list.
***

OK, some hints.  In Europe ftp.gwdg.de:/pub/linux/bogus holds the BOGUS
dist.; it comes with some informative text files.

The tool `pms' [Package Management System] is the heart of the
distribution; `pms' is driven by so called Notes files (think of it as
of `make' and Makefiles).  A Notes file has three parts:

I.  Package description and location (= in part Debian's
    /usr/doc/copyright/program)

    GNU Ghostscript, version 2.6.1, with fix-01 through fix-04
    %n ghostscript
    %v 2.6.1
    %c gcc-2.6.3
    %l libc-4.6.27, ...
    %b Karl Eichwalder
    %d <date>
    %f prep.ai.mit.edu:/pub/faith
    %t1 ghostscript-2.6.1.tar.gz
    %t2 ghostscript-fonts-2.6.1.tar.gz
    %p1 ghostscript-2.6.1.fix-01.gz
    %p2 ghostscript-2.6.1.fix-02.gz
    %p3 ghostscript-2.6.1.fix-03.gz
    %p4 ghostscript-2.6.1.fix-04.gz
    %w usr.bin

II. Commands to build and install the package; it's a mixture of
    predefined variables, macros [%setup, %doc, *] and shell script
    fragments (~ debian.rules):

    if [ ! -d $BUILDDIR ]; then mkdir $BUILDDIR; fi
    cd $BUILDDIR
    rm -rf gs261
    tar zxvf $SRCTARDIR/$TARFILE1
    cd gs261
    
    cat $SRCTARDIR/$PATCHFILE1 | patch -s
    cat $SRCTARDIR/$PATCHFILE2 | patch -s
    cat $SRCTARDIR/$PATCHFILE3 | patch -s
    cat $SRCTARDIR/$PATCHFILE4 | patch -s
    ln -fs unix-gcc.mak makefile
    
    make prefix=/usr CFLAGS='-O2 -m486' LDFLAGS=-s XINCLUDE=/usr/include/X11 \
        XLIBDIRS=-L/usr/X11R6/lib \
        DEVICE_DEVS2='dfaxhigh.dev dfaxlow.dev escp2.dev'
    
    %doc COPYING NEWS README
    * rm -rf $ROOTDIR/usr/lib/ghostscript
    * make prefix=/usr CFLAGS='-O2 -m486' LDFLAGS=-s \
    *  XINCLUDE=/usr/include/X11 \
    *  XLIBDIRS=-L/usr/X11R6/lib \
    *  DEVICE_DEVS2='dfaxhigh.dev dfaxlow.dev escp2.dev' \
    *  install
    
    * ln -sf $ROOTDIR/usr/lib/ghostscript/doc/*.1 $ROOTDIR/usr/man/man1
    
    * cd $ROOTDIR/usr/lib/ghostscript
    * tar zxvvf $SRCTARDIR/$TARFILE2
    * chown -R root:system fonts

III. List of installed files:

    * usr/man/man1/ansi2knr.1
    * usr/man/man1/gs.1
    * [etc.]

If it is necessary to patch the source before making, include a diff
in the Notes file before calling make:

    patch -s -p0 << 'EOF_PATCH' &&
    --- /dev/null	Thu Nov 17 17:56:31 1994
    +++ magicfilter-1.1b/filters/escp2-filter.x	Wed May 31 15:15:15 1995
    @@ -0,0 +1,209 @@
    +%include <filters.h>
    +#
    +# Magic filter setup file for Epson esc/p2 printers
    +#
    +# This file is in the public domain.
    +#
    [etc.]
    
    EOF_PATCH

Now call pms with this Notes file

    pms -Ba ghostscript-2.6.1.bin.Notes

and pms will unpack and patch the source, compile the program, install
it and run a post install script; at this moment--this is important--pms
updates the Notes file and stores this file at
/var/adm/pms/ghostscript-2.6.1.bin.Notes.  If this is done, pms makes a
.bin.tar.gz (= .deb) of the installed program, including the Notes file;
this archive is ready to install with

    pms -i .bin.tar.gz  (= dpkg -i .deb)

at other sites.

It is really nice that all the info which is needed to install a program
is stored at a well defined place (/var/adm/pms).

>>>>> "Raul" == Raul Miller <moth@magenta.com> writes:

    Raul> [2] How is it typically used in BOGUS?

You use pms to build the distribution files (as told above); to install
a package and to query about a packacke; 

    pms -q ghostscript-2.6.1.bin.Notes
    =>
ghostscript-2.6.1.bin:
  GNU Ghostscript, version 2.6.1, with fix-01 through fix-04
  Package name:    ghostscript
  Package version: 2.6.1
  Compiled with:   gcc-2.6.3
  Linked with:     libc-4.6.27
  Build by:        Karl Eichwalder
  Built on:        Mon Sep  4 23:55:12 1995
  FTP source from: prep.ai.mit.edu:/pub/faith
  Source file 1:     ghostscript-2.6.1.tar.gz
  Source file 2:     ghostscript-fonts-2.6.1.tar.gz
  Patch file 1:      ghostscript-2.6.1.fix-01.gz
  Patch file 2:      ghostscript-2.6.1.fix-02.gz
  Patch file 3:      ghostscript-2.6.1.fix-03.gz
  Patch file 4:      ghostscript-2.6.1.fix-04.gz
  Build in:        /usr/src/usr.bin
  Note:       ghostscript-2.6.1.bin.Notes
usr/man/man1/ansi2knr.1                            root:root 0664
usr/man/man1/gs.1                                  root:root 0664
[etc.]

If you think, you need more `Lines;', feel free to do so--`pms' doesn't
complain ;-)

    Raul> [3] How does our current mechanism [debianized source package]
    Raul> fail in achieving this purpose?

Hard to say.  Debian's dpkg has other goals (e.g., dependencies, GUI,
conffiles).  I would like to see the debian-diffs included in the *.deb
files and it should be a installation option to store this diff stuff at
/var/lib/dpkg/diff.  More `lines:' in debian.control mandatory (FTP,
Source, Patch, perhaps Compiler and Libraries).

To remember you: I don't want to argue which dist is better; my
intention is to consider how is it possible to improve Debian GNU/Linux!

Karl.


Reply to: