libera/#commonlisp - IRC Chatlog
Search
12:47:30
green_
dnhester`, be sure to check out ocicl: https://github.com/ocicl/ocicl -- it is https-always, and supports package versioning, among other things.
13:07:24
dnhester`
green_: yeah, that's how the conversation started: I asked mfiano if he used it and his thoughts
13:26:23
dnhester`
green_: I don't know much about kubernets so the readme page is not so easy to read. it feels like I need to know how OCI works to understand what's going on. I'm going to tinker with it when I finish a milesone in my current project and I have some time to explore. Does it work with qlot or is it meant to replace both quicklisp and qlot?
13:27:01
dnhester`
It would be nice if the docs had a simpler quickstart detailing usage, and change the title of the current quickstart to be "tutorial"
13:27:48
dnhester`
green_: out of curiosity: why did you have to make a fork of every repo instead of just adding links to the existing repositories?
13:28:16
green_
I just saw that, and mifano's comments now. re: mifano's comments ... ocicl doesn't force you into per-project dependencies, as you can use a global system collection. I'm not sure what the concern is with alternative delimited file formats. Perhaps he's referring to systems.csv. I'm not sure what the concern is really, as that's just an implementation detail. It does solve important problems with quicklisp,
13:28:17
green_
although I realize that if you aren't experiencing those problems there's little reason to switch.
13:30:23
green_
dnhester`, there's a repo for every project, but it just contains metadata. The nice thing about doing it this way is that you can leverage github actions to build and publish new versions on a project by project basis by just updating the metadata (git commit hash, release version, etc).
13:33:05
green_
dnhester`, you don't need to understand OCI. That's really just an implementation detail.
13:35:45
dnhester`
it looks like a cool project if it solves the issues, but it's just too confusing to be able to take it in in 5 or 10 minutes, which is what I would expect at most from a package manager
13:35:49
yitzi
green_: the number of repos in in oci is bit overwhelming and I don't find the "all-ocicl..." file to be useful to figure out if my systems are included. Perhaps a file dump of the git addresses?
13:37:20
dnhester`
is there a quickload access or it just downloads and then in ASDF I have to load the project?
13:38:49
green_
dnhester`, no it's not available from the repl, but that's a good idea. Once the ocicl-runtime package is loaded, ASDF can download and load systems in one go by setting ocicl-runtime:*download* to t
13:41:14
yitzi
green_: I manage a few CL packages in the Arch AUR. I can look into making one for ocicl if you want.
13:43:57
green_
For the OS package, I will leverage the system's oras package, and not use the bundled one. Does Arch has oras packaged?
13:54:38
dnhester`
green_: I re read the docs again, this is pretty cool. good job. it looks like quicklisp and qlot combined (not sure if I'm missing qlot functionality, but for the parts that I've been using at least). I will probably move from quicklisp to your project pretty soon, it's actually pretty cool. However I had to read the docs 3 times for it to sink in
13:55:17
dnhester`
I would write it with sections: global mode, per environment mode. I would make the --global option a setting you can just set once, that would be mfiano's use case
13:56:52
dnhester`
The last thing: is there a way to search for systems? You are loading with asdf based on providing asdf a list of available distros? so maybe there's an asdf search we can do from the repl? or is it only with `ocicl list` in the terminal
13:59:31
dnhester`
"I would write it with sections" meaning the usage part, skipping any implementation details for some other part of the docs, and have a sub sections under usage: global environment or multiple environments (instead of calling it per project), and have subsections for installing, downloading systems, finding systems, submitting a system, deleting systems, updating systems, fixing a version of a system, etc... it will make it much easier
13:59:53
dnhester`
I would offer to help, but I am swamped with other projects right now for the technical reference and others
14:01:58
yitzi
green_: the binary in the oras package is just called "oras". Is that gonna work with ocicl? I see that the makefile renames it to oras-ocicl
15:19:31
beach
I just love those TYPE-ERROR messages: "The value NIL is not of type CONS". Er, yes, I know that.
15:57:32
jmercouris
Is there some sort of succinct way to write "try this function until no condition is raised"?
15:58:44
beach
jmercouris: You mean you try it on different arguments each time? Otherwise, I would expect the same result each time.
15:59:53
jmercouris
basically I want to call: `iolib:with-open-socket` until the socket is actually openable
16:00:11
jmercouris
the socket is not managed by me in Lisp, it is another process that will open the socket
16:00:47
jmercouris
timeouts are a good idea, for now I just want to avoid sending data to the socket until I know it is ready
16:01:06
bike
does iolib not have a 'wait until this socket is openable' kind of function? seems like something it would have. you know, actual polling
16:02:43
beach
jmercouris: Otherwise you can use IGNORE-ERRORS, and check in a loop whether an error was signaled.
16:04:08
fe[nl]ix
the socket API doesn't have a way to poll for when the remote side becomes available
16:04:36
fe[nl]ix
and after you issue a connect() and you get an error, the socket must be closed and cannot be used for further operations
16:05:58
jmercouris
I had a feeling you were right, I've been grepping around in iolib, and yeah, nothing
16:56:02
beach
jmercouris: A loop isn't hard. Something like (loop for result = (ignore-errors <call>) while (null result) finally (return result))
16:59:10
jmercouris
I don't really care for the result actually, I just want to know the socket is ready
16:59:25
jmercouris
this is what I've got in the end: `(loop for probe = (ignore-errors (send-message-interface interface "0")) until (equalp "0" probe))`
16:59:48
jmercouris
send-message-interface attempts to open a socket, send some code, and if it returns "0", we're OK!
17:09:51
green_
yitzi: I don't know much about arch, but it looks like your package is x86_64 only. One of the problems with upgrading sbcl in Fedora is that it appears to be broken on ppc64. Does arch support ppc64, and if so -- what version of sbcl is in there?
17:12:40
green_
It's more about sbcl and ppc64 arch. Does arch support ppc64? If so, what version of sbcl is in there? I'm having trouble upgrading sbcl in Fedora because it doesn't pass the CI tests.
17:13:39
yitzi
The main Arch dist is x86 only. There is a separate arm dist. Looks they have sbcl for aarch64 and armv7h
17:14:50
green_
In Fedora, we try to keep version affinity across all architectures (x86, arm, power, z). I'll bring this up the sbcl people again.
17:24:02
yitzi
green_: I had to replace the "ocicl-oras" calls with just "oras". Might need to make the binary pathname configurable or just "oras" all the time.
17:25:04
green_
I renamed it so it wouldn't conflict with verions people might have on their systems already. Maybe a simlink is the way to go. I'll think about it.
22:09:19
Mondenkind
(and band problems and to a lesser extent boolean blindness are ... a thing in cl. I don't have a solution though I like cps in some cases. E.G. the low-level interface to my hash table is (lookup table key on-success on-failure), where on-success is a continuation that gets passed the value and a further continuation to update it, and on-failure just gets the update continuation. This isn't
22:09:21
Mondenkind
perfectly safe, since you could escape the update function, or do concurrent updates to the table from within the continuations, but imo it's better than other approaches I've seen on most counts)