Install issue: zip_stream.hpp error: ‘uint32_t’ does not name a type

Hey all-
I'm working to install piscem on my compute cluster and ran into the error below. Would appreciate any help on how to proceed!
Here's a few snippets about compiler versions loaded:
$ which gcc
/cm/shared/apps/gcc/13.2.0/bin/gcc
$ which cpp
/cm/shared/apps/gcc/13.2.0/bin/cpp
$ which cmake
/cm/shared/apps/cmake/3.22.0/bin/cmake

I'm probably missing something in my environment- perhaps related to zlib or libbz2? Let me know if I can provide any additional details on the setup
Below is the full error:
$ cargo build --release
   Compiling libc v0.2.148
   Compiling pkg-config v0.3.27
   Compiling proc-macro2 v1.0.66
   Compiling unicode-ident v1.0.11
   Compiling typenum v1.17.0
   Compiling version_check v0.9.4
   Compiling cfg-if v1.0.0
   Compiling rustix v0.38.14
   Compiling bitflags v2.4.0
   Compiling crc32fast v1.3.2
   Compiling once_cell v1.18.0
   Compiling utf8parse v0.2.1
   Compiling memchr v2.5.0
   Compiling linux-raw-sys v0.4.7
   Compiling serde v1.0.188
   Compiling anstyle v1.0.2
   Compiling colorchoice v1.0.0
   Compiling anstyle-query v1.0.0
   Compiling adler v1.0.2
   Compiling serde_json v1.0.107
   Compiling regex-syntax v0.6.29
   Compiling anyhow v1.0.75
   Compiling heck v0.4.1
   Compiling regex-syntax v0.7.4
   Compiling safemem v0.3.3
   Compiling clap_lex v0.6.0
   Compiling strsim v0.10.0
   Compiling cpufeatures v0.2.9
   Compiling overload v0.1.1
   Compiling bytecount v0.6.3
   Compiling pin-project-lite v0.2.12
   Compiling lazy_static v1.4.0
   Compiling itoa v1.0.9
   Compiling log v0.4.20
   Compiling ryu v1.0.15
   Compiling smallvec v1.11.0
   Compiling hex v0.4.3
   Compiling anstyle-parse v0.2.1
   Compiling sharded-slab v0.1.4
   Compiling miniz_oxide v0.7.1
   Compiling nu-ansi-term v0.46.0
   Compiling tracing-core v0.1.32
   Compiling thread_local v1.1.7
   Compiling regex-automata v0.3.6
   Compiling regex-automata v0.1.10
   Compiling generic-array v0.14.7
   Compiling anstream v0.6.4
   Compiling tracing-log v0.2.0
   Compiling buffer-redux v1.0.0
   Compiling matchers v0.1.0
   Compiling regex v1.9.3
   Compiling num_cpus v1.16.0
   Compiling cc v1.0.83
   Compiling flate2 v1.0.27
   Compiling terminal_size v0.3.0
   Compiling quote v1.0.33
   Compiling clap_builder v4.4.11
   Compiling cmake v0.1.50
   Compiling syn v2.0.29
   Compiling crypto-common v0.1.6
   Compiling block-buffer v0.10.4
   Compiling bzip2-sys v0.1.11+1.0.8
   Compiling lzma-sys v0.1.20
   Compiling sha2-asm v0.6.3
   Compiling piscem v0.7.0 (/jsimonlab/tools/piscem)
   Compiling digest v0.10.7
   Compiling xz2 v0.1.7
   Compiling tracing-attributes v0.1.27
   Compiling clap_derive v4.4.7
   Compiling sha2 v0.10.8
error: failed to run custom build command for `piscem v0.7.0 (/jsimonlab/tools/piscem)`

