Bug? Rust plugin not using correct pkg-config path

Hello,

I am having an issue building my Rust application as a snap.

  • Native compile using cargo build WORKS
  • Cross compile using cargo build --target arm-unknown-linux-gnueabihf WORKS
  • Native compile using snapcraft WORKS
  • Cross compile using snapcraft --target-arch=armhf BROKEN

The error I am getting is,

error: failed to run custom build command for `gphoto2-sys v0.1.2`
process didn't exit successfully: `/home/erik/Code/otter/parts/camcontrol/build/target/release/build/gphoto2-sys-5c0975ad8cb36438/build-script-build` (exit code: 101)
--- stderr
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: "`\"pkg-config\" \"--libs\" \"--cflags\" \"libgphoto2\"` did not exit successfully: exit code: 1\n--- stderr\nPackage libgphoto2 was not found in the pkg-config search path.\nPerhaps you should add the directory containing `libgphoto2.pc\'\nto the PKG_CONFIG_PATH environment variable\nNo package \'libgphoto2\' found\n"', libcore/result.rs:979:5
note: Run with `RUST_BACKTRACE=1` for a backtrace.

warning: build failed, waiting for other jobs to finish...
error: failed to compile `camcontrol v0.1.0 (file:///home/erik/Code/otter/parts/camcontrol/build)`, intermediate artifacts can be found at `/home/erik/Code/otter/parts/camcontrol/build/target`

Caused by:
  build failed
Failed to run '/home/erik/Code/otter/parts/camcontrol/rust/bin/cargo install -j4 --root /home/erik/Code/otter/parts/camcontrol/install --path /home/erik/Code/otter/parts/camcontrol/build' for 'camcontrol': Exited with code 101.
Verify that the part is using the correct parameters and try again.

Which sounds like it makes sense but if I run pkg-config everything is as expected there.

$ pkg-config --libs --cflags libgphoto2
-I/usr/include/gphoto2 -I/usr/include/libexif -L/usr/lib/arm-linux-gnueabihf -lgphoto2 -lm -lgphoto2_port -lm -lexif

Here is the relevant portion of my snapcraft.yaml file.

parts:
  camcontrol:
    source: .
    plugin: rust
    rust-channel: nightly
    build-packages:
      - on amd64 to armhf: ["libgphoto2-dev:armhf", "v4l-utils:armhf", "libssl-dev:armhf"]
      - else: ["libgphoto2-dev", "v4l-utils", "libssl-dev"]
    stage-packages:
      - on amd64 to armhf: ["libgphoto2-6:armhf", "libv4l-0:armhf", "libssl1.0.0:armhf", "libc6:armhf"]
      - else: ["libgphoto2-6", "libv4l-0", "libssl1.0.0", "libc6"]

I should also note that I am wrapping all these build commands using a makefile which also adds some environment variables.

I have tried adding export TARGET_PKG_CONFIG_PATH=/usr/lib/arm-linux-gnueabihf/pkgconfig to my Makefile and running it in the terminal before invoking the ARM builds but it doesn’t seem to get picked up by snapcraft.

I switched from 18.04 to 16.04 since I was reading that 18.04 is not supported yet and now I have a different problem.

