libera/#clasp - IRC Chatlog
Search
11:40:26
yitzi
Not yet. Trying to get through dcando. I am running it in a docker instance on my own machine and killing the workflow when I find an issue. So at least it doesn't take 5 hours to know if there is an issue. I think we will have something soon.
11:41:27
drmeister
What is the approach with quicklisp now? Where is the code that sets up all the dcando dependencies?
11:43:26
yitzi
A custom clasprc file is used during the build that loads quicklisp from the build directory. It adds quickclasp also. The extension loading mechanism looks for quicklisp and if it is found it uses QL:QUICKLOAD, otherwise it falls back to ASDF:LOAD-SYSTEM (which is used by clpm).
11:44:28
yitzi
I've removed the code that I was working on to create snapshots in the user's `~/.local/bin/` and avoid setting up quicklisp in the build directory. I'll delay working on that until after the debian packages work.
11:47:04
yitzi
It is generated by koga into `/build/boehmprecise/`. Look in `src/koga/scripts.lisp` at the bottom.
11:52:21
yitzi
If you checkout the ext-load branch and run koga you should be able to see it in `/build/boehmprecise/` or whatever the variant name is.
11:53:31
drmeister
https://github.com/clasp-developers/clasp/blob/ext-load/src/koga/scripts.lisp#L143
12:09:29
yitzi
After you run koga in the ext-load branch you should see the file `build/boehmprecise/clasprc.lisp` ... It gets generated by the script code you posted. The very last method.
12:15:19
drmeister
You mentioned yesterday you would need something installed to build the ubuntu package on zeus?
12:17:18
yitzi
Can't build on zeus as it turns out. Need at least Debian Bookworm. If zeus had docker I could do it inside that.
12:26:14
drmeister
Docker will benefit from more memory - zeus has 32GB memory - could we get by with that? I ordered 128GB but it gave memory errors so I sent it back and I will hopefully get back working modules.
13:59:41
drmeister
Yes - it's useful for us there. It would also be useful for when we still use c++ exception handing unwinding - correct?
14:49:16
yitzi
Bike: I just pushed a branch called "analyzer" that uses the parallel static analyzer if `parallel-build` is T (which it is by default). Put the logs in `build/boehm/analyzer-logs/`. Feel free to use it in your experiments if you want.
14:49:59
Bike
oh, very nice. related question: how does one specify the number of jobs through koga/ninja. is it just --jobs=whatever to koga or :pjobs whatever in config.sexp
14:51:33
yitzi
`--jobs` to koga or `:jobs` in config.sexp. The current analyzer does not respect that and uses the environment variable PJOBS. I changed that so the analyzer uses koga job count in that branch as well.
15:01:47
drmeister
and the build was loading an alexandria file that references cc_error_bugged_catch
15:03:43
Bike
in any case, i stopped what i was doing so drmeister can run the analyzer without getting stomped on by fifty of my analyzer jobs
15:04:56
yitzi
drmeister: if you switch branches you should either do `koga --clean` or `koga -- build-path=wibble/`
15:05:55
yitzi
The first cleans out the buld folder before configuring. The second does the build in a different build folder.
15:06:39
drmeister
I'll use `./koga --clean` if any build products in the build directory could interfere. I'd like to do less `rm -rf build`.
15:07:32
yitzi
You only need to run koga once. `koga --clean` does the clean *AND* configures. This is not needed `./koga --clean && ./koga` and just does it twice.
15:08:48
yitzi
Yes, ninja can. Some of the targets are dependent on each other so it probably isn't usually needed. You can make a graph of the target if you want. Which two targets are you talking about? I'll tell you the fastest way.
15:11:23
drmeister
Ok, on that. With waf I wrote the rclasp target to compile and link iclasp and then run it and load the aclasp source code and stop there. I wanted to be in the interpreter with aclasp CL source loaded but not a single compile done at that point.
15:12:13
yitzi
Yes. rclasp is in the console pool so it will stop there on that step and block the other build steps.
15:12:26
drmeister
Currently I'm using `ninja -C build rclasp-preciseprep` because it looks like the best target to build build/preciseprep/compile_commands.json
15:13:00
drmeister
Is there a better target to use to build `build/preciseprep/compile_commands.json`?
15:15:16
drmeister
Yes - precisely - and I'm applying old practices from waf to koga. I'm trying not to bother you with too many questions about how do I do this or that.
15:16:10
drmeister
I see - I just ran `rm -rf build` and then `./koga' and I see `build/preciseprep/compile_commands.json`
15:16:58
drmeister
That is very convenient - with waf I always had to compile iclasp-preciseprep because it generated compile_commands.json only AFTER it had linked the iclasp-preciseprep executable (useless).
15:18:16
yitzi
The analyze target depends on `boehm/iclasp-boehm` so I first do `ninja -C build iclasp-boehm`
15:19:11
yitzi
Then run `ninja -vnC build analyze` and ninja will just print the commands that it would execute out. You will see the command line of the static analyzer last
15:20:09
yitzi
There is a script in build/boehm/static-analyze.lisp that it uses to pass the command line arguments from ninja into the analyzer.
15:22:11
yitzi
My first sentence should have been `run `ninja -C build cclasp-boehm` not iclasp-boehm
15:22:49
yitzi
The `ninja -vnC build analyze` doesn't actually run the analyzer. It just tells the command lines it would have executed to build that target.
15:24:53
drmeister
Yes, because the iclasp-preciseprep takes lots of time and sometimes it would fail and then I'd restart it and then waf would only generate the compile_commands.json containing the files that it built from the restart.
15:29:30
Bike
so the way sprof works is actually just that it puts a handler on sigprof that takes a sample, and then they set up a thread to send itself a sigprof every so often. assuming we can get ok backtraces, that should be doable, i think... we might have to do some specific stuff since we don't actually handle interrupts asynchronously most of the time
15:36:06
Bike
and i'll probably have to examine the sbcl runtime to see how the handler is written. just getting data with libunwind should... probably be okay? i mean, this is basically what it's for
16:19:40
yitzi
drmeister: Looks I was able to produce a debian package for cando. Waiting for it to finalize.
16:20:47
yitzi
It did not build in the workflow. There is something not working there. This was in a local docker container
16:23:40
yitzi
I added a single entry point to the analyzer in that branch I made. Makes it possible to invoke like this https://plaster.tymoon.eu/view/3154#3154
16:25:03
yitzi
The entry point is here https://github.com/clasp-developers/clasp/blob/6fa1d189e3a7e2d3364f5ac566e6bc8afce75504/src/lisp/modules/clasp-analyzer/clasp-analyzer.lisp#L4061