libera/commonlisp - IRC Chatlog
Search
12:12:12
lisp123
Franz have some wonderful code, when reading some of their open source libraries (which by themselves are not as useful unless one is using ACL...)
12:47:50
Nilby
Is there if function to get the full dependency tree [flattened or not] for an asdf system?
12:54:06
Guest74
in any case asdf:system-depends-on will get you what a system depends on, I guess you could chase the rabbit from their.
12:55:35
Nilby
Guest74: yes, but it's worse than that, because I'd have to parse :feature expressions, etc.
12:56:30
Guest74
I guess that's one thing to add to my system protocol. exhaustive-depend/encies recursive-depends/encies?
12:59:51
Guest74
I don't understand. what does whatever :feature is have to do with the systems a system depends on? Is this a system that isn't loaded?
13:01:41
Nilby
:feature expressions in dependencies includes different systems based on different feature sets, e.g.
13:07:33
mfiano
Can someone remind the LOOP conformity of if binding clauses belong before or after termination clauses?
13:14:29
Nilby
Guest74: and example is in cl+ssl.asd it depends on :sb-posix on sbcl and sb-bsd-sockets only on windows
13:19:07
Guest74
I don't see it keeping that information anywhere. This is one of the things that bothered me about asdf
13:29:04
Nilby
Ah ok, I figured out how to get it to parse the feature things: asdf/find-component:resolve-dependency-spec . Now I can have some hope of resolving the full list.
13:31:53
Guest74
let me know if you do. I'll add it to my system which I preemptively made in hopes of another build system.
13:48:49
Guest74
anybody know anything about the whereabouts of LMud? I'd be nice if I could use their boring stuff.
14:12:48
Guest74
So I found what seems to be it at https://gitlab.common-lisp.net/lmud/lmud and this nothing at all what I would expect after reading the cliki.
14:14:00
Guest74
cliki should have add some ability to tag/flag pages/systems to at least alert people and to prompt those who like to fix cliki pages.
14:15:27
Guest74
The only thing of interest in the code base is changes to some work by Arthur Lemmens which seems to be where split-sequence was conceived.
14:20:40
Guest74
err, not conceived, solidified? whatever you call it when you finalize all the names and conventions in your protocol.
14:35:44
Guest74
though a list being returned sometimes seems probable. In my who-depends I seem to be ignoring anything that's a cons.
14:50:14
Guest74
Nilby: after restarting my lisp I'm not getting lists or a complete dependency listing. It's like asdf is changing what information is provided based on some unknown criteria.
14:57:49
Guest74
I'm still getting no lists for cl+ssl. both before and after loading the system. both included sb-posix.
15:02:34
Guest74
see that's what I asked you in the beginning, if you want loaded deps or all possible deps.
15:03:52
Nilby
good question, but I guess I should have said that I wanted all the deps that asdf has actually loaded
15:07:30
Shinmera
here's how you properly traverse dependencies in asdf: https://plaster.tymoon.eu/view/2464
15:07:31
Guest74
Nilby: ah, it seems the reason why I was ignoring lists is that they only seem to apply to dependencies that weren't needed.
15:08:43
Nilby
things like pngload, osicat, postmodern, serapeum seem to use the :feature dependencies too
15:21:59
Guest74
Nilby: thanks, pngload shows me that I was wrong about it only being unneeded deps in lists.
15:28:40
Guest74
so I'm guessing depends-on should have an optional resolve-dependencies that defaults to t.
15:53:15
Guest74
not that I know of. I've written a basic system protocol that I add to whenever the need arises. I mainly use it create systems and print out an appropriate asd, but it's pretty basic.
15:55:36
dbotton
I want to be able when using the clog builder to add depends-on and components (or remove perhaps) based on adding various controls or when creating new forms
15:57:36
Guest74
that shouldn't be a problem. It's basic as in it only deals with defsystem, not opcodes or anything, and nothing like :feature in the defsystem.
15:59:23
Nilby
dbotton: That's an interesting idea. One could probably make a print method that the asdf system object back to a readable form.
15:59:33
Guest74
though I'm not sure what you mean by component, like anything that qualifies as an asdf component?
16:00:50
dbotton
I just don't know what systems are in the original asd file to make sure I out put the ones needed for that file
16:02:01
Guest74
... hmm, unless i get the unresolved list of deps and use those to produce a more accurate asd.
16:02:57
Guest74
I guess I should clean this up. It sounded silly to me at the time I wrote it, but there have been a lot of questions asking about dealing with systems lately.
16:04:32
Guest74
dbotton: it appears to. Just in my system I wasn't dealing with that since I was mainly dealing with asd at creation time and so there's stuff I never needed.
16:07:25
Guest74
dbotton: if you've got any suggestions as to what it should include I'm all ears. I guess I'll work on getting better printing from existing systems.
16:10:10
Nilby
dbotton: If it's an .asd that you control, then as long as you don't put arbitrary code in it, you should be good. Some people do put code in .asd's, but I think it's best as declarative, so you can do more easily do automation, like you suggest.
16:13:39
Guest74
I guess I'd have to have a way to specify a code block and where it needs to get printed in the asd. Unless code blocks are always after a defsystem?
16:18:28
Guest74
mfiano: I guess you're referring to the read time? So code in the actual defsystem.
16:18:41
mfiano
Also keep in mind that using asdf itself to resolve dependencies is not a good solution, since CL:LOAD can be called at runtime to bring in more dependencies as needed.
16:21:31
Guest74
so just need a way to store and specify something like that which is system agnostic. Not that it matters much since there's only asdf so far.
21:57:41
mfiano
Hmm, my memory is failing me but this kinda looks strangely verbose, as if I'm missing something as usual, if you just want to filter based on identity: (defun foo (things x) (remove-if-not (lambda (y) (eq x y)) things))
22:01:38
mfiano
I mean, the complement of this would simply be (remove x things). Seems to filter I must use a lambda expression with eq any way you slice it, which is somehow disturbing me as if I'm forgetting how to CL.
22:05:59
mfiano
That is about what I'm thinking, right now, yeah...but the other half of my brain says the more verbose remove-if-not conveys the intent better.
22:09:44
rotateq
I think it's still there due to hysterical raisins, like the :test-not keyword in some functions.
22:10:05
mfiano
Perhaps you aren't working on a large enough project that interests you enough to spend time gaining experience in the software architecture and algorithmic problems CL can be malleable to solve.
22:11:37
mfiano
Find something that interests you deeply, and write up a quick prototype, and iterate on that.
22:18:13
mfiano
Yeah, remove-if-not and stop guessing my memory. Much code must be written with finite time.