error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/home/erik/Code/otter/parts/camcontrol/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/camcontrol-575544c75558ef05.camcontrol.1nbno4f1-cgu.0.rcgu.o" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/camcontrol-575544c75558ef05.camcontrol.1nbno4f1-cgu.1.rcgu.o" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/camcontrol-575544c75558ef05.camcontrol.1nbno4f1-cgu.10.rcgu.o" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/camcontrol-575544c75558ef05.camcontrol.1nbno4f1-cgu.11.rcgu.o" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/camcontrol-575544c75558ef05.camcontrol.1nbno4f1-cgu.12.rcgu.o" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/camcontrol-575544c75558ef05.camcontrol.1nbno4f1-cgu.13.rcgu.o" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/camcontrol-575544c75558ef05.camcontrol.1nbno4f1-cgu.14.rcgu.o" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/camcontrol-575544c75558ef05.camcontrol.1nbno4f1-cgu.15.rcgu.o" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/camcontrol-575544c75558ef05.camcontrol.1nbno4f1-cgu.2.rcgu.o" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/camcontrol-575544c75558ef05.camcontrol.1nbno4f1-cgu.3.rcgu.o" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/camcontrol-575544c75558ef05.camcontrol.1nbno4f1-cgu.4.rcgu.o" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/camcontrol-575544c75558ef05.camcontrol.1nbno4f1-cgu.5.rcgu.o" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/camcontrol-575544c75558ef05.camcontrol.1nbno4f1-cgu.6.rcgu.o" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/camcontrol-575544c75558ef05.camcontrol.1nbno4f1-cgu.7.rcgu.o" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/camcontrol-575544c75558ef05.camcontrol.1nbno4f1-cgu.8.rcgu.o" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/camcontrol-575544c75558ef05.camcontrol.1nbno4f1-cgu.9.rcgu.o" "-o" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/camcontrol-575544c75558ef05" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/camcontrol-575544c75558ef05.1p687xlcg1sxmq8c.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-Wl,-O1" "-nodefaultlibs" "-L" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps" "-L" "/home/erik/Code/otter/parts/camcontrol/build/target/release/build/backtrace-sys-c303f0defe9adad3/out" "-L" "/usr/lib/arm-linux-gnueabihf" "-L" "/usr/lib/arm-linux-gnueabihf" "-L" "/home/erik/Code/otter/parts/camcontrol/build/target/release/build/sys-info-238742407fb57cb4/out" "-L" "/home/erik/Code/otter/parts/camcontrol/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libimage-f326cce8dcd1d0b3.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libscoped_threadpool-5d82f6e2ad0b5e9f.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libgif-5648b174575861fb.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libcolor_quant-49d1d3dbc51dce47.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/liblzw-f6340d5583a497f3.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libjpeg_decoder-34dae6113f6e354d.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/librayon-1cd545b064ed633a.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libeither-18e67570a49f5486.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/librayon_core-c34ed94d3b30697f.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libcrossbeam_deque-16a77a001cb9e790.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libcrossbeam_epoch-b643b956eea81850.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libcrossbeam_utils-6463c692628ff106.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libpng-4ab3541f648809b0.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libdeflate-602f92d08587019b.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libinflate-4a03114e896ab623.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libbitflags-04863b156278d6c6.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libenum_primitive-39276dfbe912995f.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libnum_traits-03c5905ed5a58538.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libnum_rational-b4204f47a2c05e62.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libnum_iter-02a86e09d8e39519.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libnum_integer-800965b9fdcfd492.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libnum_traits-a1b6df48a9cbfb43.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libreqwest-4560e8fc9196869e.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libuuid-257143a9990592d8.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/librand-06231193f74c1c9a.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libserde_urlencoded-5600d9f851750369.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/liburl-2b59cf7a308ffa31.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libidna-dbf459ca8e692b7e.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libunicode_normalization-97b034d5d7b2f65f.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libunicode_bidi-0210e25ac80f4f39.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libmatches-2ef28bd72c9fab90.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libdtoa-f981cfa240909ef0.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libserde_json-916648f3b7200328.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libitoa-743d739428e9c649.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libryu-76674ca4b87baf5e.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libserde-27c0b9ea8a7cc24f.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libmime_guess-a627124e66dad6a2.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libphf-b68e0bdbf3a1482a.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libphf_shared-3dd1205e6c414557.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libunicase-9f5f11c9b6af2e1b.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libsiphasher-5d6786098dac383e.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/liblibflate-04c55cd9ebd9d76c.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libcrc-d0b9eead923e6f56.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libadler32-0a4e111e79f38327.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libhyper_tls-9fbe376fd5d58793.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libtokio_tls-5f1d6236766acbb3.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libnative_tls-9b362a553ce17c9c.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libopenssl-70da52fe8d2e7c0e.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libopenssl_sys-65bbdad0f1bc963f.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libforeign_types-a2938965892ab332.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libforeign_types_shared-bb11ea431c0a02b0.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libbitflags-2adc3652b5ea6ebb.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libhyper-db66a8d0911fe286.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libwant-fa52ad2fb2a4a295.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libtry_lock-80fdcedd0c46b076.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libtokio_service-15c345476a207284.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libtime-2e6c80e1916d9a87.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/librelay-36444cc9fec2fb4d.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libpercent_encoding-76a7b2ecb0ee3c52.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libmime-c3e32788f881af3a.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libunicase-52667256a1fd96aa.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/liblanguage_tags-7371681e9beca71e.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libhttparse-f5746b025624e3ae.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libencoding_rs-02cbcdab0a8eef7c.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/librscam-86f5b72fb41e683b.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libgphoto-3c6507afe2718e4b.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libgphoto2_sys-bd859a3322e8ec1a.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libregex-634513a66fa25344.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libregex_syntax-49411e4e11821b80.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libsys_info-ac4e3394ff6d6a65.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libgrpc-96edebf0feaa2bcb.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libhttpbis-d915f07f5cb55491.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libtokio_uds-56a03336935894aa.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libtokio_timer-493ad837319d2ba9.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libslab-e451293b579b5d52.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libbase64-5486018d228c0476.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libsafemem-62a44e1c0dd62b27.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libtokio_tls_api-b10f037f5e1b57b4.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libtls_api_stub-b9a4791dcb4603fa.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libtls_api-34de8bcb7c9dbb72.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libtokio_core-641c9d32c8af70b7.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libscoped_tls-b0a893ea9f2689ec.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libtokio-43a64780ccc527d4.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libtokio_uds-33f1179a9349ff6d.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libmio_uds-e8fb037bc245771f.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libtokio_udp-ecf08775bbe9b8c9.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libtokio_tcp-8b31e30095595b2f.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libtokio_timer-1559886d163d566d.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libtokio_reactor-c708767679dffba1.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libparking_lot-e34e5e1fe439ca4f.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libparking_lot_core-7c5446d3e9d16b7b.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libsmallvec-bffee29a78756aba.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libunreachable-86aec39fb58bc2e2.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libvoid-1bff8b196d7b9b24.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/liblock_api-6e925f0152bea34b.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libowning_ref-8f172bbfe45f405d.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libstable_deref_trait-d21c033b19eab963.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libtokio_fs-a73ea3625844380f.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libtokio_threadpool-07089a6a7f0cab83.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/librand-c62039edbd345354.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/librand_core-247abdd1a20263b7.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libcrossbeam_deque-8c9ae41caaa9f383.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libcrossbeam_epoch-49e3e9f3a4c0671b.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libscopeguard-5ea37e0d9ac464ee.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libmemoffset-a1404034f8c99834.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libcrossbeam_utils-73b6ce83987a851b.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libarrayvec-1e896125c1757983.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libnodrop-f2d3128ffe44f111.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libtokio_codec-90210fa0f00f85fe.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libtokio_io-b5cd2a54919c91b2.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libtokio_current_thread-6f0ba82e1090b656.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libtokio_executor-db6110b75c531688.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libmio-4bc8e82e84de5274.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libslab-e8584cdcc52784d3.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libnet2-507c2306683548a3.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/liblazycell-d54b936d4a018aa6.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libfutures_cpupool-c8cf0a999600010f.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libnum_cpus-a495d2bac4c619ce.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libfutures-0edda9ecbb7263c6.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libprotobuf-fbe3584eba069d10.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libbytes-f8b4def42b4245ae.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libiovec-9e89b5123edd2778.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libbyteorder-1d1cc48e8cd37302.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libpretty_env_logger-410467ff2cb9121e.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libenv_logger-5917d340a21d4ad6.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libansi_term-4a275232fb8b29ce.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/liblog-75fabab465b6119b.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/liblog-dedb63c29cf8bd49.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libdotenv-de6da7c63fbaf671.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libregex-6c8b6f00d6d4c372.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libutf8_ranges-5ade38966dcc94b0.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libregex_syntax-c0ae4224b7259431.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libucd_util-276e53ced56e2912.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libthread_local-515a382fb188017c.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/liblazy_static-5892de6a47d01d95.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libaho_corasick-bb74ca981b0d5d35.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libmemchr-0136861035bc3e86.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/liberror_chain-06ac62725f3856f5.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libbacktrace-93ab839891e7d30a.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libbacktrace_sys-770ec14da8033afe.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/librustc_demangle-a66480719740f03a.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/libcfg_if-d68a82abb595c7c9.rlib" "/home/erik/Code/otter/parts/camcontrol/build/target/release/deps/liblibc-5f4864987ca7c324.rlib" "-Wl,--start-group" "/home/erik/Code/otter/parts/camcontrol/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-655d5f84db3a051e.rlib" "/home/erik/Code/otter/parts/camcontrol/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-95c0f1dd86e8e233.rlib" "/home/erik/Code/otter/parts/camcontrol/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc_jemalloc-de503cf9b0d7e617.rlib" "/home/erik/Code/otter/parts/camcontrol/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-425c795a3a26df3e.rlib" "/home/erik/Code/otter/parts/camcontrol/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc_system-40c4752d066ee370.rlib" "/home/erik/Code/otter/parts/camcontrol/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-920922b0ae223d40.rlib" "/home/erik/Code/otter/parts/camcontrol/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-d70748b8c36520dd.rlib" "/home/erik/Code/otter/parts/camcontrol/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-d864294bf62fd356.rlib" "-Wl,--end-group" "/home/erik/Code/otter/parts/camcontrol/rust/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-2433bffc0a96a00d.rlib" "-Wl,-Bdynamic" "-lssl" "-lcrypto" "-lgphoto2" "-lm" "-lgphoto2_port" "-lexif" "-lutil" "-lutil" "-ldl" "-lrt" "-lpthread" "-lpthread" "-lgcc_s" "-lc" "-lm" "-lrt" "-lpthread" "-lutil" "-lutil" "-L/home/erik/Code/otter/parts/camcontrol/install/lib" "-L/home/erik/Code/otter/parts/camcontrol/install/lib/arm-linux-gnueabihf" "-L/home/erik/Code/otter/parts/camcontrol/install/usr/lib/arm-linux-gnueabihf" "-L/home/erik/Code/otter/stage/usr/lib" "-L/home/erik/Code/otter/parts/camcontrol/install/usr/lib"
  = note: /usr/bin/ld: skipping incompatible /usr/lib/arm-linux-gnueabihf/libssl.so when searching for -lssl
          /usr/bin/ld: skipping incompatible /usr/lib/arm-linux-gnueabihf/libssl.a when searching for -lssl
          /usr/bin/ld: skipping incompatible /usr/lib/arm-linux-gnueabihf/libssl.so when searching for -lssl
          /usr/bin/ld: skipping incompatible /usr/lib/arm-linux-gnueabihf/libssl.a when searching for -lssl
          /usr/bin/ld: cannot find -lssl
          /usr/bin/ld: skipping incompatible /usr/lib/arm-linux-gnueabihf/libcrypto.so when searching for -lcrypto
          /usr/bin/ld: skipping incompatible /usr/lib/arm-linux-gnueabihf/libcrypto.a when searching for -lcrypto
          /usr/bin/ld: skipping incompatible /usr/lib/arm-linux-gnueabihf/libcrypto.so when searching for -lcrypto
          /usr/bin/ld: skipping incompatible /usr/lib/arm-linux-gnueabihf/libcrypto.a when searching for -lcrypto
          /usr/bin/ld: cannot find -lcrypto
          /usr/bin/ld: skipping incompatible /usr/lib/arm-linux-gnueabihf/libgphoto2.so when searching for -lgphoto2
          /usr/bin/ld: skipping incompatible /usr/lib/arm-linux-gnueabihf/libgphoto2.a when searching for -lgphoto2
          /usr/bin/ld: skipping incompatible /usr/lib/arm-linux-gnueabihf/libgphoto2.so when searching for -lgphoto2
          /usr/bin/ld: skipping incompatible /usr/lib/arm-linux-gnueabihf/libgphoto2.a when searching for -lgphoto2
          /usr/bin/ld: cannot find -lgphoto2
          /usr/bin/ld: skipping incompatible /usr/lib/arm-linux-gnueabihf/libm.so when searching for -lm
          /usr/bin/ld: skipping incompatible /usr/lib/arm-linux-gnueabihf/libm.a when searching for -lm
          /usr/bin/ld: skipping incompatible /usr/lib/arm-linux-gnueabihf/libm.so when searching for -lm
          /usr/bin/ld: skipping incompatible /usr/lib/arm-linux-gnueabihf/libm.a when searching for -lm
          collect2: error: ld returned 1 exit status
          

