mozilla / nixpkgs-mozilla

Mozilla overlay for Nixpkgs.
MIT License
526 stars 129 forks source link

How to use rust overlay with additional targets? #91

Open flosse opened 6 years ago

flosse commented 6 years ago

In my /etc/nixos/configuration.nix I tried

{ config, pkgs, ... }:
let
  # ...
  rustOverlay = import ("${builtins.fetchTarball https://github.com/mozilla/nixpkgs-mozilla/archive/master.tar.gz}/rust-overlay.nix");
  rust = (pkgs.latest.rust.override {
    targets = [ "x86_64-unknown-linux-musl" ];
  });

in {
  # ...
  environment.systemPackages = with pkgs;
    [
      # ...
      rust
    ];

  nixpkgs.config = {
    overlays = [rustOverlay];
  };
}

But I get this error: attribute 'latest' missing, at /etc/nixos/configuration.nix:14:11 Where is my fault?

garbas commented 6 years ago

@flosse use latest.rustChannels.<channel>.rust, example

rust = (pkgs.latest.rustChannels.nightly.rust.override {
    targets = [ "x86_64-unknown-linux-musl" ];
  });

i didn't test this, but it should give you a hint, how to read rust-overlay.nix. please reopen the issue if above solution doesn't solve your problem.

flosse commented 6 years ago

attribute 'latest' missing, at /etc/nixos/configuration.nix:15:11

it seems that the overlay was not applied?

flosse commented 6 years ago

Ok now I can build it. Instead of

nixpkgs.config.overlays = [rustOverlay];

it has to be

nixpkgs.overlays = [rustOverlay];

But running a cargo build --target x86_64-unknown-linux-musl --release leads to

error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/nix/store/gk99p635qd0371l3nhcgdn5b6nvg92im-rust-1.28.0-nightly-2018-05-21-cb20f68d0/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/home/mk/dev/ofdb/target/release/build/rayon-core-b7d2da7cc4c3b3f4/build_script_build-b7d2da7cc4c3b3f4.build_script_build0-afd01dc4b713e70b70e94e985240ed21.rs.rcgu.o" "/home/mk/dev/ofdb/target/release/build/rayon-core-b7d2da7cc4c3b3f4/build_script_build-b7d2da7cc4c3b3f4.build_script_build1-afd01dc4b713e70b70e94e985240ed21.rs.rcgu.o" "-o" "/home/mk/dev/ofdb/target/release/build/rayon-core-b7d2da7cc4c3b3f4/build_script_build-b7d2da7cc4c3b3f4" "/home/mk/dev/ofdb/target/release/build/rayon-core-b7d2da7cc4c3b3f4/build_script_build-b7d2da7cc4c3b3f4.crate.allocator.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-Wl,-O1" "-nodefaultlibs" "-L" "/home/mk/dev/ofdb/target/release/deps" "-L" "/nix/store/gk99p635qd0371l3nhcgdn5b6nvg92im-rust-1.28.0-nightly-2018-05-21-cb20f68d0/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,--start-group" "-Wl,-Bstatic" "/nix/store/gk99p635qd0371l3nhcgdn5b6nvg92im-rust-1.28.0-nightly-2018-05-21-cb20f68d0/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-6851e07ca29e9abd.rlib" "/nix/store/gk99p635qd0371l3nhcgdn5b6nvg92im-rust-1.28.0-nightly-2018-05-21-cb20f68d0/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-f4756b0c7819d088.rlib" "/nix/store/gk99p635qd0371l3nhcgdn5b6nvg92im-rust-1.28.0-nightly-2018-05-21-cb20f68d0/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc_jemalloc-4a4e6b90de4aee3b.rlib" "/nix/store/gk99p635qd0371l3nhcgdn5b6nvg92im-rust-1.28.0-nightly-2018-05-21-cb20f68d0/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-796b548f911787cf.rlib" "/nix/store/gk99p635qd0371l3nhcgdn5b6nvg92im-rust-1.28.0-nightly-2018-05-21-cb20f68d0/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc_system-291834af13e3e380.rlib" "/nix/store/gk99p635qd0371l3nhcgdn5b6nvg92im-rust-1.28.0-nightly-2018-05-21-cb20f68d0/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-53071de1a48897ba.rlib" "/nix/store/gk99p635qd0371l3nhcgdn5b6nvg92im-rust-1.28.0-nightly-2018-05-21-cb20f68d0/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-49b314758875a8f4.rlib" "/nix/store/gk99p635qd0371l3nhcgdn5b6nvg92im-rust-1.28.0-nightly-2018-05-21-cb20f68d0/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-d81c0e46e313811f.rlib" "-Wl,--end-group" "/nix/store/gk99p635qd0371l3nhcgdn5b6nvg92im-rust-1.28.0-nightly-2018-05-21-cb20f68d0/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-e8932e20141db79e.rlib" "-Wl,-Bdynamic" "-l" "dl" "-l" "rt" "-l" "pthread" "-l" "pthread" "-l" "gcc_s" "-l" "c" "-l" "m" "-l" "rt" "-l" "pthread" "-l" "util" "-l" "util"
  = note: /nix/store/2kcrj1ksd2a14bm5sky182fv2xwfhfap-glibc-2.26-131/lib/Scrt1.o: In function `_start':
          /build/glibc-2.26/csu/../sysdeps/x86_64/start.S:101: undefined reference to `__libc_csu_fini'
          /build/glibc-2.26/csu/../sysdeps/x86_64/start.S:102: undefined reference to `__libc_csu_init'
          collect2: Fehler: ld gab 1 als Ende-Status zurück
rushmorem commented 6 years ago

@flosse Can you compile the default hello world program that comes with cargo new for binaries?

flosse commented 6 years ago

Can you compile the default hello world program

yes, that is working :)

I try to compile openfairdb which depends also on sqlite, openssl etc.

So I tried this:

$ nix-shell -p pkgconfig -p sqlite -p openssl -p musl -p musl.dev -p cmake -p zlib 
$ cargo clean
$ cargo build --target x86_64-unknown-linux-musl --release
   Compiling cfg-if v0.1.3
   Compiling nodrop v0.1.12
   Compiling memoffset v0.2.1
   Compiling scopeguard v0.3.3
   Compiling lazy_static v1.0.0
   Compiling rayon-core v1.4.0
   Compiling libc v0.2.41
   Compiling unicode-xid v0.1.0
   Compiling cc v1.0.15
   Compiling pkg-config v0.3.11
   Compiling matches v0.1.6
   Compiling version_check v0.1.3
   Compiling antidote v1.0.0
   Compiling gcc v0.3.54
   Compiling yansi v0.4.0
   Compiling unicode-normalization v0.1.7
error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/nix/store/3al6kyhrcz32qyrc7b5cxja513dk2xw7-rust-1.28.0-nightly-2018-05-21-cb20f68d0/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/home/mk/dev/ofdb/target/release/build/rayon-core-b7d2da7cc4c3b3f4/build_script_build-b7d2da7cc4c3b3f4.build_script_build0-afd01dc4b713e70b70e94e985240ed21.rs.rcgu.o" "/home/mk/dev/ofdb/target/release/build/rayon-core-b7d2da7cc4c3b3f4/build_script_build-b7d2da7cc4c3b3f4.build_script_build1-afd01dc4b713e70b70e94e985240ed21.rs.rcgu.o" "-o" "/home/mk/dev/ofdb/target/release/build/rayon-core-b7d2da7cc4c3b3f4/build_script_build-b7d2da7cc4c3b3f4" "/home/mk/dev/ofdb/target/release/build/rayon-core-b7d2da7cc4c3b3f4/build_script_build-b7d2da7cc4c3b3f4.crate.allocator.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-Wl,-O1" "-nodefaultlibs" "-L" "/home/mk/dev/ofdb/target/release/deps" "-L" "/nix/store/3al6kyhrcz32qyrc7b5cxja513dk2xw7-rust-1.28.0-nightly-2018-05-21-cb20f68d0/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,--start-group" "-Wl,-Bstatic" "/nix/store/3al6kyhrcz32qyrc7b5cxja513dk2xw7-rust-1.28.0-nightly-2018-05-21-cb20f68d0/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-6851e07ca29e9abd.rlib" "/nix/store/3al6kyhrcz32qyrc7b5cxja513dk2xw7-rust-1.28.0-nightly-2018-05-21-cb20f68d0/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-f4756b0c7819d088.rlib" "/nix/store/3al6kyhrcz32qyrc7b5cxja513dk2xw7-rust-1.28.0-nightly-2018-05-21-cb20f68d0/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc_jemalloc-4a4e6b90de4aee3b.rlib" "/nix/store/3al6kyhrcz32qyrc7b5cxja513dk2xw7-rust-1.28.0-nightly-2018-05-21-cb20f68d0/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-796b548f911787cf.rlib" "/nix/store/3al6kyhrcz32qyrc7b5cxja513dk2xw7-rust-1.28.0-nightly-2018-05-21-cb20f68d0/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc_system-291834af13e3e380.rlib" "/nix/store/3al6kyhrcz32qyrc7b5cxja513dk2xw7-rust-1.28.0-nightly-2018-05-21-cb20f68d0/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-53071de1a48897ba.rlib" "/nix/store/3al6kyhrcz32qyrc7b5cxja513dk2xw7-rust-1.28.0-nightly-2018-05-21-cb20f68d0/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-49b314758875a8f4.rlib" "/nix/store/3al6kyhrcz32qyrc7b5cxja513dk2xw7-rust-1.28.0-nightly-2018-05-21-cb20f68d0/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-d81c0e46e313811f.rlib" "-Wl,--end-group" "/nix/store/3al6kyhrcz32qyrc7b5cxja513dk2xw7-rust-1.28.0-nightly-2018-05-21-cb20f68d0/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-e8932e20141db79e.rlib" "-Wl,-Bdynamic" "-l" "dl" "-l" "rt" "-l" "pthread" "-l" "pthread" "-l" "gcc_s" "-l" "c" "-l" "m" "-l" "rt" "-l" "pthread" "-l" "util" "-l" "util"
  = note: /nix/store/2kcrj1ksd2a14bm5sky182fv2xwfhfap-glibc-2.26-131/lib/Scrt1.o: In function `_start':
          /build/glibc-2.26/csu/../sysdeps/x86_64/start.S:101: undefined reference to `__libc_csu_fini'
          /build/glibc-2.26/csu/../sysdeps/x86_64/start.S:102: undefined reference to `__libc_csu_init'
          collect2: Fehler: ld gab 1 als Ende-Status zurück

