scie-nz / tiledb-sys

Rust Bindings for the TileDB C API, generated using bindgen
Apache License 2.0
15 stars 1 forks source link

building project fails #2

Open mamscience opened 2 years ago

mamscience commented 2 years ago

Hi Unable to build per your instructions. Could you help out what might be the reason to this? Platform: MacOs (latest). Rust 1.54 (latest).

` process didn't exit successfully: '/dev/Rust/target/debug/build/tiledb-sys-a8fff7cd1562e5ec/build-script-build' (exit status: 101) --- stdout cargo:rustc-link-lib=dylib=tiledb cargo:rustc-link-search=native=/dev/Rust/target/debug/build/tiledb-sys-7ccfb55706149010/out/dist/lib

--- stderr cannot find cmake make: No targets specified and no makefile found. Stop. make: No rule to make target 'install-tiledb'. Stop. wrapper.hpp:2:10: fatal error: 'tiledb/tiledb' file not found wrapper.hpp:2:10: fatal error: 'tiledb/tiledb' file not found, err: true thread 'main' panicked at 'Unable to generate bindings: ()', /.cargo/registry/src/github.com-1ecc6299db9ec823/tiledb-sys-0.1.1/build.rs:83:10 note: run with 'RUST_BACKTRACE=1' environment variable to display a backtrace

`

bogdanstate commented 2 years ago

From the error message it looks like you're missing cmake. Installation instructions on a Mac are here:

https://cmake.org/install/

(Disclaimer: we did not try compiling this on a Mac, will try running through the instructions myself as soon as I find some time to do it.)

mamscience commented 2 years ago

Yes, you're right, I just found out myself as well. Thanks for the reply.

It compiled but it aborts with the following message. I think it's a reference to AWS,...


dyld[28746]: Library not loaded: @rpath/libaws-cpp-sdk-s3.dylib
  Referenced from: /Rust/project/target/debug/build/tiledb-sys-7ccfb55706149010/out/dist/lib/libtiledb.dylib
  Reason: tried: '/Rust/project/target/debug/build/tiledb-sys-7ccfb55706149010/out/dist/lib/libaws-cpp-sdk-s3.dylib' (no such file), 
  '/Rust/project/target/debug/build/tiledb-sys-7ccfb55706149010/out/dist/lib/libaws-cpp-sdk-s3.dylib' (no such file), 
'/Rust/project/target/debug/deps/libaws-cpp-sdk-s3.dylib' (no such file), '/Rust/project/target/debug/libaws-cpp-sdk-s3.dylib' (no such file), 
'/Users/m/opt/anaconda3/envs/ll/lib/rustlib/x86_64-apple-darwin/lib/libaws-cpp-sdk-s3.dylib' (no such file), 
'/Users/m/lib/libaws-cpp-sdk-s3.dylib' (no such file), '/usr/local/lib/libaws-cpp-sdk-s3.dylib' (no such file), 
'/usr/lib/libaws-cpp-sdk-s3.dylib' (no such file)
bogdanstate commented 2 years ago

Yup, looks like you also need the AWS SDK installed. I would try this link: https://docs.aws.amazon.com/sdk-for-cpp/v1/developer-guide/setup-linux.html

mamscience commented 2 years ago

Many many thanks for the pointer, it's been a while since i've touch C and Cmaking. Installing S3 part of the AWS SDK didn't solve my issue and I'm reluctant to install the whole SDK as I'm not planning it to use it for cloud.

So I tried install it without the --S3 flag, using TileDB's version 2.21, and bindgen 0.58.2. Unfortunately, Rust buckles, see error below. Have you encountered this before? Were/are you using nightly builds? Cheers and thanks in advance

error[E0658]: deriving `Default` on enums is experimental
   --> /Rust/project/target/debug/build/tiledb-rust-209d4e65a1149745/out/bindings.rs:162:25
    |
162 |         #[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
    |                         ^^^^^^^
    |
    = note: see issue #86985 <https://github.com/rust-lang/rust/issues/86985> for more information
    = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info)

error: no default declared
   --> /Rust/project/target/debug/build/tiledb-rust-209d4e65a1149745/out/bindings.rs:162:25
    |
162 |         #[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
    |                         ^^^^^^^
    |
    = help: make a unit variant default by placing `#[default]` above it
    = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0658]: deriving `Default` on enums is experimental
   --> /Rust/project/target/debug/build/tiledb-rust-209d4e65a1149745/out/bindings.rs:194:25
    |
194 |         #[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
    |                         ^^^^^^^
    |
    = note: see issue #86985 <https://github.com/rust-lang/rust/issues/86985> for more information
    = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info)