error: aborting due to previous error

error: failed to compile `camcontrol v0.1.0 (file:///home/erik/Code/otter/parts/camcontrol/build)`, intermediate artifacts can be found at `/home/erik/Code/otter/parts/camcontrol/build/target`

This time it looks like the snapcraft plugin is ignoring my .cargo/config file which specifies which linker to use and defaulting to cc.

[target.armv7-unknown-linux-gnueabihf]
linker = "/usr/bin/arm-linux-gnueabihf-gcc"

I tracked it down further. When I run snapcraft --target-arch=armhf it tries to run,

/home/erik/Code/otter/parts/camcontrol/rust/bin/cargo install -j4 --root /home/erik/Code/otter/parts/camcontrol/install --path /home/erik/Code/otter/parts/camcontrol/build

And that fails, however if I append the target to the end as argument and run it manually,

/home/erik/Code/otter/parts/camcontrol/rust/bin/cargo install -j4 --root /home/erik/Code/otter/parts/camcontrol/install --path /home/erik/Code/otter/parts/camcontrol/build --target armv7-unknown-linux-gnueabihf

Then that works. Now how can I do that through snapcraft? I was expecting that to be done automatically when I set the arch for the snapcraft command.

Potentially related: https://github.com/kenOfYugen/web_node_rust/issues/1

I have created a fix in my fork here: https://github.com/eberkund/snapcraft/commit/1e44518d9da8fe3750e175cdb68a13187cca9db7

I am now able to cross compile with these changes. The issue is that the Rust plugin works by writing out a config file to build/.cargo/config but for whatever reason this is not picked up by cargo. So I changed the Rust plugin to add the target as a command line arg instead.

hey,

i’m having the same issue :sweat:, would you consider opening a PR with your fix?

cheers,

ryan