Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to build on OSX #815

Closed
shaneday opened this issue Mar 1, 2024 · 5 comments · Fixed by #880
Closed

Unable to build on OSX #815

shaneday opened this issue Mar 1, 2024 · 5 comments · Fixed by #880

Comments

@shaneday
Copy link

shaneday commented Mar 1, 2024

I'm trying to build av1an to run on an M2 Mac. I have the git repo cloned and when I run 'cargo build' it reports the following: (I've trimmed some unrelated warnings and the most of the massive cc command line. I can attach the log if needed)

Compiling av1an-core v0.4.1
[...](error: linking with `cc` failed: exit status: 1)
= note: ld: library 'vapoursynth' not found
... "cc" "-arch" "arm64" ... "/Users/shaneday/git/av1an/target/debug/deps/libvapoursynth-2fbdbd40c09d3a15.rlib" ... "/Users/shaneday/git/av1an/target/debug/deps/libvapoursynth_sys-314baf9d1a70c691.rlib" 
... "-lvapoursynth" "-lvapoursynth-script" ...

I've installed vapoursynth using 'brew install vapoursynth' and I can see the vapoursynth library files:

❯ ls /opt/homebrew/lib/libvapoursynth*
/opt/homebrew/lib/libvapoursynth-script.0.dylib
/opt/homebrew/lib/libvapoursynth-script.a
/opt/homebrew/lib/libvapoursynth-script.dylib
/opt/homebrew/lib/libvapoursynth.a
/opt/homebrew/lib/libvapoursynth.dylib

I have tried following ChatGPTs advice and adding to Cargo.toml:

[build]
rustflags = ["-L/opt/homebrew/lib"]

and also tried:

CARGO_LINKFLAGS="-L/opt/homebrew/lib" cargo build

without any luck.

Some guidance would be appreciated. I'm familiar with the command line and C programming, but I've never touched rust or cargo.

@shaneday
Copy link
Author

shaneday commented Mar 1, 2024

I figure I'll drop the 'CARGO_LINKFLAGS="-L/opt/homebrew/lib" cargo build' log here just in case it is needed.

cargo-build.log

@joshurawr
Copy link

same issue, same platform, on macOS 14.4.1, same error and same log output references missing vapoursynth library

@shaneday
Copy link
Author

shaneday commented Jun 4, 2024

I found a workaround. The system "cc" on OSX doesn't include the path where homebrew installs libraries. So, it's up to the user to add that path when needed. You can do so as below. I don't recall where I got the CARGO_LINKFLAGS suggestion in my question. But either LIBRARY_PATH or RUSTFLAGS can do the trick.

brew install vapoursynth
export LIBRARY_PATH="$LIBRARY_PATH:/opt/homebrew/lib"
cargo build --release

or

brew install vapoursynth
export RUSTFLAGS="-L /opt/homebrew/lib"
cargo build --release

Install the new av1an binary

cp target/release/av1an /usr/local/bin/

Note: The above only works after commit "6db3966 Support ffmpeg 7.0", which isn't included in any tagged release yet. So, you'll need to be using the bleeding edge.

@FreezyLemon
Copy link
Contributor

FreezyLemon commented Aug 18, 2024

FYI 0.4.3 was released ~24hrs ago and includes this change. So using nightly releases should no longer be necessary for this.

This could also be handled by Av1an, in the build.rs.
ffmpeg-the-third already does this for the FFmpeg native libraries, it shouldn't be that difficult to do the same for the VS libs here. I'll take a look.

@FreezyLemon
Copy link
Contributor

The linked PR should resolve this problem. It's been merged into vapoursynth-rs but no new release has been made yet.

Until then, a temporary workaround would be using the git version by adding this to Cargo.toml (in root dir, not av1an or av1an-core):

[patch.crates-io]
vapoursynth = { git = "https://github.com/YaLTeR/vapoursynth-rs" }
vapoursynth-sys = { git = "https://github.com/YaLTeR/vapoursynth-rs" }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants