1 |
-----BEGIN PGP SIGNED MESSAGE----- |
2 |
Hash: SHA1 |
3 |
|
4 |
Stelian Ionescu wrote: |
5 |
> hello, I've attached a cleaned up version of common-lisp.eclass. The |
6 |
> purpose of this change is to remove dependency on |
7 |
> dev-lisp/common-lisp-controller and to help reduce code duplication in |
8 |
> ebuilds. |
9 |
|
10 |
Thank you very much Stelian. |
11 |
|
12 |
> I'll try to explain how CL packages work: |
13 |
> |
14 |
> 1) a CL package installs exactly one directory under |
15 |
> /usr/share/common-lisp/source. This is contained in the variable |
16 |
> $CLPACKAGE and it defaults to $PN. Exception: app-emacs/slime installs a |
17 |
> package named "swank" |
18 |
|
19 |
The code shows this is not really true. I couldn't find where a non-default |
20 |
use was possible. You probably need to set: |
21 |
|
22 |
[[ CLPACKAGE == "" ]] && CLPACKAGE=${PN} |
23 |
|
24 |
or slime won't be able to install swank. |
25 |
|
26 |
> 2) a CL package contains one or more ASDF files(.asd). The variable |
27 |
> $CLSYSTEMS contains the names of those systems and defaults to $PN |
28 |
> because in the simplest case there is only one .asd |
29 |
> The .asd files usually are contained in the toplevel of the source |
30 |
> directory and get symlinked into /usr/share/common-lisp/systems |
31 |
|
32 |
The code shows this is not really true. Therefore you cannot set $CLPACKAGE |
33 |
and expect it to be used by common-lisp_src_install in its call to |
34 |
common-lisp-system-symlink. Other eclasses use a construct like this: |
35 |
|
36 |
[[ CLSYSTEMS == "" ]] && CLSYSTEMS=${PN} |
37 |
|
38 |
> 3) in order to find the systems, ASDF must be aware of the |
39 |
> /usr/share/common-lisp/systems directory, which must be added to the |
40 |
> list contained in the variable asdf:*central-registry*; |
41 |
> dev-lisp/gentoo-init takes care of setting up everything for the user |
42 |
> |
43 |
> 4) to load a system, one must start a Lisp and eval |
44 |
> (asdf:oos 'asdf:load-op <system>) |
45 |
> |
46 |
> |
47 |
> The eclass has three explicit "public" functions: |
48 |
> |
49 |
> 1) common-lisp-install(): must receive at least one argument. It installs |
50 |
> files or directories(recursively) into /usr/share/common-lisp/source |
51 |
> |
52 |
> 2) common-lisp-system-symlink(): when called with no arguments, it |
53 |
> installs the systems contained in $CLSYSTEMS. The system names must be |
54 |
> relative paths. Example: CLSYSTEMS="foo1 foo2 src/bar" |
55 |
> When called with some arguments, it installs those systems, ignoring |
56 |
> $CLSYSTEMS |
57 |
|
58 |
If I understand correctly the symlinks make it appear like CLPACKAGE contains |
59 |
what CLSYSTEMS contains. What is the point of that or why does it need to be |
60 |
that way? |
61 |
|
62 |
> 3) do-debian-credits(): taken from common-lisp-common.eclass, since I've |
63 |
> dropped the inheritance on it |
64 |
|
65 |
Which packages use this and what's the point of doing it? |
66 |
|
67 |
> and an exported function, common-lisp_src_install, which is sufficient |
68 |
> for a good share of CL packages in the tree |
69 |
> |
70 |
> |
71 |
> if there are no objections, I'll commit the eclass next evening - Oct. 13 |
72 |
|
73 |
Sure, that's what the overlay is for. |
74 |
|
75 |
Marijn |
76 |
|
77 |
- -- |
78 |
Marijn Schouten (hkBst), Gentoo Lisp project |
79 |
<http://www.gentoo.org/proj/en/lisp/>, #gentoo-lisp on FreeNode |
80 |
-----BEGIN PGP SIGNATURE----- |
81 |
Version: GnuPG v2.0.7 (GNU/Linux) |
82 |
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org |
83 |
|
84 |
iD8DBQFHEJh2p/VmCx0OL2wRAiJcAJ40LXIIIyWiqACIWKFZO/5/PBacVACaA7FH |
85 |
SKD5swy4qwHAn5FxgWJI0mY= |
86 |
=jk9S |
87 |
-----END PGP SIGNATURE----- |
88 |
-- |
89 |
gentoo-lisp@g.o mailing list |