Hi,
I'd like to draw some attention to a prototype implementation of a PortGroup I
wrote for creating "dev" ports, akin to Debian/Ubuntu's "-dev" packages:
https://trac.macports.org/ticket/52713
I've been using this for a while now and find it particularly useful for
avoiding build conflicts. That kind of conflict usually arises when the
presence of certain files from a port A interferes with building port B. Most
often that concerns headerfiles but "linker interface" libraries can also be at
cause, or even pkgconfig/cmake files. Those are all files that are only
required when using port "A" as a dependency for *building* other software but
not as a dependency for running that dependent software.
I think that it should even be possible to use this kind of approach for ports
that cannot be built when an older version is already installed; such ports
could probably declare a build conflict with their own -dev port (possibly even
deactivate it in an appropriate stage).
The current implementation moves selected files into a "fake" port image in an
appropriate location during the main port's post-destroot; unpacks that tarball
during the -dev port's destroot and zeroes the "fake" port image during the
pre-activate because it is now unnecessary. Rather than being emptied that
tarball could be replaced with a symlink to the actual software image (but how
to get its name?). Or it could be completely removed if rev-upgrade can be told
not to complain about certain missing files.
A more elegant version would install that dev port in deactivated fashion when
the main port is installed. The basic implementation shouldn't be too difficult
(move the selected files into a second DESTDIR, e.g. ${destroot_dev}, use that
as the root for installing but not activating ${subport}-dev) but it might be
tricky to get right with upgrades etc.
My current simpler implementation via a PortGroup has the advantage that it can
help assess how much use this kind of feature would see, and thus how much
effort should be put into it.
R.