Closed vyryls closed 1 year ago
It seems that this project requires ffmpeg 5--are you aware of a way to install that on freebsd? (I'm unfamiliar, doing my best with a FreeBSD 13.2 VM I just installed)
Regardless, adding
[patch.crates-io]
ffmpeg-next = { git = "https://github.com/russelltg/rust-ffmpeg", branch = "fix_freebsd_build" }
To the Cargo.toml
does get past the error that you referenced. However, I get stuck on no VAAPI
symbol due to no ffmpeg 5.
no ffmpeg 5
Until 2023Q3
branches on 2023-07-01
and propagates into /quarterly
around 2023-07-10
ffmpeg >= 5 is only available from /latest
package repo. See Handbook how to switch.
Okay, got it to build now.
This requires the dmabuf protocol-- I don't think this is supported on BSD. Can you confirm?
BSDs reimplemented DMABUF under BSD license when porting MIT-licensed Linux DRM drivers. linux
in linux-dmabuf-unstable-v1
is simply a vendor name, the one who created the uAPI. The actual support depends on Wayland compositor. For example, wlroots is supported on FreeBSD and DragonFly. I can confirm linux-dmabuf-unstable-v1
used by mpv, wl-mirror, wayvnc, wlvncc, waypipe, xdg-desktop-portal-wlr works fine under Sway.
Note, testing in a VM requires GPU pass-through as FreeBSD lacks kernel drivers for virtual GPUs (e.g., vmwgfx).
I went ahead and installed it on an external drive so it's running natively, and with that cargo patch line it builds nicely and seems to work! (I'm in sway)
I added some docs to the readme on how to build this for FreeBSD. Closing this for now--eventually I'll remove that when my PR gets merged.
Packaged. DragonFly may catch up later.
Very cool!
I think your dependency list is sufficient as it will pull ffmpeg and llvm15 (I'm assuming library deps are implied as build deps, I'm unfamiliar with how pkg works)
However, it does also require libclang (for parsing ffmpeg headers and generating bindings) and ends up depending on libavcodec as well I believe.
Also, I've been lose about versioning this far since it was not officially packaged somewhere (and since most people packaged through the AUR, I could easily get the commit hash from them), would it be helpful if I formally versioned this program now?
I think your dependency list is sufficient
FreeBSD packages are built in a clean jail via poudriere (example log). I've also tested runtime in a jail with X11/Wayland sockets passed through.
However, it does also require libclang
Already specified. libclang is part of llvm* packages until subpackaging arrives.
since most people packaged through the AUR
FreeBSD uses a monorepo but lacks anything central and unmoderated like AUR for user repos. This has advantages (more binary packages) and disadvantages (poor WIP discoverability).
I could easily get the commit hash from them
FreeBSD package currently uses Git commit date as version. I've recently exposed Git hash in --version
but otherwise one has to check the package recipe for GH_TAGNAME
.
would it be helpful if I formally versioned this program now?
If you're ready for more users. Releases signal distros what is ready to package. Some package regardless (e.g., AUR, Nix, FreeBSD).
cargo 1.70.0