Gentoo Archives: gentoo-user

From: Simon <turner25@×××××.com>
To: gentoo-user@l.g.o
Subject: [gentoo-user] union merge for binpkg makers
Date: Tue, 05 May 2009 14:27:57
Message-Id: 5f14cf5e0905050727j155a1598r1ef3d450b592b99@mail.gmail.com
1 Hi there,
2 i've been using my host online to compile updates for like the past
3 year or so... My host is currently configured so that its world file
4 is the combination of all my PCs at home's world. So the host has x11
5 installed and lots of other completely useless stuff for a remote
6 host! I decided to start a small project, but i wanted your opinion
7 before doing so... also, i dont want to reinvent the wheel so if
8 anyone thinks of a better way to do this or if there is one already in
9 use... let me know!
10
11 I'm using a host (or binpkg cruncher) to make all emerges as the host
12 is approximately 10 times faster than my fastest PC here (they are
13 very old). Even when distcc is setup perfectly, the host still wins
14 the competition, by far. So i make binpks on the host and propagate
15 them to the PCs at home where i emerge using the -k option. (a few
16 rare packages will still have to be re-emerged, but that's normal)
17
18 To facilitate reading: sum(worlds) == all PCs worlds combined
19 Also, this works only if both host and pc would create the same binpkg
20 (having the same make.conf options mostly, same stuff setup in
21 /etc/portage, etc...)
22
23 Right now, here's the base of the process to get one PC updated
24 (without my unison world):
25 host> emerge --sync
26 host> emerge -uDN sum(worlds) [builds binpkgs]
27 <sync host's portage with PC's portage>
28 PC> emerge -uDN -k world
29 -----
30
31 Here's the process ( a bit more complicated ) using unionfs:
32 host> emerge --sync
33 host> emerge -uDN world
34 <start unionfs over the whole root and chroot in union mount point>
35 host> emerge -uDN -k sum(worlds)
36 <exit chroot>
37 host> rsync -ah --progress /path/to/rootunionfs/usr/portage/packages/*
38 /usr/portage/packages/
39 host> rm -Rvf /path/to/rootunionfs
40 <sync and emerge on PC as with previous method>
41 ----
42
43 You'll notice the emerge run on host, inside the union uses the -k
44 option, this is to help the host and avoid recompiling dependency it
45 had compiled in the past but had not really installed. This way, it
46 quickly installs all dependencies in the unionfs, compiles them if
47 necessary and builds the binpkg for every emerge.
48
49 This process will take longer that my current process, but should help
50 maintain a clean host. It could even be possible, if i dont suffer
51 from disk space constraint, to keep the unionfs and just remount it
52 correctly for the next emerge, but this could lead to some issues (ie
53 if i emerge something outside the unionfs at some point, etc...).
54
55 What do you think? Should i start working on this? Or is there
56 anything better out there?
57
58 Thanks, Simon

Replies

Subject Author
Re: [gentoo-user] union merge for binpkg makers Mike Kazantsev <mike_kazantsev@×××××××.net>