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

Rust doesn't compile openssl library on MacOSX #2167

Open
ineiti opened this issue Jun 21, 2024 · 3 comments
Open

Rust doesn't compile openssl library on MacOSX #2167

ineiti opened this issue Jun 21, 2024 · 3 comments
Labels
bug Something isn't working triage Issue needs triage

Comments

@ineiti
Copy link

ineiti commented Jun 21, 2024

What happened?

I have a rust project which uses openssl. Now I would like to have a reproducible build using devbox. But when I use rustup from devbox, the compilation fails at linking time.

I tried the same repo with flox and a locally installed rust, which compiles and runs fine!

Steps to reproduce

Clone the repo, start the shell, and compile parts of it:

git clone https://github.com/ineiti/fledger
cd fledger
devbox shell
cd cli/fledger
cargo build

The final output of the linker is this:

  = note: ld: framework not found Security
          clang-11: error: linker command failed with exit code 1 (use -v to see invocation)

Command

shell

devbox.json

{
  "$schema": "https://raw.githubusercontent.com/jetify-com/devbox/0.10.7/.schema/devbox.schema.json",
  "packages": [
    "which@latest",
    "rustup@latest",
    "libiconv@latest",
    "openssl@latest",
    "vscode",
  ],
  "shell": {
    "init_hook": [
      "if [ ! -d $RUSTUP_HOME/toolchains -o ! -d $RUSTUP_HOME/toolchains/stable ]; then rustup default stable; fi",
    ],
    "scripts": {
      "test": [
        "make cargo_test",
      ],
    },
  },
}

Devbox version

0.11.1

Nix version

nix (Nix) 2.23.0

What system does this bug occur on?

macOS (Apple Silicon)

Debug logs

No response

@ineiti ineiti added bug Something isn't working triage Issue needs triage labels Jun 21, 2024
@savil
Copy link
Collaborator

savil commented Jun 21, 2024

@ineiti I'd suggest running devbox add "darwin.apple_sdk.frameworks.Security" --platform=x86_64-darwin,aarch64-darwin.

With that, I am able to run cargo build on my x86_64-darwin machine.

Let us know if that does, or does not, work for you?

@ineiti
Copy link
Author

ineiti commented Jun 22, 2024

@savil Thanks a lot, that solves the problem and it compiles fine now! I did not know about this package, and I did spend 30 minutes on Google with the error message before opening this issue. How could I have discovered this?

Some questions:

  • Why does flox manage to compile this by default? Is it because it doesn't include clang? I checked which ar, and flox gives the /usr/bin/ar, while devbox gives it's own ar in a clang subdirectory.
  • Should devbox have some of these packages as default?
  • Do you want me to close the issue? Or is it worth investigating this further?

@savil
Copy link
Collaborator

savil commented Jun 24, 2024

Those are great questions. I think Devbox should do better here, and in particular since this is a bit of an FAQ for Rust with Macs, we should make it Just Work ™️ . Lets leave this task open for a bit. I'll look into it more this week.

There are some considerations in my mind:

  • is it a good idea to use the nix packaged Security Framework instead of relying on the library in your MacOS? I'd like to look into how frequently and quickly that package is updated. I am wondering if there is a reproducibility versus security tradeoff here.
  • can we modify Devbox's Rust plugin to guide users? Hopefully, this can have users avoid the experience you had.

To your questions:

  • Not super familiar with the internals of flox (they are a GPL project, so I'll have to tread carefully there), but it sounds like they are relying on the native MacOS environment. This can hurt reproducibility since a colleague of yours on Linux may get a different set of tools, but then again, at least it worked for you so that's better than your Devbox experience.
  • Yes IMO, see my second consideration above.
  • Not yet :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working triage Issue needs triage
Development

No branches or pull requests

2 participants