Subject: [bug#56534] [PATCH v2 0/4] gnu: Add racket-with-video.

From: Philip McGrath <[email-masked]>
Date: Fri, 20 Oct 2023 21:58:29 -0400

Hi Ludo’ and everyone,

Here is a patch series adding 'racket-with-video'.

(I'm BCC'ing <https://github.com/videolang/video/issues/67> on this cover
letter, but not on the patches themselves: they will be
at <https://issues.guix.gnu.org/56534>.)

The package builds file, but unfortunately, while trying to confirm that it
works, I'm getting errors related to ALSA plugins. I'm not familiar with how
ALSA finds plugins or how Guix packages should handle them, so I'm hoping
someone will have suggestions. I also asked on IRC:
see <https://logs.guix.gnu.org/guix/2023-10-20.log#230814>.

Here's how to provoke the problem:

 1. Launch a shell with the new package, e.g. with `./pre-inst-env guix shell
    racket-with-video alsa-plugins alsa-plugins:pulseaudio alsa-plugins:jack`.
    I added all of the `alsa-plugins` to see if they made a difference, but
    they did not.

 2. Start DrRacket, e.g. with:
    ```
    PLTUSERHOME=/tmp/plthome drracket &> green.vid.shell-with-all-plugins.log
    ```
    Setting PLTUSERHOME ensures the experiment is not affected by any
    preferences you may have configured or packages you may have installed in
    user scope.

 3. As prompted by DrRacket, perform the on-first-run selection of a
    programming language: select the “Choose Language…” item in the “Language”
    menu and choose “The Racket Language” in the dialog.

 4. Enter the following example program in the definitions window:
    ```racket
    #lang video
    (color "green")
    ```

 5. Press the “Run” button. The program will compile and run successfully,
    nearly instantaneously. You will see the language noted at the top of the
    REPL updated to reflect `#lang video`.

 6. Press the “Preview Video” button. DrRacket will freeze. Eventually,
    DrRacket will crash. Every time I have tried this, it has brought my
    terminal (Konsole) down with it.

I've been doing this in a KDE Wayland session on Debian Bookworm. It would be
good to know if the problem also happens in other environments, especially
Guix System.

I have tried it with both `ffmpeg-4` and `ffmpeg-3.4` with similar results.

I will send the full log as an attachment to a follow-up message. Much of it
consists of errors like this:
```
ALSA lib dlmisc.c:339:(snd_dlobj_cache_get0) Cannot open shared library libasound_module_rate_lavrate.so (/gnu/store/adlkhsffrpcpv8mnan13d8y9r3dp1724-profile/lib/alsa-lib/libasound_module_rate_lavrate.so: cannot open shared object file: No such file or directory)
```

The messages are slightly different if you run the build `drracket` without
going through `guix shell`, e.g.:
```
ALSA lib conf.c:3725:(snd_config_hooks_call) Cannot open shared library libasound_module_conf_pulse.so (/gnu/store/l6bi14a5qrbjgb9lqh39wzrbsk50r8np-alsa-lib-1.2.4/lib/alsa-lib/libasound_module_conf_pulse.so: cannot open shared object file: No such file or directory)
```

There is in fact no `lib/alsa-lib` directory in the store item for
`alsa-lib`. A file `lib/alsa-lib/libasound_module_conf_pulse.so` does exist in
the `alsa-plugins:pulseaudio` output, and, interestingly, that one did not
appear in the logs from my latest test: so maybe including it in the shell did
make a difference? On the other hand, I haven't managed to locate a
`libasound_module_rate_lavrate.so` anywhere in Guix.

Hopefully someone will have some idea of what's going on.

 -Philip

Philip McGrath (4):
  gnu: racket: Fix layered documentation rendering.
  gnu: Add racket-portaudio-librsoundcallbacks.
  gnu: Add racket-libvid.
  gnu: Add racket-with-video.

 gnu/packages/racket.scm | 254 +++++++++++++++++++++++++++++++++++++++-
 1 file changed, 253 insertions(+), 1 deletion(-)

base-commit: fed6ac2ae182597a492b17a29ed8b26986498755
-- 
2.41.0