1 |
Hi everyone, |
2 |
|
3 |
== Overview == |
4 |
|
5 |
This project is about creating an overlay of R packages, without |
6 |
requiring much interaction. Overlay creation itself was already |
7 |
implemented in last year's GSoC project "Automatically generated overlay |
8 |
of R packages", with "roverlay" [0] as result. This year's work focused |
9 |
on extending roverlay and facilitating overlay maintenance. |
10 |
|
11 |
I'm going to give an insight on what's been done this summer, without |
12 |
going too much into details. |
13 |
|
14 |
|
15 |
== Overlay creation features == |
16 |
|
17 |
* RSUGGESTS USE_EXPAND variable |
18 |
|
19 |
Instead of a single "r_suggests" USE flag, overlay creation now produces |
20 |
per-package USE_EXPAND flags (r_suggests_<sth>). These flags can also be |
21 |
renamed and grouped. |
22 |
|
23 |
* extended package rules system |
24 |
|
25 |
package rules match a set of packages by name, origin,... using boolean |
26 |
expressions and apply actions to them, which manipulates their metadata |
27 |
or causes packages to be ignored. The general concept and syntax/parser |
28 |
was implemented prior to this year's GSoC, but lacked actions. Now, |
29 |
packages can be "relocated" (category, name, $SRC_URI), dependency |
30 |
resolution can be influenced (add/ignore dependencies) and ebuild |
31 |
variables (LICENSE,...) can be set. Additionally, support for |
32 |
"else"-blocks has been added, which makes writing of rule files easier. |
33 |
|
34 |
* support for SLOTs in resolved dependencies (including sub-slots) |
35 |
|
36 |
* patch generated ebuilds, import ebuilds into the overlay |
37 |
|
38 |
|
39 |
== Improved overlay quality == |
40 |
|
41 |
* selfdep validation |
42 |
|
43 |
This feature ensures that all dependencies on packages provided by the |
44 |
generated overlay are satisfiable ("candidates" exist), which improves |
45 |
the overlay's consistency. |
46 |
|
47 |
* dependency resolution: look up package dependencies in own repo first |
48 |
|
49 |
More accurate dependencies if a package is available from more than one |
50 |
repo. |
51 |
|
52 |
* handle file collisions (package available from >1 repo) |
53 |
|
54 |
Very important, because it keeps the package mirror directory |
55 |
collision-free. |
56 |
|
57 |
* revbump if upstream modifies a tarball without renaming it |
58 |
|
59 |
|
60 |
== Misc == |
61 |
|
62 |
* (dependency resolution) console reimplementation with support for tab |
63 |
completion, command history |
64 |
|
65 |
* API for using roverlay's functionality externally (dependency |
66 |
resolution and remote-sync) |
67 |
|
68 |
* "Event Hooks", execution of scripts on certain events, e.g. automatic |
69 |
metadata cache creation (suggested by heroxbd) and git commit/push after |
70 |
overlay creation |
71 |
|
72 |
* up-to-date documentation [1] |
73 |
|
74 |
|
75 |
== Helper scripts == |
76 |
|
77 |
* roverlay-setup |
78 |
|
79 |
This script takes care of generating a config file, creating directories |
80 |
with proper permissions and managing event hook scripts. |
81 |
It's mostly intended for setting up a roverlay server, which can be done |
82 |
with "roverlay-setup" or "roverlay-setup-interactive"/"emerge --config |
83 |
roverlay". |
84 |
|
85 |
* roverlay-sh, a /bin/sh wrapper which sets up a environment similar to |
86 |
what's used for "Event Hooks" (access to variables like $OVERLAY) |
87 |
|
88 |
* roverlay-status |
89 |
|
90 |
Creates status reports based on mako templates and roverlay's stats. Can |
91 |
also be used as CGI script. |
92 |
|
93 |
|
94 |
== Conclusion and Future directions == |
95 |
|
96 |
After 2 summers and some work in between, roverlay is now (more or less) |
97 |
complete. What's left to do is some more testing, updating the roverlay |
98 |
server and then making the R overlay available via layman. |
99 |
|
100 |
Finally, I'd like to thank Denis (Calchan), my mentor, for suggestions, |
101 |
testing and guidance throughout the past months, and for encouraging me |
102 |
to participate this year again ;) |
103 |
|
104 |
Credits also go to Benda (heroxbd) for a patch to the R-packages eclass |
105 |
and suggesting metadata cache creation (which then led to the "Event |
106 |
Hooks" feature), and Ebo for making me aware of a dependency resolution |
107 |
issue. |
108 |
|
109 |
|
110 |
[0] http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=summary |
111 |
[1] |
112 |
http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=blob_plain;f=doc/html/usage.html;hb=HEAD |
113 |
|
114 |
Regards, |
115 |
André E. |