error: aborting due to previous error

error: Could not compile `rayon-core`.
warning: build failed, waiting for other jobs to finish...
rushmorem commented 6 years ago

I noticed that same issue with rayon-core v1.4.0 earlier when trying to compile one of my crates for the musl target but it went away after cargo update. Now it builds fine using the same nightly version.

flosse commented 6 years ago

cargo update increases the problem, now there is an additional error: Could not compile 'serde'

flosse commented 6 years ago

I tried several things but still without success :( Running a virtual machine with Ubuntu is my current workaround but it's quite annoying :-\

flosse commented 6 years ago

Here are the detailed steps to reproduce:

$ nixos-version
18.03.132500.2f6440eb09b (Impala)
$ git clone https://github.com/flosse/openfairdb
$ cd openfairdb/
$ nix-shell --pure overlay-dev-env.nix
$ rustc -V
rustc 1.28.0-nightly (5bf68db6e 2018-05-28)
$ cargo clean
$ cargo update
$ cargo build --target x86_64-unknown-linux-musl --release

I used the following overlay-dev-env-nix (its not in the repo):

let
  moz_overlay = import (builtins.fetchTarball https://github.com/mozilla/nixpkgs-mozilla/archive/master.tar.gz);
  pkgs = import <nixpkgs> { overlays = [ moz_overlay ]; };
  channel = pkgs.rustChannelOf {
     date = "2018-05-29";
     channel = "nightly";
  };
  rust = (channel.rust.override {
    targets = [ "x86_64-unknown-linux-musl" ];
  });
in
  with pkgs;
  stdenv.mkDerivation {
    name = "rust-ofdb-dev-env";
    buildInputs = [
      rust
      musl
      musl.dev
      sqlite
      sqlite.dev
      cmake
      pkgconfig
    ];
    SQLITE3_DIR = "${sqlite.dev}";
    SQLITE3_LIB_DIR = "${sqlite.out}/lib";
    SQLITE3_INCLUDE_LIB_DIR = "${sqlite.out}/include";
}
nagisa commented 6 years ago

You can do this now by using rustChannelOfTargets "nightly" null ["target1", "target2"].

vandenoever commented 5 years ago

Could someone explain how to use this overlay to compile WASM from Rust in NixOS in simple steps? I've installed $HOME/.config/nixpkgs/overlays/rust-overlay.nix and can compile WASM with these steps, but it fails at the final step:

$ nix-shell -p rustChannels.stable.cargo rustChannels.stable.rustc
$ RUSTFLAGS="" cargo build --target wasm32-unknown-unknown
   Compiling wasm-bindgen v0.2.29                                            
error[E0463]: can't find crate for `core`                                    
  |                                                                          
  = note: the `wasm32-unknown-unknown` target may not be installed           

error: aborting due to previous error                                        

For more information about this error, try `rustc --explain E0463`.          
error: Could not compile `wasm-bindgen`.                                     

To learn more, run the command again with --verbose.
timbess commented 5 years ago

I'm getting a similar error while attempting to compile with musl target:

default.nix

let

moz_overlay = import (builtins.fetchTarball https://github.com/mozilla/nixpkgs-mozilla/archive/master.tar.gz);
nixpkgs = import <nixpkgs> { overlays = [ moz_overlay ]; };
stableRust = nixpkgs.latest.rustChannels.stable.rust.override {
    targets = [ "x86_64-unknown-linux-gnu" "x86_64-unknown-linux-musl" ];
};
stableCargo = nixpkgs.latest.rustChannels.stable.cargo;
buildRustPackage = nixpkgs.callPackage (import <nixpkgs/pkgs/build-support/rust>) {
  rust = {
    rustc = stableRust;
    cargo = stableCargo;
  };
};

derivation = { stdenv, rustPlatform, buildRustPackage, llvmPackages_39, rust-bindgen, ... }:
  buildRustPackage rec {
  name = "foo-package";
  version = "0.1.0";

  src = ./.;

  libclang = llvmPackages_39.libclang.lib;
  clang = llvmPackages_39.clang;

  buildInputs = [ libclang rust-bindgen ];
  propagatedBuildInputs = [ clang ];

  configurePhase = ''
    export LIBCLANG_PATH=${libclang}/lib
  '';

  cargoSha256 = "0cwc4m5wfaf5nn4gz4pvfhbc816xv0v9w6vy8y190xjllyv3rr70";

  meta = with stdenv.lib; {
    description = "foo-package";
    license = licenses.mpl20;
    maintainers = with maintainers; [ tdbgamer ];
  };

  shellHook = ''
    export LIBCLANG_PATH=${libclang}/lib
  '';
};

in

  nixpkgs.callPackage derivation {
    inherit buildRustPackage;
    rust = stableRust;
    cargo = stableCargo;
  }

The output:

[nix-shell:~/src/tim]$ cargo build --target x86_64-unknown-linux-musl
Compiling foo-package v0.1.0 (/home/tbess/src/foo-package)
error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-Wl,--eh-frame-hdr" "-Wl,-(" "-m64" "-nostdlib" "/nix/store/1y4rdlkn82wfq6dkv7p69hadkdi1vzr4-rust-1.31.1-2018-12-18-b6c32da9b/lib/rustlib/x86_64-unknown-linux-musl/lib/crt1.o" "/nix/store/1y4rdlkn82wfq6dkv7p69hadkdi1vzr4-rust-1.31.1-2018-12-18-b6c32da9b/lib/rustlib/x86_64-unknown-linux-musl/lib/crti.o" "-L" "/nix/store/1y4rdlkn82wfq6dkv7p69hadkdi1vzr4-rust-1.31.1-2018-12-18-b6c32da9b/lib/rustlib/x86_64-unknown-linux-musl/lib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.12fsgcdf5xnmqkmg.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.16cxbycxyoseol3n.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.17n9962hv8f36dr3.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.19v3fse28da3kzax.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.1barhd6k8e1ekbg8.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.1kclo7ptsbyqmptz.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.1mo0q9xmz3ittoek.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.1oy92u96wnw1zqw1.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.1oyy5xaawnmt5wqt.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.1ra2jozjzv044jnc.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.1uczn18qwvt17bx4.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.1wrwsm1e15ya710e.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.1yjoqtvmejbzhiw7.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.22uw94c4j3qeedc4.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.2ai8mmfxxxs2mxh0.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.2au0wmi42w0jyewt.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.2burg7nfoan8nu5p.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.2f0xxo0sj526amlv.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.2j6xi02iqt83qfxe.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.2jgavptu1g6jrkrj.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.2mybfss6xlmg209v.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.2nqwxcss3d9vjnew.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.2o61572kousxu6ui.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.31c8wtd1mgdcaqzk.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.32h9dkkj180f8f04.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.36ly8mfo0845cv6g.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.36qt447uhkgcmi3c.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.3fr3t0a3rizbotlg.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.3hbho43i0f9k6a1k.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.3l52gnyvzc8q3hax.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.3qdm4bc4fxax1dzp.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.3riyxcg9nqxll6f6.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.3sohq9okd63oafay.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.3u0zc528w1x42z67.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.3ucqwvl3upg5d1zu.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.3ueuywdfxh9r6osa.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.40ewg5mgj2j259la.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.43fvqd8e2uf0sqpy.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.447ejqevpjf9gvhb.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.46rojnp6tz7h2n1z.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.47kvpcbn61h7z818.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.4duvp5fd3l1n09mo.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.4ikj01vhiw1ckjzd.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.4pmenrjd8g8vtoih.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.4s6xjt2s9o00f8lr.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.4skvopzxc9npabmh.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.4szf0chyn0hwibv5.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.4tdan3gyrz6l49fy.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.4xbxv90ppb1sqej.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.4yyh5v0xqajm9jzj.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.599w4c256nmmdeqy.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.5a52q2ddz4jx3io0.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.5uxz5e6m1vzixyv.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.c4tj62v7rubuc0l.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.hwze9ugjjwp3aur.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.i78kgbjqesa7mu8.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.m8rakj3jvvrm5mg.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.mvc303cc4w0vmfs.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.nifqwo78ty2qt91.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.nj48mt83xcghl9b.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.nttribdfa05ctec.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.on4hb11ht1dept1.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.san4cd1grj1mkx4.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.v8s1hbsfc6q3sc8.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.vtin6fqun8oifly.rcgu.o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.xqks8qly8wtocgj.rcgu.o" "-o" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/foo-package-d4d338f9ab7a5c17.5cvh25e6auxoftmj.rcgu.o" "-Wl,--gc-sections" "-no-pie" "-Wl,-zrelro" "-Wl,-znow" "-nodefaultlibs" "-L" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps" "-L" "/home/tbess/src/foo-package/target/debug/deps" "-L" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/build/backtrace-sys-3cfb8d5dc5f4fc41/out" "-L" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/build/libpg_query-sys-e9c43763c9e77cf3/out/libpg_query" "-L" "/nix/store/1y4rdlkn82wfq6dkv7p69hadkdi1vzr4-rust-1.31.1-2018-12-18-b6c32da9b/lib/rustlib/x86_64-unknown-linux-musl/lib" "-Wl,-Bstatic" "/nix/store/5f1diyzdp535w3b8jpjp9db6qwmvc7ll-rust-std/lib/rustlib/x86_64-unknown-linux-musl/lib/liballoc_jemalloc-daf4b30ba0aa7eb6.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libfoo-package-3d761339ee90b05c.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/liblibpg_query-a75ce5d94d5659c5.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libserde_json-4546dd31b955ff4a.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libryu-62ce123ff15b88b6.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libitoa-d6795f6dccb0ec90.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libserde-942a6c0db87389e2.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libquicli-8f8aa84aae8758c5.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libexitfailure-499c961a2b117d5d.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/librayon-4c74f844c31bde2f.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libeither-b7c39e308dae8c08.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/librayon_core-8256d4a2d8497a0d.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libnum_cpus-26cd56987111a237.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libcrossbeam_deque-eca307c019ba08a7.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libcrossbeam_epoch-16db1a80a93fbb31.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libcrossbeam_utils-6ba00254217a34e4.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libclap_verbosity_flag-6cc4615ca3bd3a3b.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libenv_logger-c24528491b15651a.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libhumantime-587a3f64c2d018e0.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libquick_error-9d5363c460557c7f.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libtermcolor-ceb6ac954018e82b.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libglobwalk-f06041c907eafc39.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libignore-34236e5a4031f69f.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libwalkdir-b5edbe628d6fa2ed.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libsame_file-d214b48828062f82.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libglobset-04ad7fc0bce8d1a5.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libregex-db829d7c84c9eed8.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libutf8_ranges-ef1e8bc03d6aedb3.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libregex_syntax-f4b35d99bc11840b.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libucd_util-59498ee8cc928093.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libthread_local-25ebbe0584c724e8.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/liblog-fe15b35da0dc3ebe.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libfnv-4e3e0a48235ae458.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libaho_corasick-359e6824d4ed197e.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libmemchr-3e681b76ef82279c.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libcrossbeam_channel-6d9d72edd7122227.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libparking_lot-fd2288be21ba1e51.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libparking_lot_core-9c1d917c5f1cba05.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libsmallvec-23f888168bc3df14.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libunreachable-8e1c8d9015c7f6da.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libvoid-c89b4d8d5f4ffed8.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/librand-4c6d2c9ce2e36e6c.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/librand_xorshift-881ad314012cf69f.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/librand_pcg-8d23a7d2b0b9a978.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/librand_hc-4c8babb0f6dd198c.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/librand_chacha-22e72ee053923e56.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/librand_isaac-3d74c7d155763354.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/librand_core-af5ff114bcd7d580.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/liblock_api-576636fbab7e221b.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libowning_ref-775a54564be7e984.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libstable_deref_trait-5102c8c48ee46160.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libcrossbeam_epoch-589f554f9cdf3c12.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/liblazy_static-29999fb99158c51a.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libscopeguard-409fa5a85f80f8b5.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libmemoffset-19f7eadc94009acf.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libcrossbeam_utils-aa6926b844a17e3e.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libarrayvec-9d7dabfaef20a9a2.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libnodrop-3c2b4ea8ea959f63.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libremove_dir_all-015c0beef79257d3.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libfailure-5dc4462b7ce18d62.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libbacktrace-52fea4d90fc5d265.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libbacktrace_sys-35463d497c4f16b5.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/librustc_demangle-6567dcb12bb30866.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libcfg_if-e5c77d455d1e3462.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libstructopt-293b53327ba55b19.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libclap-8f52d924155175e3.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libvec_map-ebe208df55ced208.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libtextwrap-a539cd0d6364041d.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libunicode_width-b88dff9a42af1818.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libstrsim-3419a621d7e5ee7c.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libbitflags-65cfda72a6f0e70c.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libatty-b6aadc17e7b96816.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/liblibc-111bc4d118e0e3c8.rlib" "/home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/libansi_term-3b002c6f9e08e2ee.rlib" "/nix/store/5f1diyzdp535w3b8jpjp9db6qwmvc7ll-rust-std/lib/rustlib/x86_64-unknown-linux-musl/lib/libstd-cd33df8f773a8d34.rlib" "/nix/store/5f1diyzdp535w3b8jpjp9db6qwmvc7ll-rust-std/lib/rustlib/x86_64-unknown-linux-musl/lib/libpanic_unwind-b4f2368c97086610.rlib" "/nix/store/5f1diyzdp535w3b8jpjp9db6qwmvc7ll-rust-std/lib/rustlib/x86_64-unknown-linux-musl/lib/libunwind-4c51ac82f70822c1.rlib" "/nix/store/5f1diyzdp535w3b8jpjp9db6qwmvc7ll-rust-std/lib/rustlib/x86_64-unknown-linux-musl/lib/liballoc_system-34fc26c16207806e.rlib" "/nix/store/5f1diyzdp535w3b8jpjp9db6qwmvc7ll-rust-std/lib/rustlib/x86_64-unknown-linux-musl/lib/liblibc-d0b3565c39ede68e.rlib" "/nix/store/5f1diyzdp535w3b8jpjp9db6qwmvc7ll-rust-std/lib/rustlib/x86_64-unknown-linux-musl/lib/liballoc-ac8a19e2dea4f5a1.rlib" "/nix/store/5f1diyzdp535w3b8jpjp9db6qwmvc7ll-rust-std/lib/rustlib/x86_64-unknown-linux-musl/lib/libcore-bc99d396b91fe14a.rlib" "/nix/store/5f1diyzdp535w3b8jpjp9db6qwmvc7ll-rust-std/lib/rustlib/x86_64-unknown-linux-musl/lib/libcompiler_builtins-5f64e7823d30511e.rlib" "-static" "-Wl,-Bdynamic" "/nix/store/1y4rdlkn82wfq6dkv7p69hadkdi1vzr4-rust-1.31.1-2018-12-18-b6c32da9b/lib/rustlib/x86_64-unknown-linux-musl/lib/crtn.o" "-Wl,-)"
  = note: /home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/liblibpg_query-a75ce5d94d5659c5.rlib(src_backend_utils_mmgr_mcxt.o): In function `fprintf':
          /nix/store/f3l058q0zvnzr7nvl0jj789pyvljqadw-glibc-2.27-dev/include/bits/stdio2.h:97: undefined reference to `__fprintf_chk'
          /nix/store/f3l058q0zvnzr7nvl0jj789pyvljqadw-glibc-2.27-dev/include/bits/stdio2.h:97: undefined reference to `__fprintf_chk'
          /nix/store/f3l058q0zvnzr7nvl0jj789pyvljqadw-glibc-2.27-dev/include/bits/stdio2.h:97: undefined reference to `__fprintf_chk'
          /home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/liblibpg_query-a75ce5d94d5659c5.rlib(src_backend_utils_error_elog.o): In function `snprintf':
          /nix/store/f3l058q0zvnzr7nvl0jj789pyvljqadw-glibc-2.27-dev/include/bits/stdio2.h:64: undefined reference to `__snprintf_chk'
          /home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/liblibpg_query-a75ce5d94d5659c5.rlib(src_backend_utils_error_elog.o): In function `vfprintf':
          /nix/store/f3l058q0zvnzr7nvl0jj789pyvljqadw-glibc-2.27-dev/include/bits/stdio2.h:127: undefined reference to `__vfprintf_chk'
          /home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/liblibpg_query-a75ce5d94d5659c5.rlib(src_backend_utils_error_elog.o): In function `pg_re_throw':
          /home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/build/libpg_query-sys-e9c43763c9e77cf3/out/libpg_query/src/postgres/src_backend_utils_error_elog.c:1382: undefined reference to `__longjmp_chk'
          /home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/liblibpg_query-a75ce5d94d5659c5.rlib(src_backend_utils_mmgr_aset.o): In function `fprintf':
          /nix/store/f3l058q0zvnzr7nvl0jj789pyvljqadw-glibc-2.27-dev/include/bits/stdio2.h:97: undefined reference to `__fprintf_chk'
          /home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/liblibpg_query-a75ce5d94d5659c5.rlib(src_backend_utils_mb_wchar.o): In function `sprintf':
          /nix/store/f3l058q0zvnzr7nvl0jj789pyvljqadw-glibc-2.27-dev/include/bits/stdio2.h:33: undefined reference to `__sprintf_chk'
          /nix/store/f3l058q0zvnzr7nvl0jj789pyvljqadw-glibc-2.27-dev/include/bits/stdio2.h:33: undefined reference to `__sprintf_chk'
          /home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/liblibpg_query-a75ce5d94d5659c5.rlib(src_common_psprintf.o): In function `vsnprintf':
          /nix/store/f3l058q0zvnzr7nvl0jj789pyvljqadw-glibc-2.27-dev/include/bits/stdio2.h:77: undefined reference to `__vsnprintf_chk'
          /home/tbess/src/foo-package/target/x86_64-unknown-linux-musl/debug/deps/liblibpg_query-a75ce5d94d5659c5.rlib(src_backend_parser_scansup.o): In function `memcpy':
          /nix/store/f3l058q0zvnzr7nvl0jj789pyvljqadw-glibc-2.27-dev/include/bits/string_fortified.h:34: undefined reference to `__memcpy_chk'
          collect2: error: ld returned 1 exit status

error: aborting due to previous error

error: Could not compile `foo-package`.

To learn more, run the command again with --verbose.
haslersn commented 5 years ago

I got cross compilation to work in a nix-shell using the following configuration:

default.nix:

{ pkgsPath ? <nixpkgs>, crossSystem ? null }:

let
    mozOverlay = import (
        builtins.fetchTarball https://github.com/mozilla/nixpkgs-mozilla/archive/master.tar.gz
    );
    pkgs = import pkgsPath {
        overlays = [ mozOverlay ];
        inherit crossSystem;
    };
    targets = [ pkgs.stdenv.targetPlatform.config ];
    my_openssl = pkgs.openssl_1_1 or pkgs.openssl_1_1_0;
in

with pkgs;

stdenv.mkDerivation {
    name = "castle";

    # build time dependencies targeting the build platform
    depsBuildBuild = [
        buildPackages.stdenv.cc
    ];
    HOST_CC = "cc";

    # build time dependencies targeting the host platform
    nativeBuildInputs = [
        (buildPackages.buildPackages.latest.rustChannels.nightly.rust.override { inherit targets; })
        buildPackages.buildPackages.rustfmt
    ];
    shellHook = ''
        export RUSTFLAGS="-C linker=$CC"
    '';
    CARGO_BUILD_TARGET = targets;

    # run time dependencies
    OPENSSL_DIR = my_openssl.dev;
    OPENSSL_LIB_DIR = "${my_openssl.out}/lib";
}

aarch64.nix:

import ./default.nix {
    crossSystem = (import <nixpkgs> {}).lib.systems.examples.aarch64-multiplatform;
}

For normal compilation execute:

nix-shell
cargo build

For cross-compilation to aarch64 execute:

nix-shell aarch64.nix
cargo build
flosse commented 5 years ago

This does not work for me :(

nix-shell musl64.nix
cargo build
Error loading shared library libgcc_s.so.1: No such file or directory (needed by /nix/store/0k2y2dsafmcwpl7gss07a9kn3bga37bb-rust-1.34.0-nightly-2019-02-26-02c4c2892-x86_64-unknown-linux-musl/bin/cargo)
Error loading shared library ld-linux-x86-64.so.2: No such file or directory (needed by /nix/store/0k2y2dsafmcwpl7gss07a9kn3bga37bb-rust-1.34.0-nightly-2019-02-26-02c4c2892-x86_64-unknown-linux-musl/bin/cargo)
Error relocating /nix/store/0k2y2dsafmcwpl7gss07a9kn3bga37bb-rust-1.34.0-nightly-2019-02-26-02c4c2892-x86_64-unknown-linux-musl/bin/cargo: __rawmemchr: symbol not found
Error relocating /nix/store/0k2y2dsafmcwpl7gss07a9kn3bga37bb-rust-1.34.0-nightly-2019-02-26-02c4c2892-x86_64-unknown-linux-musl/bin/cargo: _Unwind_Resume: symbol not found
Error relocating /nix/store/0k2y2dsafmcwpl7gss07a9kn3bga37bb-rust-1.34.0-nightly-2019-02-26-02c4c2892-x86_64-unknown-linux-musl/bin/cargo: __register_atfork: symbol not found
Error relocating /nix/store/0k2y2dsafmcwpl7gss07a9kn3bga37bb-rust-1.34.0-nightly-2019-02-26-02c4c2892-x86_64-unknown-linux-musl/bin/cargo: _Unwind_GetIPInfo: symbol not found
Error relocating /nix/store/0k2y2dsafmcwpl7gss07a9kn3bga37bb-rust-1.34.0-nightly-2019-02-26-02c4c2892-x86_64-unknown-linux-musl/bin/cargo: __res_init: symbol not found
Error relocating /nix/store/0k2y2dsafmcwpl7gss07a9kn3bga37bb-rust-1.34.0-nightly-2019-02-26-02c4c2892-x86_64-unknown-linux-musl/bin/cargo: _Unwind_GetDataRelBase: symbol not found
Error relocating /nix/store/0k2y2dsafmcwpl7gss07a9kn3bga37bb-rust-1.34.0-nightly-2019-02-26-02c4c2892-x86_64-unknown-linux-musl/bin/cargo: _Unwind_GetRegionStart: symbol not found
Error relocating /nix/store/0k2y2dsafmcwpl7gss07a9kn3bga37bb-rust-1.34.0-nightly-2019-02-26-02c4c2892-x86_64-unknown-linux-musl/bin/cargo: _Unwind_SetGR: symbol not found
Error relocating /nix/store/0k2y2dsafmcwpl7gss07a9kn3bga37bb-rust-1.34.0-nightly-2019-02-26-02c4c2892-x86_64-unknown-linux-musl/bin/cargo: _Unwind_FindEnclosingFunction: symbol not found
Error relocating /nix/store/0k2y2dsafmcwpl7gss07a9kn3bga37bb-rust-1.34.0-nightly-2019-02-26-02c4c2892-x86_64-unknown-linux-musl/bin/cargo: _Unwind_GetTextRelBase: symbol not found
Error relocating /nix/store/0k2y2dsafmcwpl7gss07a9kn3bga37bb-rust-1.34.0-nightly-2019-02-26-02c4c2892-x86_64-unknown-linux-musl/bin/cargo: _Unwind_DeleteException: symbol not found
Error relocating /nix/store/0k2y2dsafmcwpl7gss07a9kn3bga37bb-rust-1.34.0-nightly-2019-02-26-02c4c2892-x86_64-unknown-linux-musl/bin/cargo: _Unwind_RaiseException: symbol not found
Error relocating /nix/store/0k2y2dsafmcwpl7gss07a9kn3bga37bb-rust-1.34.0-nightly-2019-02-26-02c4c2892-x86_64-unknown-linux-musl/bin/cargo: _Unwind_Backtrace: symbol not found
Error relocating /nix/store/0k2y2dsafmcwpl7gss07a9kn3bga37bb-rust-1.34.0-nightly-2019-02-26-02c4c2892-x86_64-unknown-linux-musl/bin/cargo: _Unwind_GetLanguageSpecificData: symbol not found
Error relocating /nix/store/0k2y2dsafmcwpl7gss07a9kn3bga37bb-rust-1.34.0-nightly-2019-02-26-02c4c2892-x86_64-unknown-linux-musl/bin/cargo: _Unwind_SetIP: symbol not found
haslersn commented 5 years ago

This does not work for me :(

Weird, compiling to musl64 works for me (using crossSystem = (import <nixpkgs> {}).lib.systems.examples.musl64;). What do your .nix files look like?

apeyroux commented 5 years ago

@haslersn It compiles but for me it doesn't make a static binary (with openssl depends).

ldd target/x86_64-unknown-linux-musl/release/mqtt-webhook
        linux-vdso.so.1 (0x00007ffdff5cc000)
        libssl.so.1.1 => /nix/store/3x85azr8a9i2vl096ix0yqb6k7pqmcnh-openssl-1.1.1b-x86_64-unknown-linux-musl/lib/libssl.so.1.1 (0x00007ff62dad9000)
        libcrypto.so.1.1 => /nix/store/3x85azr8a9i2vl096ix0yqb6k7pqmcnh-openssl-1.1.1b-x86_64-unknown-linux-musl/lib/libcrypto.so.1.1 (0x00007ff62d852000)
        libc.so => /nix/store/3vp3w8wf66357w04lwq7pcr40vlrwqfg-musl-1.1.21-x86_64-unknown-linux-musl/lib/libc.so (0x00007ff62d7a5000)

I tried OPENSSL_STATIC=1; but I have this error with cargo build --target x86_64-unknown-linux-musl --release:

error: could not find native static libraryssl, perhaps an -L flag is missing?

Thank you again for your feedback.

apeyroux commented 5 years ago

It works with this example

with import <nixpkgs> {};

let
  rust = (rustChannels.nightly.rust.override {
    targets = [
      "x86_64-unknown-linux-musl"
    ];
  });
in pkgs.mkShell {
  name = "env-mqtt-webhook";
  buildInputs = [
    rust
  ];

  PKG_CONFIG_ALLOW_CROSS=true;
  PKG_CONFIG_ALL_STATIC=true;
  LIBZ_SYS_STATIC=1;

  OPENSSL_STATIC=1;
  OPENSSL_DIR = pkgsStatic.openssl.dev;
  OPENSSL_LIB_DIR = "${pkgsStatic.openssl.out}/lib";
}

cargo build --target x86_64-unknown-linux-musl --release

Rizary commented 3 years ago

@apeyroux can you build a static rust package using buildRustPackage with the rust and cargo taken from this overlay?