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 |