Gentoo Archives: gentoo-soc

From: "André Erdmann" <dywi@×××××××.de>
To: gentoo-soc@l.g.o
Cc: Denis Dupeyron <calchan@g.o>
Subject: [gentoo-soc] Automatically generated overlay of R packages - progress report #3
Date: Sat, 09 Jun 2012 21:12:41
Message-Id: CAGrucu307COR9_LCX9NPPq9s8ihRVhykCp52uhhhnaMLpjSTUA@mail.gmail.com
1 Hello everyone,
2
3 == Brief summary of this project ==
4
5 The aim of this project is to create scripts that automate the process
6 of overlay creation/maintenance for R packages from repositories such
7 as CRAN and Bioconductor.
8
9 Longer:
10 For the ebuild creation of a single package one needs to extract the
11 package, copy-paste data from its description file to the ebuild and
12 look up dependencies, which is time-consuming.
13 Although trivial for a few number of packages, this is practically
14 impossible to do by hand for repositories like CRAN (> 3500 packages),
15 especially 'cause it also requires tracking changes (new / updated /
16 removed packages).
17 The solution is to automate that process and this is what this project is about.
18
19 == Progress of this week ==
20
21 My plan for this week was to start with the dependency resolution.
22 First of all, I defined and implemented a clear structure of how to do
23 that:
24
25 The actual dependency resolver consists of a "to-resolve" queue, a
26 "depres-failed" queue and "rule pools" which are basically objects
27 with a "matches (<dependency string>)" function. It also has a
28 run()-method that puts all parts together; threading is intended but
29 requires some more work. Communication with the resolver does not
30 happen directly, but via channels instead. EbuildJobs (an object that
31 handles/represents ebuild creation for a single R package) use
32 (private) EbuildJobChannels to enqueue dependency lookups. They then
33 wait until the resolver has processed their request and use the result
34 or report failure.
35
36 The rule pools allow for easy adding of various (rule based)
37 dependency lookup objects in future. I've already implemented one, the
38 "simple" dependency rule pool which uses dictionary-like rules ("fftw
39 means sci-libs/fftw" for example) read from text files; ignoring
40 dependencies is also possible (like R which always required and
41 therefore a dep in the eclass).
42
43 Overall I've managed to create a working dependency resolver (with
44 some Todos) this week and I'm on schedule.
45
46 == Plans for the next week ==
47
48 * improve dependency resolution, add some functionality (e.g. listener
49 modules that log unresolved dependencies to a separate file) and make
50 it more thread-able
51 * add Manifest / metadata creation
52
53 --
54 Regards,
55 André E.