At 2005-02-16T00:02:11+0000, Stuart Herbert <[EMAIL PROTECTED]> wrote:
> For years now, RedHat have split a lot of their packages into two sets
> ... a set containing what's needed at runtime to use the package, and
> another 'devel' package containing header files etc which are only
> needed for building software.
[...]
> I have an idea about how we could go about implementing this. Rather
> than adding (e.g.) a libjpeg-devel package, we could enhance Portage
> to support a second image directory. Ebuilds could then put runtime
> files into ${D} as normal, and 'devel' files into (e.g.) ${I} (it's a
> shame that ${D} was chosen for the image directory ;-)
That's an interesting idea. I see a few complications, though.
First, I'd like to suggest a modification to your idea. What portage
does now is install in an image directory, then merge those files into
${ROOT}. What you're suggesting is installing into two image directories
and merging from them. I think it might be simpler to install into a
single image directory, then delete the undesired files prior to
merging. This could be done in a manner similar to the implementation of
the nodoc, noman, and noinfo FEATURES in dyn_preinstall().
There will likely be some difficulty in separating the development files
from the runtime files. Anything in */{bin,sbin} is likely to be
runtime, and anything in /usr/{lib,include} is likely to be needed for
compiling against a given package. Stuff in /etc, /var, and /usr/share,
for example, would require some tweaking in pkg_preinstall() in the
ebuilds for effective culling of unneeded files.
The big complication I see is that some packages will still need the
files installed by the full version. The DEPEND mechanism will need to
be improved to allow stating "I need package foo, compiled without the
noruntimeuserspacecruft FEATURE." and possibly recompiling package foo.
As I understand, improvements such as this are already on the portage-dev
todo list.
This capability would be beautifully accompanied by a companion feature
that would allow portage to automatically trim anything that was pulled
in by a DEPEND but isn't in any particular class (e.g. system or world).
Well, that pretty much drains my brain for now. Any thoughts?
--
Batou: Hey, Major... You ever hear of "human rights"?
Kusanagi: I understand the concept, but I've never seen it in action.
--Ghost in the Shell
pgpoiSK1GM1nz.pgp
Description: PGP signature
