1 |
I decided to post my next status report as reply to my previous post, so |
2 |
that no unnecessary threads are created. |
3 |
|
4 |
|
5 |
Over the course of last week bulk of my work was around installing |
6 |
dependencies, logging and fixing bugs in chroot creation script. |
7 |
|
8 |
Installing dependencies is a bit hacky right now, since I am using |
9 |
emerge.emerge_main() to install them. This means that I don't have to |
10 |
repeat work of emerge and search dep tree etc etc. |
11 |
|
12 |
I'll show this simple hack on following ascii-non-art package hierarchy: |
13 |
|
14 |
A->B1->C1 |
15 |
| | ->C2 |
16 |
| |
17 |
|->B2->C3 |
18 |
|
19 |
Package A is the one we want to install, B1 and B2 are its dependencies |
20 |
(we can read them from ebuild of package A). We could walk the |
21 |
hierarchy, but it's may not be necessary since we were asked to only |
22 |
try and compile package A. Therefore to install package B1 and B2 we |
23 |
actually ask emerge (and it will resolve deps for us). Then we install |
24 |
package A ourselves (by using portage.doebuild). If it fails then |
25 |
something is probably wrong in ebuild for package A. |
26 |
|
27 |
Creating of chroot environment for package installation had a lot of |
28 |
bugfixes too. It's still not as good as it should be and there is always |
29 |
need to manually "synchronize" internal version of emerge with that on |
30 |
the outside of chroot. I now use a lot of -o bind for mounting |
31 |
subdirectories in chroot, this is speeding up stuff quite a bit. |
32 |
|
33 |
As far as logging is concened I am using standard logging python module, |
34 |
nothing fancy. But it works, and compile machines can now report errors |
35 |
in more human-readable form, not just build.log. For example: |
36 |
"Unable to emerge package A-1.2.3 with deps B1-2.0,B2-2.0" |
37 |
|
38 |
I also had to add data that are transferred between matchbox and |
39 |
tinderboxes since I realized that otherwise I would not be able to fill |
40 |
information that need to be present when inserting data into database. |
41 |
This part is not finished yet, so tinderbox currently sends no data to |
42 |
matchbox. This regression should be fixed today. |
43 |
|
44 |
On that note, what I plan to work on during weekend/next week: |
45 |
* start inserting data into database (therefore actually create app->db |
46 |
layer) |
47 |
* now that we really have functioning compilation/dep resolving try to |
48 |
install more packages. Therefore create list of 10-20 packages. |
49 |
dev-util/git (and its subversion[-dso] dep), postfix/sendmail blockers |
50 |
come to mind. If you have more ideas for combinations that usually |
51 |
cause problems, I'd love some input |
52 |
* Improve logging in a few places |
53 |
|
54 |
|
55 |
|
56 |
-- |
57 |
Stanislav Ochotnicky |
58 |
Working for Gentoo Linux http://www.gentoo.org |
59 |
Implementing Tree-wide collision checking and provided files database |
60 |
http://soc.gentooexperimental.org/projects/show/collision-database |
61 |
Blog: http://inputvalidation.blogspot.com/search/label/gsoc |
62 |
|
63 |
|
64 |
jabber: sochotnicky@×××××.com |
65 |
icq: 74274152 |
66 |
PGP: https://dl.getdropbox.com/u/165616/sochotnicky-key.asc |