error: no default declared
   --> /Rust/project/target/debug/build/tiledb-rust-209d4e65a1149745/out/bindings.rs:194:25
    |
194 |         #[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
    |                         ^^^^^^^
    |
    = help: make a unit variant default by placing `#[default]` above it
    = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0658]: deriving `Default` on enums is experimental
   --> /Rust/project/target/debug/build/tiledb-rust-209d4e65a1149745/out/bindings.rs:221:25
    |
221 |         #[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
    |                         ^^^^^^^
    |
    = note: see issue #86985 <https://github.com/rust-lang/rust/issues/86985> for more information
    = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info)

error: no default declared
   --> //Rust/project/target/debug/build/tiledb-rust-209d4e65a1149745/out/bindings.rs:221:25
    |
221 |         #[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
    |                         ^^^^^^^
    |
    = help: make a unit variant default by placing `#[default]` above it
    = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0658]: deriving `Default` on enums is experimental
   --> /Rust/project/target/debug/build/tiledb-rust-209d4e65a1149745/out/bindings.rs:270:25
    |
270 |         #[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
    |                         ^^^^^^^
    |
    = note: see issue #86985 <https://github.com/rust-lang/rust/issues/86985> for more information
    = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info)

error: no default declared
   --> /Rust/project/target/debug/build/tiledb-rust-209d4e65a1149745/out/bindings.rs:270:25
    |
270 |         #[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
    |                         ^^^^^^^
    |
    = help: make a unit variant default by placing `#[default]` above it
    = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info)
bogdanstate commented 2 years ago

No worries, this seems to have worked. The error you're seeing no longer seems AWS SDK-related.

I am not at my machine right now, but this looks like an error where running cargo +nightly build might help. As in, experimental features only work on nightly.

I am not 100% certain this even needs to derive Default TBH, so you could alternatively experiment with just turning that trait off and seeing what happens.

mamscience commented 2 years ago

Well, I tried the nightly, but a different errors pops up now..see below.

I am not 100% certain this even needs to derive Default TBH, so you could alternatively experiment with just turning that trait off and seeing what happens.

Could you elaborate on how to do that? I've also started to make a new binding for the latest stable version of TileDB, but unfortunately, bindgen doesn't wanna play: https://github.com/rust-lang/rust-bindgen/issues/2188


error: no default declared
   --> /project/target/debug/build/tiledb-rust-48c2259a77600c80/out/bindings.rs:162:25
    |
162 |         #[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
    |                         ^^^^^^^
    |
    = help: make a unit variant default by placing `#[default]` above it
    = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info)

error: no default declared
   -->/project/target/debug/build/tiledb-rust-48c2259a77600c80/out/bindings.rs:202:25
    |
202 |         #[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
    |                         ^^^^^^^
    |
    = help: make a unit variant default by placing `#[default]` above it
    = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info)

error: no default declared
   --> /project/target/debug/build/tiledb-rust-48c2259a77600c80/out/bindings.rs:233:25
    |
233 |         #[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
    |                         ^^^^^^^
    |
    = help: make a unit variant default by placing `#[default]` above it
    = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info)

error: no default declared
   --> /project/target/debug/build/tiledb-rust-48c2259a77600c80/out/bindings.rs:282:25
    |
282 |         #[derive(Debug, Default, Copy, Clone, Hash, PartialEq, Eq)]
    |                         ^^^^^^^
    |
    = help: make a unit variant default by placing `#[default]` above it
    = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info)

error: could not compile `tiledb-rust` due to 4 previous errors```
mamscience commented 2 years ago

small bump?

DaveLanday commented 1 year ago

I am also having trouble building. I get a bunch of Cmake warnings (about deprications) and I get an error about not being able to find the tiledb/tiledb header. First, I get a compilation error MD5 is deprecated from openssl (I have OpenSSL 3.1.3 installed) Additionally, the build fails and thread throws panic:

1 error generated.
  make[6]: *** [tiledb/CMakeFiles/TILEDB_CORE_OBJECTS.dir/sm/crypto/crypto_openssl.cc.o] Error 1
  make[5]: *** [tiledb/CMakeFiles/TILEDB_CORE_OBJECTS.dir/all] Error 2
  make[4]: *** [all] Error 2
  make[3]: *** [CMakeFiles/install-tiledb] Error 2
  make[2]: *** [CMakeFiles/install-tiledb.dir/all] Error 2
  make[1]: *** [CMakeFiles/install-tiledb.dir/rule] Error 2
  make: *** [install-tiledb] Error 2
  wrapper.hpp:2:10: fatal error: 'tiledb/tiledb' file not found
  wrapper.hpp:2:10: fatal error: 'tiledb/tiledb' file not found, err: true

I am assuming it is a versioning issue? Any pointers here?