Here comes the official proposal, copy and paste from my blog with an
extra post scriptum at the end.

I already ranted about the fact that the dependency tree of our ebuilds
is vastly incomplete, as many lack dependency on zlib; trying to get
this fixed was impossible, as Donnie and other insisted that as zlib was
in system, we shouldn’t depend on it at all. I disagree, and I would
like to know why we can’t depend on a system package, but whatever.

Anyway, as having a complete dependency tree is almost impossible
because of that, I have an alternative proposal: reducing the size of
the system package set.  Right now system contains stuff like ncurses,
readline, zlib, autoconf, automake and m4, perl, gnuconfig, and so
on. Those are packages that certainly would be part of any base Gentoo
system, but are those actual part of the system set of packages? I
sincerely doubt it.

The reason of the existence of the system package set is related first
and foremost to breaking circular dependencies: for instance if any
package that used the C compiler would depend on gcc, then the packages
that gcc depends upon would create a circular dependency between gcc and
itself. Also, specifying libc in almost any ebuild would be quite
pointless, as well as coreutils (or freebsd-bin/ubin) for cp, mv,
install, …

But why autoconf and automake? Well the easy answer is that those are
often used without making sure they are depended upon explicitly… or at
least this was the case till me and Martin added autotools.eclass to the
tree; nowadays all the ebuilds using autotools should have proper
autoconf/automake dependency already, and if they don’t they are broken
anyway. So why leaving them in system? And what about m4? m4 is not part
of a common Unix system, it’s just an autoconf dependency, why isn’t it
just an autoconf dependency?

For what concern the three main libraries, there aren’t that many
packages using zlib directly nowadays, this is especially easy to spot
on a system built with --as-needed, as without that you actually do see
zlib used in every other binary, for indirect dependencies. Nor there
aren’t tons and tons of packages using readline, or ncurses. Actually in
my own vserver’s chroot I only found four packages using readline, none
of them part of system: ruby with the readline extension (uhm I wonder
if I should ask for this to become an USE flag, I certainly don’t need
it and I’d rather get rid of it), psql from postgresql (which maybe it’s
still good to have with readline compiled in, but I could easily get rid
of), bc (which is just an e2fsprogs build-dep, and I could build without
readline just fine), and mysql.

A little bit different the status of ncurses, which is used by screen,
gettext (only a build-dep, not needed for runtime on Linux anyway),
procps, psmisc and util-linux (and I wonder why we don’t have a switch
to turn it off), texinfo (wonder why we can’t remove it entirely
actually) and yet again ruby. Still, I wonder why ncurses is in system
rather than being properly on the dependencies list of those packages.

As for perl, that’s probably a bit more justified, there are tons of
packages using perl directly or indirectly, especially in build
systems. But I would like those to depend on perl properly rather than
having perl in system, as there are cases where perl is not really
needed at runtime at least.

And the only users of gnuconfig are the packages making use of the old
and deprecated gnuconfig.eclass, or portage’s econf. Why can’t it be a
dependency of portage then?

There are probably other packages that should, in my opinion, be removed
From system, but these are certainly some of the most
common. Unfortunately there’s a recursive problem here: to remove the
packages from system without breaking stuff you’d need a proper deptree,
and to get a proper deptree you need to remove the packages from
system. This is what actually stops me from proposing this right away…

P.S.:

So there are more things that were brought to my attention, like ssh,
flex, bison, e2fsprogs, and so on. We should probably look into what to
keep, rather than what to remove.

Also, rocket proposed me to try building a stage with a slimmed down
system. I could try, but it would be a waste of time if we then decide
not to go this route, and that's _a lot_ of time that would go to waste,
so I'd rather first see what the other devs think, before going to do
the actual tests.

-- 
Diego "Flameeyes" Pettenò
http://farragut.flameeyes.is-a-geek.org/

Attachment: pgpj6JMlVTszU.pgp
Description: PGP signature

Reply via email to