Caused by:
  process didn't exit successfully: `/jsimonlab/tools/piscem/target/release/build/piscem-83d1f02af4648834/build-script-build` (exit status: 101)
  --- stdout
  cargo:rerun-if-changed=cuttlefish/CMakeLists.txt
  cargo:rerun-if-changed=piscem-cpp/CMakeLists.txt
  CMAKE_TOOLCHAIN_FILE_x86_64-unknown-linux-gnu = None
  CMAKE_TOOLCHAIN_FILE_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_TOOLCHAIN_FILE = None
  CMAKE_TOOLCHAIN_FILE = None
  CMAKE_GENERATOR_x86_64-unknown-linux-gnu = None
  CMAKE_GENERATOR_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_GENERATOR = None
  CMAKE_GENERATOR = None
  CMAKE_PREFIX_PATH_x86_64-unknown-linux-gnu = None
  CMAKE_PREFIX_PATH_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_PREFIX_PATH = None
  CMAKE_PREFIX_PATH = None
  CMAKE_x86_64-unknown-linux-gnu = None
  CMAKE_x86_64_unknown_linux_gnu = None
  HOST_CMAKE = None
  CMAKE = None
  CMake project was already configured. Skipping configuration step.
  running: cd "/jsimonlab/tools/piscem/target/release/build/piscem-2c51f1f462745bea/out/build" && MAKEFLAGS="-j --jobserver-fds=7,8 --jobserver-auth=7,8" "cmake" "--build" "." "--target" "install" "--config" "Release"
  Consolidate compiler generated dependencies of target sshash_static
  [ 21%] Built target build_static
  [ 28%] Built target pesc_static
  [ 32%] Building CXX object CMakeFiles/sshash_static.dir/include/gz/zip_stream.cpp.o

  --- stderr
  In file included from /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:1:
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.hpp:121:5: error: ‘uint32_t’ does not name a type
    121 |     uint32_t get_crc() const;
        |     ^~~~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.hpp:67:1: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
     66 | #include <vector>
    +++ |+#include <cstdint>
     67 |
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.hpp:124:5: error: ‘uint32_t’ does not name a type
    124 |     uint32_t get_in_size() const;
        |     ^~~~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.hpp:124:5: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.hpp:137:5: error: ‘uint32_t’ does not name a type
    137 |     uint32_t crc_;
        |     ^~~~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.hpp:137:5: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.hpp:180:5: error: ‘uint32_t’ does not name a type
    180 |     uint32_t get_crc() const;
        |     ^~~~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.hpp:180:5: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.hpp:186:5: error: ‘uint32_t’ does not name a type
    186 |     uint32_t get_in_size() const;
        |     ^~~~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.hpp:186:5: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.hpp:200:5: error: ‘uint32_t’ does not name a type
    200 |     uint32_t crc_;
        |     ^~~~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.hpp:200:5: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.hpp:285:5: error: ‘uint32_t’ does not name a type
    285 |     uint32_t gzip_crc_;
        |     ^~~~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.hpp:285:5: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.hpp:286:5: error: ‘uint32_t’ does not name a type
    286 |     uint32_t gzip_data_size_;
        |     ^~~~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.hpp:286:5: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp: In constructor ‘basic_zip_streambuf<CharT, Traits>::basic_zip_streambuf(ostream_reference, int, ZipStrategy, int, int, size_t)’:
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:37:83: error: class ‘basic_zip_streambuf<CharT, Traits>’ does not have any field named ‘crc_’
     37 |     : ostream_(ostream), output_buffer_(buffer_size, 0), buffer_(buffer_size, 0), crc_(0) {
        |                                                                                ^~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp: In member function ‘std::streamsize basic_zip_streambuf<CharT, Traits>::flush()’:
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:101:5: error: ‘crc_’ was not declared in this scope
    101 |     crc_ = static_cast<uint32_t>(crc32(crc_, zip_stream_.next_in, zip_stream_.avail_in));
        |     ^~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:101:24: error: ‘uint32_t’ does not name a type
    101 |     crc_ = static_cast<uint32_t>(crc32(crc_, zip_stream_.next_in, zip_stream_.avail_in));
        |                        ^~~~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:5:1: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
      4 | #include <cstring>
    +++ |+#include <cstdint>
      5 |
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp: At global scope:
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:136:1: error: ‘uint32_t’ does not name a type
    136 | uint32_t basic_zip_streambuf<CharT, Traits>::get_crc() const {
        | ^~~~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:136:1: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:141:1: error: ‘uint32_t’ does not name a type
    141 | uint32_t basic_zip_streambuf<CharT, Traits>::get_in_size() const {
        | ^~~~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:141:1: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp: In member function ‘bool basic_zip_streambuf<CharT, Traits>::zip_to_stream(char*, std::streamsize)’:
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:163:5: error: ‘crc_’ was not declared in this scope
    163 |     crc_ = static_cast<uint32_t>(crc32(crc_, zip_stream_.next_in, zip_stream_.avail_in));
        |     ^~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:163:24: error: ‘uint32_t’ does not name a type
    163 |     crc_ = static_cast<uint32_t>(crc32(crc_, zip_stream_.next_in, zip_stream_.avail_in));
        |                        ^~~~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:163:24: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp: In constructor ‘basic_unzip_streambuf<CharT, Traits>::basic_unzip_streambuf(istream_reference, int, size_t, size_t)’:
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:193:87: error: class ‘basic_unzip_streambuf<CharT, Traits>’ does not have any field named ‘crc_’
    193 |     : istream_(istream), input_buffer_(input_buffer_size), buffer_(read_buffer_size), crc_(0) {
        |                                                                                ^~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp: At global scope:
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:259:1: error: ‘uint32_t’ does not name a type
    259 | uint32_t basic_unzip_streambuf<CharT, Traits>::get_crc() const {
        | ^~~~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:259:1: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:269:1: error: ‘uint32_t’ does not name a type
    269 | uint32_t basic_unzip_streambuf<CharT, Traits>::get_in_size() const {
        | ^~~~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:269:1: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp: In member function ‘std::streamsize basic_unzip_streambuf<CharT, Traits>::unzip_from_stream(char_type*, std::streamsize)’:
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:304:5: error: ‘crc_’ was not declared in this scope
    304 |     crc_ = static_cast<uint32_t>(crc32(crc_, reinterpret_cast<byte_type*>(buffer), (uInt)theSize));
        |     ^~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:304:24: error: ‘uint32_t’ does not name a type
    304 |     crc_ = static_cast<uint32_t>(crc32(crc_, reinterpret_cast<byte_type*>(buffer), (uInt)theSize));
        |                        ^~~~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:304:24: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp: In member function ‘basic_zip_ostream<CharT, Traits>& basic_zip_ostream<CharT, Traits>::add_footer()’:
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:391:5: error: ‘uint32_t’ was not declared in this scope
    391 |     uint32_t crc = this->get_crc();
        |     ^~~~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:391:5: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:393:51: error: ‘crc’ was not declared in this scope; did you mean ‘crc32’?
    393 |         this->get_ostream().put(static_cast<char>(crc & 0xff));
        |                                                   ^~~
        |                                                   crc32
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:397:13: error: expected ‘;’ before ‘length’
    397 |     uint32_t length = this->get_in_size();
        |             ^~~~~~~
        |             ;
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:399:51: error: ‘length’ was not declared in this scope
    399 |         this->get_ostream().put(static_cast<char>(length & 0xff));
        |                                                   ^~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp: In constructor ‘basic_zip_istream<CharT, Traits>::basic_zip_istream(istream_reference, int, size_t, size_t)’:
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:417:7: error: class ‘basic_zip_istream<CharT, Traits>’ does not have any field named ‘gzip_crc_’
    417 |     , gzip_crc_(0)
        |       ^~~~~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:418:7: error: class ‘basic_zip_istream<CharT, Traits>’ does not have any field named ‘gzip_data_size_’
    418 |     , gzip_data_size_(0) {
        |       ^~~~~~~~~~~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp: In member function ‘bool basic_zip_istream<CharT, Traits>::check_crc()’:
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:434:31: error: ‘gzip_crc_’ was not declared in this scope
    434 |     return this->get_crc() == gzip_crc_;
        |                               ^~~~~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp: In member function ‘bool basic_zip_istream<CharT, Traits>::check_data_size() const’:
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:439:36: error: ‘gzip_data_size_’ was not declared in this scope; did you mean ‘get_gzip_data_size’?
    439 |     return this->get_out_size() == gzip_data_size_;
        |                                    ^~~~~~~~~~~~~~~
        |                                    get_gzip_data_size
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp: In member function ‘long int basic_zip_istream<CharT, Traits>::get_gzip_crc() const’:
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:444:12: error: ‘gzip_crc_’ was not declared in this scope
    444 |     return gzip_crc_;
        |            ^~~~~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp: In member function ‘long int basic_zip_istream<CharT, Traits>::get_gzip_data_size() const’:
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:449:12: error: ‘gzip_data_size_’ was not declared in this scope; did you mean ‘get_gzip_data_size’?
    449 |     return gzip_data_size_;
        |            ^~~~~~~~~~~~~~~
        |            get_gzip_data_size
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp: In member function ‘void basic_zip_istream<CharT, Traits>::read_footer()’:
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:511:9: error: ‘gzip_crc_’ was not declared in this scope
    511 |         gzip_crc_ = 0;
        |         ^~~~~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:513:39: error: ‘uint32_t’ does not name a type
    513 |             gzip_crc_ += (static_cast<uint32_t>(this->get_istream().get()) & 0xff) << (8 * n);
        |                                       ^~~~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:513:39: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:515:9: error: ‘gzip_data_size_’ was not declared in this scope; did you mean ‘get_gzip_data_size’?
    515 |         gzip_data_size_ = 0;
        |         ^~~~~~~~~~~~~~~
        |         get_gzip_data_size
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:517:45: error: ‘uint32_t’ does not name a type
    517 |             gzip_data_size_ += (static_cast<uint32_t>(this->get_istream().get()) & 0xff) << (8 * n);
        |                                             ^~~~~~~~
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:517:45: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp: In instantiation of ‘bool basic_zip_istream<CharT, Traits>::check_crc() [with CharT = char; Traits = std::char_traits<char>]’:
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:527:16:   required from here
  /jsimonlab/tools/piscem/piscem-cpp/include/gz/zip_stream.cpp:434:18: error: ‘class basic_zip_istream<char>’ has no member named ‘get_crc’
    434 |     return this->get_crc() == gzip_crc_;
        |            ~~~~~~^~~~~~~
  gmake[2]: *** [CMakeFiles/sshash_static.dir/include/gz/zip_stream.cpp.o] Error 1
  gmake[1]: *** [CMakeFiles/sshash_static.dir/all] Error 2
  gmake: *** [all] Error 2
  thread 'main' panicked at /homes8/jsimon/.cargo/registry/src/index.crates.io-6f17d22bba15001f/cmake-0.1.50/src/lib.rs:1098:5:

  command did not execute successfully, got: exit status: 2

  build script failed, must exit now
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...

Thanks for your help!
-Jeremy

Hi @jeremymsimon,
I'm presuming this is because the (quite new) compiler is stricter about the definition of the built-in sized types (in C++).  I bet we probably need to include
#include <cstdint>

in include/gz/zip_stream.cpp.  I can try and add this upstream and ping back here for you to try it.

Hi @jeremymsimon,
Can you now try building from the latest commit on the main branch (https://github.com/COMBINE-lab/piscem/commit/0cca8b832dbf4db3d4f158102ede5b9790908da3)?  This should have that change to piscem-cpp.
--Rob

Thanks @rob-p - got a bit further I think. See below for next round of error(s) with kmc_core:
$ ~/.cargo/bin/cargo build --release
   Compiling libc v0.2.148
   Compiling pkg-config v0.3.27
   Compiling proc-macro2 v1.0.66
   Compiling unicode-ident v1.0.11
   Compiling version_check v0.9.4
   Compiling typenum v1.17.0
   Compiling cfg-if v1.0.0
   Compiling rustix v0.38.14
   Compiling memchr v2.5.0
   Compiling bitflags v2.4.0
   Compiling crc32fast v1.3.2
   Compiling linux-raw-sys v0.4.7
   Compiling utf8parse v0.2.1
   Compiling once_cell v1.18.0
   Compiling anstyle v1.0.2
   Compiling colorchoice v1.0.0
   Compiling adler v1.0.2
   Compiling serde v1.0.188
   Compiling anstyle-query v1.0.0
   Compiling regex-syntax v0.6.29
   Compiling serde_json v1.0.107
   Compiling clap_lex v0.6.0
   Compiling heck v0.4.1
   Compiling anyhow v1.0.75
   Compiling strsim v0.10.0
   Compiling regex-syntax v0.7.4
   Compiling safemem v0.3.3
   Compiling cpufeatures v0.2.9
   Compiling log v0.4.20
   Compiling itoa v1.0.9
   Compiling ryu v1.0.15
   Compiling pin-project-lite v0.2.12
   Compiling lazy_static v1.4.0
   Compiling bytecount v0.6.3
   Compiling overload v0.1.1
   Compiling hex v0.4.3
   Compiling smallvec v1.11.0
   Compiling anstyle-parse v0.2.1
   Compiling miniz_oxide v0.7.1
   Compiling sharded-slab v0.1.4
   Compiling tracing-core v0.1.32
   Compiling thread_local v1.1.7
   Compiling regex-automata v0.3.6
   Compiling nu-ansi-term v0.46.0
   Compiling regex-automata v0.1.10
   Compiling generic-array v0.14.7
   Compiling anstream v0.6.4
   Compiling tracing-log v0.2.0
   Compiling regex v1.9.3
   Compiling matchers v0.1.0
   Compiling buffer-redux v1.0.0
   Compiling flate2 v1.0.27
   Compiling terminal_size v0.3.0
   Compiling num_cpus v1.16.0
   Compiling quote v1.0.33
   Compiling cc v1.0.83
   Compiling syn v2.0.29
   Compiling clap_builder v4.4.11
   Compiling cmake v0.1.50
   Compiling block-buffer v0.10.4
   Compiling crypto-common v0.1.6
   Compiling bzip2-sys v0.1.11+1.0.8
   Compiling lzma-sys v0.1.20
   Compiling sha2-asm v0.6.3
   Compiling digest v0.10.7
   Compiling piscem v0.7.0 (/jsimonlab/tools/piscem-test)
   Compiling clap_derive v4.4.7
   Compiling tracing-attributes v0.1.27
   Compiling xz2 v0.1.7
   Compiling sha2 v0.10.8
   Compiling tracing v0.1.40
   Compiling tracing-subscriber v0.3.18
   Compiling clap v4.4.11
   Compiling bzip2 v0.4.4
   Compiling needletail v0.5.1
   Compiling prepare_fasta v0.1.0
error: failed to run custom build command for `piscem v0.7.0 (/jsimonlab/tools/piscem-test)`

Caused by:
  process didn't exit successfully: `/jsimonlab/tools/piscem-test/target/release/build/piscem-83d1f02af4648834/build-script-build` (exit status: 101)
  --- stdout
  cargo:rerun-if-changed=cuttlefish/CMakeLists.txt
  cargo:rerun-if-changed=piscem-cpp/CMakeLists.txt
  CMAKE_TOOLCHAIN_FILE_x86_64-unknown-linux-gnu = None
  CMAKE_TOOLCHAIN_FILE_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_TOOLCHAIN_FILE = None
  CMAKE_TOOLCHAIN_FILE = None
  CMAKE_GENERATOR_x86_64-unknown-linux-gnu = None
  CMAKE_GENERATOR_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_GENERATOR = None
  CMAKE_GENERATOR = None
  CMAKE_PREFIX_PATH_x86_64-unknown-linux-gnu = None
  CMAKE_PREFIX_PATH_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_PREFIX_PATH = None
  CMAKE_PREFIX_PATH = None
  CMAKE_x86_64-unknown-linux-gnu = None
  CMAKE_x86_64_unknown_linux_gnu = None
  HOST_CMAKE = None
  CMAKE = None
  running: cd "/jsimonlab/tools/piscem-test/target/release/build/piscem-2c51f1f462745bea/out/build" && CMAKE_PREFIX_PATH="" "cmake" "/jsimonlab/tools/piscem-test/piscem-cpp" "-DCMAKE_INSTALL_PREFIX=/jsimonlab/tools/piscem-test/target/release/build/piscem-2c51f1f462745bea/out" "-DCMAKE_C_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_C_COMPILER=/usr/bin/cc" "-DCMAKE_CXX_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_CXX_COMPILER=/cm/shared/apps/gcc/13.2.0/bin/c++" "-DCMAKE_ASM_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_ASM_COMPILER=/usr/bin/cc" "-DCMAKE_BUILD_TYPE=Release"
  -- The C compiler identification is GNU 4.8.5
  -- The CXX compiler identification is GNU 13.2.0
  -- Detecting C compiler ABI info
  -- Detecting C compiler ABI info - done
  -- Check for working C compiler: /usr/bin/cc - skipped
  -- Detecting C compile features
  -- Detecting C compile features - done
  -- Detecting CXX compiler ABI info
  -- Detecting CXX compiler ABI info - done
  -- Check for working CXX compiler: /cm/shared/apps/gcc/13.2.0/bin/c++ - skipped
  -- Detecting CXX compile features
  -- Detecting CXX compile features - done
  -- CMAKE_BUILD_TYPE: Release
  -- Building in the context of CONDA_BUILD = FALSE
  -- Compiling for processor: x86_64
  -- Compiling with custom instruction flags: -msse4.2;-march=native;-mbmi2
  -- Found ZLIB: /jsimonlab/tools/conda/lib/libz.so (found version "1.2.13")
  -- Looking for pthread.h
  -- Looking for pthread.h - found
  -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
  -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
  -- Check if compiler accepts -pthread
  -- Check if compiler accepts -pthread - yes
  -- Found Threads: TRUE
  -- Found PkgConfig: /usr/bin/pkg-config (found version "0.27.1")
  -- Found Jemalloc: /jsimonlab/tools/bin/lib/libjemalloc.so (found suitable version "5.3.0-147-ge4817c8d89a2a413e835c4adeab5c5c4412f9235", minimum required is "5.2.1")
  -- Configuring done
  -- Generating done
  -- Build files have been written to: /jsimonlab/tools/piscem-test/target/release/build/piscem-2c51f1f462745bea/out/build
  running: cd "/jsimonlab/tools/piscem-test/target/release/build/piscem-2c51f1f462745bea/out/build" && MAKEFLAGS="-j --jobserver-fds=7,8 --jobserver-auth=7,8" "cmake" "--build" "." "--target" "install" "--config" "Release"
  [ 35%] Building CXX object CMakeFiles/pesc_static.dir/src/pesc_bulk.cpp.o
  [ 35%] Building CXX object CMakeFiles/build_static.dir/src/build.cpp.o
  [ 35%] Building CXX object CMakeFiles/pesc_static.dir/src/pesc_sc.cpp.o
  [ 35%] Building CXX object CMakeFiles/build_static.dir/src/poison_table_builder.cpp.o
  [ 35%] Building CXX object CMakeFiles/pesc_static.dir/src/hit_searcher.cpp.o
  [ 35%] Building CXX object CMakeFiles/sshash_static.dir/include/gz/zip_stream.cpp.o
  [ 35%] Building CXX object CMakeFiles/pesc_static.dir/src/FastxParser.cpp.o
  [ 35%] Building CXX object CMakeFiles/sshash_static.dir/include/dictionary.cpp.o
  [ 35%] Building CXX object CMakeFiles/sshash_static.dir/include/info.cpp.o
  [ 35%] Building CXX object CMakeFiles/sshash_static.dir/include/builder/build.cpp.o
  [ 39%] Linking CXX static library libsshash_static.a
  [ 39%] Built target sshash_static
  [ 50%] Building CXX object CMakeFiles/check.dir/src/check.cpp.o
  [ 50%] Building CXX object CMakeFiles/evaluator.dir/src/index_evaluator.cpp.o
  [ 50%] Building CXX object CMakeFiles/check.dir/src/FastxParser.cpp.o
  [ 53%] Linking CXX static library libbuild_static.a
  [ 53%] Built target build_static
  [ 57%] Building CXX object CMakeFiles/build.dir/src/build_runner.cpp.o
  [ 60%] Linking CXX executable build
  [ 60%] Built target build
  [ 64%] Linking CXX executable evaluator
  [ 64%] Built target evaluator
  [ 67%] Linking CXX executable check
  [ 67%] Built target check
  [ 71%] Linking CXX static library libpesc_static.a
  [ 71%] Built target pesc_static
  [ 85%] Building CXX object CMakeFiles/pesc-sc.dir/src/pesc_sc_runner.cpp.o
  [ 85%] Building CXX object CMakeFiles/pesc-bulk.dir/src/pesc_bulk_runner.cpp.o
  [ 85%] Building CXX object CMakeFiles/poison_filter.dir/src/poison_read_filter.cpp.o
  [ 85%] Building CXX object CMakeFiles/build-poison-table.dir/src/poison_table_build_runner.cpp.o
  [ 96%] Linking CXX executable pesc-bulk
  [ 96%] Linking CXX executable pesc-sc
  [ 96%] Linking CXX executable build-poison-table
  [ 96%] Built target build-poison-table
  [ 96%] Built target pesc-bulk
  [ 96%] Built target pesc-sc
  [100%] Linking CXX executable poison_filter
  [100%] Built target poison_filter
  Install the project...
  -- Install configuration: "Release"
  -- Installing: /jsimonlab/tools/piscem-test/target/release/build/piscem-2c51f1f462745bea/out/Release/bin/build
  -- Set runtime path of "/jsimonlab/tools/piscem-test/target/release/build/piscem-2c51f1f462745bea/out/Release/bin/build" to ""
  -- Installing: /jsimonlab/tools/piscem-test/target/release/build/piscem-2c51f1f462745bea/out/Release/bin/build-poison-table
  -- Set runtime path of "/jsimonlab/tools/piscem-test/target/release/build/piscem-2c51f1f462745bea/out/Release/bin/build-poison-table" to ""
  -- Installing: /jsimonlab/tools/piscem-test/target/release/build/piscem-2c51f1f462745bea/out/Release/bin/pesc-sc
  -- Set runtime path of "/jsimonlab/tools/piscem-test/target/release/build/piscem-2c51f1f462745bea/out/Release/bin/pesc-sc" to ""
  -- Installing: /jsimonlab/tools/piscem-test/target/release/build/piscem-2c51f1f462745bea/out/Release/bin/pesc-bulk
  -- Set runtime path of "/jsimonlab/tools/piscem-test/target/release/build/piscem-2c51f1f462745bea/out/Release/bin/pesc-bulk" to ""
  -- Installing: /jsimonlab/tools/piscem-test/target/release/build/piscem-2c51f1f462745bea/out/lib/libpesc_static.a
  -- Installing: /jsimonlab/tools/piscem-test/target/release/build/piscem-2c51f1f462745bea/out/lib/libbuild_static.a
  -- Installing: /jsimonlab/tools/piscem-test/target/release/build/piscem-2c51f1f462745bea/out/lib/libsshash_static.a
  cargo:root=/jsimonlab/tools/piscem-test/target/release/build/piscem-2c51f1f462745bea/out
  CMAKE_TOOLCHAIN_FILE_x86_64-unknown-linux-gnu = None
  CMAKE_TOOLCHAIN_FILE_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_TOOLCHAIN_FILE = None
  CMAKE_TOOLCHAIN_FILE = None
  CMAKE_GENERATOR_x86_64-unknown-linux-gnu = None
  CMAKE_GENERATOR_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_GENERATOR = None
  CMAKE_GENERATOR = None
  detected home dir change, cleaning out entire build directory
  CMAKE_PREFIX_PATH_x86_64-unknown-linux-gnu = None
  CMAKE_PREFIX_PATH_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_PREFIX_PATH = None
  CMAKE_PREFIX_PATH = None
  CMAKE_x86_64-unknown-linux-gnu = None
  CMAKE_x86_64_unknown_linux_gnu = None
  HOST_CMAKE = None
  CMAKE = None
  running: cd "/jsimonlab/tools/piscem-test/target/release/build/piscem-2c51f1f462745bea/out/build" && CMAKE_PREFIX_PATH="" "cmake" "/jsimonlab/tools/piscem-test/cuttlefish" "-DINSTANCE_COUNT=32" "-DCMAKE_INSTALL_PREFIX=/jsimonlab/tools/piscem-test/target/release/build/piscem-2c51f1f462745bea/out" "-DCMAKE_C_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_C_COMPILER=/usr/bin/cc" "-DCMAKE_CXX_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_CXX_COMPILER=/cm/shared/apps/gcc/13.2.0/bin/c++" "-DCMAKE_ASM_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_ASM_COMPILER=/usr/bin/cc" "-DCMAKE_BUILD_TYPE=Release"
  -- The CXX compiler identification is GNU 13.2.0
  -- The C compiler identification is GNU 4.8.5
  -- Detecting CXX compiler ABI info
  -- Detecting CXX compiler ABI info - done
  -- Check for working CXX compiler: /cm/shared/apps/gcc/13.2.0/bin/c++ - skipped
  -- Detecting CXX compile features
  -- Detecting CXX compile features - done
  -- Detecting C compiler ABI info
  -- Detecting C compiler ABI info - done
  -- Check for working C compiler: /usr/bin/cc - skipped
  -- Detecting C compile features
  -- Detecting C compile features - done
  -- Looking for pthread.h
  -- Looking for pthread.h - found
  -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
  -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
  -- Looking for pthread_create in pthreads
  -- Looking for pthread_create in pthreads - not found
  -- Looking for pthread_create in pthread
  -- Looking for pthread_create in pthread - found
  -- Found Threads: TRUE
  -- Found ZLIB: /jsimonlab/tools/conda/lib/libz.so (found version "1.2.13")
  -- Found BZip2: /jsimonlab/tools/conda/lib/libbz2.so (found version "1.0.8")
  -- Looking for BZ2_bzCompressInit
  -- Looking for BZ2_bzCompressInit - found
  -- Found PkgConfig: /usr/bin/pkg-config (found version "0.27.1")
  -- Found Jemalloc: /jsimonlab/tools/bin/lib/libjemalloc.so (found suitable version "5.3.0-147-ge4817c8d89a2a413e835c4adeab5c5c4412f9235", minimum required is "5.2.1")
  -- Configuring done
  -- Generating done
  -- Build files have been written to: /jsimonlab/tools/piscem-test/target/release/build/piscem-2c51f1f462745bea/out/build
  running: cd "/jsimonlab/tools/piscem-test/target/release/build/piscem-2c51f1f462745bea/out/build" && MAKEFLAGS="-j --jobserver-fds=7,8 --jobserver-auth=7,8" "cmake" "--build" "." "--target" "install" "--config" "Release"
  [  1%] Creating directories for 'prj_kmc'
  [  3%] Performing download step for 'prj_kmc'
  [  5%] No update step for 'prj_kmc'
  [  7%] Performing patch step for 'prj_kmc'
  patching file Makefile
  patching file kmc_CLI/kmc.cpp
  patching file kmc_api/kmer_defs.h
  patching file kmc_core/cpu_info.cpp
  patching file kmc_core/defs.h
  patching file kmc_core/fastq_reader.h
  patching file kmc_core/intr_copy.h
  patching file kmc_core/queues.h
  [  8%] No configure step for 'prj_kmc'
  [ 10%] Performing build step for 'prj_kmc'
  simde-amalgamated-0.7.2/
  simde-amalgamated-0.7.2/x86/
  simde-amalgamated-0.7.2/x86/avx2.h
  simde-amalgamated-0.7.2/x86/avx512.h
  simde-amalgamated-0.7.2/x86/avx.h
  simde-amalgamated-0.7.2/x86/clmul.h
  simde-amalgamated-0.7.2/x86/fma.h
  simde-amalgamated-0.7.2/x86/gfni.h
  simde-amalgamated-0.7.2/x86/mmx.h
  simde-amalgamated-0.7.2/x86/sse2.h
  simde-amalgamated-0.7.2/x86/sse3.h
  simde-amalgamated-0.7.2/x86/sse4.1.h
  simde-amalgamated-0.7.2/x86/sse4.2.h
  simde-amalgamated-0.7.2/x86/sse.h
  simde-amalgamated-0.7.2/x86/ssse3.h
  simde-amalgamated-0.7.2/x86/svml.h
  simde-amalgamated-0.7.2/x86/xop.h
  simde-amalgamated-0.7.2/arm/
  simde-amalgamated-0.7.2/arm/neon.h

  --- stderr
  Found jemalloc (v5.3.0-147-ge4817c8d89a2a413e835c4adeab5c5c4412f9235) in the system
  CMake Warning:
    Manually-specified variables were not used by the project:

      CMAKE_ASM_COMPILER
      CMAKE_ASM_FLAGS

  In file included from /jsimonlab/tools/piscem-test/piscem-cpp/src/../include/hit_searcher.hpp:5,
                   from /jsimonlab/tools/piscem-test/piscem-cpp/src/hit_searcher.cpp:1:
  /jsimonlab/tools/piscem-test/piscem-cpp/src/../include/CanonicalKmerIterator.hpp:17:17: warning: ‘template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator’ is deprecated [-Wdeprecated-declarations]
     17 |   : public std::iterator<std::input_iterator_tag, std::pair<CanonicalKmer, int>, int> {
        |                 ^~~~~~~~
  In file included from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/bits/stl_algobase.h:65,
                   from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/algorithm:60,
                   from /jsimonlab/tools/piscem-test/piscem-cpp/src/../include/CanonicalKmer.hpp:4,
                   from /jsimonlab/tools/piscem-test/piscem-cpp/src/../include/hit_searcher.hpp:4:
  /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/bits/stl_iterator_base_types.h:127:34: note: declared here
    127 |     struct _GLIBCXX17_DEPRECATED iterator
        |                                  ^~~~~~~~
  In file included from /jsimonlab/tools/piscem-test/piscem-cpp/src/poison_table_builder.cpp:1:
  /jsimonlab/tools/piscem-test/piscem-cpp/src/../include/CanonicalKmerIterator.hpp:17:17: warning: ‘template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator’ is deprecated [-Wdeprecated-declarations]
     17 |   : public std::iterator<std::input_iterator_tag, std::pair<CanonicalKmer, int>, int> {
        |                 ^~~~~~~~
  In file included from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/bits/stl_algobase.h:65,
                   from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/algorithm:60,
                   from /jsimonlab/tools/piscem-test/piscem-cpp/src/../include/CanonicalKmer.hpp:4,
                   from /jsimonlab/tools/piscem-test/piscem-cpp/src/../include/CanonicalKmerIterator.hpp:8:
  /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/bits/stl_iterator_base_types.h:127:34: note: declared here
    127 |     struct _GLIBCXX17_DEPRECATED iterator
        |                                  ^~~~~~~~
  In file included from /jsimonlab/tools/piscem-test/piscem-cpp/src/pesc_sc.cpp:1:
  /jsimonlab/tools/piscem-test/piscem-cpp/src/../include/CanonicalKmerIterator.hpp:17:17: warning: ‘template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator’ is deprecated [-Wdeprecated-declarations]
     17 |   : public std::iterator<std::input_iterator_tag, std::pair<CanonicalKmer, int>, int> {
        |                 ^~~~~~~~
  In file included from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/bits/stl_algobase.h:65,
                   from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/algorithm:60,
                   from /jsimonlab/tools/piscem-test/piscem-cpp/src/../include/CanonicalKmer.hpp:4,
                   from /jsimonlab/tools/piscem-test/piscem-cpp/src/../include/CanonicalKmerIterator.hpp:8:
  /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/bits/stl_iterator_base_types.h:127:34: note: declared here
    127 |     struct _GLIBCXX17_DEPRECATED iterator
        |                                  ^~~~~~~~
  In file included from /jsimonlab/tools/piscem-test/piscem-cpp/include/../include/reference_index.hpp:20,
                   from /jsimonlab/tools/piscem-test/piscem-cpp/src/../include/mapping/utils.hpp:4,
                   from /jsimonlab/tools/piscem-test/piscem-cpp/src/pesc_bulk.cpp:4:
  /jsimonlab/tools/piscem-test/piscem-cpp/include/../include/CanonicalKmerIterator.hpp:17:17: warning: ‘template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator’ is deprecated [-Wdeprecated-declarations]
     17 |   : public std::iterator<std::input_iterator_tag, std::pair<CanonicalKmer, int>, int> {
        |                 ^~~~~~~~
  In file included from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/bits/stl_iterator_base_funcs.h:66,
                   from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/string:47,
                   from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/bits/locale_classes.h:40,
                   from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/bits/ios_base.h:41,
                   from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/ios:44,
                   from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/ostream:40,
                   from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/iostream:41,
                   from /jsimonlab/tools/piscem-test/piscem-cpp/src/../include/FastxParser.hpp:9,
                   from /jsimonlab/tools/piscem-test/piscem-cpp/src/pesc_bulk.cpp:1:
  /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/bits/stl_iterator_base_types.h:127:34: note: declared here
    127 |     struct _GLIBCXX17_DEPRECATED iterator
        |                                  ^~~~~~~~
  In file included from /jsimonlab/tools/piscem-test/piscem-cpp/src/../include/reference_index.hpp:20,
                   from /jsimonlab/tools/piscem-test/piscem-cpp/src/check.cpp:4:
  /jsimonlab/tools/piscem-test/piscem-cpp/src/../include/CanonicalKmerIterator.hpp:17:17: warning: ‘template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator’ is deprecated [-Wdeprecated-declarations]
     17 |   : public std::iterator<std::input_iterator_tag, std::pair<CanonicalKmer, int>, int> {
        |                 ^~~~~~~~
  In file included from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/bits/stl_iterator_base_funcs.h:66,
                   from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/string:47,
                   from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/bits/locale_classes.h:40,
                   from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/bits/ios_base.h:41,
                   from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/ios:44,
                   from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/ostream:40,
                   from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/iostream:41,
                   from /jsimonlab/tools/piscem-test/piscem-cpp/src/check.cpp:1:
  /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/bits/stl_iterator_base_types.h:127:34: note: declared here
    127 |     struct _GLIBCXX17_DEPRECATED iterator
        |                                  ^~~~~~~~
  In file included from /jsimonlab/tools/piscem-test/piscem-cpp/src/../include/reference_index.hpp:20,
                   from /jsimonlab/tools/piscem-test/piscem-cpp/src/index_evaluator.cpp:2:
  /jsimonlab/tools/piscem-test/piscem-cpp/src/../include/CanonicalKmerIterator.hpp:17:17: warning: ‘template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator’ is deprecated [-Wdeprecated-declarations]
     17 |   : public std::iterator<std::input_iterator_tag, std::pair<CanonicalKmer, int>, int> {
        |                 ^~~~~~~~
  In file included from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/bits/stl_iterator_base_funcs.h:66,
                   from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/string:47,
                   from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/bits/locale_classes.h:40,
                   from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/bits/ios_base.h:41,
                   from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/ios:44,
                   from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/ostream:40,
                   from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/iostream:41,
                   from /jsimonlab/tools/piscem-test/piscem-cpp/src/../external/pthash/external/cmd_line_parser/include/parser.hpp:3,
                   from /jsimonlab/tools/piscem-test/piscem-cpp/src/index_evaluator.cpp:1:
  /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/bits/stl_iterator_base_types.h:127:34: note: declared here
    127 |     struct _GLIBCXX17_DEPRECATED iterator
        |                                  ^~~~~~~~
  In file included from /jsimonlab/tools/piscem-test/piscem-cpp/src/poison_read_filter.cpp:1:
  /jsimonlab/tools/piscem-test/piscem-cpp/src/../include/CanonicalKmerIterator.hpp:17:17: warning: ‘template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator’ is deprecated [-Wdeprecated-declarations]
     17 |   : public std::iterator<std::input_iterator_tag, std::pair<CanonicalKmer, int>, int> {
        |                 ^~~~~~~~
  In file included from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/bits/stl_algobase.h:65,
                   from /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/algorithm:60,
                   from /jsimonlab/tools/piscem-test/piscem-cpp/src/../include/CanonicalKmer.hpp:4,
                   from /jsimonlab/tools/piscem-test/piscem-cpp/src/../include/CanonicalKmerIterator.hpp:8:
  /cm/shared/apps/gcc/13.2.0/include/c++/13.2.0/bits/stl_iterator_base_types.h:127:34: note: declared here
    127 |     struct _GLIBCXX17_DEPRECATED iterator
        |                                  ^~~~~~~~
  Found jemalloc (v5.3.0-147-ge4817c8d89a2a413e835c4adeab5c5c4412f9235) in the system
  Build system will fetch and install KMC3
  CMake Warning:
    Manually-specified variables were not used by the project:

      CMAKE_ASM_COMPILER
      CMAKE_ASM_FLAGS

    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                   Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     0    0 1552k    0     0  1829k      0 --:--:-- --:--:-- --:--:-- 4914k
  make[3]: warning: jobserver unavailable: using -j1.  Add `+' to parent make rule.
    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                   Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  238k  100  238k    0     0   449k      0 --:--:-- --:--:-- --:--:--  449k
  make[3]: warning: jobserver unavailable: using -j1.  Add `+' to parent make rule.
  In file included from kmc_core/mem_disk_file.cpp:12:
  kmc_core/critical_error_handler.h: In member function ‘void CCriticalErrorHandler::HandleCriticalError(const std::string&)’:
  kmc_core/critical_error_handler.h:77:28: error: ‘runtime_error’ is not a member of ‘std’
     77 |                 throw std::runtime_error(msg);
        |                            ^~~~~~~~~~~~~
  kmc_core/critical_error_handler.h:7:1: note: ‘std::runtime_error’ is defined in header ‘<stdexcept>’; did you forget to ‘#include <stdexcept>’?
      6 | #include <condition_variable>
    +++ |+#include <stdexcept>
      7 |
  make[3]: *** [kmc_core/mem_disk_file.o] Error 1
  gmake[2]: *** [prj_kmc-prefix/src/prj_kmc-stamp/prj_kmc-build] Error 2
  gmake[1]: *** [CMakeFiles/prj_kmc.dir/all] Error 2
  gmake: *** [all] Error 2
  thread 'main' panicked at /homes8/jsimon/.cargo/registry/src/index.crates.io-6f17d22bba15001f/cmake-0.1.50/src/lib.rs:1098:5:

  command did not execute successfully, got: exit status: 2

  build script failed, must exit now
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Damn — this one isn't as easy because we rely on KMC upstream.  Are you able to build KMC3 on your cluster?
In the meantime you can edit your local version (and I can look to modify the patch we apply to the upstream KMC3 — since we already have to patch it to build properly on ARM).

I'm able to download the pre-compiled KMC3.2.3.linux.x64.tar.gz release, and at least get the usage statement with a ./bin/kmc -h. That should be good enough, yeah? Can we point piscem to use this path during build or is it not that easy?

Unfortunately, it's not quite that easy, since the KMC dependency isn't direct but is through cuttlefish.  So cuttlefish pulls in a specific commit of KMC (to ensure compatibility) which, I guess doesn't include the <stdexcept> header in this location.  Also, we apply several patches to KMC as their are issues with the upstream build that aren't fixed yet (e.g. it only works with GCC on OSX, and it includes some incorrect / deprecated functions for random number generation). So the path to fix this here would be to modify our patch set to add <stdexcept> to kmc_core/critical_error_handler.h in cuttlefish.  I think this could also be added / tweaked manually in your build directory since everything is downloaded, but that, of course, is kind of a hack.
By the way, the latest piscem has pre-compiled executables for linux. Does that not work on your system (as a stop-gap of course, I'll fix this upstream compile issue)?

Didn't realize you had pre-compiled executables for linux! But unfortunately this at least doesn't work straight away, I get some other GLIBC errors. Although I've seen this sort of error before, the solution seems to vary each time.
Any suggestions here? Note I do not have root privileges
piscem-x86_64-unknown-linux-gnu/piscem: /lib64/libm.so.6: version `GLIBC_2.23' not found (required by piscem-x86_64-unknown-linux-gnu/piscem)
piscem-x86_64-unknown-linux-gnu/piscem: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by piscem-x86_64-unknown-linux-gnu/piscem)
piscem-x86_64-unknown-linux-gnu/piscem: /lib64/libpthread.so.0: version `GLIBC_2.30' not found (required by piscem-x86_64-unknown-linux-gnu/piscem)
piscem-x86_64-unknown-linux-gnu/piscem: /lib64/libc.so.6: version `GLIBC_2.18' not found (required by piscem-x86_64-unknown-linux-gnu/piscem)
piscem-x86_64-unknown-linux-gnu/piscem: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by piscem-x86_64-unknown-linux-gnu/piscem)

Which distro / version are you running on?  The easiest thing might just be for me to try and build an executable for that (e.g. in a docker image) using a slightly less cutting-edge GCC, which I could provide to you.
Alternatively, the other thing you could try if your cluster supports different modules, is to use a slightly less recent GCC (e.g. 11.x) which shouldn't be quite so pedantic about missing headers.

Looks like our cluster uses CentOS 7.8:
$ lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	CentOS
Description:	CentOS Linux release 7.8.2003 (Core)
Release:	7.8.2003
Codename:	Core

On this system, I have GCC versions 5.5.0, 7.3.0, 8.2.0, 9.2.0, or 13.2.0 (not 11) available to me as modules. What do you suggest?

I would try 9.2.0 — basically the newest version you have pre 13.  What we ideally want is something that supports C++17 fully (and maybe some components from C++20), but which isn't as pedantic as the newest compiler.

Hmm this gets a bit over my head, but adding that as a module, and adding the path it lives in to my $LD_LIBRARY_PATH still results in these errors:
piscem-x86_64-unknown-linux-gnu/piscem: /lib64/libm.so.6: version `GLIBC_2.23' not found (required by piscem-x86_64-unknown-linux-gnu/piscem)
piscem-x86_64-unknown-linux-gnu/piscem: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by piscem-x86_64-unknown-linux-gnu/piscem)
piscem-x86_64-unknown-linux-gnu/piscem: /lib64/libpthread.so.0: version `GLIBC_2.30' not found (required by piscem-x86_64-unknown-linux-gnu/piscem)
piscem-x86_64-unknown-linux-gnu/piscem: /lib64/libc.so.6: version `GLIBC_2.18' not found (required by piscem-x86_64-unknown-linux-gnu/piscem)
piscem-x86_64-unknown-linux-gnu/piscem: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by piscem-x86_64-unknown-linux-gnu/piscem)
piscem-x86_64-unknown-linux-gnu/piscem: /cm/local/apps/gcc/9.2.0/lib64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by piscem-x86_64-unknown-linux-gnu/piscem)

Other output that may be helpful (?):
$ strings /cm/local/apps/gcc/9.2.0/lib64/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_DEBUG_MESSAGE_LENGTH

$ strings /lib64/libm.so.6 | grep GLIBC
GLIBC_2.2.5
GLIBC_2.4
GLIBC_2.15
GLIBC_PRIVATE
GLIBC_2.15
__strtold_nan@@GLIBC_PRIVATE
__errno_location@@GLIBC_2.2.5
errno@@GLIBC_PRIVATE
qsort@@GLIBC_2.2.5
__strtod_nan@@GLIBC_PRIVATE
fputs@@GLIBC_2.2.5
memset@@GLIBC_2.2.5
feupdateenv@@GLIBC_2.2.5
GLIBC_2.4
_rtld_global_ro@@GLIBC_PRIVATE
__strtof_nan@@GLIBC_PRIVATE
memmove@@GLIBC_2.2.5
fwrite@@GLIBC_2.2.5
__cxa_finalize@@GLIBC_2.2.5
stderr@@GLIBC_2.2.5

And hopefully this goes without saying, but given it's late Friday on a holiday weekend, there is absolutely no rush on this. I won't be able come back to this myself until the end of next week anyway, so take your time.
Appreciate you and everything you do!

Of course, @jeremymsimon!  I actually meant, what if you activate that compiler module and then try to build piscem from source.
The idea is it may build for you with the older gcc.

Ah! Well, that gets me somewhere different at least:
$ ~/.cargo/bin/cargo build --release
   Compiling libc v0.2.148
   Compiling pkg-config v0.3.27
   Compiling proc-macro2 v1.0.66
   Compiling unicode-ident v1.0.11
   Compiling typenum v1.17.0
   Compiling version_check v0.9.4
   Compiling cfg-if v1.0.0
   Compiling rustix v0.38.14
   Compiling linux-raw-sys v0.4.7
   Compiling once_cell v1.18.0
   Compiling memchr v2.5.0
   Compiling crc32fast v1.3.2
   Compiling bitflags v2.4.0
   Compiling utf8parse v0.2.1
   Compiling anstyle-query v1.0.0
   Compiling anstyle v1.0.2
   Compiling serde v1.0.188
   Compiling colorchoice v1.0.0
   Compiling adler v1.0.2
   Compiling regex-syntax v0.6.29
   Compiling serde_json v1.0.107
   Compiling heck v0.4.1
   Compiling safemem v0.3.3
   Compiling anyhow v1.0.75
   Compiling regex-syntax v0.7.4
   Compiling clap_lex v0.6.0
   Compiling strsim v0.10.0
   Compiling ryu v1.0.15
   Compiling overload v0.1.1
   Compiling log v0.4.20
   Compiling bytecount v0.6.3
   Compiling itoa v1.0.9
   Compiling pin-project-lite v0.2.12
   Compiling lazy_static v1.4.0
   Compiling cpufeatures v0.2.9
   Compiling smallvec v1.11.0
   Compiling hex v0.4.3
   Compiling nu-ansi-term v0.46.0
   Compiling sharded-slab v0.1.4
   Compiling anstyle-parse v0.2.1
   Compiling tracing-core v0.1.32
   Compiling thread_local v1.1.7
   Compiling miniz_oxide v0.7.1
   Compiling regex-automata v0.3.6
   Compiling generic-array v0.14.7
   Compiling regex-automata v0.1.10
   Compiling anstream v0.6.4
   Compiling tracing-log v0.2.0
   Compiling buffer-redux v1.0.0
   Compiling matchers v0.1.0
   Compiling regex v1.9.3
   Compiling num_cpus v1.16.0
   Compiling flate2 v1.0.27
   Compiling cc v1.0.83
   Compiling terminal_size v0.3.0
   Compiling quote v1.0.33
   Compiling cmake v0.1.50
   Compiling clap_builder v4.4.11
   Compiling syn v2.0.29
   Compiling block-buffer v0.10.4
   Compiling crypto-common v0.1.6
   Compiling lzma-sys v0.1.20
   Compiling bzip2-sys v0.1.11+1.0.8
   Compiling sha2-asm v0.6.3
   Compiling piscem v0.7.0 (/jsimonlab/tools/piscem-github)
   Compiling digest v0.10.7
   Compiling xz2 v0.1.7
   Compiling tracing-attributes v0.1.27
   Compiling clap_derive v4.4.7
   Compiling sha2 v0.10.8
   Compiling clap v4.4.11
   Compiling tracing v0.1.40
   Compiling tracing-subscriber v0.3.18
   Compiling bzip2 v0.4.4
   Compiling needletail v0.5.1
   Compiling prepare_fasta v0.1.0
error: failed to run custom build command for `piscem v0.7.0 (/jsimonlab/tools/piscem-github)`

Caused by:
  process didn't exit successfully: `/jsimonlab/tools/piscem-github/target/release/build/piscem-83d1f02af4648834/build-script-build` (exit status: 101)
  --- stdout
  cargo:rerun-if-changed=cuttlefish/CMakeLists.txt
  cargo:rerun-if-changed=piscem-cpp/CMakeLists.txt
  CMAKE_TOOLCHAIN_FILE_x86_64-unknown-linux-gnu = None
  CMAKE_TOOLCHAIN_FILE_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_TOOLCHAIN_FILE = None
  CMAKE_TOOLCHAIN_FILE = None
  CMAKE_GENERATOR_x86_64-unknown-linux-gnu = None
  CMAKE_GENERATOR_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_GENERATOR = None
  CMAKE_GENERATOR = None
  CMAKE_PREFIX_PATH_x86_64-unknown-linux-gnu = None
  CMAKE_PREFIX_PATH_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_PREFIX_PATH = None
  CMAKE_PREFIX_PATH = None
  CMAKE_x86_64-unknown-linux-gnu = None
  CMAKE_x86_64_unknown_linux_gnu = None
  HOST_CMAKE = None
  CMAKE = None
  running: cd "/jsimonlab/tools/piscem-github/target/release/build/piscem-2c51f1f462745bea/out/build" && CMAKE_PREFIX_PATH="" "cmake" "/jsimonlab/tools/piscem-github/piscem-cpp" "-DCMAKE_INSTALL_PREFIX=/jsimonlab/tools/piscem-github/target/release/build/piscem-2c51f1f462745bea/out" "-DCMAKE_C_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_C_COMPILER=/usr/bin/cc" "-DCMAKE_CXX_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_CXX_COMPILER=/cm/local/apps/gcc/9.2.0/bin/c++" "-DCMAKE_ASM_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_ASM_COMPILER=/usr/bin/cc" "-DCMAKE_BUILD_TYPE=Release"
  -- The C compiler identification is GNU 4.8.5
  -- The CXX compiler identification is GNU 9.2.0
  -- Detecting C compiler ABI info
  -- Detecting C compiler ABI info - done
  -- Check for working C compiler: /usr/bin/cc - skipped
  -- Detecting C compile features
  -- Detecting C compile features - done
  -- Detecting CXX compiler ABI info
  -- Detecting CXX compiler ABI info - done
  -- Check for working CXX compiler: /cm/local/apps/gcc/9.2.0/bin/c++ - skipped
  -- Detecting CXX compile features
  -- Detecting CXX compile features - done
  -- CMAKE_BUILD_TYPE: Release
  -- Building in the context of CONDA_BUILD = FALSE
  -- Compiling for processor: x86_64
  -- Compiling with custom instruction flags: -msse4.2;-march=native;-mbmi2
  -- Found ZLIB: /jsimonlab/tools/conda/lib/libz.so (found version "1.2.13")
  -- Looking for pthread.h
  -- Looking for pthread.h - found
  -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
  -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
  -- Check if compiler accepts -pthread
  -- Check if compiler accepts -pthread - yes
  -- Found Threads: TRUE
  -- Found PkgConfig: /usr/bin/pkg-config (found version "0.27.1")
  -- Found Jemalloc: /jsimonlab/tools/bin/lib/libjemalloc.so (found suitable version "5.3.0-147-ge4817c8d89a2a413e835c4adeab5c5c4412f9235", minimum required is "5.2.1")
  -- Configuring done
  -- Generating done
  -- Build files have been written to: /jsimonlab/tools/piscem-github/target/release/build/piscem-2c51f1f462745bea/out/build
  running: cd "/jsimonlab/tools/piscem-github/target/release/build/piscem-2c51f1f462745bea/out/build" && MAKEFLAGS="-j --jobserver-fds=7,8 --jobserver-auth=7,8" "cmake" "--build" "." "--target" "install" "--config" "Release"
  [ 35%] Building CXX object CMakeFiles/pesc_static.dir/src/pesc_bulk.cpp.o
  [ 35%] Building CXX object CMakeFiles/sshash_static.dir/include/gz/zip_stream.cpp.o
  [ 35%] Building CXX object CMakeFiles/sshash_static.dir/include/dictionary.cpp.o
  [ 35%] Building CXX object CMakeFiles/pesc_static.dir/src/hit_searcher.cpp.o
  [ 35%] Building CXX object CMakeFiles/build_static.dir/src/build.cpp.o
  [ 35%] Building CXX object CMakeFiles/pesc_static.dir/src/pesc_sc.cpp.o
  [ 35%] Building CXX object CMakeFiles/sshash_static.dir/include/info.cpp.o
  [ 35%] Building CXX object CMakeFiles/build_static.dir/src/poison_table_builder.cpp.o
  [ 35%] Building CXX object CMakeFiles/sshash_static.dir/include/builder/build.cpp.o
  [ 35%] Building CXX object CMakeFiles/pesc_static.dir/src/FastxParser.cpp.o
  [ 39%] Linking CXX static library libsshash_static.a
  [ 39%] Built target sshash_static
  [ 50%] Building CXX object CMakeFiles/evaluator.dir/src/index_evaluator.cpp.o
  [ 50%] Building CXX object CMakeFiles/check.dir/src/FastxParser.cpp.o
  [ 50%] Building CXX object CMakeFiles/check.dir/src/check.cpp.o
  [ 53%] Linking CXX static library libbuild_static.a
  [ 53%] Built target build_static
  [ 57%] Building CXX object CMakeFiles/build.dir/src/build_runner.cpp.o
  [ 60%] Linking CXX executable build
  [ 60%] Built target build
  [ 64%] Linking CXX executable evaluator
  [ 64%] Built target evaluator
  [ 67%] Linking CXX executable check
  [ 67%] Built target check
  [ 71%] Linking CXX static library libpesc_static.a
  [ 71%] Built target pesc_static
  [ 85%] Building CXX object CMakeFiles/pesc-sc.dir/src/pesc_sc_runner.cpp.o
  [ 85%] Building CXX object CMakeFiles/poison_filter.dir/src/poison_read_filter.cpp.o
  [ 85%] Building CXX object CMakeFiles/build-poison-table.dir/src/poison_table_build_runner.cpp.o
  [ 85%] Building CXX object CMakeFiles/pesc-bulk.dir/src/pesc_bulk_runner.cpp.o
  [ 96%] Linking CXX executable pesc-sc
  [ 96%] Linking CXX executable pesc-bulk
  [ 96%] Linking CXX executable build-poison-table
  [ 96%] Built target build-poison-table
  [ 96%] Built target pesc-bulk
  [ 96%] Built target pesc-sc
  [100%] Linking CXX executable poison_filter
  [100%] Built target poison_filter
  Install the project...
  -- Install configuration: "Release"
  -- Installing: /jsimonlab/tools/piscem-github/target/release/build/piscem-2c51f1f462745bea/out/Release/bin/build
  -- Set runtime path of "/jsimonlab/tools/piscem-github/target/release/build/piscem-2c51f1f462745bea/out/Release/bin/build" to ""
  -- Installing: /jsimonlab/tools/piscem-github/target/release/build/piscem-2c51f1f462745bea/out/Release/bin/build-poison-table
  -- Set runtime path of "/jsimonlab/tools/piscem-github/target/release/build/piscem-2c51f1f462745bea/out/Release/bin/build-poison-table" to ""
  -- Installing: /jsimonlab/tools/piscem-github/target/release/build/piscem-2c51f1f462745bea/out/Release/bin/pesc-sc
  -- Set runtime path of "/jsimonlab/tools/piscem-github/target/release/build/piscem-2c51f1f462745bea/out/Release/bin/pesc-sc" to ""
  -- Installing: /jsimonlab/tools/piscem-github/target/release/build/piscem-2c51f1f462745bea/out/Release/bin/pesc-bulk
  -- Set runtime path of "/jsimonlab/tools/piscem-github/target/release/build/piscem-2c51f1f462745bea/out/Release/bin/pesc-bulk" to ""
  -- Installing: /jsimonlab/tools/piscem-github/target/release/build/piscem-2c51f1f462745bea/out/lib/libpesc_static.a
  -- Installing: /jsimonlab/tools/piscem-github/target/release/build/piscem-2c51f1f462745bea/out/lib/libbuild_static.a
  -- Installing: /jsimonlab/tools/piscem-github/target/release/build/piscem-2c51f1f462745bea/out/lib/libsshash_static.a
  cargo:root=/jsimonlab/tools/piscem-github/target/release/build/piscem-2c51f1f462745bea/out
  CMAKE_TOOLCHAIN_FILE_x86_64-unknown-linux-gnu = None
  CMAKE_TOOLCHAIN_FILE_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_TOOLCHAIN_FILE = None
  CMAKE_TOOLCHAIN_FILE = None
  CMAKE_GENERATOR_x86_64-unknown-linux-gnu = None
  CMAKE_GENERATOR_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_GENERATOR = None
  CMAKE_GENERATOR = None
  detected home dir change, cleaning out entire build directory
  CMAKE_PREFIX_PATH_x86_64-unknown-linux-gnu = None
  CMAKE_PREFIX_PATH_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_PREFIX_PATH = None
  CMAKE_PREFIX_PATH = None
  CMAKE_x86_64-unknown-linux-gnu = None
  CMAKE_x86_64_unknown_linux_gnu = None
  HOST_CMAKE = None
  CMAKE = None
  running: cd "/jsimonlab/tools/piscem-github/target/release/build/piscem-2c51f1f462745bea/out/build" && CMAKE_PREFIX_PATH="" "cmake" "/jsimonlab/tools/piscem-github/cuttlefish" "-DINSTANCE_COUNT=32" "-DCMAKE_INSTALL_PREFIX=/jsimonlab/tools/piscem-github/target/release/build/piscem-2c51f1f462745bea/out" "-DCMAKE_C_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_C_COMPILER=/usr/bin/cc" "-DCMAKE_CXX_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_CXX_COMPILER=/cm/local/apps/gcc/9.2.0/bin/c++" "-DCMAKE_ASM_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_ASM_COMPILER=/usr/bin/cc" "-DCMAKE_BUILD_TYPE=Release"
  -- The CXX compiler identification is GNU 9.2.0
  -- The C compiler identification is GNU 4.8.5
  -- Detecting CXX compiler ABI info
  -- Detecting CXX compiler ABI info - done
  -- Check for working CXX compiler: /cm/local/apps/gcc/9.2.0/bin/c++ - skipped
  -- Detecting CXX compile features
  -- Detecting CXX compile features - done
  -- Detecting C compiler ABI info
  -- Detecting C compiler ABI info - done
  -- Check for working C compiler: /usr/bin/cc - skipped
  -- Detecting C compile features
  -- Detecting C compile features - done
  -- Looking for pthread.h
  -- Looking for pthread.h - found
  -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
  -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
  -- Looking for pthread_create in pthreads
  -- Looking for pthread_create in pthreads - not found
  -- Looking for pthread_create in pthread
  -- Looking for pthread_create in pthread - found
  -- Found Threads: TRUE
  -- Found ZLIB: /jsimonlab/tools/conda/lib/libz.so (found version "1.2.13")
  -- Found BZip2: /jsimonlab/tools/conda/lib/libbz2.so (found version "1.0.8")
  -- Looking for BZ2_bzCompressInit
  -- Looking for BZ2_bzCompressInit - found
  -- Found PkgConfig: /usr/bin/pkg-config (found version "0.27.1")
  -- Found Jemalloc: /jsimonlab/tools/bin/lib/libjemalloc.so (found suitable version "5.3.0-147-ge4817c8d89a2a413e835c4adeab5c5c4412f9235", minimum required is "5.2.1")
  -- Configuring done
  -- Generating done
  -- Build files have been written to: /jsimonlab/tools/piscem-github/target/release/build/piscem-2c51f1f462745bea/out/build
  running: cd "/jsimonlab/tools/piscem-github/target/release/build/piscem-2c51f1f462745bea/out/build" && MAKEFLAGS="-j --jobserver-fds=7,8 --jobserver-auth=7,8" "cmake" "--build" "." "--target" "install" "--config" "Release"
  [  1%] Creating directories for 'prj_kmc'
  [  3%] Performing download step for 'prj_kmc'
  [  5%] No update step for 'prj_kmc'
  [  7%] Performing patch step for 'prj_kmc'
  patching file Makefile
  patching file kmc_CLI/kmc.cpp
  patching file kmc_api/kmer_defs.h
  patching file kmc_core/cpu_info.cpp
  patching file kmc_core/defs.h
  patching file kmc_core/fastq_reader.h
  patching file kmc_core/intr_copy.h
  patching file kmc_core/queues.h
  [  8%] No configure step for 'prj_kmc'
  [ 10%] Performing build step for 'prj_kmc'
  simde-amalgamated-0.7.2/
  simde-amalgamated-0.7.2/x86/
  simde-amalgamated-0.7.2/x86/avx2.h
  simde-amalgamated-0.7.2/x86/avx512.h
  simde-amalgamated-0.7.2/x86/avx.h
  simde-amalgamated-0.7.2/x86/clmul.h
  simde-amalgamated-0.7.2/x86/fma.h
  simde-amalgamated-0.7.2/x86/gfni.h
  simde-amalgamated-0.7.2/x86/mmx.h
  simde-amalgamated-0.7.2/x86/sse2.h
  simde-amalgamated-0.7.2/x86/sse3.h
  simde-amalgamated-0.7.2/x86/sse4.1.h
  simde-amalgamated-0.7.2/x86/sse4.2.h
  simde-amalgamated-0.7.2/x86/sse.h
  simde-amalgamated-0.7.2/x86/ssse3.h
  simde-amalgamated-0.7.2/x86/svml.h
  simde-amalgamated-0.7.2/x86/xop.h
  simde-amalgamated-0.7.2/arm/
  simde-amalgamated-0.7.2/arm/neon.h

  --- stderr
  Found jemalloc (v5.3.0-147-ge4817c8d89a2a413e835c4adeab5c5c4412f9235) in the system
  CMake Warning:
    Manually-specified variables were not used by the project:

      CMAKE_ASM_COMPILER
      CMAKE_ASM_FLAGS

  /jsimonlab/tools/piscem-github/piscem-cpp/src/hit_searcher.cpp: In instantiation of ‘bool mindex::check_direct_match(mindex::SkipContext&, int32_t, int, int32_t, int64_t&, std::vector<std::pair<int, projected_hits> >&) [with bool add_hit_if_successful = false; int32_t = int; int64_t = long int]’:
  /jsimonlab/tools/piscem-github/piscem-cpp/src/hit_searcher.cpp:860:33:   required from here
  /jsimonlab/tools/piscem-github/piscem-cpp/src/hit_searcher.cpp:710:7: warning: variable ‘read_pos’ set but not used [-Wunused-but-set-variable]
    710 |   int read_pos = skip_ctx.read_pos();
        |       ^~~~~~~~
  /jsimonlab/tools/piscem-github/piscem-cpp/src/poison_table_builder.cpp: In function ‘void find_poison_kmers(mindex::reference_index&, fastx_parser::FastxParser<klibpp::KSeq>&, std::atomic<long unsigned int>&, std::vector<sshash::labeled_poison_occ_t>&) [with poison_state_t = poison_kmer_state_strict]’:
  /jsimonlab/tools/piscem-github/piscem-cpp/src/poison_table_builder.cpp:79:69: warning: ‘*((void*)& pstate +28)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
     79 |           cpos, static_cast<int64_t>(predecessor_phits.contig_len() - k));
        |                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
  /jsimonlab/tools/piscem-github/piscem-cpp/src/poison_table_builder.cpp:128:18: note: ‘*((void*)& pstate +28)’ was declared here
    128 |   poison_state_t pstate;
        |                  ^~~~~~
  /jsimonlab/tools/piscem-github/piscem-cpp/src/poison_table_builder.cpp:70:55: warning: ‘*((void*)& pstate +24)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
     70 |         bool isFw = predecessor_phits.hit_fw_on_contig();
        |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
  /jsimonlab/tools/piscem-github/piscem-cpp/src/poison_table_builder.cpp:128:18: note: ‘*((void*)& pstate +24)’ was declared here
    128 |   poison_state_t pstate;
        |                  ^~~~~~
  /jsimonlab/tools/piscem-github/piscem-cpp/src/poison_table_builder.cpp:74:55: warning: ‘*((void*)& pstate +20)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
     74 |         int64_t cpos = predecessor_phits.contig_pos() + offset;
        |                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
  /jsimonlab/tools/piscem-github/piscem-cpp/src/poison_table_builder.cpp:128:18: note: ‘*((void*)& pstate +20)’ was declared here
    128 |   poison_state_t pstate;
        |                  ^~~~~~
  /jsimonlab/tools/piscem-github/piscem-cpp/src/poison_table_builder.cpp:128:18: warning: ‘*((void*)& pstate +16)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  Found jemalloc (v5.3.0-147-ge4817c8d89a2a413e835c4adeab5c5c4412f9235) in the system
  Build system will fetch and install KMC3
  CMake Warning:
    Manually-specified variables were not used by the project:

      CMAKE_ASM_COMPILER
      CMAKE_ASM_FLAGS

    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                   Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     0    0 1552k    0     0  1871k      0 --:--:-- --:--:-- --:--:-- 1871k
  make[3]: warning: jobserver unavailable: using -j1.  Add `+' to parent make rule.
    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                   Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  238k  100  238k    0     0   413k      0 --:--:-- --:--:-- --:--:-- 4039k
  make[3]: warning: jobserver unavailable: using -j1.  Add `+' to parent make rule.
  /usr/bin/ld: cannot find -lpthread
  /usr/bin/ld: cannot find -lm
  /usr/bin/ld: cannot find -lc
  collect2: error: ld returned 1 exit status
  make[3]: *** [kmc] Error 1
  gmake[2]: *** [prj_kmc-prefix/src/prj_kmc-stamp/prj_kmc-build] Error 2
  gmake[1]: *** [CMakeFiles/prj_kmc.dir/all] Error 2
  gmake: *** [all] Error 2
  thread 'main' panicked at /homes8/jsimon/.cargo/registry/src/index.crates.io-6f17d22bba15001f/cmake-0.1.50/src/lib.rs:1098:5:

  command did not execute successfully, got: exit status: 2

  build script failed, must exit now
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

ohhh OK.  This is quite interesting.  This suggests that it can't find the standard libraries (pthread, m (libm, the math library) and libc) with which to link.  Those are super-basic libraries.  Might I suggest trying:
CC=<fully-qualified-path-to-your-C-compiler> CXX=<fully-qualified-path-to-your-c++-compiler> ~/.cargo/bin/cargo build --release

I'm not sure why the standard basic libraries might not be found, but I did find it quite strange to see this:
  -- The C compiler identification is GNU 4.8.5
  -- The CXX compiler identification is GNU 9.2.0

So your CXX compiler seems to be what you set, but your C compiler is something ancient ;P.

Hmmm so:
$ ls -hl /usr/bin/cc
lrwxrwxrwx 1 root root 3 Jul 15  2020 /usr/bin/cc -> gcc

Plain ol' cc symlinks to the system-default gcc v4.8.5. But if I do:
CC=/cm/local/apps/gcc/9.2.0/bin/gcc CXX=/cm/local/apps/gcc/9.2.0/bin/c++ ~/.cargo/bin/cargo build --release

with or without creating an alias (just in case? maybe?) such that cc points to gcc v9.2.0
$ which cc
alias cc='/cm/local/apps/gcc/9.2.0/bin/gcc'
	/cm/local/apps/gcc/9.2.0/bin/gcc

I'm still getting the exact same error as above.
make[3]: warning: jobserver unavailable: using -j1.  Add `+' to parent make rule.
  make[3]: warning: jobserver unavailable: using -j1.  Add `+' to parent make rule.
  /usr/bin/ld: cannot find -lpthread
  /usr/bin/ld: cannot find -lm
  /usr/bin/ld: cannot find -lc
  collect2: error: ld returned 1 exit status
  make[3]: *** [kmc] Error 1
  gmake[2]: *** [prj_kmc-prefix/src/prj_kmc-stamp/prj_kmc-build] Error 2
  gmake[1]: *** [CMakeFiles/prj_kmc.dir/all] Error 2
  gmake: *** [all] Error 2
  thread 'main' panicked at /homes8/jsimon/.cargo/registry/src/index.crates.io-6f17d22bba15001f/cmake-0.1.50/src/lib.rs:1098:5:

  command did not execute successfully, got: exit status: 2

Surely I'm missing something! Hope it's not something silly...

Hi @jeremymsimon,
So I've been experimenting in a CentOS Docker and I found that CentOS by default doesn't include the static system libraries!  I think one needs to install the packages zlib-static and glibc-static.  It's worth asking if those can be installed. In the meantime, I'll try and get a complete build in this docker.
--Rob

Hi @jeremymsimon,
Can you please try this executable? piscem-x86_64-unknown-linux-gnu.tar.gz
--Rob

Hi @rob-p
I am working through @DongzeHE's "simpleaf with decoys" tutorial, and I just got to exactly the same GCC error as @jeremymsimon (i.e. piscem-x86_64-unknown-linux-gnu/piscem: /lib64/libm.so.6: version GLIBC_2.23' not found` etc). Your updated executable fixed the error for me; I now get:
$PISCEM --help
Indexing and mapping to compacted colored de Bruijn graphs

Usage: piscem [OPTIONS] <COMMAND>

Commands:
  build     Index a reference sequence
  map-sc    map reads for single-cell processing
  map-bulk  map reads for bulk processing
  help      Print this message or the help of the given subcommand(s)

Options:
  -q, --quiet    be quiet (no effect yet for cDBG building phase of indexing)
  -h, --help     Print help
  -V, --version  Print version

Thanks, and hope you had a nice break!
Will

@jeremymsimon, is it working for you as well?

Hey @rob-p - apologies for the delay, I was out of town. I do indeed get a usage statement at least after grabbing that executable! Does that mean I should be good to go now? Thanks so much for your quick help on this!

Hi @jeremymsimon,
This was done on a CentOS 7.8 docker where the program does indeed work. Hopefully, then, you're good to go.  I'll close this for now but feel free to reopen if you run into downstream issues.
Also, I'm still waiting on bioconda to address their CI builder RAM limitation to fix the bioconda build.
--Rob

Amazing, thank you! I'll let you know if any other issues arise.
This btw is all in relation to our interesting discussion here so I'll let you know how things go once I dive in

Hi @jeremymsimon,
Just wanted to ping back here to let you know that, after a lot of work, I was able to get conda to build piscem. You should be able to install using conda now. I'd be interested to know if that works on your configuration.
Best,
Rob

Thanks @rob-p - this seems to work for me! Thanks again!


Split examples of FactSyntax, remove unnecessary dependency in FreeMagma

Makes FactSyntax not depend on AllEquations and FreeMagma not depend on EquationalResults. We need this to avoid cyclic dependencies on meta code. This is a cleanup that I'm factoring out of #459

oops, CI failed, should've checked that - sorry. I'll fix it


Add support for Jitpack (Java-11)

Jitpack is package repository for Git and lets you add maven dependencies without having to make an official maven release. As long as the repository is public, it is possible to add a dependency on any specific branch/commit.

Jitpack support is now available in master


Plugin should respect locally configured AWS credentials

fixes #203
fixes #183
Migrations no longer use MOCK_ACCESS_KEY_ID and MOCK_SECRET_ACCESS_KEY exclusively. Instead, migrations will now use locally configured AWS credentials and only fall back to the mocks if credentials are not found on the environment.

Is anyone home?

@JordanForeman Sorry for the late reply. I see both sides of this. As you explained, it has a clear purpose of eliminating the hazle. There is also a chance, that if someone executes the command with a different AWS environmental variables set (If someone is working with multiple AWS accounts with the default being something else) it could affect their dynamodb tables and data. Any recommendation to avoid this? or do you see this as highly unlikely?

@AshanFernando while I think its a fair concern to keep in mind, I don't think this particular change actually opens that up as a possibility; in its current state (unless the code has changed quite a bit since January) this is only ever consumed in a local (config.online is false) scenario.
As long as that configuration distinction remains, I don't see this being a problem. That said, I haven't really looked at this code much in the last five months, so I could wrong in my assertion.


'NoneType' object has no attribute '_meta when applying migrations with router

I am using django-database-for-apps for automatically routing apps on schemas.
When migrating I have the following error:
.../python3.9/site-packages/django_database_for_apps/__init__.py", line 15, in db_for_write
    return getattr(settings, 'DATABASE_FOR_APPS', {}).get(model._meta.app_label, getattr(settings, 'DATABASE_FOR_APPS', {}).get('*', 'default'))
AttributeError: 'NoneType' object has no attribute '_meta'

I believe the method pgtrigger.core._get_model should use pgtrigger.core._get_database

@GigiusB I was going through the app you linked and got lost trying to reproduce the error.
It sounds like you are using schemas with your tables, which might also be causing some issues.
Can you post some psuedocode of your models and the database-for-apps config you have? I have some multiple DB test cases that use routers, so perhaps I can reproduce it

@GigiusB I think I understand your issue better now after going through https://github.com/Opus10/django-pgtrigger/issues/54
Good news is that version 3 should solve this issue because triggers are now integrated with the django migration system. As noted in https://github.com/Opus10/django-pgtrigger/issues/54, the issue you ran into was part of the legacy system
Going to still see if I can get your fix in

@GigiusB this bug is fixed in https://github.com/Opus10/django-pgtrigger/pull/80
See the response on #54 about how multi-schema setup works. There will be a new section in the docs for it once the latest release is deployed.
Since you are using a different DB per schema, you should be able to use the multi-db support. I.e. the --database option to the management commands should work, and migrating triggers in the migration system will respect the --database option supplied to manage.py migrate.
Will let you know when it's released

Fixed in version 4


fix: update to deployment to serial flow

:tada: This PR is included in version 0.1.9 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Could not create task ':detox:testFullDebugUnitTest', Build failed with an exception.

What happened?
FAILURE: Build failed with an exception.
node_modules\detox\android\detox\build.gradle' line: 51

What went wrong:
Execution failed for task ':tasks'.

Could not create task ':detox:testFullDebugUnitTest'.
No signature of method: org.gradle.api.reporting.internal.TaskGeneratedSingleDirectoryReport.enabled() is applicable for argument types: (Boolean) values: [true]

What was the expected behaviour?
The build should be successful.
In what environment did this happen?
Detox version: 20.13.1
React Native version: 0.72.6
Has Fabric (React Native's new rendering system) enabled: yes
Node version: 18.0.0
Test-runner (select one): jest

Try to remove that section from the said file and rebuild

Can you try to find out which Gradle and Gradle Plugin version do you have?

@mikehardy, if you happen to have a mere minute to glance over this error, does it ring any bells?

My Gradle version is 8.0.1.

Could you downgrade it to 7.6 something? It seems we don't support it yet 😥

@noomorph If I remove your mentioned section. The app builds successfully. But this isn't a permanent solution.

I know 🤷♂

Thank you for your contribution. @noomorph

I'll try to make a fix nevertheless. Be my volunteer to try it out first and report, pls

Ok. Please let me know if there are any updates.

I'll create a smoke version in an hour if all is ok. It should be something like<EMAIL_ADDRESS>and I'll ask you to install and check if you can build your app with it.

I think you just set the output directory for html and it defaults on now
We do it like this in modern Gradle / Gradle plugin version https://github.com/ankidroid/Anki-Android/blob/main/AnkiDroid/jacoco.gradle

Tasked on my project and build was a success. Thanks.

Okay, I'll release the fix on Monday then. It is 10PM, bad karma to release


Print output path after building a target

I'm playing around with Buck2 (long time advanced Bazel user). One thing that I immediately missed from Bazel is the ability to easily click the output path in my terminal and open the generated file in my editor. Buck2 doesn't currently print anything to help you find the built file, and I also haven't found any flags to enable that.

The flag(s) you're looking for are --show-output and --show-full-output

Oh, that's right. Missed that. Any reason why this is not enabled by default?

Any reason why this is not enabled by default?

Hmm, at this point the answer is probably "because buck1 did it this way and that's not something we've taken the time to revisit right now". I know it's not a great answer but that's all I have :)


Reenable test for the non_fungible and add a process_inbox

Motivation
The end-to-end test for non-fungible was disabled recently, but it has now appeared that missing process_inbox are a partial source of the problem.
Proposal
Reenable the non-fungible test and add the process_inbox.
Test Plan
The CI is the point. One criticism of the PR is that I could not reproduce the failure that led to the closing of the test.
Release Plan
Not relevant.
Links

reviewer checklist

This PR is eliminated as it does not solve the real problem.


Break tests/common into a separate crate?

I found your integration test utilities for command-line tools through this reply on "What's everyone working on". I'm also writing tests for a command-line tool and your utility functions look very useful! Can you break it out into a separate crate and publish it, so other Rust developers creating command-line tools can benefit? :)
(Or perhaps you can combine work with an existing crate like assert_cli, though that would take longer I suppose)

For clarification, do you mean util.rs and it's dependencies?
Regarding assert_cli, this project is MIT licensed. assert_cli is dual MIT and Apache licensed. That means it is not possible to combine it into assert_cli, unless all authors approve. (The main reason is Apache including a patent grant which MIT does not).
But I also see that cargo-benchcmp is dual licensed MIT and Unlicense. That means you cannot use a MIT-only licensed crate in your project. In particular because the MIT license requires a copyright notice in binary distributions. Unlicense allows binary distributions but does not require a copyright notice. So cargo-benchcmp is not compatible with MIT-only crates.
So basically you cannot use the coreutils utilities for your project.

So basically you cannot use the coreutils utilities for your project.

I'm glad you are trying to help @Apanatshka but I believe you are providing incorrect information here.
Cargo-benchcmp being dual-licensed with unlicense does not preclude it from using MIT dependencies as long as it is distributed with a proper copyright notice for those dependencies, and in a way that communicates that it is the source code of benchcmp itself, and not its dependencies, that is redistributable under unlicense.
@Apanatshka I'll spin out an (MIT-licensed, obviously) repo of util.rs sometime this week. I can't offer information about whether it will ever be maintained under the auspices of uutils project as that is a much different conversation of whether uutils maintaining something like that adds any value to their project.

I'll spin out an (MIT-licensed, obviously) repo of util.rs sometime this week.

Great! Thanks 👍

I can't offer information about whether it will ever be maintained under the auspices of uutils project as that is a much different conversation of whether uutils maintaining something like that adds any value to the project.

Understood. I think it would make sense for uutils to maintain it since you guys wrote it and are the primary (currently only) users. But ultimately it matters more that it is maintained than who maintains it.

Cargo-benchcmp being dual-licensed with unlicense does not preclude it from using MIT dependencies as long as any distribution that includes the dependencies includes a proper copyright notice for those dependencies

That is correct, but the Unlicense allows you to distribute binaries without copyright notice of the dependencies. If the Unlicense applied only to the source code, there would be no problem. But the Unlicense explicitly allows binary distributions.
Of course it is not a problem until someone distributes binaries (using the Unlicense). And it is also not a problem as long as noone whose copyright is voilated complains. It just that you "promise" something - to the person who is distributing the binaries - which is not true.
But this is not really my business, as I am not a copyright owner of any code involved. But I just want to make this clear. I created cargo-benchcmp#11 to explain, and leave it to to this.

@wimh I appreciate your passion for the topic.
I think I can see your drift here (that people statically linking binaries based off of both projects may, through an unfamiliarity with licensing, unintentionally violate licenses of dependencies when distributing those binaries).
As you say, this is a concern more for downstream projects, and less for the spin-out library discussed here,  that must be weighed among others by downstream projects

@nathanross: What's the status on this?

Okay, I've got a usable crate up and running. It can be added with second_law = "0.2" in the Cargo.toml dev-dependencies
repo link - I still need to edit down the readme a lot.
example usage with stainless
example usage with vanilla tests
If at some point those demo links are broken, a demo will be referenced in the repo link.
Most of the new functionality is around helping the test find the binary, and the fixtures, and be aware of the existence of subcommands. No real documentation yet, but a quick cheatsheet. All references to scene. functions below are &self functions.

TestScenario is now Scene, use new_scene!() if your binary has the same name as your crate, otherwise provide the binary with Scene::new(bin_subpath_relative_to_out_dir:&Path) (and by out dir, "target/debug", "target/release", etc.)

The fixtures directory is divided into two groups, a "root directory" that defaults to "tests/fixtures" and can only be set otherwise once (using scene.fixtures_root(:&Path)), and a "fixtures subdir" PathBuf that can be iteratively appended to (through scene.fixtures_subdir : &Path) for nested test suites.

The scene.subcmd_arg(:&OsString) and scene.subcmd_args(:&[OsString]) functions can be used to provide any args added to it to the beginning of each ucmd() call.

This is advantageous as it allows avoiding having to repeat the subcommand every time, without even having to create a separate boilerplate function/closure everytime you want to have subcommands in a test suite.

The scene.multicall(bin_subpath: &Path, subcommand_name: &OsString) function is a convenience function meant to provide first-class support for multicall binaries. It desugars to fixtures_subdir(subcommand_name), and subcommand_args(subcommand_name).

It should be called before other subcommand_args or fixtures_subdir calls usually. Although this may make it seem that this means it should be combined with the constructor, its left on its own to allow for multiple depth subcommands.

You are getting the bleeding edge version of this. Especially for the configuration functions above, there are probably a few bugs. UCommand remains largely untouched.
The main UX changes of this crate from uutils.rs are as follows:

TestScenario remained Scene

The Fixtures AtPath is now retrieved from scene.working_dir() instead of scene.fixtures

The addition of the above configuration functions needed for making the code generalizable to different repos. It took me a while to settle on a design that I felt was generalizable enough yet and ergonomic in a way that any UX breaking changes would be minor (function renames, etc)

Forgot to ping @Apanatshka

Thanks a million @nathanross! :smiley:
I would strongly advise you to start using this new crate in uutils now. But that's up to you. For me, this issue is resolved. I will hopefully have time to try out second_law next weekend.


MP4 Disable Track and Alternate Group

I'm not sure how you want to handle these kind of things.
You'll have to add the Matroska Enabled flag too at some point and there's already a "default" and "forced" field, it's useful to know, but I'm worried about cluttering the output.
MPC-HC obeys the Matroska enabled flag, I don't know how many others do.
For MP4 MP4Box only shows the enabled flag if it's set to disabled, and as far as the MP4 specs are concerned, having an alternate group of zero means the track doesn't have an alternate group.
I don't know if there's a way of specifying to only show a field in output if it contains or doesn't contain a certain value.  To be honest, I don't see the point in showing the Matroska forced flag for audio and video, unless it happens to be set to yes.  I'm not even sure what that would mean in the real world.

What did I do wrong this time!

I think you forgot to rebase before doing the PR, so there is code between your fork and now.

I have no idea what's happening in the comments.  I think they may be weird unicode characters.

good to remove Unicode chars in source code

https://developer.apple.com/library/mac/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html

The video track’s Alternate Group ID is 0, which means that it is not in an alternate group

*MP4Box Output
* Movie Info *
        Timescale 600 - Duration 02:21:38.373
        12 track(s)
        Fragmented File: no
        File suitable for progressive download (moov before mdat)
        File Brand M4V  - version 0
        Created: GMT Fri Oct 02 21:24:03 2015
        Modified: GMT Fri Oct 02 21:24:34 2015

File has no MPEG4 IOD/OD

iTunes Info:
        Name: Avengers: Age of Ultron
        Artist: Joss Whedon
        Genre: Sci-Fi & Fantasy
        Compilation: No
        Gapless album: No
        Created: 2015-05-01T07:00:00Z
        Cover Art: JPEG File
1 UDTA types: meta (1)

Track # 1 Info - TrackID 2 - TimeScale 48000 - Media Duration 02:21:17.397
Track has 1 edit lists: track duration is 02:21:17.343
Media Info: Language "English (en-US)" - Type "soun:mp4a" - 397378 samples
MPEG-4 Config: Audio Stream - ObjectTypeIndication 0x40
MPEG-4 Audio AAC LC - 2 Channel(s) - SampleRate 48000
Self-synchronized
Alternate Group ID 1

Track # 2 Info - TrackID 1 - TimeScale 2997 - Media Duration 02:21:38.373
Track has 1 edit lists: track duration is 02:21:38.373
Media Info: Language "en (en)" - Type "vide:avc1" - 203757 samples
Visual Track layout: x=0 y=0 width=1916 height=800
MPEG-4 Config: Visual Stream - ObjectTypeIndication 0x21
AVC/H264 Video - Visual Size 1916 x 800
        AVC Info: 1 SPS - 1 PPS - Profile High @ Level 4
        NAL Unit length bits: 32
        Pixel Aspect Ratio 1:1 - Indicated track size 1916 x 800
Synchronized on stream 2

Track # 3 Info - TrackID 3 - TimeScale 2997 - Media Duration 02:21:06.883
Track has 1 edit lists: track duration is 02:21:06.883
Media Info: Language "Spanish; Castilian (es-419)" - Type "sbtl:tx3g" - 20 samples
Unknown Text Stream
 Size 1916 x 120 - Translation X=0 Y=680 - Layer 0
Alternate Group ID 2

Track # 4 Info - TrackID 4 - TimeScale 30000 - Media Duration 02:13:29.401
Track has 1 edit lists: track duration is 02:13:29.400
Media Info: Language "English (en-US)" - Type "clcp:c608" - 3115 samples
Unknown media type

Track # 5 Info - TrackID 5 - TimeScale 2997 - Media Duration 02:21:06.883
Track has 1 edit lists: track duration is 02:21:06.883
Track is disabled
Media Info: Language "Spanish; Castilian (es-419)" - Type "sbtl:tx3g" - 3756 samples
Unknown Text Stream
 Size 1916 x 120 - Translation X=0 Y=680 - Layer 0
Alternate Group ID 2

Track # 6 Info - TrackID 6 - TimeScale 2997 - Media Duration 02:13:29.384
Track has 1 edit lists: track duration is 02:13:29.383
Track is disabled
Media Info: Language "English (en-US)" - Type "sbtl:tx3g" - 3712 samples
Unknown Text Stream
 Size 1916 x 120 - Translation X=0 Y=680 - Layer 0
Alternate Group ID 2

Track # 7 Info - TrackID 7 - TimeScale 2997 - Media Duration 02:21:06.800
Track has 1 edit lists: track duration is 02:21:06.800
Track is disabled
Media Info: Language "French (fr-CA)" - Type "sbtl:tx3g" - 3768 samples
Unknown Text Stream
 Size 1916 x 120 - Translation X=0 Y=680 - Layer 0
Alternate Group ID 2

Track # 8 Info - TrackID 8 - TimeScale 2997 - Media Duration 02:21:06.758
Track has 1 edit lists: track duration is 02:21:06.758
Track is disabled
Media Info: Language "Portuguese (pt-BR)" - Type "sbtl:tx3g" - 3758 samples
Unknown Text Stream
 Size 1916 x 120 - Translation X=0 Y=680 - Layer 0
Alternate Group ID 2

Track # 9 Info - TrackID 9 - TimeScale 1000 - Media Duration 02:21:38.373
Track has 1 edit lists: track duration is 02:21:38.371
Track is disabled
Media Info: Language "English (en-US)" - Type "text:tx3g" - 14 samples
Unknown Text Stream
 Size 0 x 0 - Translation X=0 Y=0 - Layer 0

Track # 10 Info - TrackID 10 - TimeScale 1000 - Media Duration 02:21:38.373
Track has 1 edit lists: track duration is 02:21:38.371
Track is disabled
Media Info: Language "und (und)" - Type "vide:jpeg" - 14 samples
Visual Track layout: x=0 y=0 width=640 height=267
Visual Track - Compressor "" - Resolution 640 x 267

Track # 11 Info - TrackID 11 - TimeScale 48000 - Media Duration 02:21:17.344
Track has 1 edit lists: track duration is 02:21:17.343
Track is disabled
Media Info: Language "English (en-US)" - Type "soun:ac-3" - 264917 samples
        AC-3 stream - Sample Rate 48000 - 5.1 channel(s) - bitrate 192000
Alternate Group ID 1

Track # 12 Info - TrackID 12 - TimeScale 48000 - Media Duration 02:21:17.397
Track has 1 edit lists: track duration is 02:21:17.353
Track is disabled
Media Info: Language "Spanish; Castilian (es-419)" - Type "soun:mp4a" - 397378 samples
MPEG-4 Config: Audio Stream - ObjectTypeIndication 0x40
MPEG-4 Audio AAC LC - 2 Channel(s) - SampleRate 48000
Synchronized on stream 2
Alternate Group ID 1

They call it "Alternate Group ID" but apple just calls it "Alternate Group".  And they don't bother showing the enabled flag if it's on.
...  um, that second video track is actually images for the chapters...
Would you consider breaking each chapter up into multiple fields?  I don't see how Matroska or MP4 chapter information can be properly displayed otherwise.

... um, that second video track is actually images for the chapters...

Ouch...

Would you consider breaking each chapter up into multiple fields? I don't see how Matroska or MP4 chapter information can be properly displayed otherwise.

Please open a ticket with some ideas about what you would like to do.

From specs:
"One track in the group must be enabled; that is , the Track Enabled flag must be set (0x0001) in its track header ( 'tkhd' ).
All other tracks in the group must be disabled "
Looks like it is similar to "Default" field in Matroska, so I propose to change !Disabled to "Default", and show it only if Alternate Group is not 0.

That's not on the page I liked to, where did you read that?
What does it say about tracks that AREN'T part of a group?  From experience, if they're not in a group and you enable all of them, iTunes should play everything at the same time.  I don't know if they've changed that behaviour, but apparently that's how it's supposed to work.
And it's not exactly like the Matroska "default", you can have several groups containing audio, enable one from each group and iTunes should play all of the enabled audio streams at the same time.
Like I said when I made the feature request, it's both the default and forced flag.  If I put the normal subtitles in one group and the forced subtitles in another and enable one of the forced subtitles, the forced subtitles should continue displaying even if I select a subtitle from the other group.

OH....
The group must contain tracks of only one type; for example, only subtitle tracks or only sound tracks.

•All tracks of the same type must be in a single alternate group.

•One track in the group must be enabled; that is, the Track Enabled flag must be set (0x0001) in its track header ('tkhd').

•All other tracks in the group must be disabled

And apparently MP4 can have forced subtitles somehow:
 any available appropriate subtitle track should be enabled so that any forced subtitles in the track can be displayed

It's more complicated then I thought.

That's not on the page I linked to, where did you read that?

PDF page 60.

if they're not in a group and you enable all of them, iTunes should play everything at the same time.

Logical (I have tons of pofessionnal files without Alternate Group, and each track is a single channel of a 7.1 audio program, so they must be played at the same time).
Now, I don't know enough in case of e.g. 2 stereo tracks (English, Spanish) with Enabled set.

And it's not exactly like the Matroska "default", you can have several groups containing audio, enable one from each group and iTunes should play all of the enabled audio streams at the same time.

It is "just" more advanced than Matroska "default", which is a use case of QuickTime with one "Alternate group". There just may have more than one group in QuickTime. so the purpose is the same (the one to play by default), or do I understand wrongly? This is the reason I think to reuse the "Defualt" field (same purpose).

And apparently MP4 can have forced subtitles somehow. It's more complicated then I thought.

Right. It would be interesting to fill the "Forced" MediaInfo field somehow from QuickTime files.

I'm not actually an expert on mp4, I was just converting my DVDs to play on my iPhone, anything with commentary tracks I made using MP4Box was making an awful racket, so I did a quick search, discovered the enabled and alternate group commands and that's about it.
I didn't watch the things, so I've deleted them all now.
This is interesting though.
This is another point about chapters.  Both Blu Ray and MP4 seem to have their own versions of "Ordered Chapters"  Blu Ray in the form of play lists, MP4 in the form of edit lists.  The way Matroska does it is just one way of doing it, and covering each method would require some real thought to the "menu" display.
Chapters can be either Playlists or Markers.  Ordered chapters are playlists.
Apparently 29.97 fps is a valid frame rate too...
I'd have to take an active interest in M4V to be of any real use here, and I can't think of a use I'd have for it...
Referencetypes are where the action is.  I wish Matroska had something like 'fall'.

so I change !Disabled to "Default" now and we see when there is any interest for more metadata (forced, menu...) display later.

This is the full referencebox for an AC3 stream in an iTunes file.
<TrackReferenceBox>
<BoxInfo Size="36" Type="tref"/>
<fallTrackReferenceBox Tracks=" 2">
<BoxInfo Size="12" Type="fall"/>
</fallTrackReferenceBox>
<ChapterTrackReferenceBox Tracks=" 5 6">
<BoxInfo Size="16" Type="chap"/>
</ChapterTrackReferenceBox>
</TrackReferenceBox>

I'm assuming 'fall' means fallback and it's pointing at an aac track, so they're basically identical.
Maybe we could add a "same as" field or something.

Maybe we could add a "same as" field or something.

"FallBackTo" field would be OK, please another PR (+file)


App crashing with BlurView

Sorry to bombard you with issues today 🙃, getting a crash when using BlurView, if I change it to VibrancyView it runs fine.
It did work for me a few times, but now I'm seeing this in Xcode console:
2016-11-01 22:35:02.188 myAppName[10120:558117] -[__NSCFNumber effectSettings]: unrecognized selector sent to instance 0xb0000000000000a3
2016-11-01 22:35:02.208 myAppName[10120:558117] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber effectSettings]: unrecognized selector sent to instance 0xb0000000000000a3'

Did a search in the project folder for effectSettings and I see it's being used in /react-native-blur/ios/BlurAmount.m - but I have no idea what that snippet does 😊
Finally this is how I'm actually using it, just got the following inside a <Modal>:
<BlurView
	blurType='light'
	blurAmount={10}
	style={styles.blurWrap}>

	// Inner components

</BlurView>

Same issue here, did you update React Native recently by any chance?

Nope @JonathanWi, had the same rn version since project started. @karolkozub has fixed it with this pr: https://github.com/react-native-community/react-native-blur/pull/108

I think it may be related to the version of iOS you're trying to run this code (not sure tho)

Running on iOS 10.1 @Kureev, you got an eta for when you're gonna merge #108?

Merged