all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Philip McGrath" <philip@philipmcgrath.com>
To: reply+ACRURRG2GKRU2ZPHUYFFZAWA3PSRLEVBNHHE3LZV6I@reply.github.com,
	56534@debbugs.gnu.org
Cc: Rostislav Svoboda <rostislav.svoboda@gmail.com>
Subject: [bug#56534] [videolang/video] #lang video on Guix OS (Issue #67)
Date: Wed, 13 Jul 2022 17:33:25 -0400	[thread overview]
Message-ID: <e943b0df-28e1-4600-ab4c-f223598db3fd@www.fastmail.com> (raw)
In-Reply-To: <videolang/video/issues/67@github.com>

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




       reply	other threads:[~2022-07-13 21:35 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <videolang/video/issues/67@github.com>
2022-07-13 21:33 ` Philip McGrath [this message]
2023-10-09 13:34   ` [bug#56534] [videolang/video] #lang video on Guix OS (Issue #67) 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
2022-07-13 11:39 [bug#56534] [PATCH] gnu: racket: Add add ffmpeg and portaudio to inputs Rostislav Svoboda
2022-10-24 12:13 ` [bug#56534] [videolang/video] #lang video on Guix OS (Issue #67) Rostislav Svoboda

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e943b0df-28e1-4600-ab4c-f223598db3fd@www.fastmail.com \
    --to=philip@philipmcgrath.com \
    --cc=56534@debbugs.gnu.org \
    --cc=reply+ACRURRG2GKRU2ZPHUYFFZAWA3PSRLEVBNHHE3LZV6I@reply.github.com \
    --cc=rostislav.svoboda@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.