Hello, everyone.

Currently PMS defines two variables that are being repeatedly abused to
access repository data in unpredictable and breaking manners -- PORTDIR
and ECLASSDIR. They both reference only so-called 'master
repository', are permitted in source builds and src_* phases only.

For quite some time, QA is monitoring their use and repeatedly
reporting abuses and spec violations. I'd like to run a joint QA & PMS
team effort in cleaning up those variables for sane multi-repository
support or banning them altogether. For this reason, I would like to
know your opinion.


Licenses [1]
------------

So far, the most common use of ${PORTDIR} was to access the licenses
subdirectory. That has a number of issues -- most importantly, it fails
when the license is provided by another repository. It is also unusable
in binary packages.

So far I see two major possibilities here. We can either decide that:

a. ebuilds don't need to access licenses directly and if they do,
the licenses are usually included in distfiles or can be obtained
independently of ebuild tree, or

b. we provide a proper, safe mechanism for obtaining licenses that
works with multiple repositories and binary packages. In particular,
I was thinking of establishing a LICENSEDIR that would contain copies
or symlinks to all needed licenses, both in source and binary installs.

Few relevant current bugs:

- sci-visualization/veusz: replaces bundled license with PORTDIR
  symlink, which will fail if repository is moved or when using binary
  packages [2],

- sci-biology/foldingathome: tries to reference the license
  in pkg_setup(), while PORTDIR is valid only in src_* [3],

- sys-block/tw_cli: copies license into install. The license is not
  included in tarball, yet we have different opinions whether copying
  it is necessary or not [4].


Eclasses [5]
------------

The next thing is ECLASSDIR, sometimes disguised as equivalent
${PORTDIR}/eclass. It is used only by a single developer, for two
reasons. One is to create eclass-manpages whose ebuild is a huge hack
relying on random deprecated Portage variables anyway, so not worth
noting. The other is to access a huge collection of patches (over 100
files) which are stored in eclass/ELT-patches and not ever used on most
of Gentoo systems.

We've considered different options on how to make ECLASSDIR sane and so
far seems there's no real way of doing it while keeping the ELT-patches
thing working (the way suggested for licenses won't work, for example).
So for less sane solutions, again we have two:

A. ban ECLASSDIR completely, and move ELT-patches to a dedicated
package [6]. This way, it could be cleanly managed, versioned
and filtered to install only files relevant to user's system (i.e. not
for all potential prefixes we support), and libtool.eclass can simply
DEPEND on it. Furthermore, a lot of the code could be moved to
a reusable external patcher tool.

B. Restrict ECLASSDIR to be available only in global scope of
eclasses (i.e. while sourcing them), and set it to the repository from
which eclass is sourced. This is ugly, barely predictable but should
work. Well, as long as you copy the whole ELT-patches structure along
with libtool.eclass.


PORTDIR [7]
-----------

Almost all uses of PORTDIR are covered by the two above categories.
The only remaining use is games-mods.eclass using it to read header.txt
file from the repository [8]. Which in fact could be trivially replaced
if games team members had a little different attitude towards QA but
I guess that's not my problem.

Therefore, I think that if both of the above issues are solved either
way, PORTDIR should be banned completely. Until then, we'd like it to
be QA-deprecated and discouraged from being used unless absolutely
necessary.


What are your thoughts?


[1]:https://bugs.gentoo.org/show_bug.cgi?id=566412
[2]:https://bugs.gentoo.org/show_bug.cgi?id=341653
[3]:https://bugs.gentoo.org/show_bug.cgi?id=566402
[4]:https://bugs.gentoo.org/show_bug.cgi?id=566416
[5]:https://bugs.gentoo.org/show_bug.cgi?id=373351
[6]:https://bugs.gentoo.org/show_bug.cgi?id=566424
[7]:https://bugs.gentoo.org/show_bug.cgi?id=373349
[8]:https://bugs.gentoo.org/show_bug.cgi?id=416739

-- 
Best regards,
Michał Górny
<http://dev.gentoo.org/~mgorny/>

Attachment: pgpWTwOtiAyfD.pgp
Description: OpenPGP digital signature

Reply via email to