`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: