On 16 September 2012 09:20, Brian Harring <ferri...@gmail.com> wrote:
> On Sun, Sep 16, 2012 at 12:03:36AM +0200, Micha?? G??rny wrote:
>> On Sat, 15 Sep 2012 13:33:18 -0700
>> Brian Harring <ferri...@gmail.com> wrote:
>> > To demonstrate the gain of this, we basically take the existing
>> > tree's deps, and re-render it into a unified DEPENDENCIES form.
>>
>> But in order to do this, we first have to decide exactly what kind
>> of dependencies do we want to have. Then convert the tree to
>> a separate-variable form with new dependencies. Then we can compare
>> it with the DEPENDENCIES form and decide which one is better.
>
> Funny you mentioned that, I just finished tweaking pquery to generate
> real world example unified dependencies; these *are* accurate, just to
> be clear.
>
> Dumps are at
> http://dev.gentoo.org/~ferringb/unified-dependencies-example/ .
>
> Herds, if you want to see what your pkgs would look like, look at
> http://dev.gentoo.org/~ferringb/unified-dependencies-example/herds/ .
>
> If you'd like to see an *example effect* it has on what gets displayed
> to the user (aka, after all major use conditionals are stripped), look
> at
> http://dev.gentoo.org/~ferringb/unified-dependencies-example/user-visible.txt
> ; warning, that's a 55MB file.  The syntax in use there isn't great,
> but as said, it's an example.
>
> Total cache savings from doing this for a full tree conversion, for
> our existing md5-cache format is 2.73MB (90 byes per cache entry).
> Calculating the savings from the ebuild/eclass standpoint is dependent
> on how the deps are built up, so I skipped that.
>
> The algorithim used is fairly stupid, but reasonably effectively;
> essentially it intersects the top level of each individual type of
> dep, breaking out common groupings.
>
> In other words, it won't pick up this:
> DEPEND="x? ( dev-util/diffball dev-util/bsdiff )"
> RDEPEND="x? ( dev-util/diffball )"
>
> and convert it into thus
> DEPENDENCIES="
> dep:build,run? (
>   x? (
>        dev-util/diffball
>        dep:run? (
>          dev-util/diffball
>        )
>      )
>   )"
>
> Additionally, the form used here makes *no assumption about default
> context*; in any final solution we use, a default context would be
> wise- say build,run.  Again, an example of what I mean.
>
> If we said "in the absense of a context, the default is dep:build,run"
> the following:
>
> DEPEND="dev-util/diffball dev-util/bsdiff"
> RDEPEND="dev-util/diffball de-vutil/bsdiff x? ( sys-apps/pkgcore )"
> PDEPEND="dev-python/snakeoil"
>
> would be:
> DEPENDENCIES="
>   dev-util/diffball
>   dev-util/bsdiff
>   dep:run? ( x? ( sys-apps/pkgcore ) )
>   dep:post? ( dev-python/snakeoil )
> "
>
> The quicky algo I used assumes no default context, thus it writes
> this:
> DEPENDENCIES="
>   dep:build,run? (
>     dev-util/diffball
>     dev-util/bsdiff
>   )
>   dep:run? ( x? ( sys-apps/pkgcore ) )
>   dep:post? ( dev-python/snakeoil )
> "
>
> Etc.
>
> ~harring
>

Thanks. I have given it a quick overview for the qt herd. I still
don't see what using DEPENDENCIES adds to what we do now with separate
*DEPEND variables. I see no convincing reason to change what we do.

As I've said before on IRC, we need a good costs/benefits overview.
Right now I only see costs (migrating ebuilds and eclasses) and no
benefits.

-- 
Cheers,

Ben | yngwin
Gentoo developer
Gentoo Qt project lead, Gentoo Wiki admin

Reply via email to