algbio / ggcat

Compacted and colored de Bruijn graph construction and querying
MIT License
72 stars 10 forks source link

Using ggcat-api in an external Rust project fails to build without including `dynamic-dispatch-proc-macro` in Cargo.toml #38

Closed tmaklin closed 7 months ago

tmaklin commented 7 months ago

I noticed that including the ggcat API as a dependency in another Rust project will fail because of build issues with the following Cargo.toml file:

[package]
name = "ggcat-api-test"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
ggcat-api = { version = "0.1.0", git = "https://github.com/algbio/ggcat" }

Adding dynamic-dispatch-proc-macro under the [patch.crates-io] (see below for a working Cargo.toml file) section fixes the issue but this isn't documented in the API section or the example files, is this intended?

Cargo.toml that builds successfully:

[package]
name = "ggcat-api-test"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
ggcat-api = { version = "0.1.0", git = "https://github.com/algbio/ggcat" }

[patch.crates-io]
dynamic-dispatch-proc-macro = { version = "0.4.2", git = "https://github.com/Guilucand/dynamic-dispatch-rs"}
Log from failed build: ``` temaklin@xps13:~/software/ggcat-api-test$ cargo build Compiling proc-macro2 v1.0.76 Compiling unicode-ident v1.0.12 Compiling libc v0.2.152 Compiling autocfg v1.1.0 Compiling cfg-if v1.0.0 Compiling version_check v0.9.4 Compiling memchr v2.7.1 Compiling serde v1.0.195 Compiling syn v1.0.109 Compiling once_cell v1.19.0 Compiling libm v0.2.8 Compiling zerocopy v0.7.32 Compiling ahash v0.8.7 Compiling num-traits v0.2.17 Compiling allocator-api2 v0.2.16 Compiling ppv-lite86 v0.2.17 Compiling quote v1.0.35 Compiling crossbeam-utils v0.8.19 Compiling proc-macro-error-attr v1.0.4 Compiling syn v2.0.48 Compiling getrandom v0.2.12 Compiling lazy_static v1.4.0 Compiling rand_core v0.6.4 Compiling cc v1.0.83 Compiling aho-corasick v1.1.2 Compiling hashbrown v0.14.3 Compiling rand_chacha v0.3.1 Compiling rand v0.8.5 Compiling lock_api v0.4.11 Compiling proc-macro-error v1.0.4 Compiling regex-syntax v0.8.2 Compiling thiserror v1.0.56 Compiling parking_lot_core v0.9.9 Compiling scopeguard v1.2.0 Compiling smallvec v1.13.0 Compiling either v1.9.0 Compiling itoa v1.0.10 Compiling proc-macro2 v0.4.30 Compiling adler v1.0.2 Compiling backtrace v0.3.69 Compiling miniz_oxide v0.7.1 Compiling crossbeam-epoch v0.9.18 Compiling ryu v1.0.16 Compiling gimli v0.28.1 Compiling unicode-xid v0.1.0 Compiling byteorder v1.5.0 Compiling crossbeam-deque v0.8.5 Compiling parking_lot v0.12.1 Compiling object v0.32.2 Compiling syn v0.15.44 Compiling rustc-demangle v0.1.23 Compiling quote v0.6.13 Compiling lz4-sys v1.9.4 Compiling typenum v1.17.0 Compiling rayon-core v1.12.1 Compiling addr2line v0.21.0 Compiling regex-automata v0.4.3 Compiling crossbeam-queue v0.3.11 Compiling crossbeam-channel v0.5.11 Compiling bytesize v1.3.0 Compiling json v0.12.4 Compiling serde_json v1.0.111 Compiling crossbeam v0.8.4 Compiling serde_derive v1.0.195 Compiling thiserror-impl v1.0.56 Compiling tokio-macros v2.2.0 Compiling mt-debug-counters v0.1.3 Compiling desse-derive v0.2.1 Compiling nightly-quirks v0.1.4 Compiling num_cpus v1.16.0 Compiling filebuffer v0.4.0 Compiling pin-project-lite v0.2.13 Compiling crc32fast v1.3.2 Compiling bytemuck v1.14.0 Compiling tokio v1.35.1 Compiling desse v0.2.1 Compiling rayon v1.8.1 Compiling unicode-segmentation v1.10.1 Compiling replace_with v0.1.7 Compiling unicode-width v0.1.11 Compiling unchecked-index v0.2.2 Compiling textwrap v0.11.0 Compiling heck v0.3.3 Compiling atty v0.2.14 Compiling bitflags v1.3.2 Compiling strsim v0.8.0 Compiling ansi_term v0.12.1 Compiling structopt-derive v0.4.18 Compiling flate2 v1.0.28 Compiling static_assertions v1.1.0 Compiling bstr v1.9.0 Compiling regex v1.10.2 Compiling num-integer v0.1.45 Compiling radium v0.7.0 Compiling matrixmultiply v0.3.8 Compiling paste v1.0.14 Compiling equivalent v1.0.1 Compiling tap v1.0.1 Compiling indexmap v2.1.0 Compiling wyz v0.5.1 Compiling safe_arch v0.7.1 Compiling num-complex v0.4.4 Compiling num-rational v0.4.1 Compiling heck v0.4.1 Compiling semver v0.1.20 Compiling rustversion v1.0.14 Compiling funty v2.0.0 Compiling rawpointer v0.2.1 Compiling fixedbitset v0.4.2 Compiling dynamic-dispatch-proc-macro v0.4.2 Compiling rustc_version v0.1.7 Compiling petgraph v0.6.4 Compiling wide v0.7.13 Compiling bitvec v1.0.1 Compiling vec_map v0.8.2 Compiling dashmap v5.5.3 Compiling bincode v1.3.3 Compiling clap v2.34.0 Compiling dynamic-dispatch v0.5.3 Compiling approx v0.5.1 Compiling csv-core v0.1.11 Compiling traitsequence v2.0.0 Compiling feature-probe v0.1.1 Compiling retain_mut v0.1.7 Compiling bv v0.11.1 Compiling csv v1.3.0 Compiling roaring v0.10.2 Compiling simba v0.6.0 Compiling newtype_derive v0.1.6 Compiling nalgebra-macros v0.1.0 Compiling itertools v0.10.5 Compiling rand_distr v0.4.3 Compiling structopt v0.3.26 Compiling streaming-libdeflate-rs v0.1.5 Compiling atoi v2.0.0 Compiling hashbrown v0.13.2 Compiling thread_local v1.1.7 Compiling siphasher v0.3.11 Compiling anyhow v1.0.79 Compiling utf8parse v0.2.1 Compiling ref-cast v1.0.22 Compiling instrumenter-proc-macro v0.1.1 Compiling anstyle-parse v0.2.3 Compiling strum_macros v0.25.3 Compiling traitgraph v5.0.0 Compiling instrumenter v0.1.3 Compiling enum-map-derive v0.17.0 Compiling ref-cast-impl v1.0.22 Compiling derive-new v0.5.9 Compiling itertools v0.11.0 Compiling error-chain v0.12.4 Compiling anstyle-query v1.0.2 Compiling colorchoice v1.0.0 Compiling bit-vec v0.6.3 Compiling powerfmt v0.2.0 Compiling anstyle v1.0.4 Compiling time-core v0.1.2 Compiling anstream v0.6.11 Compiling time-macros v0.2.16 Compiling deranged v0.3.11 Compiling bit-set v0.5.3 Compiling enum-map v2.7.3 Compiling traitgraph-algo v8.1.0 Compiling multimap v0.9.1 Compiling bio-types v1.0.1 Compiling ndarray v0.15.6 Compiling nalgebra v0.29.0 Compiling getset v0.1.2 Compiling fxhash v0.2.1 Compiling ordered-float v3.9.2 Compiling itertools-num v0.1.3 Compiling triple_accel v0.4.0 Compiling editdistancek v1.0.2 Compiling bitvector v0.1.5 Compiling bytecount v0.6.7 Compiling log v0.4.20 Compiling custom_derive v0.1.7 Compiling strsim v0.10.0 Compiling num_threads v0.1.6 Compiling clap_lex v0.6.0 Compiling strum v0.25.0 Compiling time v0.3.31 Compiling bigraph v5.0.0 Compiling clap_builder v4.4.18 Compiling compact-genome v2.1.1 Compiling clap_derive v4.4.7 Compiling disjoint-sets v0.4.2 Compiling termcolor v1.1.3 Compiling lz4 v1.24.0 Compiling parallel-processor v0.1.13 Compiling simplelog v0.12.1 Compiling memory-stats v1.1.0 Compiling permutation v0.4.1 Compiling atomic-counter v1.0.1 Compiling ggcat_config v0.1.0 (https://github.com/algbio/ggcat#0ca7007e) Compiling ggcat_hashes v0.1.0 (https://github.com/algbio/ggcat#0ca7007e) Compiling ggcat_utils v0.1.0 (https://github.com/algbio/ggcat#0ca7007e) Compiling fs_extra v1.3.0 Compiling fdlimit v0.3.0 Compiling uuid v1.7.0 error: `TypeId::of` is not yet stable as a const fn --> /home/temaklin/.cargo/git/checkouts/ggcat-40470e373049bee8/0ca7007/crates/hashes/src/cn_nthash.rs:106:1 | 106 | #[dynamic_dispatch] | ^^^^^^^^^^^^^^^^^^^ | = help: add `#![feature(const_type_id)]` to the crate attributes to enable = note: this error originates in the attribute macro `dynamic_dispatch` (in Nightly builds, run with -Z macro-backtrace for more info) error: `TypeId::of` is not yet stable as a const fn --> /home/temaklin/.cargo/git/checkouts/ggcat-40470e373049bee8/0ca7007/crates/hashes/src/cn_nthash.rs:198:1 | 198 | #[dynamic_dispatch] | ^^^^^^^^^^^^^^^^^^^ | = help: add `#![feature(const_type_id)]` to the crate attributes to enable = note: this error originates in the attribute macro `dynamic_dispatch` (in Nightly builds, run with -Z macro-backtrace for more info) error: `TypeId::of` is not yet stable as a const fn --> /home/temaklin/.cargo/git/checkouts/ggcat-40470e373049bee8/0ca7007/crates/hashes/src/base/cn_seqhash_base.rs:105:1 | 105 | #[dynamic_dispatch] | ^^^^^^^^^^^^^^^^^^^ | = help: add `#![feature(const_type_id)]` to the crate attributes to enable = note: this error originates in the attribute macro `dynamic_dispatch` (in Nightly builds, run with -Z macro-backtrace for more info) error: `TypeId::of` is not yet stable as a const fn --> /home/temaklin/.cargo/git/checkouts/ggcat-40470e373049bee8/0ca7007/crates/hashes/src/fw_nthash.rs:92:1 | 92 | #[dynamic_dispatch] | ^^^^^^^^^^^^^^^^^^^ | = help: add `#![feature(const_type_id)]` to the crate attributes to enable = note: this error originates in the attribute macro `dynamic_dispatch` (in Nightly builds, run with -Z macro-backtrace for more info) error: `TypeId::of` is not yet stable as a const fn --> /home/temaklin/.cargo/git/checkouts/ggcat-40470e373049bee8/0ca7007/crates/hashes/src/fw_nthash.rs:188:1 | 188 | #[dynamic_dispatch] | ^^^^^^^^^^^^^^^^^^^ | = help: add `#![feature(const_type_id)]` to the crate attributes to enable = note: this error originates in the attribute macro `dynamic_dispatch` (in Nightly builds, run with -Z macro-backtrace for more info) error: `TypeId::of` is not yet stable as a const fn --> /home/temaklin/.cargo/git/checkouts/ggcat-40470e373049bee8/0ca7007/crates/hashes/src/base/fw_seqhash_base.rs:93:1 | 93 | #[dynamic_dispatch] | ^^^^^^^^^^^^^^^^^^^ | = help: add `#![feature(const_type_id)]` to the crate attributes to enable = note: this error originates in the attribute macro `dynamic_dispatch` (in Nightly builds, run with -Z macro-backtrace for more info) error: `TypeId::of` is not yet stable as a const fn --> /home/temaklin/.cargo/git/checkouts/ggcat-40470e373049bee8/0ca7007/crates/hashes/src/base/cn_rkhash_base.rs:165:1 | 165 | #[dynamic_dispatch] | ^^^^^^^^^^^^^^^^^^^ | = help: add `#![feature(const_type_id)]` to the crate attributes to enable = note: this error originates in the attribute macro `dynamic_dispatch` (in Nightly builds, run with -Z macro-backtrace for more info) error: `TypeId::of` is not yet stable as a const fn --> /home/temaklin/.cargo/git/checkouts/ggcat-40470e373049bee8/0ca7007/crates/hashes/src/base/fw_rkhash_base.rs:126:1 | 126 | #[dynamic_dispatch] | ^^^^^^^^^^^^^^^^^^^ | = help: add `#![feature(const_type_id)]` to the crate attributes to enable = note: this error originates in the attribute macro `dynamic_dispatch` (in Nightly builds, run with -Z macro-backtrace for more info) error: could not compile `ggcat_hashes` (lib) due to 18 previous errors warning: build failed, waiting for other jobs to finish... ```
Guilucand commented 7 months ago

Hi, I made a fix to the dynamic-dispatch-proc-macro but forgot to publish the updated version on crates.io, now should be fixed

Guilucand commented 7 months ago

Also you might need to run cargo update on the example project to see the changes

tmaklin commented 7 months ago

thanks, all good now!! Any plans to publish the API in crates.io at some point btw?