Gentoo Archives: gentoo-lisp

From: Chema Alonso <nimiux@g.o>
To: gentoo-soc@l.g.o
Cc: Crystalsun <crystalsun@××××××××××.com>, common-lisp@g.o, gentoo-lisp@l.g.o
Subject: [gentoo-lisp] Re: [gentoo-soc] GSoC suggestion - Emerge or some of the Portage features implemented in Common Lisp
Date: Wed, 28 Mar 2018 14:58:15
Message-Id: 20180328145811.GA15433@woodpecker.gentoo.org
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