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

Linking errors when multiple brotli crate versions are used in the same project #179

Closed
nyurik opened this issue Apr 9, 2024 · 4 comments

Comments

@nyurik
Copy link
Contributor

nyurik commented Apr 9, 2024

Cargo.toml

[dependencies]
brotli3 = { version = "3", package = "brotli" }
brotli4 = { version = "4", package = "brotli" }

src/main.rs

use std::io::Write as _;

fn main() {
    brotli3::CompressorWriter::new(Vec::new(), 1024, 11, 22)
        .write_all(b"foo")
        .unwrap();
    brotli4::CompressorWriter::new(Vec::new(), 1024, 11, 22)
        .write_all(b"foo")
        .unwrap();
}

Error

Full paths were replaced with ...

error: linking with `cc` failed: exit status: 1
  |
  = note: LC_ALL="C" PATH="..." VSLANG="1033" "cc" "-m64" "/tmp/rustcY05l9b/symbols.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.133juv20ssu9kx5.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.19h7r4ftiwvohtr6.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1jp147se0pjudyb9.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1mw1tzwdpxwe7gal.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1p5v78lurm2y1j8j.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1tkzryepvhwijd4t.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1ukf4wydapb94gtd.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1unl1ydiqzun1jf5.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1yt2ygkdy5cff2ah.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.1yzo1zqqz0m1typd.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.21waacy63cw8jzh.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.2b25tgc7534isx4e.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.2c4ccwb0m8d5dkdb.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.2es25b3suaie8kyi.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.2nqeup0lm4txhksu.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.2omfb579ku67sx1r.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.2qt497k0a1qf8to7.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.35tj30t21tbglb8j.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.36r9llqj3hzzbitr.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.36x4f4p1oupq0waq.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.3954sqj17vad0qwg.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.3gg9d8lp8qb1eooy.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.3ixd3cchxdfnywte.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.3o6sc219lu89acjx.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.3owev0dd3dbqwj0c.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.3rimjp5wxl6g14u.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.3trqi574zyshws8k.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.40rmlrkv1t1lwaao.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.48qvpf3y1jd3qxvu.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4e6yhuj0de0ky1if.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4ejvbuy5ewfhl9a6.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4fyix76rpwp7b6tg.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4g0f3bw1ykr7vara.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4h417mi70vcfo6qc.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4ikcrhcivlt2bioh.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4jndbmquovo9x5oe.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4jsluazjzgp5nlf0.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4nu5rkzxyfwbbxtj.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4orcykm97828rn6t.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4ou04oykiq2pukmq.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4s24021dqwn620yn.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4tai1mwegmz2vxb.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.4tam7sxnqeoo0xgq.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.4ux245g7vbkrkmog.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.4zdqm0kv81zu656v.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.51amt1iqu13qfyz0.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.53ve2f03c4oh7jbb.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.5ckt4kofyyw71xik.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.5e8lrpu3hcqgpx7w.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.fap3yc2f4jqodl3.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.i7tdbwg4h76mxjp.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.tq78jf6ov4fabhv.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.wfy9j5khq7pkm02.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.wqguzcmzkyfmrmc.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.x69949c9wlx3nlj.rcgu.o" ".../target/debug/deps/mydemo-bd3cc94a77453027.yb9pcwn4u1j5ot2.rcgu.o" (.../target/debug/deps/mydemo-bd3cc94a77453027.3vuuabm15e0wf9ad.rcgu.o" "-Wl,--as-needed" "-L" (.../target/debug/deps" "-L" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" (.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib" ".../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib" ".../target/debug/deps/libbrotli-82404c8524ef2312.rlib" ".../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib" ".../target/debug/deps/liballoc_stdlib-8babd639daafa6af.rlib" ".../target/debug/deps/liballoc_no_stdlib-5ff7ee24da185d85.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-6e3078511c661ac3.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-252c22ad03c975c9.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libobject-d80cad399a4d0390.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libmemchr-27491650d14ec48b.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaddr2line-97d68acfa4555965.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgimli-c70b304f6ac84900.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-d55f2ec1b1801f29.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_detect-0b96f850bca44a32.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-ee200428a02d516d.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-53d84a0642c19f2b.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libminiz_oxide-217c01f7aaf0f8d4.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libadler-2b97858586af9abb.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-cc333506f95be41d.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-690e7438295ce0c8.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-c9c6c96eccfdab53.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-cb895a9d9d73a7fa.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-433bd1aab5f6d647.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-5f8e0208f8278cbc.rlib" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-1088ecd7666b60f4.rlib" "-Wl,-Bdynamic" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" ".../.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" ".../target/debug/deps/mydemo-bd3cc94a77453027" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-nodefaultlibs"
  = note: /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderCreateInstance':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:69: multiple definition of `BrotliEncoderCreateInstance';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:69: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderSetParameter':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:109: multiple definition of `BrotliEncoderSetParameter';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:109: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderDestroyInstance':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:118: multiple definition of `BrotliEncoderDestroyInstance';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:118: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderIsFinished':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:134: multiple definition of `BrotliEncoderIsFinished';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:134: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderHasMoreOutput':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:139: multiple definition of `BrotliEncoderHasMoreOutput';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:139: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderSetCustomDictionary':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:144: multiple definition of `BrotliEncoderSetCustomDictionary'; .../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:144: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderTakeOutput':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:163: multiple definition of `BrotliEncoderTakeOutput';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:163: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderVersion':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:170: multiple definition of `BrotliEncoderVersion';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:170: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderMaxCompressedSize':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:174: multiple definition of `BrotliEncoderMaxCompressedSize';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:174: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderCompress':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:178: multiple definition of `BrotliEncoderCompress';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:178: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderCompressStreaming':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:243: multiple definition of `BrotliEncoderCompressStreaming';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:243: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderCompressStream':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:263: multiple definition of `BrotliEncoderCompressStream';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:263: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderMallocU8':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:339: multiple definition of `BrotliEncoderMallocU8';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:339: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderFreeU8':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:354: multiple definition of `BrotliEncoderFreeU8';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:354: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderMallocUsize':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:370: multiple definition of `BrotliEncoderMallocUsize';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:370: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `BrotliEncoderFreeUsize':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/compressor.rs:384: multiple definition of `BrotliEncoderFreeUsize';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.12.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/compressor.rs:384: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `CBrotliDecoderErrorString':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/decompressor.rs:144: multiple definition of `CBrotliDecoderErrorString';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.09.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/decompressor.rs:144: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `CBrotliDecoderHasMoreOutput':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/decompressor.rs:149: multiple definition of `CBrotliDecoderHasMoreOutput';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.09.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/decompressor.rs:149: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `CBrotliDecoderTakeOutput':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/decompressor.rs:156: multiple definition of `CBrotliDecoderTakeOutput';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.09.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/decompressor.rs:156: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `CBrotliDecoderIsUsed':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/decompressor.rs:164: multiple definition of `CBrotliDecoderIsUsed';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.09.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/decompressor.rs:164: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `CBrotliDecoderIsFinished':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/decompressor.rs:168: multiple definition of `CBrotliDecoderIsFinished';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.09.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/decompressor.rs:168: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `CBrotliDecoderGetErrorCode':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/decompressor.rs:174: multiple definition of `CBrotliDecoderGetErrorCode';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.09.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/decompressor.rs:174: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.09.rcgu.o): in function `CBrotliDecoderGetErrorString':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/decompressor.rs:180: multiple definition of `CBrotliDecoderGetErrorString';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.09.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/decompressor.rs:180: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BroccoliCreateInstance':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:50: multiple definition of `BroccoliCreateInstance';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:50: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BroccoliCreateInstanceWithWindowSize':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:54: multiple definition of `BroccoliCreateInstanceWithWindowSize'; .../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:54: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BroccoliDestroyInstance':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:58: multiple definition of `BroccoliDestroyInstance';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:58: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BroccoliNewBrotliFile':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:61: multiple definition of `BroccoliNewBrotliFile';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:61: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BroccoliConcatStream':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:68: multiple definition of `BroccoliConcatStream';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:68: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BroccoliConcatStreaming':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:90: multiple definition of `BroccoliConcatStreaming';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:90: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BroccoliConcatFinish':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:107: multiple definition of `BroccoliConcatFinish';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:107: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BroccoliConcatFinished':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/broccoli.rs:124: multiple definition of `BroccoliConcatFinished';(.../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/broccoli.rs:124: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BrotliEncoderMaxCompressedSizeMulti':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/multicompress/mod.rs:49: multiple definition of `BrotliEncoderMaxCompressedSizeMulti'; .../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/multicompress/mod.rs:49: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BrotliEncoderCompressMulti':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/multicompress/mod.rs:95: multiple definition of `BrotliEncoderCompressMulti'; .../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/multicompress/mod.rs:95: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BrotliEncoderCreateWorkPool':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/multicompress/mod.rs:241: multiple definition of `BrotliEncoderCreateWorkPool'; .../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/multicompress/mod.rs:241: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BrotliEncoderDestroyWorkPool':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/multicompress/mod.rs:292: multiple definition of `BrotliEncoderDestroyWorkPool'; .../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/multicompress/mod.rs:292: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli-82404c8524ef2312.rlib(brotli-82404c8524ef2312.brotli.7d9251009f7c37af-cgu.11.rcgu.o): in function `BrotliEncoderCompressWorkPool':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-3.5.0/src/ffi/multicompress/mod.rs:310: multiple definition of `BrotliEncoderCompressWorkPool'; .../target/debug/deps/libbrotli-2e26ba8f7b7a5e34.rlib(brotli-2e26ba8f7b7a5e34.brotli.94aad63d4c55d91c-cgu.15.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-4.0.0/src/ffi/multicompress/mod.rs:310: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderCreateInstance':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:61: multiple definition of `BrotliDecoderCreateInstance'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:59: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderSetParameter':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:103: multiple definition of `BrotliDecoderSetParameter'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:101: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderDecompressPrealloc':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:110: multiple definition of `BrotliDecoderDecompressPrealloc'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:108: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderDecompressWithReturnInfo':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:132: multiple definition of `BrotliDecoderDecompressWithReturnInfo'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:130: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderDecompress':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:144: multiple definition of `BrotliDecoderDecompress'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:142: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderDecompressStream':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:216: multiple definition of `BrotliDecoderDecompressStream'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:214: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderDecompressStreaming':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:260: multiple definition of `BrotliDecoderDecompressStreaming'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:258: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderMallocU8':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:286: multiple definition of `BrotliDecoderMallocU8'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:284: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderFreeU8':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:295: multiple definition of `BrotliDecoderFreeU8'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:293: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderMallocUsize':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:304: multiple definition of `BrotliDecoderMallocUsize'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:302: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderFreeUsize':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:313: multiple definition of `BrotliDecoderFreeUsize'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:311: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderDestroyInstance':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:322: multiple definition of `BrotliDecoderDestroyInstance'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:320: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderHasMoreOutput':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:335: multiple definition of `BrotliDecoderHasMoreOutput'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:333: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderTakeOutput':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:340: multiple definition of `BrotliDecoderTakeOutput'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:338: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderIsUsed':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:347: multiple definition of `BrotliDecoderIsUsed'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:345: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderIsFinished':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:351: multiple definition of `BrotliDecoderIsFinished'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:349: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderGetErrorCode':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:355: multiple definition of `BrotliDecoderGetErrorCode'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:353: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderGetErrorString':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:360: multiple definition of `BrotliDecoderGetErrorString'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:358: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderErrorString':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:371: multiple definition of `BrotliDecoderErrorString'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:369: first defined here
          /usr/bin/ld:(.../target/debug/deps/libbrotli_decompressor-e4130454254b37db.rlib(brotli_decompressor-e4130454254b37db.brotli_decompressor.94de88837b202c44-cgu.7.rcgu.o): in function `BrotliDecoderVersion':
          .../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-2.5.1/src/ffi/mod.rs:379: multiple definition of `BrotliDecoderVersion'; .../target/debug/deps/libbrotli_decompressor-8758ba6ba43062cc.rlib(brotli_decompressor-8758ba6ba43062cc.brotli_decompressor.2fd5c7428720458e-cgu.7.rcgu.o):.../.cargo/registry/src/index.crates.io-6f17d22bba15001f/brotli-decompressor-3.0.0/src/ffi/mod.rs:377: first defined here
          collect2: error: ld returned 1 exit status
@danielrh
Copy link
Collaborator

danielrh commented Apr 9, 2024 via email

@nyurik
Copy link
Contributor Author

nyurik commented Apr 9, 2024

If ffi is not needed for "typical" operations, then yes, I think we should not require it by default. The problem is that now there might be a lot of projects that simply used the default without realizing they did not needed it, and the downstream users end up with conflicts. The bigger issue is that removing ffi from the default feature is also a breaking change... Luckly v4 hasn't been out for long, so perhaps simply releasing v5 without it is a good way forward

@nyurik
Copy link
Contributor Author

nyurik commented Apr 9, 2024

P.S. Note that in many cases the end user is not even aware of which brotli version is being used because they are not using it directly. For example, actix-http uses v3, and async-compression uses v4 - so if used together, they would fail

@danielrh
Copy link
Collaborator

good points here. Pushed a new release that turns it off by default. End-projects can still use it if necessary.

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

No branches or pull requests

2 participants