Chia-Network / chia-blockchain

Chia blockchain python implementation (full node, farmer, harvester, timelord, and wallet)
Apache License 2.0
10.83k stars 2.03k forks source link

Compiling on FreeNAS (FreeBSD 11.3) failed. clvm-rs issue #1110

Closed Axadiw closed 3 years ago

Axadiw commented 3 years ago

Describe the bug I'm trying to compile chia on FreeBSD 11.3, but it tails with this error:

root@chia:~/chia-blockchain # sh install.sh
Python version is 3.7
Requirement already satisfied: pip in ./venv/lib/python3.7/site-packages (20.3.3)
Collecting pip
  Downloading pip-21.0.1-py3-none-any.whl (1.5 MB)
     |████████████████████████████████| 1.5 MB 2.4 MB/s
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 20.3.3
    Uninstalling pip-20.3.3:
      Successfully uninstalled pip-20.3.3
Successfully installed pip-21.0.1
Requirement already satisfied: wheel in ./venv/lib/python3.7/site-packages (0.36.2)
Looking in indexes: https://pypi.org/simple, https://download.chia.net/simple/
Requirement already satisfied: miniupnpc==2.1 in ./venv/lib/python3.7/site-packages (2.1)
Looking in indexes: https://pypi.org/simple, https://download.chia.net/simple/
Obtaining file:///root/chia-blockchain
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Collecting chiapos==0.12.45
  Downloading chiapos-0.12.45.tar.gz (1.3 MB)
     |████████████████████████████████| 1.3 MB 2.4 MB/s
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Collecting setproctitle==1.2.2
  Downloading setproctitle-1.2.2.tar.gz (23 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Collecting clvm==0.9.0
  Downloading clvm-0.9.0-py3-none-any.whl (19 kB)
Requirement already satisfied: aiohttp==3.7.3 in ./venv/lib/python3.7/site-packages (from chia-blockchain==1.0rc5.dev0) (3.7.3)
Requirement already satisfied: sortedcontainers==2.3.0 in ./venv/lib/python3.7/site-packages (from chia-blockchain==1.0rc5.dev0) (2.3.0)
Collecting clvm-tools==0.4.1
  Downloading clvm_tools-0.4.1-py3-none-any.whl (35 kB)
Collecting click==7.1.2
  Downloading click-7.1.2-py2.py3-none-any.whl (82 kB)
     |████████████████████████████████| 82 kB 250 kB/s
Requirement already satisfied: keyring==21.5.0 in ./venv/lib/python3.7/site-packages (from chia-blockchain==1.0rc5.dev0) (21.5.0)
ERROR: Could not find a version that satisfies the requirement clvm-rs==0.1.3 (from chia-blockchain)
ERROR: No matching distribution found for clvm-rs==0.1.3

To Reproduce Steps to reproduce the behavior:

  1. Download newest main
  2. Update setup.py accordingly to the https://github.com/Chia-Network/chia-blockchain/wiki/FreeBSD-Install
  3. launch sh install.sh

Expected behavior Compiled version of chia

Desktop (please complete the following information):

Axadiw commented 3 years ago

As @hoffmang9 suggested, i've tried to do this:

pkg install rust
pip install maturin
pip install clvm-rs

Rust and maturing have succeded, but building clvm-rs failed:


Collecting clvm-rs
  Using cached clvm_rs-0.1.2.tar.gz (7.0 MB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
    Preparing wheel metadata ... done
Building wheels for collected packages: clvm-rs
  Building wheel for clvm-rs (PEP 517) ... error
  ERROR: Command errored out with exit status 1:
   command: /usr/local/bin/python3.7 /usr/local/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py build_wheel /tmp/tmpteu9enuy
       cwd: /tmp/pip-install-syq3jb5a/clvm-rs
  Complete output (1071 lines):
  Running `maturin pep517 build-wheel -i python --bindings=cffi --manylinux=2010`
     Compiling proc-macro2 v1.0.24
     Compiling unicode-xid v0.2.1
     Compiling syn v1.0.60
     Compiling autocfg v1.0.1
     Compiling libc v0.2.86
     Compiling proc-macro-hack v0.5.19
     Compiling radium v0.4.1
     Compiling typenum v1.12.0
     Compiling maybe-uninit v2.0.0
     Compiling wyz v0.2.0
     Compiling byteorder v1.4.2
     Compiling funty v1.2.0
     Compiling cfg-if v1.0.0
     Compiling rand_core v0.5.1
     Compiling subtle v2.4.0
     Compiling smallvec v1.6.1
     Compiling inventory v0.1.10
     Compiling scopeguard v1.1.0
     Compiling byte-tools v0.3.1
     Compiling stable_deref_trait v1.2.0
     Compiling unindent v0.1.7
     Compiling pyo3 v0.13.2
     Compiling fake-simd v0.1.2
     Compiling opaque-debug v0.2.3
     Compiling smallvec v0.4.5
     Compiling lazy_static v1.4.0
     Compiling hex v0.3.2
     Compiling num-traits v0.2.14
     Compiling num-integer v0.1.44
     Compiling num-bigint v0.3.1
     Compiling instant v0.1.9
     Compiling lock_api v0.4.2
     Compiling block-padding v0.1.5
     Compiling owning_ref v0.3.3
     Compiling bitvec v0.18.4
     Compiling rand v0.4.6
     Compiling parking_lot_core v0.8.3
     Compiling quote v1.0.9
     Compiling smallvec v0.6.14
  error: could not compile `bitvec`

  To learn more, run the command again with --verbose.
  warning: build failed, waiting for other jobs to finish...
  error: build failed
  💥 maturin failed
    Caused by: Failed to build a native library through cargo
    Caused by: Cargo build finished with "exit code: 101": `cargo rustc --message-format json --manifest-path Cargo.toml --release --lib --`
  🐍 Using CPython 3.7m at python to generate the cffi bindings
  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:307:25
      |
  307 |         check("load", len, M::BITS);
      |                               ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  307 |         check("load", len, BitMemory::BITS);
      |                            ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  307 |         check("load", len, IsNumber::BITS);
      |                            ^^^^^^^^^^^^^^

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:341:12
      |
  341 |                     if M::BITS > T::Mem::BITS {
      |                           ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  341 |                     if BitMemory::BITS > T::Mem::BITS {
      |                        ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  341 |                     if IsNumber::BITS > T::Mem::BITS {
      |                        ^^^^^^^^^^^^^^

  error[E0308]: mismatched types
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:341:19
      |
  304 |     fn load_le<M>(&self) -> M
      |                - this type parameter
  ...
  341 |                     if M::BITS > T::Mem::BITS {
      |                                  ^^^^^^^^^^^^ expected type parameter `M`, found `u8`
      |
      = note: expected type parameter `M`
                           found type `u8`

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:362:25
      |
  362 |         check("load", len, M::BITS);
      |                               ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  362 |         check("load", len, BitMemory::BITS);
      |                            ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  362 |         check("load", len, IsNumber::BITS);
      |                            ^^^^^^^^^^^^^^

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:377:12
      |
  377 |                     if M::BITS > T::Mem::BITS {
      |                           ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  377 |                     if BitMemory::BITS > T::Mem::BITS {
      |                        ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  377 |                     if IsNumber::BITS > T::Mem::BITS {
      |                        ^^^^^^^^^^^^^^

  error[E0308]: mismatched types
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:377:19
      |
  359 |     fn load_be<M>(&self) -> M
      |                - this type parameter
  ...
  377 |                     if M::BITS > T::Mem::BITS {
      |                                  ^^^^^^^^^^^^ expected type parameter `M`, found `u8`
      |
      = note: expected type parameter `M`
                           found type `u8`

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:397:26
      |
  397 |         check("store", len, M::BITS);
      |                                ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  397 |         check("store", len, BitMemory::BITS);
      |                             ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  397 |         check("store", len, IsNumber::BITS);
      |                             ^^^^^^^^^^^^^^

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:412:12
      |
  412 |                     if M::BITS > T::Mem::BITS {
      |                           ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  412 |                     if BitMemory::BITS > T::Mem::BITS {
      |                        ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  412 |                     if IsNumber::BITS > T::Mem::BITS {
      |                        ^^^^^^^^^^^^^^

  error[E0308]: mismatched types
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:412:19
      |
  394 |     fn store_le<M>(&mut self, mut value: M)
      |                 - this type parameter
  ...
  412 |                     if M::BITS > T::Mem::BITS {
      |                                  ^^^^^^^^^^^^ expected type parameter `M`, found `u8`
      |
      = note: expected type parameter `M`
                           found type `u8`

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:428:26
      |
  428 |         check("store", len, M::BITS);
      |                                ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  428 |         check("store", len, BitMemory::BITS);
      |                             ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  428 |         check("store", len, IsNumber::BITS);
      |                             ^^^^^^^^^^^^^^

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:442:12
      |
  442 |                     if M::BITS > T::Mem::BITS {
      |                           ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  442 |                     if BitMemory::BITS > T::Mem::BITS {
      |                        ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  442 |                     if IsNumber::BITS > T::Mem::BITS {
      |                        ^^^^^^^^^^^^^^

  error[E0308]: mismatched types
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:442:19
      |
  425 |     fn store_be<M>(&mut self, mut value: M)
      |                 - this type parameter
  ...
  442 |                     if M::BITS > T::Mem::BITS {
      |                                  ^^^^^^^^^^^^ expected type parameter `M`, found `u8`
      |
      = note: expected type parameter `M`
                           found type `u8`

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:467:25
      |
  467 |         check("load", len, M::BITS);
      |                               ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  467 |         check("load", len, BitMemory::BITS);
      |                            ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  467 |         check("load", len, IsNumber::BITS);
      |                            ^^^^^^^^^^^^^^

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:487:12
      |
  487 |                     if M::BITS > T::Mem::BITS {
      |                           ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  487 |                     if BitMemory::BITS > T::Mem::BITS {
      |                        ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  487 |                     if IsNumber::BITS > T::Mem::BITS {
      |                        ^^^^^^^^^^^^^^

  error[E0308]: mismatched types
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:487:19
      |
  464 |     fn load_le<M>(&self) -> M
      |                - this type parameter
  ...
  487 |                     if M::BITS > T::Mem::BITS {
      |                                  ^^^^^^^^^^^^ expected type parameter `M`, found `u8`
      |
      = note: expected type parameter `M`
                           found type `u8`

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:507:25
      |
  507 |         check("load", len, M::BITS);
      |                               ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  507 |         check("load", len, BitMemory::BITS);
      |                            ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  507 |         check("load", len, IsNumber::BITS);
      |                            ^^^^^^^^^^^^^^

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:523:12
      |
  523 |                     if M::BITS > T::Mem::BITS {
      |                           ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  523 |                     if BitMemory::BITS > T::Mem::BITS {
      |                        ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  523 |                     if IsNumber::BITS > T::Mem::BITS {
      |                        ^^^^^^^^^^^^^^

  error[E0308]: mismatched types
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:523:19
      |
  504 |     fn load_be<M>(&self) -> M
      |                - this type parameter
  ...
  523 |                     if M::BITS > T::Mem::BITS {
      |                                  ^^^^^^^^^^^^ expected type parameter `M`, found `u8`
      |
      = note: expected type parameter `M`
                           found type `u8`

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:548:26
      |
  548 |         check("store", len, M::BITS);
      |                                ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  548 |         check("store", len, BitMemory::BITS);
      |                             ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  548 |         check("store", len, IsNumber::BITS);
      |                             ^^^^^^^^^^^^^^

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:565:12
      |
  565 |                     if M::BITS > T::Mem::BITS {
      |                           ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  565 |                     if BitMemory::BITS > T::Mem::BITS {
      |                        ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  565 |                     if IsNumber::BITS > T::Mem::BITS {
      |                        ^^^^^^^^^^^^^^

  error[E0308]: mismatched types
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:565:19
      |
  545 |     fn store_le<M>(&mut self, mut value: M)
      |                 - this type parameter
  ...
  565 |                     if M::BITS > T::Mem::BITS {
      |                                  ^^^^^^^^^^^^ expected type parameter `M`, found `u8`
      |
      = note: expected type parameter `M`
                           found type `u8`

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:586:26
      |
  586 |         check("store", len, M::BITS);
      |                                ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  586 |         check("store", len, BitMemory::BITS);
      |                             ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  586 |         check("store", len, IsNumber::BITS);
      |                             ^^^^^^^^^^^^^^

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:608:12
      |
  608 |                     if M::BITS > T::Mem::BITS {
      |                           ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  608 |                     if BitMemory::BITS > T::Mem::BITS {
      |                        ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  608 |                     if IsNumber::BITS > T::Mem::BITS {
      |                        ^^^^^^^^^^^^^^

  error[E0308]: mismatched types
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/field.rs:608:19
      |
  583 |     fn store_be<M>(&mut self, mut value: M)
      |                 - this type parameter
  ...
  608 |                     if M::BITS > T::Mem::BITS {
      |                                  ^^^^^^^^^^^^ expected type parameter `M`, found `u8`
      |
      = note: expected type parameter `M`
                           found type `u8`

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/index.rs:466:45
      |
  466 |     pub(crate) const END: Self = make!(tail M::BITS);
      |                                                ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  466 |     pub(crate) const END: Self = make!(tail BitMemory::BITS);
      |                                             ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  466 |     pub(crate) const END: Self = make!(tail IsNumber::BITS);
      |                                             ^^^^^^^^^^^^^^

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/index.rs:145:16
      |
  145 |         if idx >= M::BITS {
      |                      ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  145 |         if idx >= BitMemory::BITS {
      |                   ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  145 |         if idx >= IsNumber::BITS {
      |                   ^^^^^^^^^^^^^^

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/index.rs:169:13
      |
  169 |             idx < M::BITS,
      |                      ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  169 |             idx < BitMemory::BITS,
      |                   ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  169 |             idx < IsNumber::BITS,
      |                   ^^^^^^^^^^^^^^

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/index.rs:172:7
      |
  172 |             M::BITS
      |                ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  172 |             BitMemory::BITS
      |
  help: disambiguate the associated constant for candidate #2
      |
  172 |             IsNumber::BITS
      |

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/index.rs:190:42
      |
  190 |         (make!(idx next & M::MASK), next == M::BITS)
      |                                                ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  190 |         (make!(idx next & M::MASK), next == BitMemory::BITS)
      |                                             ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  190 |         (make!(idx next & M::MASK), next == IsNumber::BITS)
      |                                             ^^^^^^^^^^^^^^

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/index.rs:325:16
      |
  325 |             if (0 .. M::BITS as isize).contains(&far) {
      |                         ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  325 |             if (0 .. BitMemory::BITS as isize).contains(&far) {
      |                      ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  325 |             if (0 .. IsNumber::BITS as isize).contains(&far) {
      |                      ^^^^^^^^^^^^^^

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/index.rs:488:14
      |
  488 |             end <= M::BITS,
      |                       ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  488 |             end <= BitMemory::BITS,
      |                    ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  488 |             end <= IsNumber::BITS,
      |                    ^^^^^^^^^^^^^^

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/index.rs:491:7
      |
  491 |             M::BITS
      |                ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  491 |             BitMemory::BITS
      |
  help: disambiguate the associated constant for candidate #2
      |
  491 |             IsNumber::BITS
      |

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/index.rs:546:26
      |
  546 |         let bits_in_head = (M::BITS - head) as usize;
      |                                ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  546 |         let bits_in_head = (BitMemory::BITS - head) as usize;
      |                             ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  546 |         let bits_in_head = (IsNumber::BITS - head) as usize;
      |                             ^^^^^^^^^^^^^^

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/index.rs:640:16
      |
  640 |         if pos >= M::BITS {
      |                      ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  640 |         if pos >= BitMemory::BITS {
      |                   ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  640 |         if pos >= IsNumber::BITS {
      |                   ^^^^^^^^^^^^^^

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/index.rs:667:13
      |
  667 |             pos < M::BITS,
      |                      ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  667 |             pos < BitMemory::BITS,
      |                   ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  667 |             pos < IsNumber::BITS,
      |                   ^^^^^^^^^^^^^^

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/index.rs:670:7
      |
  670 |             M::BITS
      |                ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  670 |             BitMemory::BITS
      |
  help: disambiguate the associated constant for candidate #2
      |
  670 |             IsNumber::BITS
      |

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/index.rs:805:7
      |
  805 |             M::BITS as usize
      |                ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  805 |             BitMemory::BITS as usize
      |             ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  805 |             IsNumber::BITS as usize
      |             ^^^^^^^^^^^^^^

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/index.rs:850:40
      |
  850 |         write!(fmt, "{:0>1$b}", self.sel, M::BITS as usize)
      |                                              ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  850 |         write!(fmt, "{:0>1$b}", self.sel, BitMemory::BITS as usize)
      |                                           ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  850 |         write!(fmt, "{:0>1$b}", self.sel, IsNumber::BITS as usize)
      |                                           ^^^^^^^^^^^^^^

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/index.rs:977:41
      |
  977 |         write!(fmt, "{:0>1$b}", self.mask, M::BITS as usize)
      |                                               ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  977 |         write!(fmt, "{:0>1$b}", self.mask, BitMemory::BITS as usize)
      |                                            ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  977 |         write!(fmt, "{:0>1$b}", self.mask, IsNumber::BITS as usize)
      |                                            ^^^^^^^^^^^^^^

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:28:25
      |
  28  |     const INDX: u8 = Self::BITS.trailing_zeros() as u8;
      |                            ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  28  |     const INDX: u8 = BitMemory::BITS.trailing_zeros() as u8;
      |                      ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  28  |     const INDX: u8 = IsNumber::BITS.trailing_zeros() as u8;
      |                      ^^^^^^^^^^^^^^

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:30:25
      |
  30  |     const MASK: u8 = Self::BITS - 1;
      |                            ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  30  |     const MASK: u8 = BitMemory::BITS - 1;
      |                      ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  30  |     const MASK: u8 = IsNumber::BITS - 1;
      |                      ^^^^^^^^^^^^^^

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/order.rs:278:15
      |
  278 |         if ct == M::BITS {
      |                     ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  278 |         if ct == BitMemory::BITS {
      |                  ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  278 |         if ct == IsNumber::BITS {
      |                  ^^^^^^^^^^^^^^

  error[E0034]: multiple applicable items in scope
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/order.rs:318:15
      |
  318 |         if ct == M::BITS {
      |                     ^^^^ multiple `BITS` found
      |
  note: candidate #1 is defined in the trait `BitMemory`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/bitvec-0.18.4/src/mem.rs:26:2
      |
  26  |     const BITS: u8 = mem::size_of::<Self>() as u8 * 8;
      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  note: candidate #2 is defined in the trait `IsNumber`
     --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/funty-1.2.0/src/lib.rs:144:2
      |
  144 |     const BITS: u32;
      |     ^^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #1
      |
  318 |         if ct == BitMemory::BITS {
      |                  ^^^^^^^^^^^^^^^
  help: disambiguate the associated constant for candidate #2
      |
  318 |         if ct == IsNumber::BITS {
      |                  ^^^^^^^^^^^^^^

  error: aborting due to 43 previous errors

  Some errors have detailed explanations: E0034, E0308.

  For more information about an error, try `rustc --explain E0034`.

  Error: command ['maturin', 'pep517', 'build-wheel', '-i', 'python', '--bindings=cffi', '--manylinux=2010'] returned non-zero exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for clvm-rs
Failed to build clvm-rs
ERROR: Could not build wheels for clvm-rs which use PEP 517 and cannot be installed directly```
hoffmang9 commented 3 years ago

I think you need to use rustup though pip may have installed it correctly. Either way, I doubt rust is in your path when you're trying to build clvm-rs.

Axadiw commented 3 years ago

I've installed rust via pkg not pip :)

And it looks like there are some rust binaries in my PATH

richardkiss commented 3 years ago

I've seen this problem. It's an upstream problem with funty. There is a file Cargo.lock, that pins the dependencies to versions without this problem. I guess the .tar.gz source dist is missing this file, boo. Try doing a git clone of git@github.com:Chia-Network/clvm_rs.git and git checkout 0.1.4 (which is a tag, not a branch, so it shouldn't change). Then do pip install (path_to_clvm_rs).

richardkiss commented 3 years ago

Or, in the clvm_rs directory, do maturin build --release and when it's done, it should leave a .whl wheel file which you can install with pip install clvm_rs.xxxxxxx.whl (not sure the exact name).

richardkiss commented 3 years ago

(I know, too many choices.)

Axadiw commented 3 years ago

compiled with maturin build --release and than pip install /root/clvm_rs/target/wheels/clvm_rs-0.1.4-cp37-cp37m-freebsd_11_3_RELEASE_p14_amd64.whl

Than changed setup.py to correspond with 0.1.4 version

clvm_rs==0.1.4

But still the an error:

ERROR: Could not find a version that satisfies the requirement clvm-rs==0.1.4 (from chia-blockchain)
ERROR: No matching distribution found for clvm-rs==0.1.4

I've tried also with "clvm_rs==0.1.4-cp37-cp37m-freebsd_11_3_RELEASE_p14_amd64" in setup.py, but still with no luck

Which version should I put into setup.py?

richardkiss commented 3 years ago

I'm assuming you mean the chia-blockchain setup.py file. After you change setup.py, you have to do pip install -e . again for the new requirements to take effect. It's probably still expecting 0.1.13.

richardkiss commented 3 years ago

Hmm, actually no, that's not it.

richardkiss commented 3 years ago

Let me try to reproduce on FreeBSD. I'm going to do a pull from dev, since it now expects 0.1.4 and start from there.

richardkiss commented 3 years ago

I was able to get it to build on d0a08d2a9334ebcf28742f76c47817dcda2fd45b using export BUILD_VDF_CLIENT=N; pip install -e ., although my virtualenv was not new. I'll try deleting & rebuilding a clean venv, and doing it all with just that one command.

richardkiss commented 3 years ago

See also https://github.com/Chia-Network/chia-blockchain/wiki/FreeBSD-Install any tips you have would be greatly appreciated there.

richardkiss commented 3 years ago

I created a clean venv, manually installed clvm_rs 0.1.4 with

pip install ../clvm_rs/target/wheels/clvm_rs-0.1.4-cp37-cp37m-freebsd_12_2_RELEASE_p3_amd64.whl

then

export BUILD_VDF_CLIENT=N; pip install -v -e .

seemed to work.

Axadiw commented 3 years ago

Hmm, still problems.

It looks like clvm-rs is installed correctly:

root@chia:~/chia-blockchain # pip show clvm-rs
Name: clvm-rs
Version: 0.1.4
Summary: None
Home-page: None
Author: Richard Kiss <him@richardkiss.com>
Author-email: Richard Kiss <him@richardkiss.com>
License: None
Location: /usr/local/lib/python3.7/site-packages
Requires:
Required-by: chia-blockchain

but install.sh still fails:

root@chia:~/chia-blockchain # sh install.sh
Python version is 3.7
Requirement already satisfied: pip in ./venv/lib/python3.7/site-packages (21.0.1)
Requirement already satisfied: wheel in ./venv/lib/python3.7/site-packages (0.36.2)
Looking in indexes: https://pypi.org/simple, https://download.chia.net/simple/
Requirement already satisfied: miniupnpc==2.1 in ./venv/lib/python3.7/site-packages (2.1)
Looking in indexes: https://pypi.org/simple, https://download.chia.net/simple/
Obtaining file:///root/chia-blockchain
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Collecting click==7.1.2
  Using cached click-7.1.2-py2.py3-none-any.whl (82 kB)
Collecting aiter==0.13.20191203
  Using cached aiter-0.13.20191203-py3-none-any.whl
Collecting aiosqlite==0.17.0
  Using cached aiosqlite-0.17.0-py3-none-any.whl (15 kB)
Collecting aiohttp==3.7.4
  Using cached aiohttp-3.7.4-cp37-cp37m-freebsd_11_3_release_p14_amd64.whl
Collecting chiapos==0.12.45
  Using cached chiapos-0.12.45-cp37-cp37m-freebsd_11_3_release_p14_amd64.whl
Collecting clvm==0.9.3
  Using cached clvm-0.9.3-py3-none-any.whl (19 kB)
Collecting chiavdf==0.15.0
  Using cached chiavdf-0.15.0-cp37-cp37m-freebsd_11_3_release_p14_amd64.whl
Collecting chiabip158==0.19
  Using cached chiabip158-0.19-cp37-cp37m-freebsd_11_3_release_p14_amd64.whl
Collecting concurrent-log-handler==0.9.19
  Using cached concurrent_log_handler-0.9.19-py2.py3-none-any.whl (18 kB)
Collecting clvm-tools==0.4.3
  Using cached clvm_tools-0.4.3-py3-none-any.whl (36 kB)
Collecting websockets==8.1.0
  Using cached websockets-8.1-cp37-cp37m-freebsd_11_3_release_p14_amd64.whl
Collecting keyrings.cryptfile==1.3.4
  Using cached keyrings.cryptfile-1.3.4-py2.py3-none-any.whl
Collecting blspy==0.3.5
  Using cached blspy-0.3.5-cp37-cp37m-freebsd_11_3_release_p14_amd64.whl
ERROR: Could not find a version that satisfies the requirement clvm-rs==0.1.4 (from chia-blockchain)
ERROR: No matching distribution found for clvm-rs==0.1.4
richardkiss commented 3 years ago

Location: /usr/local/lib/python3.7/site-packages

Looks like your clvm-rs is installed globally and not in the venv. Use source activate to ensure you're in the virtualenv, then reinstall clvm-rs again. (I recommend removing clvm-rs from the global site-packages with pip uninstlall clvm-rs while NOT in the venv.) [Check out python docs for more on venv if you're not familar.]

vkz commented 3 years ago

Every method discussed so far fails to build maturin with:

    subprocess.CalledProcessError: Command '['/usr/local/bin/cargo', 'rustc', '--bin', 'maturin', '--message-format=json', '--', '-C', 'link-arg=-s']' returned non-zero exit status 101.
    ----------------------------------------
    ERROR: Failed building wheel for maturin
  Failed to build maturin
  ERROR: Could not build wheels for maturin which use PEP 517 and cannot be installed directly

All attempted in fresh venv. Otherwise was running into the same issues but on FreeBSD 12.2 Release.

So I can't even build that 0.1.4 version of clvm_rs because I can't build maturin. lang/rust is installed and cargo is in my path and available

vkz commented 3 years ago

Ok. Appears we have two unrelated problems here. First is building clvm_rs due to incorrect dependency versions. Solution as described by @richardkiss works for that. Second problem, however, will effect anyone not on FreeBSD 11 but on e.g. FreeBSD 12.2 Release. Gist of it default ld segfaults when you attempt to pip install maturin.

Issue described in https://github.com/PyO3/maturin/issues/363 and appears to have been resolved but unless you want to switch to FreeBSD Stable or Current it won't work for you. The following ugly hack with temporarily replacing LLVM ld with GCC9 ld worked:

cd chia-blockchain
. activate
pkg install gcc
sudo mv /usr/bin/ld /usr/bin/ld.bak
ln -s /usr/local/bin/ld /usr/bin/ld
pip install maturin
# assuming you changed version of clvm_rs in setup.py and you have its repo checked out
pip install ../clvm_rs
# finally
sh install.sh
# don't forget to put default ld back
sudo mv /usr/bin/ld.bak /usr/bin/ld

I actually first tried this but I guess rust tooling does its own binary resolution so it didn't help:

(PATH=/usr/local/bin:$PATH; pip install maturin)

better shell hacker than me could come up with something less ugly than symlinking and moving files around.

vkz commented 3 years ago

Fellas. I know not many people run chia on FreeBSD, but IMO having automated build scripts for at least BSD 11 and BSD 12 Release would be nice and help community. I recall @hoffmang9 mention this a long while back. Please consider.

hoffmang9 commented 3 years ago

I'm probably headed to the datacenter to start installing our k8's cluster where were going to have full *BSD runners. We're going to keep BSD a first class supported OS. The only challenge is PyPi not letting us publish wheels there...

hoffmang9 commented 3 years ago

clvm_rs-0.1.4-cp37-cp37m-freebsd_11_3_RELEASE_amd64.whl is now available on https://pypi.chia.net/simple/clvm-rs

vkz commented 3 years ago

I've no idea exactly how Python or Pip resolve deps etc but here is what I'm getting:

> pip install --extra-index-url https://pypi.chia.net/simple/ clvm_rs==0.1.4
Looking in indexes: https://pypi.org/simple, https://pypi.chia.net/simple/clvm-rs
ERROR: Could not find a version that satisfies the requirement clvm_rs==0.1.4
ERROR: No matching distribution found for clvm_rs==0.1.4

Is it because you only deployed freebsd_11_3 while I am on 12.2 Release:

uname -a
FreeBSD 12.2-RELEASE-p4 FreeBSD 12.2-RELEASE-p4 GENERIC  amd64

And because, like I said, I've no idea how those indexes work and I don't trust any software to ever get clvm-rs vs clvm_rs right I also tried these for good measure:

pip install --extra-index-url https://pypi.chia.net/simple/ clvm-rs==0.1.4
Looking in indexes: https://pypi.org/simple, https://pypi.chia.net/simple/
ERROR: Could not find a version that satisfies the requirement clvm-rs==0.1.4
ERROR: No matching distribution found for clvm-rs==0.1.4

pip install --extra-index-url https://pypi.chia.net/simple/clvm-rs clvm_rs==0.1.4
Looking in indexes: https://pypi.org/simple, https://pypi.chia.net/simple/clvm-rs
ERROR: Could not find a version that satisfies the requirement clvm_rs==0.1.4
ERROR: No matching distribution found for clvm_rs==0.1.4

pip install -i https://pypi.chia.net/simple/ clvm_rs==0.1.4
Looking in indexes: https://pypi.chia.net/simple/
ERROR: Could not find a version that satisfies the requirement clvm_rs==0.1.4
ERROR: No matching distribution found for clvm_rs==0.1.4

pip install -i https://pypi.chia.net/simple/clvm-rs clvm_rs       
Looking in indexes: https://pypi.chia.net/simple/clvm-rs
ERROR: Could not find a version that satisfies the requirement clvm_rs
ERROR: No matching distribution found for clvm_rs

...