Gentoo Archives: gentoo-dev

From: david@×××××××××.com
To: Paul Smith <pausmith@××××××××××××××.com>
Cc: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] BUILDROOT concept (was Re: [gentoo-dev] ROOT variable)
Date: Fri, 23 Apr 2004 20:34:56
Message-Id: 20040423203315.GD7981@redhate.futuretel.com
In Reply to: Re: [gentoo-dev] BUILDROOT concept (was Re: [gentoo-dev] ROOT variable) by Paul Smith
1 On Fri, Apr 23, 2004 at 03:45:52PM -0400, Paul Smith wrote:
2 > %% david@×××××××××.com writes:
3 >
4 > >> Mm. But of course, this will only work if your embedded system just
5 > >> happens to be the same architecture as your build system... which I
6 > >> think is not a good restriction to make.
7 >
8 > d> I still don't see how `ROOT=/tmp/foo emerge blah` doesn't solve
9 > d> your problem.
10 >
11 > Maybe I'm misreading the code, but from what I can see, when you set
12 > ROOT it only changes where RDEPEND packages are searched for.
13 >
14 > It does _NOT_ change where DEPEND packages are searched for: they're
15 > still searched for on the native system not in the ROOT system. If the
16 > native system and the root system are very different, that doesn't seem
17 > like it can work properly.
18 >
19
20 see catalyst snapshots model. Specify whatever custom portage tree you want
21 to your hearts content.
22
23 > >> I don't see how this solves the problem. First, the point is to
24 > >> allow multiple "build" images, which this does not do, since it
25 > >> still uses the local host for all DEPEND information. I don't want
26 > >> to have to update (or downgrade!) my local host's installation of
27 > >> packages just to build a ROOT with a different setup! Second, the
28 > >> ROOT is not a real Portage system here: all the Portage database
29 > >> information, etc. is on the local system. Third, this still won't
30 > >> work if the ROOT target is to be run on different hardware than the
31 > >> build system. Etc.
32 >
33 > d> I don't understand what you mean by 'portage database information'.
34 > d> Maybe you could explain more, becuase I don't see any problems here
35 > d> either.
36 >
37 > If you look at the code in emerge (this is from the latest Portage CVS)
38 > you'll see things like this:
39 >
40 > if myroot=="/":
41 > mydep["/"]=edepend["DEPEND"]+" "+edepend["RDEPEND"]
42 > if not self.select_dep("/",mydep["/"],myparent=mp,myuse=myuse):
43 > return 0
44 > else:
45 > mydep["/"]=edepend["DEPEND"]
46 > mydep[myroot]=edepend["RDEPEND"]
47 > if not self.select_dep("/",mydep["/"],myparent=mp,myuse=myuse):
48 > return 0
49 > elif not self.select_dep(myroot,mydep[myroot],myparent=mp,myuse=myuse):
50 > return 0
51 >
52 > IIUC, this shows that if ROOT is not the default (is not "/") then
53 > emerge will check the native system for the DEPEND requirements and
54 > check the ROOT image only for the RDEPEND requirements.
55 >
56 > Also, you'll see many instances of code like this:
57 >
58 > mylogfile=open("/var/log/emerge.log", "a")
59 >
60 > which is obviously going to be updating the emerge.log file on the
61 > native system, not in the ROOT image. And this:
62 >
63 > profilever=os.path.basename(os.path.normpath(os.readlink("/etc/make.profile")))
64 >
65 > which shows Portage checking the profile on the native system, not the
66 > one in the ROOT system. I do see that the ebuild cache is kept in ROOT,
67 > so that's good (originally I thought it wasn't there). But there is
68 > this suspicious looking bit in portage.py, although it might be a bug:
69 >
70 > worldlist=grabfile("/var/cache/edb/world")
71 >
72 > I would think that this should be using the world file in the ROOT, not
73 > the native system.
74 >
75
76 again catalyst will acheive this for you. Specify whatever profile
77 you want in the spec file.
78
79 >
80 > More generally, what I want to be able to do is build for a target
81 > (ROOT) a specific set of packages and versions _without_ having to
82 > modify my physical system in any way. I don't want the build of the
83 > ROOT to have any relationship to what I have installed on my physical
84 > system. If I want ROOT to have a version of a package that doesn't work
85 > with a newer version of GTK or whatever, I don't want to have to
86 > downgrade the version on my physical system in order to build that
87 > ROOT. Maybe I want to create a ROOT system with a KDE desktop but don't
88 > want KDE installed on my build system. Etc.
89 >
90 > Right now the construction of the ROOT is accomplished by a combination
91 > of stuff on the physical system and stuff in the ROOT image.
92 >
93
94 again catalyst will solve your problems. If you want I can go into
95 more detail. Speaking of... if zhen is out there listening
96 somewhere.. when is the new catalyst going to come out ?
97
98 --
99 gentoo-dev@g.o mailing list

Replies

Subject Author
Re: [gentoo-dev] BUILDROOT concept (was Re: [gentoo-dev] ROOT variable) Paul Smith <pausmith@××××××××××××××.com>