Gentoo Archives: gentoo-dev

From: Duncan <1i5t5.duncan@×××.net>
To: gentoo-dev@l.g.o
Subject: [gentoo-dev] Re: don't rely on dynamic deps
Date: Thu, 24 Jul 2014 22:33:19
Message-Id: pan$ddbd7$211fd843$26defa54$5de02bc3@cox.net
In Reply to: Re: [gentoo-dev] don't rely on dynamic deps by Kent Fredric
1 Kent Fredric posted on Wed, 23 Jul 2014 06:44:57 +1200 as excerpted:
2
3 > Ok, we can side step this discussion partially:
4 >
5 > Lets pretend for a moment dynamic deps get banned.
6 >
7 > People will still unconsciously make that mistake and things will still
8 > break when they do.
9 >
10 > So we'll probably need a repoman check that is smart enough to know "X
11 > is modified" and compare the DEPEND fields with the previous incarnation
12 > prior to commit, and then at very least, warn people doing `repoman
13 > full` that they've modified the dependencies, and that a -r1 bump is
14 > thus highly recommended.
15 >
16 > And that check can be added *now* prior to banning/disabling dynamic
17 > deps.
18 >
19 > And people who want to pay attention to that warning can start doing it
20 > before policy dictates they must.
21
22 Be aware that with eclasses generated deps taken into account, this
23 /could/ trigger a LOT of arguably unnecessary revision bumps.
24
25 Right now I'm trying emerge --dynamic-deps n --update --deep @world,
26 and...
27
28 Due to dynamic-deps and the (default) WANT_AUTOMAKE=LATEST (or whatever
29 it is) stuff in the eclasses, I only have automake slots 1.11 and 1.14
30 installed here, but I still have well over 100 packages originally built
31 with automake:1.13, that if I turn off dynamic-deps either need it pulled
32 back in, or need to be rebuilt to pull in the automake:1.14 dep.
33
34 I guess that's a variant of category 2 in the wiki list. It's a minor
35 build-only dep change that doesn't need to be propagated immediately as
36 the package is already installed, with dynamic-deps applying it
37 immediately, but static-deps wouldn't apply it until a rebuild. As long
38 as the older automake slot remains around to fill the dep, not a problem.
39
40 Of course for users the fix is simple and what portage recommends, simply
41 pull automake:1.13 back in (or don't let it be unmerged in the first
42 place) and don't worry about it.
43
44 I decided to go the rebuild route instead, here, and once I decided the
45 number of rebuilds wasn't going to be easy to do with --tree giving me
46 one at a time, I concocted a pipe involving bzgrep environment.bz2 to
47 list them all so I could rebuild them in parallel, then did a wc -l on
48 the output to get a count.
49
50 But a repoman dynamic-deps checker might have flagged all those 125-ish
51 package for revision-bump when automake:1.14 was introduced and thus
52 became a dependency candidate.
53
54 And I'm on ~arch, doing --deep --newuse @world updates routinely, with a
55 not insignificant portion of my packages being live-ebuilds, so many of
56 the package originally built with automake:1.13 have certainly been
57 rebuilt by now, here. But I see a distinct possibility of an automake
58 slot bump triggering thousands of rev-bumps, often to all available
59 versions of a package at once, tree-wide.
60
61
62 Meanwhile, one personal benefit to this discussion is that at least I
63 understand now why merging a binpkg the other day pulled in some automake
64 slot that depclean immediately wanted to remove. Binpkgs are static-deps
65 and that one must have been built with that automake slot, but of course
66 depclean was using dynamic-deps, so... Now I have a proper explanation
67 for the behavior. =:^)
68
69 --
70 Duncan - List replies preferred. No HTML msgs.
71 "Every nonfree program has a lord, a master --
72 and if you use the program, he is your master." Richard Stallman