It's a fair attempt at trying to match actual changed files
with the patchdir, and invent new patch file names.
There are a few things it doesn't do yet, such as dealing with
patch files with multiple patches, or dealing with context diffs.
Just watch out when you use it for the first time on a port, verify
you don't lose or duplicate patches.
I've been using this to update large ports recently, and it seemed too
good not to give it to other porters.
Approved by turan@
if a new directory was found, it is always marked for @dirrm.
But, if the directory is empty, nothing pertaining to it is recorded in
the PLIST... and thanks to pkg_*, we can't record directories in the PLIST.
So, just add an @exec mkdir -p right in front of the @dirrm, up to
the port maintainer to decide whether the @exec mkdir/@dirrm pair is
justified or not (for the port at hand).
This is somewhat orthogonal to FLAVORS.
Principle: one port may build several packages in one go.
For instance, egcs will build all compilers, and package stuff as
base, C++, Fortran, etc.
This simplifies some japanese ports greatly, e.g., one Canna port that
builds libs/server/app packages.
How to use:
just set
MULTI_PACKAGES=-ext1 -ext2...
in the Makefile.
Then make package will invoke itself recursively with SUBPACKAGE set to
-ext1, -ext2.
The SUBPACKAGE will fetch package info as PLIST-ext1, COMMENT-ext1,
DESCR-ext1, etc.
The port Makefile itself can test the value of SUBPACKAGE if things differ.
Some problems:
- there still is a main package (with PLIST, DESCR, etc), and it's built
last, so you can't add RUN_DEPENDS=main_package to subpackages, you have
to encode them explicitly in the PLIST for now.
- other ports can't depend on subpackages yet. This is usually not a
problem, it's just a question of choosing the `right' main package (e.g.,
for Canna, it will be canna-lib).
- PLIST.sed recognize @FLAVOR@, which is extended to the current flavor,
so that a subpackage may depend on the corresponding main package in
explicit ways.
describe is also invoked recursively, so that all subpackages appear in
the INDEX.
- format man pages using new jgroff, so that we can install a full set
of documentation.
- move INSTALL script into a separate script, so that adding a new user
need not be done at the time of INSTALL.
- add a few strlcpy to fix a few holes. This stuff is rather bad, though.
- use terminfo instead of termcap, for better keycap names, fixing quite
a few bugs that made it impossible to build that version along the way...
- move scripts into /usr/local/bin instead of /usr/local/bin/Wnn4.
- use @comment no checksum
in packing list, even though pkg_add does not support that yet.
Not quite completely ready, but getting there...