1 |
This was already addressed in the gentoo-lisp mailing list [1]. |
2 |
|
3 |
Sounds good but the Common Lisp project lacks the manpower to give |
4 |
support to this. |
5 |
|
6 |
Regards. |
7 |
|
8 |
[1] https://archives.gentoo.org/gentoo-lisp/message/3bdcbcc163666451ec6c7a9ec9297142 |
9 |
|
10 |
On Sun, Mar 25, 2018 at 11:34:47PM +0300, Andrew Savchenko wrote: |
11 |
> Hi! |
12 |
> |
13 |
> On Sat, 24 Mar 2018 04:48:53 -0400 Crystalsun wrote: |
14 |
> > Hello everybody! |
15 |
> > I want to share some thoughts on a project that can be |
16 |
> > implemented during Google SUmmer of Code. |
17 |
> |
18 |
> Thank you for your interest in the Gentoo GSoC. |
19 |
> |
20 |
> > So, moving on to the proposal - I suggest that implementing |
21 |
> > emerge or some of its features in Common Lisp may be a great thing. |
22 |
> |
23 |
> I'm not a Lisp guy, so I'm CC'ing Lisp community. |
24 |
> |
25 |
> > The first and main reason for that is the interactiveness Common |
26 |
> > Lisp provides (and Python doesn't). |
27 |
> |
28 |
> You should know that the portage (where the emerge tool belongs) is |
29 |
> not the only one implementation. We have Gentoo Package Manager |
30 |
> Specification (PMS)[1] detailed enough to implement alternative |
31 |
> implementations. Right now we have three of them: portage[2], |
32 |
> pkgcore[3] and paludis[4]; the first two are in python, the later |
33 |
> one is in C++. |
34 |
> |
35 |
> > For example, when emerging a package, if an error occures, the |
36 |
> > whole process will die since the merge of the current atom. |
37 |
> > However, if emerge was written in Common Lisp, it could be possible |
38 |
> > to interactively debug the error and continue the process, which, |
39 |
> > overall, means more user control of what's happening and better |
40 |
> > hotfixes, thanks to the fact that the REPL is part of the language |
41 |
> > itself, not provided by the *outer environment*. |
42 |
> |
43 |
> I do not understand what you mean as interactiveness. Python |
44 |
> support interactive execution shell with ipython. But it should not |
45 |
> be an issue here anyway, see below. |
46 |
> |
47 |
> What exactly do you mean as an error? If we are talking about |
48 |
> internal portage crash, such cases are extremely rare and are |
49 |
> usually promptly fixed. |
50 |
> |
51 |
> If you mean failed dependency calculation, this usually happens due |
52 |
> to impossibility of building dep graph for present packages, USE |
53 |
> flags, package manager (PM) options and other constraints. In order |
54 |
> to fix them changes must be made (e.g. user should change some USE |
55 |
> flags) and dependency tree graph needs to be build again. This is |
56 |
> the most time consuming part and it doesn't matter if PM will be |
57 |
> restarted as an application or not, because most time will be spent |
58 |
> on graph building, not on application restart. |
59 |
> |
60 |
> If you mean failed package builds, there is no need to start emerge |
61 |
> from scratch. It has --resume option to resume operation, |
62 |
> --skipfirst may be used to skip last failed package. Option |
63 |
> --keep-going allows to try to build packages as long as possible: |
64 |
> after a package build failure a dependency tree is being |
65 |
> recalculated in order to rebuild all packages not blocked by one |
66 |
> failed to build. |
67 |
> |
68 |
> So I don't understand what knew user visible features will be |
69 |
> available thanks to Lisp. |
70 |
> |
71 |
> > Nevertheless, changing emerge also means changing ebuilds, which |
72 |
> > is truly a big change. |
73 |
> |
74 |
> Why ebuilds must be changed? The PMS is PM agnostic. It doesn't |
75 |
> matter using what language PM will be implemented: PMS defines |
76 |
> abstract API and this API can be implemented in any Turing-complete |
77 |
> programming language. |
78 |
> |
79 |
> > Thus, I understand it may be too hard/long to implement, so a |
80 |
> > compromising, yet useful solution might be available. For instance, |
81 |
> > it could be fairly great to localize some task Portage is slow/bad |
82 |
> > at, and reimplement it (what about resolving dependencies |
83 |
> > interactively?). That might be a good place to start already. |
84 |
> |
85 |
> Frankly I really doubt that Lisp will be faster than Python for |
86 |
> this task. Both are quite high level languages. |
87 |
> |
88 |
> Of course you idea is far out of the scope of the GSoC time frame, |
89 |
> but if Lisp team will found it useful, maybe you can start with |
90 |
> some skeleton implementation. |
91 |
> |
92 |
> [1] https://projects.gentoo.org/pms/6/pms.html |
93 |
> https://wiki.gentoo.org/wiki/Project:Package_Manager_Specification |
94 |
> [2] https://wiki.gentoo.org/wiki/Project:Portage |
95 |
> [3] https://github.com/pkgcore/pkgcore |
96 |
> [4] https://wiki.gentoo.org/wiki/Paludis/Guide |
97 |
> https://paludis.exherbo.org/ |
98 |
> |
99 |
> |
100 |
> Best regards, |
101 |
> Andrew Savchenko |