Gentoo Archives: gentoo-alt

From: gmt@×××××.us
To: gentoo-alt@l.g.o
Cc: heroxbd <heroxbd@×××××.com>
Subject: RE: [gentoo-alt] Crossdev in a prefix / bug 384167
Date: Sun, 16 Jun 2013 14:13:05
Message-Id: 00f001ce6a9b$99096d10$cb1c4730$@malth.us
In Reply to: Re: [gentoo-alt] Crossdev in a prefix / bug 384167 by heroxbd
1 On Fri, 14 Jun 2013, at 20:05, heroxbd thusly quipped:
2 > From my own point of view, multilib is not cool compared to multiarch from
3 > Debian. lib vs lib32 vs lib64 is crazy to me with inconsistent
4 implications across
5 > distros, even among people in the same community. LSB/FHS has not done a
6 > good job here.
7
8 I'll take your word for that, having not looked into it myself. However, so
9 long as prefix-profile has a deprecated parent-profile, I fear the number of
10 headaches stemming from incorrect hard-coded assumptions in ebuilds and
11 eclasses will tend to rise over time. If multiarch achieves the benefits of
12 multilib in a better ("cooler"?) way, perhaps we should consider building a
13 multiarch profile for Gentoo... or does that already exist? Sorry, I may
14 have fallen behind a bit during the past few months where I've only had
15 sporadic access to a working computer with floppy disks smaller than my
16 torso :)
17
18 I have tried (some time ago, back in the good ole' days) bootstrapping a
19 cross-arch prefix (specifically, an x86 prefix from an amd64 no-multilib
20 native gentoo), and, except for a few small hiccups, it worked great.
21
22 >> I'd be curious to hear more about what your GSOC objectives are,
23 >> especially whether it's the "easy" or the "hard" fix, above, you are
24 >> shooting for.
25 >
26 > A long version of proposal is here:
27 >
28 > http://www.awa.tohoku.ac.jp/~benda/projects/android.html
29
30 Sweet idea. If you pull that off I might just buy a smartphone.
31
32 > I'd like to start a piece of document to definitely describe what we
33 expect for
34 > a portage/toolchain/crossdev combo to do in diferent situations, and what
35 > we interpret for different environment variables. I think Ruud already has
36 his
37 > own version.
38
39 I need a name for the following: aspects of Gentoo that assume $CHOST and/or
40 $CBUILD are the same as $CTARGET. Perhaps "the vice of presumed nativity."
41 (But hopefully something that rolls off the fingertips a bit easier... I'm
42 open to suggestions).
43
44 For example, when building a cross-compiler, what does it mean if the
45 multilib use flag is true? IIUC, right now it pertains to the target. But,
46 correct me if I'm wrong, everywhere else, it's a host-specific use flag, and
47 it is not Gentooly Correct to have global use flags with context-dependent
48 meanings like that.
49
50 Crossdev does a great job of building a cross compiler, but unfortunately,
51 cross-emerge doesn't do a fantastic job, in my (admittedly, not-recent)
52 experience, of building a cross-Gentoo. I need to fix this, partially, for
53 cygwin (long, boring story). Embedded, broadly speaking, is another --
54 arguably much more compelling -- reason to fix it as well, and completely.
55
56 Anyhow, sorry, I'm actually veering off topic.
57
58 My point is, I think what really causes muddle-headedness in the case of
59 tool-chain ebuilds is that, in a regular cross-emerge of a non-toolchain
60 package, $CHOST == $CTARGET -- or, more accurately, CTARGET is really
61 meaningless. That's the standard case, so there's nothing wrong with
62 building portage around this assumption as the default. CBUILD can differ
63 depending on whether this is a cross-emerge or not, and as mentioned above,
64 forgetting that possibility is a source of problems that need fixing. But
65 with toolchain ebuilds, we have the rather confusing issue that all three
66 variables actually mean something (for example, all three can be distinct if
67 we are cross-emerging a cross-compiler).
68
69 Gentoo just wasn't designed with these cases in mind, and I am starting to
70 believe that the best solution to these sorts of problems is to enhance
71 portage to the point where crossdev is no longer needed, or is a trivial way
72 to drop a few simple defaults into ${EPREFIX}/etc.
73
74 Think about it: anywhere we need crossdev to make something work, by
75 definition, represents -- whatever we want to call it -- the "vice of
76 presumed nativity." If portage and the ebuilds had the right features
77 in-built, we wouldn't /need/ crossdev to run around whispering half-truths
78 into everybody's ears until the right thing happens.
79
80 In an ideal world, I think crossdev should set up links in an overlay, like
81 it does now, and maybe a simple make.conf.cross-foo-triplet, and be done.
82
83 And, basically, I think creating a coherent specification for exactly how
84 everything is supposed to work is a fantastic first step -- but, "first"
85 step really ignores all the fantastic hard work that's already been done, so
86 let's say, "next" step -- towards realizing that vision. If we start
87 bumping up against places where we need to look at the code to figure out
88 how things work, I think it's worth considering whether we should be
89 documenting, or, instead, innovating.
90
91 > Zac Medico and Mike Frysinger did masterful jobs for portage and
92 > toolchain/crossdev. As the two pieces are central to our distribution,
93 they are
94 > not willing to accept random ideas. Let's make a proposal for
95 cross-triplet and
96 > cross-eprefix in Gentoo in a systematic, robust and consent way before
97 > getting our hands dirty with the serious implementation.
98
99 OK, sounds like you read my mind, or maybe I read yours. Anyhow, +1.
100
101 > I'll roll out a draft and put it on a git repo/wiki/google drive for
102 > cooperative edition.
103
104 Looking forward to it! On my end, my gentoo git user repo is in production,
105 but, meanwhile, I've gone ahead and started preparing to publish on github,
106 if only to ensure I can't accidentally rm -rf the whole business. With any
107 luck, that should be ready for eyeballs in a day or three.
108
109 -gmt