all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#56534] [videolang/video] #lang video on Guix OS (Issue #67)
       [not found] <videolang/video/issues/67@github.com>
@ 2022-07-13 21:33 ` Philip McGrath
  2023-10-09 13:34   ` Ludovic Courtès
  2023-10-21  1:58   ` [bug#56534] [PATCH v2 0/4] gnu: Add racket-with-video Philip McGrath
  0 siblings, 2 replies; 9+ messages in thread
From: Philip McGrath @ 2022-07-13 21:33 UTC (permalink / raw)
  To: reply+ACRURRG2GKRU2ZPHUYFFZAWA3PSRLEVBNHHE3LZV6I, 56534; +Cc: Rostislav Svoboda

Hi,

On Wed, Jul 13, 2022, at 7:55 AM, Bost wrote:
> 
> 
> Hi Leif,
> 
> FYI I just created a patch [1] enabling #lang video on the Guix OS. I guess you might want to extend the list [2] of supported operating systems when the patch gets merged ;-)
> 
> Cheers
> 
> Bost
> 
> 
> [1] https://issues.guix.gnu.org/56534
> [2] https://docs.racket-lang.org/video@video/Installing.html
> 

It's great to see more Racketeers interested in Guix!

I'm cross-posting this to both <https://issues.guix.gnu.org/56534> and <https://github.com/videolang/video/issues/67>.

I've been working for some time toward making a Guix build system and importer for Racket packages: I'm optimistic that I may get something working between the Racket 8.6 and 8.7 releases.

For now, I would suggest not adding `portaudio` and `ffmpeg` as inputs to the main `racket` package. Instead, if you want to get something working for now, I would suggest adding a new package `racket-with-video` that extends the `racket` package in the same way that `racket` extends `racket-minimal`. I'd expect it would go somewhat like this

```scheme
(define-public racket-with-video
  (let* ((commit "3c69669063c56ff8d269768589cb9506a33315e5")
         (revision "1")
         (video-version (git-version "0.2.3" revision commit)))
    (package
      (inherit racket)
      (version (string-append %racket-version "+video" video-version))
      (source #f)
      (native-inputs '())
      (inputs
       (list
        racket
        (racket-vm-for-system)
        ffmpeg
        portaudio
        (racket-packages-origin
         "video" (origin
                   (method git-fetch)
                   (uri (git-reference
                         (url "https://github.com/videolang/video")
                         (commit commit)))
                   (sha256
                    (base32 "17lysqgd4h0kdx73vzmsdqc6ip5rlk56hss3880yapvic14lf5dy"))
                   (file-name (git-file-name "racket-video" video-version)))
         '("video"))
        #|
        ... likewise for other packages not in main-distribution,
        particularly libvid ...
        |#))
      (arguments
       (substitute-keyword-arguments (package-arguments racket)
         ((#:make-flags _ '())
          #~`("video"))
         ((#:configure-flags _ '())
          #~`("--tethered"
              "--extra-foreign-lib-search-dirs"
              ,(format #f "~s"
                       '(#$@(map (lambda (name)
                                   (cond
                                    ((this-package-input name)
                                     => (cut file-append <> "/lib"))
                                    (else
                                     (raise
                                      (formatted-message
                                       (G_ "missing input '~a' to the 'racket-with-video' package")
                                       name)))))
                                 '("portaudio"
                                   "ffmpeg"))))))))
      (home-page "https://lang.video")
      (synopsis "Racket with @code{#lang video}")
      (description
       "Video is a language for making movies.  It combines the power
of a traditional video editor with the capabilities of a full
programming language.  Video integrates with the Racket ecosystem and
extensions for DrRacket to transform it into a non-linear video
editor.")
      (license license:asl2.0))))
```

Those helper functions are not exported from (gnu packages racket) because they're hack-ish and should be replaced with proper build system support, but hopefully you can see from the docstrings how they work for now.

I ran into <https://github.com/racket/racket/issues/4357> while working on this example: we'd need to backport a fix for that, or it might make it into 8.6. Incidentally, you might be interested in my branch at <https://gitlab.com/philip1/guix-patches/-/tree/zuo> getting ready for the Racket release: I'll be updating it to the new 8.5.900 release candidate soon.

@LeifAndersen, I used 3c69669063c56ff8d269768589cb9506a33315e5 because I expect Guix would run into that issue during our build process, but we could use the stable branch or cherry-pick it if you think that would be better.

Hopefully by the next time a situation like <https://guix.gnu.org/en/blog/2021/reproducible-data-processing-pipelines/> comes up, Guix folks will be able to get `#lang video`'s "sweet high-level functional interface" together with reproducibility of their makefile!

-Philip




^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#56534] [videolang/video] #lang video on Guix OS (Issue #67)
  2022-07-13 21:33 ` [bug#56534] [videolang/video] #lang video on Guix OS (Issue #67) Philip McGrath
@ 2023-10-09 13:34   ` Ludovic Courtès
  2023-10-09 14:05     ` Philip McGrath
  2023-10-21  1:58   ` [bug#56534] [PATCH v2 0/4] gnu: Add racket-with-video Philip McGrath
  1 sibling, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2023-10-09 13:34 UTC (permalink / raw)
  To: Philip McGrath
  Cc: reply+ACRURRG2GKRU2ZPHUYFFZAWA3PSRLEVBNHHE3LZV6I, 56534,
	Rostislav Svoboda

Hello Philip and all,

"Philip McGrath" <philip@philipmcgrath.com> skribis:

> I'm cross-posting this to both <https://issues.guix.gnu.org/56534> and <https://github.com/videolang/video/issues/67>.
>
> I've been working for some time toward making a Guix build system and importer for Racket packages: I'm optimistic that I may get something working between the Racket 8.6 and 8.7 releases.
>
> For now, I would suggest not adding `portaudio` and `ffmpeg` as inputs to the main `racket` package. Instead, if you want to get something working for now, I would suggest adding a new package `racket-with-video` that extends the `racket` package in the same way that `racket` extends `racket-minimal`. I'd expect it would go somewhat like this

It’s been a while.  Should one of you add the ‘racket-with-video’
package you proposed?  WDYT?

Thanks,
Ludo’.




^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#56534] [videolang/video] #lang video on Guix OS (Issue #67)
  2023-10-09 13:34   ` Ludovic Courtès
@ 2023-10-09 14:05     ` Philip McGrath
  0 siblings, 0 replies; 9+ messages in thread
From: Philip McGrath @ 2023-10-09 14:05 UTC (permalink / raw)
  To: Ludovic Courtès
  Cc: reply+ACRURRG2GKRU2ZPHUYFFZAWA3PSRLEVBNHHE3LZV6I, 56534,
	Rostislav Svoboda

Hi Ludo’.,

On Mon, Oct 9, 2023, at 9:34 AM, Ludovic Courtès wrote:
> Hello Philip and all,
>
> "Philip McGrath" <philip@philipmcgrath.com> skribis:
>
>> I'm cross-posting this to both <https://issues.guix.gnu.org/56534> and <https://github.com/videolang/video/issues/67>.
>>
>> I've been working for some time toward making a Guix build system and importer for Racket packages: I'm optimistic that I may get something working between the Racket 8.6 and 8.7 releases.
>>
>> For now, I would suggest not adding `portaudio` and `ffmpeg` as inputs to the main `racket` package. Instead, if you want to get something working for now, I would suggest adding a new package `racket-with-video` that extends the `racket` package in the same way that `racket` extends `racket-minimal`. I'd expect it would go somewhat like this
>
> It’s been a while.  Should one of you add the ‘racket-with-video’
> package you proposed?  WDYT?
>

I'd be happy to give it a try, though I may not have time until next week (definitely not today).

IIRC, all of the potential complications I mentioned up-thread have been solved by now, so it should just be a matter of collecting all the dependencies.

Philip




^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#56534] [PATCH v2 0/4] gnu: Add racket-with-video.
  2022-07-13 21:33 ` [bug#56534] [videolang/video] #lang video on Guix OS (Issue #67) Philip McGrath
  2023-10-09 13:34   ` Ludovic Courtès
@ 2023-10-21  1:58   ` Philip McGrath
  2023-10-21  2:01     ` [bug#56534] [PATCH v2 1/4] gnu: racket: Fix layered documentation rendering Philip McGrath
                       ` (4 more replies)
  1 sibling, 5 replies; 9+ messages in thread
From: Philip McGrath @ 2023-10-21  1:58 UTC (permalink / raw)
  To: 56534; +Cc: Ludovic Courtès, Philip McGrath, Rostislav Svoboda

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





^ permalink raw reply	[flat|nested] 9+ messages in thread

* [bug#56534] [PATCH v2 1/4] gnu: racket: Fix layered documentation rendering.
  2023-10-21  1:58   ` [bug#56534] [PATCH v2 0/4] gnu: Add racket-with-video Philip McGrath
@ 2023-10-21  2:01     ` Philip McGrath
  2023-10-21  2:01     ` [bug#56534] [PATCH v2 2/4] gnu: Add racket-portaudio-librsoundcallbacks Philip McGrath
                       ` (3 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Philip McGrath @ 2023-10-21  2:01 UTC (permalink / raw)
  To: 56534; +Cc: Ludovic Courtès, Philip McGrath, Rostislav Svoboda

We want to create additional Guix packages (e.g. 'racket-with-video')
that extend our 'racket' package as the 'racket' package extends
'racket-minimal', using Racket’s support for “layered installations”.
Without this fix, rendering the documentation for the new layer would
try to write to the parent layer in the store, breaking the build.

See upstream discussion at <https://github.com/racket/racket/pull/4802>.

* gnu/packages/racket.scm (racket)[inputs]: Add an additional snippet to
'%racket-origin' when used for the Racket package 'racket-index'.
---
 gnu/packages/racket.scm | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm
index 1e97f19dbb..a127f75669 100644
--- a/gnu/packages/racket.scm
+++ b/gnu/packages/racket.scm
@@ -676,7 +676,18 @@ (define-public racket
        "algol60" (base32 "03akd7xhn4l7y66qgaimvdbn6gq7ay6j03dc11mz80n06z21dfb6")
        '(("algol60" ".")))
       (racket-packages-origin
-       "racket" %racket-origin
+       "racket" (origin
+                  (inherit %racket-origin)
+                  (snippet
+                   ;; Workaround for https://github.com/racket/racket/pull/4802
+                   ;; TODO: When updating to Racket 8.11, include the upstream
+                   ;; fix in %racket-origin (probably as a patch).
+                   #~(begin
+                       #$(origin-snippet %racket-origin)
+                       (substitute*
+                           "pkgs/racket-index/scribblings/main/info.rkt"
+                         (("no-depend-on[)]")
+                          "no-depend-on every-main-layer)")))))
        '(("at-exp-lib" "pkgs/at-exp-lib")
          ("compiler" "pkgs/compiler")
          ("compiler-lib" "pkgs/compiler-lib")
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [bug#56534] [PATCH v2 2/4] gnu: Add racket-portaudio-librsoundcallbacks.
  2023-10-21  1:58   ` [bug#56534] [PATCH v2 0/4] gnu: Add racket-with-video Philip McGrath
  2023-10-21  2:01     ` [bug#56534] [PATCH v2 1/4] gnu: racket: Fix layered documentation rendering Philip McGrath
@ 2023-10-21  2:01     ` Philip McGrath
  2023-10-21  2:01     ` [bug#56534] [PATCH v2 3/4] gnu: Add racket-libvid Philip McGrath
                       ` (2 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Philip McGrath @ 2023-10-21  2:01 UTC (permalink / raw)
  To: 56534; +Cc: Ludovic Courtès, Philip McGrath, Rostislav Svoboda

* gnu/packages/racket.scm (racket-portaudio-librsoundcallbacks): New
variable.
---
 gnu/packages/racket.scm | 44 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm
index a127f75669..43187318d8 100644
--- a/gnu/packages/racket.scm
+++ b/gnu/packages/racket.scm
@@ -26,6 +26,7 @@ (define-module (gnu packages racket)
   #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix gexp)
+  #:use-module (guix build-system copy)
   #:use-module (guix build-system gnu)
   #:use-module (guix diagnostics)
   #:use-module (guix i18n)
@@ -1032,6 +1033,49 @@ (define-public racket
 DrRacket IDE, libraries for GUI and web programming, and implementations of
 languages such as Typed Racket, R5RS and R6RS Scheme, Algol 60, and Datalog.")))
 
+(define-public racket-portaudio-librsoundcallbacks
+  (let ((commit "bb4faf5e5500d2b89c22f16ba9adf455b263f097")
+        (revision "1"))
+    (package
+      (name "racket-portaudio-librsoundcallbacks")
+      (version (git-version "0.2" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/jbclements/portaudio")
+               (commit commit)))
+         (sha256
+          (base32 "11cx1a9admsfkbm1gi32yicaawrn448m7rbmayyzh50kdywm5lfg"))
+         (snippet
+          #~(begin
+              (use-modules (guix build utils))
+              (substitute* "info.rkt"
+                ;; remove dependencies on pre-built support libraries
+                (("[(]\"portaudio-.*linux" orig)
+                 (string-append "#|removed for Guix|# #;" orig)))))
+         (file-name (git-file-name "racket-portaudio" version))))
+      (build-system copy-build-system)
+      (arguments
+       (list
+        #:install-plan #~`(("librsoundcallbacks.so" "lib/"))
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-before 'install 'build
+              (lambda args
+                (chdir "portaudio/lib")
+                (invoke #$(cc-for-target)
+                        "-O2" "-fPIC" "-shared"
+                        "-o" "librsoundcallbacks.so"
+                        "callbacks.c"))))))
+      (home-page "https://pkgs.racket-lang.org/package/portaudio")
+      (synopsis "Support library for Racket's PortAudio bindings")
+      (description "The librsoundcallbacks library is used internally by the
+Racket bindings for PortAudio.  It provides an adapter between the low-level
+callbacks used by PortAudio, which must never block, and higher-level
+callbacks supplied @i{via} Racket's foreign interface.")
+      (license license:lgpl2.0+))))
+
 (define configure-layer.rkt
   (scheme-file
    "configure-layer.rkt"
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [bug#56534] [PATCH v2 3/4] gnu: Add racket-libvid.
  2023-10-21  1:58   ` [bug#56534] [PATCH v2 0/4] gnu: Add racket-with-video Philip McGrath
  2023-10-21  2:01     ` [bug#56534] [PATCH v2 1/4] gnu: racket: Fix layered documentation rendering Philip McGrath
  2023-10-21  2:01     ` [bug#56534] [PATCH v2 2/4] gnu: Add racket-portaudio-librsoundcallbacks Philip McGrath
@ 2023-10-21  2:01     ` Philip McGrath
  2023-10-21  2:01     ` [bug#56534] [PATCH v2 4/4] gnu: Add racket-with-video Philip McGrath
  2023-10-21  2:13     ` [bug#56534] [PATCH v2 0/4] " Philip McGrath
  4 siblings, 0 replies; 9+ messages in thread
From: Philip McGrath @ 2023-10-21  2:01 UTC (permalink / raw)
  To: 56534; +Cc: Ludovic Courtès, Philip McGrath, Rostislav Svoboda

* gnu/packages/racket.scm (racket-libvid): New variable.
---
 gnu/packages/racket.scm | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm
index 43187318d8..5468fff6c4 100644
--- a/gnu/packages/racket.scm
+++ b/gnu/packages/racket.scm
@@ -51,6 +51,7 @@ (define-module (gnu packages racket)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages video)
   #:use-module (gnu packages xorg)
   #:use-module ((guix licenses) #:prefix license:))
 
@@ -1076,6 +1077,43 @@ (define-public racket-portaudio-librsoundcallbacks
 callbacks supplied @i{via} Racket's foreign interface.")
       (license license:lgpl2.0+))))
 
+(define-public racket-libvid
+  (let ((commit "dfe1d5cb7271b1657bbde9c8f67ee9c5a513a9c7")
+        (revision "1"))
+    (package
+      (name "racket-libvid")
+      (version (git-version "0.2.1.1" revision commit))
+      (source
+       ;; Avoid even a shallow clone of the rest of the repository,
+       ;; which includes large binaries for many platforms.
+       (origin
+         (method url-fetch)
+         (uri (string-append
+               "https://raw.githubusercontent.com/videolang/native-pkgs/"
+               commit
+               "/libvid-src/libvid.c"))
+         (sha256
+          (base32 "14byvwsadg1d2bd2j0x9nhmxkjhlq04afhq4l43y34r3y4zdcyq5"))))
+      (inputs (list ffmpeg-4)) ; NOTE: major versions break compatibility
+      (build-system copy-build-system)
+      (arguments
+       (list
+        #:install-plan
+        #~`(("libvid.so.0" "lib/"))
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-before 'install 'build
+              (lambda args
+                (invoke #$(cc-for-target)
+                        "-Wall" "-Werror" "-shared" "-fPIC"
+                        "-o" "libvid.so.0"
+                        "libvid.c"))))))
+      (home-page "https://lang.video")
+      (synopsis "Logging support library for @code{#lang video}")
+      (description "The libvid library adapts FFmpeg's logging API to
+interoperate more easily with Racket's foreign interface.")
+      (license license:asl2.0))))
+
 (define configure-layer.rkt
   (scheme-file
    "configure-layer.rkt"
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [bug#56534] [PATCH v2 4/4] gnu: Add racket-with-video.
  2023-10-21  1:58   ` [bug#56534] [PATCH v2 0/4] gnu: Add racket-with-video Philip McGrath
                       ` (2 preceding siblings ...)
  2023-10-21  2:01     ` [bug#56534] [PATCH v2 3/4] gnu: Add racket-libvid Philip McGrath
@ 2023-10-21  2:01     ` Philip McGrath
  2023-10-21  2:13     ` [bug#56534] [PATCH v2 0/4] " Philip McGrath
  4 siblings, 0 replies; 9+ messages in thread
From: Philip McGrath @ 2023-10-21  2:01 UTC (permalink / raw)
  To: 56534; +Cc: Ludovic Courtès, Philip McGrath, Rostislav Svoboda

* gnu/packages/racket.scm (racket-with-video): New variable.
---
 gnu/packages/racket.scm | 159 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 159 insertions(+)

diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm
index 5468fff6c4..14849e14ec 100644
--- a/gnu/packages/racket.scm
+++ b/gnu/packages/racket.scm
@@ -36,6 +36,7 @@ (define-module (gnu packages racket)
   #:use-module (srfi srfi-34)
   #:use-module (ice-9 match)
   #:use-module (gnu packages)
+  #:use-module (gnu packages audio)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages chez)
   #:use-module (gnu packages compression)
@@ -1114,6 +1115,164 @@ (define-public racket-libvid
 interoperate more easily with Racket's foreign interface.")
       (license license:asl2.0))))
 
+(define-public racket-with-video
+  (let* ((commit "3c69669063c56ff8d269768589cb9506a33315e5")
+         (revision "1")
+         (video-version (git-version "0.2.3" revision commit)))
+    (package
+      (inherit racket)
+      (name "racket-with-video")
+      (version (string-append %racket-version "+video" video-version))
+      (source #f)
+      (native-inputs '())
+      (inputs
+       (list
+        racket
+        racket-vm-cs
+        portaudio
+        racket-portaudio-librsoundcallbacks
+        racket-libvid
+        (lookup-package-input racket-libvid "ffmpeg") ; get the right version
+        (racket-packages-origin
+         "video" (origin
+                   (method git-fetch)
+                   (uri (git-reference
+                         (url "https://github.com/videolang/video")
+                         (commit commit)))
+                   (sha256
+                    (base32 "17lysqgd4h0kdx73vzmsdqc6ip5rlk56hss3880yapvic14lf5dy"))
+                   (snippet
+                    #~(begin
+                        (use-modules (guix build utils))
+                        (substitute* "info.rkt"
+                          ;; remove dependencies on pre-built libvid
+                          (("[(]\"libvid-.*linux" orig)
+                           (string-append "#|removed for Guix|# #;" orig)))))
+                   (file-name (git-file-name "racket-video" video-version)))
+         '(("video" ".")))
+        (let ((commit "fffe0d44e6183d19b5e2b22bf07be4192994243b"))
+          (racket-packages-origin
+           "bitsyntax" (origin
+                         (method git-fetch)
+                         (uri (git-reference
+                               (url "https://github.com/tonyg/racket-bitsyntax")
+                               (commit commit)))
+                         (sha256
+                          (base32 "0bvadklalbabd06r4a5jl6p41xmibr88iq4lq6ykcyng86r65rk3"))
+                         (file-name (git-file-name "racket-bitsyntax"
+                                                   (git-version "0.0" "1" commit))))
+           '(("bitsyntax" "."))))
+        (let ((commit "f06848871ed7b4b488341fdd73e9f640b4788733"))
+          (racket-packages-origin
+           "graph" (origin
+                     (method git-fetch)
+                     (uri (git-reference
+                           (url "https://github.com/stchang/graph")
+                           (commit commit)))
+                     (sha256
+                      (base32 "0smpd3nrxx91j32pkixq765dkgsyqxalkarc05kh76xmsvrrwgxk"))
+                     (file-name (git-file-name "racket-graph"
+                                               (git-version "0.5.2" "1" commit))))
+           '("graph" "graph-lib" "graph-doc" "graph-test" "gen-queue-lib")))
+        (let ((commit "69993f73dab8382796be37998ec47ded7883faf7"))
+          (racket-packages-origin
+           "lang-file" (origin
+                         (method git-fetch)
+                         (uri (git-reference
+                               (url "https://github.com/AlexKnauth/lang-file")
+                               (commit commit)))
+                         (sha256
+                          (base32 "1ij2ijpc0x5qyvvx5jwvi52gwk2972zrhz3481k91c3naxjaxyqq"))
+                         (file-name (git-file-name "racket-lang-file"
+                                                   (git-version "0.0" "1" commit))))
+           '("lang-file" "lang-file-lib")))
+        (let ((commit "1aaf2b2836680f807fbec5234ed475585b41b4ab"))
+          (racket-packages-origin
+           "opengl" (origin
+                      (method git-fetch)
+                      (uri (git-reference
+                            (url "https://github.com/stephanh42/RacketGL")
+                            (commit commit)))
+                      (sha256
+                       (base32 "1dc55jhwydin6f1c2bpzls3fzip3gg2j5aq2gwrkzvifj6p8wxj6"))
+                      (file-name (git-file-name "racket-opengl"
+                                                (git-version "0.0" "1" commit))))
+           '(("opengl" "."))))
+        (racket-packages-origin
+         "portaudio" (package-source racket-portaudio-librsoundcallbacks)
+         '(("portaudio" ".")))
+        (let ((commit "141332655e6c3003f847282d4187882aa8c95792"))
+          (racket-packages-origin
+           "ppict" (origin
+                     (method git-fetch)
+                     (uri (git-reference
+                           (url "https://github.com/rmculpepper/ppict")
+                           (commit commit)))
+                     (sha256
+                      (base32 "01ncygig6rp3hg6j5cgs11wlyplmcvim1iq93m4by6dwqvzq7ycm"))
+                     (file-name (git-file-name "racket-ppict"
+                                               (git-version "1.2" "1" commit))))
+           '(("ppict" "."))))
+        (let ((commit "f38e629f9713d2bc2691538b2ce5784bb1187252"))
+          (racket-packages-origin
+           "reprovide-lang" (origin
+                              (method git-fetch)
+                              (uri (git-reference
+                                    (url "https://github.com/AlexKnauth/reprovide-lang")
+                                    (commit commit)))
+                              (sha256
+                               (base32 "08i4lgir6n0sbd6iaz1jnk07vr5lr6pvr9a6a7rvxs2xyy5sdxk1"))
+                              (file-name (git-file-name "racket-reprovide-lang"
+                                                        (git-version "0.0" "1" commit))))
+           '("reprovide-lang" "reprovide-lang-lib")))
+        (let ((commit "d20497348015aecb309bdddd29cebea4a0b35664"))
+          (racket-packages-origin
+           "syntax-macro-lang" (origin
+                                 (method git-fetch)
+                                 (uri (git-reference
+                                       (url "https://github.com/AlexKnauth/syntax-macro-lang")
+                                       (commit commit)))
+                                 (sha256
+                                  (base32 "01dkp9z8rfnp788py9m6n16fvws2iwf6qypd85v7dqv8q2dpk89x"))
+                                 (file-name (git-file-name "racket-syntax-macro-lang"
+                                                           (git-version "0.0" "1" commit))))
+           '(("syntax-macro-lang" "."))))))
+      (arguments
+       (substitute-keyword-arguments (package-arguments racket)
+         ((#:phases std-phases)
+          #~(modify-phases #$std-phases
+              (add-before 'install 'log
+                (lambda args
+                  (setenv "PLTSTDERR" "error debug@setup")))))
+         ((#:make-flags _ '())
+          #~`("video"))
+         ((#:configure-flags _ '())
+          #~`("--tethered"
+              "--extra-foreign-lib-search-dirs"
+              ,(format #f "~s"
+                       '(#$@(map (lambda (name)
+                                   (cond
+                                    ((this-package-input name)
+                                     => (cut file-append <> "/lib"))
+                                    (else
+                                     (raise
+                                      (formatted-message
+                                       (G_ "missing input '~a' to the 'racket-with-video' package")
+                                       name)))))
+                                 '("portaudio"
+                                   "racket-portaudio-librsoundcallbacks"
+                                   "racket-libvid"
+                                   "ffmpeg"))))))))
+      (home-page "https://lang.video")
+      (synopsis "Racket with @code{#lang video}")
+      (description
+       "Video is a language for making movies.  It combines the power
+of a traditional video editor with the capabilities of a full
+programming language.  Video integrates with the Racket ecosystem and
+extensions for DrRacket to transform it into a non-linear video
+editor.")
+      (license license:asl2.0))))
+
 (define configure-layer.rkt
   (scheme-file
    "configure-layer.rkt"
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [bug#56534] [PATCH v2 0/4] gnu: Add racket-with-video.
  2023-10-21  1:58   ` [bug#56534] [PATCH v2 0/4] gnu: Add racket-with-video Philip McGrath
                       ` (3 preceding siblings ...)
  2023-10-21  2:01     ` [bug#56534] [PATCH v2 4/4] gnu: Add racket-with-video Philip McGrath
@ 2023-10-21  2:13     ` Philip McGrath
  4 siblings, 0 replies; 9+ messages in thread
From: Philip McGrath @ 2023-10-21  2:13 UTC (permalink / raw)
  To: 56534; +Cc: Ludovic Courtès, Rostislav Svoboda

[-- Attachment #1: Type: text/plain, Size: 346 bytes --]

Hi,

On Fri, Oct 20, 2023, at 9:58 PM, Philip McGrath wrote:
>
> I will send the full log as an attachment to a follow-up message. 
>

The log of errors is attached. Note that "invalid memory reference.  Some debugging context lost" is the message from the exception Chez Scheme raises under conditions that would otherwise be a segfault.

Philip

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: green.vid.shell-with-all-plugins.log --]
[-- Type: text/x-log; name="green.vid.shell-with-all-plugins.log", Size: 4522 bytes --]


(drracket:209134): Gtk-WARNING **: 20:34:50.366: Could not load a pixbuf from icon theme.
This may indicate that pixbuf loaders or the mime database could not be found.
ALSA lib pcm_dmix.c:1075:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm_route.c:877:(find_matching_chmap) Found no matching channel map
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)
ALSA lib pcm_rate.c:1468:(snd_pcm_rate_open) Cannot find rate converter
ALSA lib pcm_oss.c:397:(_snd_pcm_oss_open) Cannot open device /dev/dsp
ALSA lib pcm_oss.c:397:(_snd_pcm_oss_open) Cannot open device /dev/dsp
ALSA lib dlmisc.c:339:(snd_dlobj_cache_get0) Cannot open shared library libasound_module_pcm_a52.so (/gnu/store/adlkhsffrpcpv8mnan13d8y9r3dp1724-profile/lib/alsa-lib/libasound_module_pcm_a52.so: cannot open shared object file: No such file or directory)
ALSA lib dlmisc.c:339:(snd_dlobj_cache_get0) Cannot open shared library libasound_module_pcm_a52.so (/gnu/store/adlkhsffrpcpv8mnan13d8y9r3dp1724-profile/lib/alsa-lib/libasound_module_pcm_a52.so: cannot open shared object file: No such file or directory)
ALSA lib dlmisc.c:339:(snd_dlobj_cache_get0) Cannot open shared library libasound_module_pcm_speex.so (/gnu/store/adlkhsffrpcpv8mnan13d8y9r3dp1724-profile/lib/alsa-lib/libasound_module_pcm_speex.so: cannot open shared object file: No such file or directory)
ALSA lib dlmisc.c:339:(snd_dlobj_cache_get0) Cannot open shared library libasound_module_pcm_speex.so (/gnu/store/adlkhsffrpcpv8mnan13d8y9r3dp1724-profile/lib/alsa-lib/libasound_module_pcm_speex.so: cannot open shared object file: No such file or directory)
ALSA lib pcm_usb_stream.c:486:(_snd_pcm_usb_stream_open) Invalid type for card
ALSA lib pcm_usb_stream.c:486:(_snd_pcm_usb_stream_open) Invalid type for card
ALSA lib pcm_dmix.c:1075:(snd_pcm_dmix_open) unable to open slave
invalid memory reference.  Some debugging context lost
  context...:
   .../private/arrow-higher-order.rkt:379:33: body of top-level
   /gnu/store/hlfzywcy3j1pyr5n8vxqc3kkdabk4gpx-racket-8.10/lib/racket/pkgs/gui-lib/mred/private/mrcanvas.rkt:128:4: with-gl-context method in canvas%
   /gnu/store/bn137jkr5cwkdrrdi81nlmlfvnczw0wr-racket-with-video-8.10+video0.2.3-1.3c69669/lib/racket/pkgs/video/video/private/video-canvas.rkt:58:2
   /gnu/store/3ggww9vrsw5hz1608rax4ar853z3ka62-racket-vm-cs-8.10/opt/racket-vm/collects/racket/private/class-internal.rkt:3655:0: continue-make-object
   /gnu/store/3ggww9vrsw5hz1608rax4ar853z3ka62-racket-vm-cs-8.10/opt/racket-vm/collects/racket/private/class-internal.rkt:3629:0: do-make-object/real-class
   /gnu/store/bn137jkr5cwkdrrdi81nlmlfvnczw0wr-racket-with-video-8.10+video0.2.3-1.3c69669/lib/racket/pkgs/video/video/player.rkt:207:2
   /gnu/store/3ggww9vrsw5hz1608rax4ar853z3ka62-racket-vm-cs-8.10/opt/racket-vm/collects/racket/private/class-internal.rkt:3655:0: continue-make-object
   /gnu/store/3ggww9vrsw5hz1608rax4ar853z3ka62-racket-vm-cs-8.10/opt/racket-vm/collects/racket/private/class-internal.rkt:3629:0: do-make-object/real-class
   /gnu/store/bn137jkr5cwkdrrdi81nlmlfvnczw0wr-racket-with-video-8.10+video0.2.3-1.3c69669/lib/racket/pkgs/video/video/player.rkt:458:0: preview
   /gnu/store/3ggww9vrsw5hz1608rax4ar853z3ka62-racket-vm-cs-8.10/opt/racket-vm/collects/racket/contract/private/arrow-val-first.rkt:555:3
   /gnu/store/3ggww9vrsw5hz1608rax4ar853z3ka62-racket-vm-cs-8.10/opt/racket-vm/collects/racket/private/more-scheme.rkt:148:2: call-with-break-parameterization
   /gnu/store/3ggww9vrsw5hz1608rax4ar853z3ka62-racket-vm-cs-8.10/opt/racket-vm/collects/ffi/unsafe/atomic.rkt:73:13
   /gnu/store/hlfzywcy3j1pyr5n8vxqc3kkdabk4gpx-racket-8.10/lib/racket/pkgs/gui-lib/mred/private/wx/gtk/window.rkt:823:4: dispatch-on-event method in window%
   /gnu/store/hlfzywcy3j1pyr5n8vxqc3kkdabk4gpx-racket-8.10/lib/racket/pkgs/gui-lib/mred/private/wx/common/queue.rkt:436:6
   /gnu/store/hlfzywcy3j1pyr5n8vxqc3kkdabk4gpx-racket-8.10/lib/racket/pkgs/gui-lib/mred/private/wx/common/queue.rkt:487:32
   /gnu/store/hlfzywcy3j1pyr5n8vxqc3kkdabk4gpx-racket-8.10/lib/racket/pkgs/gui-lib/mred/private/wx/common/queue.rkt:639:3

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2023-10-21  2:14 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <videolang/video/issues/67@github.com>
2022-07-13 21:33 ` [bug#56534] [videolang/video] #lang video on Guix OS (Issue #67) Philip McGrath
2023-10-09 13:34   ` Ludovic Courtès
2023-10-09 14:05     ` Philip McGrath
2023-10-21  1:58   ` [bug#56534] [PATCH v2 0/4] gnu: Add racket-with-video Philip McGrath
2023-10-21  2:01     ` [bug#56534] [PATCH v2 1/4] gnu: racket: Fix layered documentation rendering Philip McGrath
2023-10-21  2:01     ` [bug#56534] [PATCH v2 2/4] gnu: Add racket-portaudio-librsoundcallbacks Philip McGrath
2023-10-21  2:01     ` [bug#56534] [PATCH v2 3/4] gnu: Add racket-libvid Philip McGrath
2023-10-21  2:01     ` [bug#56534] [PATCH v2 4/4] gnu: Add racket-with-video Philip McGrath
2023-10-21  2:13     ` [bug#56534] [PATCH v2 0/4] " Philip McGrath

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.