onelson / jq-rs

Rust crate to provide programmatic access to `jq`.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Error on cargo install

mathiaHT opened this issue · comments

Hi I am unable to install a package whith Cargo.toml:

[features]
bundled = ["jq-sys/bundled"]

[dependencies]
amqp_worker = "0.9"
futures = "^0.1"
jq-rs = "0.4.1"
jq-sys = "0.2.2"
lapin-futures = "^0.28"
log = "^0.4"
semver = "^0.9"
serde = "^1.0"
serde_json = "^1.0"
simple_logger = "1.0.1"

[build-dependencies]
built = "0.4"

And Dockerfile:

FROM rust:1.41-stretch as builder

ADD . /src
WORKDIR /src

RUN apt-get update && apt install -y  \
        gcc \
        make \
        autotools-dev \
        dh-autoreconf \
        libjq1 \
        libjq-dev \
        libonig4 \
        libonig-dev 
        
ENV JQ_LIB_DIR=/usr/bin/jq

RUN cargo build --verbose --release --features "bundled" && \
    cargo install --path .

I obtain:

error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "/usr/local/rustup/toolchains/1.41.1-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/src/target/release/deps/rs_json_transform_worker-f712a19b63284dec.rs_json_transform_worker.1jydm9k0-cgu.0.rcgu.o" "/src/target/release/deps/rs_json_transform_worker-f712a19b63284dec.rs_json_transform_worker.1jydm9k0-cgu.1.rcgu.o" "/src/target/release/deps/rs_json_transform_worker-f712a19b63284dec.rs_json_transform_worker.1jydm9k0-cgu.10.rcgu.o" "/src/target/release/deps/rs_json_transform_worker-f712a19b63284dec.rs_json_transform_worker.1jydm9k0-cgu.11.rcgu.o" "/src/target/release/deps/rs_json_transform_worker-f712a19b63284dec.rs_json_transform_worker.1jydm9k0-cgu.12.rcgu.o" "/src/target/release/deps/rs_json_transform_worker-f712a19b63284dec.rs_json_transform_worker.1jydm9k0-cgu.13.rcgu.o" "/src/target/release/deps/rs_json_transform_worker-f712a19b63284dec.rs_json_transform_worker.1jydm9k0-cgu.14.rcgu.o" "/src/target/release/deps/rs_json_transform_worker-f712a19b63284dec.rs_json_transform_worker.1jydm9k0-cgu.15.rcgu.o" "/src/target/release/deps/rs_json_transform_worker-f712a19b63284dec.rs_json_transform_worker.1jydm9k0-cgu.2.rcgu.o" "/src/target/release/deps/rs_json_transform_worker-f712a19b63284dec.rs_json_transform_worker.1jydm9k0-cgu.3.rcgu.o" "/src/target/release/deps/rs_json_transform_worker-f712a19b63284dec.rs_json_transform_worker.1jydm9k0-cgu.4.rcgu.o" "/src/target/release/deps/rs_json_transform_worker-f712a19b63284dec.rs_json_transform_worker.1jydm9k0-cgu.5.rcgu.o" "/src/target/release/deps/rs_json_transform_worker-f712a19b63284dec.rs_json_transform_worker.1jydm9k0-cgu.6.rcgu.o" "/src/target/release/deps/rs_json_transform_worker-f712a19b63284dec.rs_json_transform_worker.1jydm9k0-cgu.7.rcgu.o" "/src/target/release/deps/rs_json_transform_worker-f712a19b63284dec.rs_json_transform_worker.1jydm9k0-cgu.8.rcgu.o" "/src/target/release/deps/rs_json_transform_worker-f712a19b63284dec.rs_json_transform_worker.1jydm9k0-cgu.9.rcgu.o" "-o" "/src/target/release/deps/rs_json_transform_worker-f712a19b63284dec" "/src/target/release/deps/rs_json_transform_worker-f712a19b63284dec.149c2c2sbvffvqyp.rcgu.o" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro" "-Wl,-znow" "-Wl,-O1" "-nodefaultlibs" "-L" "/src/target/release/deps" "-L" "/src/target/release/build/backtrace-sys-f92faf99cb28a25f/out" "-L" "/usr/bin/jq" "-L" "/usr/local/rustup/toolchains/1.41.1-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/src/target/release/deps/libjq_rs-dd7c52394aafb36c.rlib" "/src/target/release/deps/libjq_sys-22927a2912bf7ec0.rlib" "/src/target/release/deps/libamqp_worker-a6cb4dda25160905.rlib" "/src/target/release/deps/libtokio-e77bb073669fd0b8.rlib" "/src/target/release/deps/libtokio_uds-662a37ccaf04eeb0.rlib" "/src/target/release/deps/libmio_uds-c57404f377e19456.rlib" "/src/target/release/deps/libtokio_udp-5fd3f1736590ed72.rlib" "/src/target/release/deps/libtokio_timer-d059c45c3208e5fa.rlib" "/src/target/release/deps/libtokio_tcp-7f70d01b49689829.rlib" "/src/target/release/deps/libtokio_reactor-4b82bc7a381aa5ad.rlib" "/src/target/release/deps/libtokio_sync-d49e6a3eb28f921d.rlib" "/src/target/release/deps/libparking_lot-ce1df662a1a6e187.rlib" "/src/target/release/deps/libparking_lot_core-cc2d12b99ed42c31.rlib" "/src/target/release/deps/libsmallvec-7dcc9e93533da7f9.rlib" "/src/target/release/deps/libtokio_fs-95233b03a028aee5.rlib" "/src/target/release/deps/libtokio_threadpool-bf2e10058ec7c880.rlib" "/src/target/release/deps/libcrossbeam_queue-465e4d7595cc18f9.rlib" "/src/target/release/deps/libcrossbeam_deque-b331439678d01e7b.rlib" "/src/target/release/deps/libcrossbeam_epoch-2cd00806931b2197.rlib" "/src/target/release/deps/libmemoffset-228704e32cc1753f.rlib" "/src/target/release/deps/libtokio_current_thread-807a2b6efa727625.rlib" "/src/target/release/deps/libtokio_executor-46a35b2c80c10b47.rlib" "/src/target/release/deps/libtokio_codec-bbdf4291362d10b7.rlib" "/src/target/release/deps/libtokio_io-bd9466d775891b6b.rlib" "/src/target/release/deps/libbytes-d43d830d2c2f91a3.rlib" "/src/target/release/deps/libbyteorder-5d1e68bc5920c95e.rlib" "/src/target/release/deps/libfailure-a5def34786af8ecc.rlib" "/src/target/release/deps/libbacktrace-ebd9bffb745ea963.rlib" "/src/target/release/deps/libbacktrace_sys-8b240ac2db2432e9.rlib" "/src/target/release/deps/librustc_demangle-ee4b41a62d54630a.rlib" "/src/target/release/deps/libenv_logger-ea7d12c7978c29c3.rlib" "/src/target/release/deps/libtermcolor-f87b4ee5cf2bcbc4.rlib" "/src/target/release/deps/libatty-bef9781a4d2a91bb.rlib" "/src/target/release/deps/libhumantime-ae7c39e05c332ad6.rlib" "/src/target/release/deps/libquick_error-14ca865cf2de8a6f.rlib" "/src/target/release/deps/libregex-03a6d5412a528a0c.rlib" "/src/target/release/deps/libthread_local-14bb3527a6820ec7.rlib" "/src/target/release/deps/libregex_syntax-d5167046a7254ebb.rlib" "/src/target/release/deps/libaho_corasick-9450a501e1007bda.rlib" "/src/target/release/deps/libsemver-00211a92a23e5cdc.rlib" "/src/target/release/deps/libsemver_parser-5c3bc1b074685133.rlib" "/src/target/release/deps/liblapin_futures-8033c194b90f841b.rlib" "/src/target/release/deps/libfutures-bfffe0db8dae843c.rlib" "/src/target/release/deps/liblapin-64e084e383b8e363.rlib" "/src/target/release/deps/libparking_lot-f92b69deb426c359.rlib" "/src/target/release/deps/libparking_lot_core-68864aef65fe9a98.rlib" "/src/target/release/deps/liblock_api-9a76f2ea8b4afdd1.rlib" "/src/target/release/deps/libscopeguard-8b6570b7835569fc.rlib" "/src/target/release/deps/libcrossbeam_channel-f5d2a4d535c978e6.rlib" "/src/target/release/deps/libmaybe_uninit-c9ef8bacf1c3e069.rlib" "/src/target/release/deps/libcrossbeam_utils-f0e7bd7ffb5edb55.rlib" "/src/target/release/deps/libamq_protocol-842cf96c4f7fe693.rlib" "/src/target/release/deps/libamq_protocol_tcp-2c51e2e59dd4e4fc.rlib" "/src/target/release/deps/libtcp_stream-a6bd894d591e9bf4.rlib" "/src/target/release/deps/libamq_protocol_uri-9872dbe7e0823259.rlib" "/src/target/release/deps/libamq_protocol_types-8990ff9ef3cf3f4b.rlib" "/src/target/release/deps/libnom-83c4d91a15a7230a.rlib" "/src/target/release/deps/liblexical_core-8745eefe299fbc03.rlib" "/src/target/release/deps/libarrayvec-077c8253ce4bf0d2.rlib" "/src/target/release/deps/libnodrop-a4c4fd02022a10c4.rlib" "/src/target/release/deps/libstatic_assertions-2fe579936a49a34a.rlib" "/src/target/release/deps/libcookie_factory-11143f29f3408287.rlib" "/src/target/release/deps/libreqwest-1447413bae78dd8a.rlib" "/src/target/release/deps/libhyper_tls-ca828d9717d00a68.rlib" "/src/target/release/deps/libtokio_tls-ffb0677950bdfa09.rlib" "/src/target/release/deps/libencoding_rs-be9f225e0e58d95e.rlib" "/src/target/release/deps/libserde_urlencoded-9aabdeab4b893584.rlib" "/src/target/release/deps/libdtoa-d83f4519c8f1b001.rlib" "/src/target/release/deps/libbase64-1c327e83dfdfb863.rlib" "/src/target/release/deps/libmime_guess-51ee593c4f721f3e.rlib" "/src/target/release/deps/libunicase-524880f49fad8fc9.rlib" "/src/target/release/deps/libmime-a3be6936ebcb0eb2.rlib" "/src/target/release/deps/libnative_tls-b1f85f34f63c8637.rlib" "/src/target/release/deps/libopenssl_probe-cb5197c229dd2feb.rlib" "/src/target/release/deps/libopenssl-4869ea7fb473ec65.rlib" "/src/target/release/deps/libopenssl_sys-6b31baf8c6cdeb4c.rlib" "/src/target/release/deps/libforeign_types-71d106b1f1b05b6c.rlib" "/src/target/release/deps/libforeign_types_shared-7b8f5865fa38e6f9.rlib" "/src/target/release/deps/libbitflags-9cba7406c419bacc.rlib" "/src/target/release/deps/libhyper-90a2806b1334aa56.rlib" "/src/target/release/deps/libhttparse-fa4747cbf123900f.rlib" "/src/target/release/deps/libwant-c1b8b0f1128e8a32.rlib" "/src/target/release/deps/libtry_lock-13d5aa9a7218fa3f.rlib" "/src/target/release/deps/libh2-713cef7a5c8e5331.rlib" "/src/target/release/deps/libindexmap-ef05c42572671c43.rlib" "/src/target/release/deps/libtokio_util-3247f3460f595b5c.rlib" "/src/target/release/deps/libfutures_sink-d8d9fccf6142c9d7.rlib" "/src/target/release/deps/libtower_service-73fa8fdee71cdc37.rlib" "/src/target/release/deps/libfutures_channel-5da7674068f520b4.rlib" "/src/target/release/deps/libpin_project-c4b0ecbad9be91ca.rlib" "/src/target/release/deps/libtokio-04532cf64cd857fc.rlib" "/src/target/release/deps/libnum_cpus-bd3bab01073a3f61.rlib" "/src/target/release/deps/libmio-dd5d063d71ec10d8.rlib" "/src/target/release/deps/libiovec-b29563ec5ae2c38e.rlib" "/src/target/release/deps/libnet2-ed9e7be51048dc08.rlib" "/src/target/release/deps/libpin_project_lite-79ca06bef4a9a925.rlib" "/src/target/release/deps/libhttp_body-f2630f4e3731a812.rlib" "/src/target/release/deps/libfutures_util-18ac229d95c9044a.rlib" "/src/target/release/deps/libmemchr-72945e78606c0ce0.rlib" "/src/target/release/deps/libfutures_io-9342c110b75514e4.rlib" "/src/target/release/deps/libslab-d2a8043b090d2c3f.rlib" "/src/target/release/deps/libfutures_task-3c1fec4f10726177.rlib" "/src/target/release/deps/libpin_utils-0cd21be241ac83e0.rlib" "/src/target/release/deps/libfutures_core-991b7d2843c13ca4.rlib" "/src/target/release/deps/liblazy_static-8c813c0ac9c45d96.rlib" "/src/target/release/deps/liburl-5c1764b6739e2c41.rlib" "/src/target/release/deps/libpercent_encoding-1ebb2c24584d2044.rlib" "/src/target/release/deps/libidna-a726e0e650f9351a.rlib" "/src/target/release/deps/libunicode_normalization-4350ebdf51cd8247.rlib" "/src/target/release/deps/libsmallvec-890ee301c8521741.rlib" "/src/target/release/deps/libunicode_bidi-b94e4feae7d68733.rlib" "/src/target/release/deps/libmatches-0457502822b8add9.rlib" "/src/target/release/deps/libhttp-e9776be99c613602.rlib" "/src/target/release/deps/libbytes-b3b4c496c3cefe8c.rlib" "/src/target/release/deps/libfnv-157b9523e78005ac.rlib" "/src/target/release/deps/libchrono-e87ae4b89da6aa58.rlib" "/src/target/release/deps/libnum_integer-652fff7946c46509.rlib" "/src/target/release/deps/libnum_traits-ddc02fece70745ab.rlib" "/src/target/release/deps/libtime-a792785bf5d10a0c.rlib" "/src/target/release/deps/liblibc-16fe6977835b6a49.rlib" "/src/target/release/deps/libserde_json-69e4511c1f5473b7.rlib" "/src/target/release/deps/libryu-25e926e594a16581.rlib" "/src/target/release/deps/libitoa-9fc6e21f244352be.rlib" "/src/target/release/deps/libserde-beff96cfc1afc390.rlib" "/src/target/release/deps/liblog-f748d92ef4cc4c38.rlib" "/src/target/release/deps/libcfg_if-4b77ea5a5880ba83.rlib" "-Wl,--start-group" "/usr/local/rustup/toolchains/1.41.1-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-a2a766dac798f7cf.rlib" "/usr/local/rustup/toolchains/1.41.1-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-a85f7d74095723ea.rlib" "/usr/local/rustup/toolchains/1.41.1-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-4ed27bd07d52ec56.rlib" "/usr/local/rustup/toolchains/1.41.1-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-4c323f23cb5b2482.rlib" "/usr/local/rustup/toolchains/1.41.1-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libbacktrace-2e6de4a7e177acee.rlib" "/usr/local/rustup/toolchains/1.41.1-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libbacktrace_sys-80571e4a1921bf51.rlib" "/usr/local/rustup/toolchains/1.41.1-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-1772b65d0f093257.rlib" "/usr/local/rustup/toolchains/1.41.1-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-37ebc98487d077f2.rlib" "/usr/local/rustup/toolchains/1.41.1-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-fa7cce2e70cf53f1.rlib" "/usr/local/rustup/toolchains/1.41.1-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-a60fcf932d3053cd.rlib" "/usr/local/rustup/toolchains/1.41.1-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-da705bf7dd482e5a.rlib" "/usr/local/rustup/toolchains/1.41.1-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-8a2e90edf20d7f0b.rlib" "/usr/local/rustup/toolchains/1.41.1-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-4888dfadf2ff3780.rlib" "-Wl,--end-group" "/usr/local/rustup/toolchains/1.41.1-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-a0ee5f37b860b20a.rlib" "-Wl,-Bdynamic" "-ljq" "-lonig" "-lssl" "-lcrypto" "-lutil" "-ldl" "-lutil" "-ldl" "-lrt" "-lpthread" "-lgcc_s" "-lc" "-lm" "-lrt" "-lpthread" "-lutil" "-lutil"
  = note: /src/target/release/deps/libjq_rs-dd7c52394aafb36c.rlib(jq_rs-dd7c52394aafb36c.jq_rs.e15hqyoz-cgu.0.rcgu.o): In function `jq_rs::jq::Jq::execute':
          jq_rs.e15hqyoz-cgu.0:(.text._ZN5jq_rs2jq2Jq7execute17hd1819f2293bf4eb2E+0x4b4): undefined reference to `jq_halted'
          jq_rs.e15hqyoz-cgu.0:(.text._ZN5jq_rs2jq2Jq7execute17hd1819f2293bf4eb2E+0x4c1): undefined reference to `jq_get_exit_code'
          collect2: error: ld returned 1 exit status
          

error: aborting due to previous error

error: failed to compile `rs_json_transform_worker v0.1.0 (/src)`, intermediate artifacts can be found at `/src/target`

Caused by:
  could not compile `rs_json_transform_worker`.

To learn more, run the command again with --verbose.

I am new in rust, using correctly the feature did the job ^^

I'll try and reproduce/debug this a bit over the next couple days, but off the top of my head: it looks like you're using the "bundled" feature which should mean you shouldn't need to specify the JQ_LIB_DIR var since libjq should be statically linked to your program.

From the error output, it looks like there's a library mismatch somehow somewhere - it's complaining about symbols that were introduced in v1.6, but were missing in v1.5.

Now I import jq-sys with:

jq-rs = {version = "0.4.1", features = ["bundled"]}

But yes, if I intend to use the JQ_LIB_DIR I definitively going to use jq 1.6

Glad you're unblocked.

I filed #25 and will aim to show some examples of how to configure/depend on this crate. I think Dockerfile examples should be a part of it too.

Perhaps non-obvious, we get good results compiling jq from source ourselves in our Dockerfile (caching the result), and linking to it statically for our production deploys, and dynamically during development. That's probably an advanced pattern worth demonstrating.