From 55cacaabb074b583f470de49a802d27b7e15445a Mon Sep 17 00:00:00 2001 From: Andrew D Smith Date: Mon, 16 Jun 2025 20:57:15 -0700 Subject: [PATCH 01/13] .github/workflows/dnmtools_release_linux.yml: cloning and building libdeflate in the release workflow so htslib can link against it --- .github/workflows/dnmtools_release_linux.yml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dnmtools_release_linux.yml b/.github/workflows/dnmtools_release_linux.yml index 55ec3b16..803c4763 100644 --- a/.github/workflows/dnmtools_release_linux.yml +++ b/.github/workflows/dnmtools_release_linux.yml @@ -26,6 +26,17 @@ jobs: apt-get update && apt-get install --no-install-recommends -y automake libgsl-dev && \ find /usr -name libz.so -exec rm {} \; && \ find /usr -name libgsl\*.so -exec rm {} \; && \ + git clone https://github.com/ebiggers/libdeflate.git && \ + cd libdeflate && \ + cmake -B build \ + -DLIBDEFLATE_BUILD_GZIP=off \ + -DLIBDEFLATE_BUILD_TESTS=off \ + -DLIBDEFLATE_BUILD_SHARED_LIB=off \ + -DCMAKE_VERBOSE_MAKEFILE=on \ + -DCMAKE_BUILD_TYPE=Release && \ + cmake --build build -j4 && \ + cmake --install build --prefix=/usr/local && \ + cd .. && \ git clone --recursive https://github.com/samtools/htslib.git && \ cd htslib && \ autoreconf -i && \ @@ -35,7 +46,7 @@ jobs: --disable-libcurl \ --disable-lzma \ --disable-ref-cache \ - LDADD="-L/usr/local/lib" && \ + --with-libdeflate && \ make -j4 CFLAGS="-Wall -O2 -fvisibility=hidden" libhts.a && \ cp libhts.a /usr/local/lib/ && \ cp -r ../htslib /usr/local/include/ && \ From 9cc0a55da925ce43a86fe1f4273af075a7a7b5aa Mon Sep 17 00:00:00 2001 From: Andrew D Smith Date: Mon, 16 Jun 2025 21:12:08 -0700 Subject: [PATCH 02/13] configure.ac: adding commented out line that turns on libdeflate for htslib when uncommented --- configure.ac | 1 + 1 file changed, 1 insertion(+) diff --git a/configure.ac b/configure.ac index 512e1704..86e86ba8 100644 --- a/configure.ac +++ b/configure.ac @@ -46,6 +46,7 @@ library and headers can be found. dnl check for required libraries AC_SEARCH_LIBS([pthread_create], [pthread], [], [AC_MSG_FAILURE(["pthread library not found"])]) AC_SEARCH_LIBS([gzopen], [z], [], [AC_MSG_FAILURE(["Zlib library not found"])]) +dnl AC_SEARCH_LIBS([libdeflate_deflate_compress], [deflate], [], [AC_MSG_FAILURE(["libdeflate not found"])]) AC_SEARCH_LIBS([hts_version], [hts], [], [AC_MSG_FAILURE([$hts_fail_msg])], [-lz -lpthread]) AC_SEARCH_LIBS([cblas_dgemm], [gslcblas], [], [AC_MSG_FAILURE([$gsl_fail_msg])]) AC_SEARCH_LIBS([gsl_blas_dgemm], [gsl], [], [AC_MSG_FAILURE([$gsl_fail_msg])]) From 4258826712c5bf7fa6f98b0bd1e698d094755624 Mon Sep 17 00:00:00 2001 From: Andrew D Smith Date: Mon, 16 Jun 2025 21:12:47 -0700 Subject: [PATCH 03/13] .github/workflows/dnmtools_release_linux.yml: adding line that turns on libdeflate in configure.ac before autoreconf in linux release workflow --- .github/workflows/dnmtools_release_linux.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/dnmtools_release_linux.yml b/.github/workflows/dnmtools_release_linux.yml index 803c4763..34991abc 100644 --- a/.github/workflows/dnmtools_release_linux.yml +++ b/.github/workflows/dnmtools_release_linux.yml @@ -51,6 +51,7 @@ jobs: cp libhts.a /usr/local/lib/ && \ cp -r ../htslib /usr/local/include/ && \ cd /workspace && \ + sed -i "s/dnl AC/AC/" configure.ac && \ autoreconf -i && \ mkdir build && cd build && \ ../configure && \ From fa04c3398c81b26329ec3721e54635003812fbda Mon Sep 17 00:00:00 2001 From: Andrew D Smith Date: Tue, 17 Jun 2025 11:42:45 -0700 Subject: [PATCH 04/13] Update dnmtools_release_linux.yml --- .github/workflows/dnmtools_release_linux.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/dnmtools_release_linux.yml b/.github/workflows/dnmtools_release_linux.yml index 34991abc..f1ac52b7 100644 --- a/.github/workflows/dnmtools_release_linux.yml +++ b/.github/workflows/dnmtools_release_linux.yml @@ -50,6 +50,7 @@ jobs: make -j4 CFLAGS="-Wall -O2 -fvisibility=hidden" libhts.a && \ cp libhts.a /usr/local/lib/ && \ cp -r ../htslib /usr/local/include/ && \ + find /usr/local && \ cd /workspace && \ sed -i "s/dnl AC/AC/" configure.ac && \ autoreconf -i && \ From 70b07eaae1cb176d6c16be891936abc0a41fea23 Mon Sep 17 00:00:00 2001 From: Andrew D Smith Date: Tue, 17 Jun 2025 11:50:16 -0700 Subject: [PATCH 05/13] src/analysis/nanopore.cpp: removing some using statements --- src/analysis/nanopore.cpp | 54 ++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/src/analysis/nanopore.cpp b/src/analysis/nanopore.cpp index b2721c55..7944afcc 100644 --- a/src/analysis/nanopore.cpp +++ b/src/analysis/nanopore.cpp @@ -41,10 +41,6 @@ /* HTSlib */ #include -using bamxx::bam_header; -using bamxx::bam_rec; -using bamxx::bgzf_file; - [[nodiscard]] inline bool is_cytosine(const char c) { return c == 'c' || c == 'C'; @@ -73,7 +69,7 @@ is_cpg(const std::string &s, const std::size_t i) { static void read_fasta_file(const std::string &filename, std::vector &names, std::vector &sequences) { - bgzf_file in(filename, "r"); + bamxx::bgzf_file in(filename, "r"); if (!in) throw std::runtime_error("error opening genome file: " + filename); names.clear(); @@ -96,7 +92,7 @@ read_fasta_file(const std::string &filename, std::vector &names, } [[nodiscard]] static std::string -get_basecall_model(const bam_header &hdr) { +get_basecall_model(const bamxx::bam_header &hdr) { kstring_t ks{}; ks = {0, 0, nullptr}; @@ -583,7 +579,7 @@ struct match_counter { }; static void -count_states_fwd(const bam_rec &aln, std::vector &counts, +count_states_fwd(const bamxx::bam_rec &aln, std::vector &counts, mod_prob_buffer &mod_buf, const std::string &chrom, match_counter &mc) { /* Move through cigar, reference and read positions without @@ -612,9 +608,12 @@ count_states_fwd(const bam_rec &aln, std::vector &counts, const decltype(qpos) end_qpos = qpos + n; for (; qpos < end_qpos; ++qpos) { const auto r_nuc = *ref_itr++; - mc.add_fwd(r_nuc, ref_itr == end_ref ? 'N' : *ref_itr, - seq_nt16_str[bam_seqi(seq, qpos)], - qpos == q_lim ? 'N' : seq_nt16_str[bam_seqi(seq, qpos + 1)]); + if (qpos + 1 < end_qpos) { + mc.add_fwd(r_nuc, ref_itr == end_ref ? 'N' : *ref_itr, + seq_nt16_str[bam_seqi(seq, qpos)], + qpos == q_lim ? 'N' + : seq_nt16_str[bam_seqi(seq, qpos + 1)]); + } counts[rpos++].add_count_fwd(*hydroxy_prob_itr, *methyl_prob_itr); ++methyl_prob_itr; ++hydroxy_prob_itr; @@ -638,7 +637,7 @@ count_states_fwd(const bam_rec &aln, std::vector &counts, } static void -count_states_rev(const bam_rec &aln, std::vector &counts, +count_states_rev(const bamxx::bam_rec &aln, std::vector &counts, mod_prob_buffer &mod_buf, const std::string &chrom, match_counter &mc) { /* Move through cigar, reference and (*backward*) through read @@ -672,8 +671,10 @@ count_states_rev(const bam_rec &aln, std::vector &counts, const auto r_nuc = *ref_itr++; const auto q_nuc = seq_nt16_str[bam_seqi(seq, q_idx)]; ++q_idx; - mc.add_rev(r_nuc, ref_itr == end_ref ? 'N' : *ref_itr, q_nuc, - q_idx == l_qseq ? 'N' : seq_nt16_str[bam_seqi(seq, q_idx)]); + if (end_qpos + 1 < qpos) + mc.add_rev(r_nuc, ref_itr == end_ref ? 'N' : *ref_itr, q_nuc, + q_idx == l_qseq ? 'N' + : seq_nt16_str[bam_seqi(seq, q_idx)]); --methyl_prob_itr; --hydroxy_prob_itr; counts[rpos++].add_count_rev(*hydroxy_prob_itr, *methyl_prob_itr); @@ -699,7 +700,7 @@ count_states_rev(const bam_rec &aln, std::vector &counts, [[nodiscard]] static std::tuple, std::set> get_tid_to_idx( - const bam_header &hdr, + const bamxx::bam_header &hdr, const std::unordered_map &name_to_idx) { std::set missing_tids; std::map tid_to_idx; @@ -718,7 +719,7 @@ get_tid_to_idx( } [[nodiscard]] static bool -consistent_targets(const bam_header &hdr, +consistent_targets(const bamxx::bam_header &hdr, const std::map &tid_to_idx, const std::vector &names, const std::vector &sizes) { @@ -741,7 +742,8 @@ consistent_targets(const bam_header &hdr, [[nodiscard]] static bool consistent_existing_targets( - const bam_header &hdr, const std::map &tid_to_idx, + const bamxx::bam_header &hdr, + const std::map &tid_to_idx, const std::vector &names, const std::vector &sizes) { const std::size_t n_targets = hdr.h->n_targets; @@ -805,10 +807,10 @@ struct read_processor { output_skipped_chromosome( const std::int32_t tid, const std::map &tid_to_idx, - const bam_header &hdr, + const bamxx::bam_header &hdr, const std::vector::const_iterator chroms_beg, const std::vector &chrom_sizes, std::vector &counts, - bgzf_file &out) const { + bamxx::bgzf_file &out) const { // get the index of the next chrom sequence const auto chrom_idx = tid_to_idx.find(tid); @@ -831,7 +833,7 @@ struct read_processor { } void - write_output_all(const bam_header &hdr, bgzf_file &out, + write_output_all(const bamxx::bam_header &hdr, bamxx::bgzf_file &out, const std::int32_t tid, const std::string &chrom, const std::vector &counts) const { static constexpr auto out_fmt = "%ld\t%c\t%s\t%.6g\t%d\t%.6g\t%.6g\n"; @@ -886,7 +888,7 @@ struct read_processor { } void - write_output_sym(const bam_header &hdr, bgzf_file &out, + write_output_sym(const bamxx::bam_header &hdr, bamxx::bgzf_file &out, const std::int32_t tid, const std::string &chrom, const std::vector &counts) const { static constexpr auto out_fmt = "%ld\t+\tCpG\t%.6g\t%d\t%.6g\t%.6g\n"; @@ -952,8 +954,8 @@ struct read_processor { } void - write_output(const bam_header &hdr, bgzf_file &out, const std::int32_t tid, - const std::string &chrom, + write_output(const bamxx::bam_header &hdr, bamxx::bgzf_file &out, + const std::int32_t tid, const std::string &chrom, const std::vector &counts) const { if (symmetric) write_output_sym(hdr, out, tid, chrom, counts); @@ -989,7 +991,7 @@ struct read_processor { if (!hts) throw std::runtime_error("failed to open input file"); // load the input file's header - bam_header hdr(hts); + bamxx::bam_header hdr(hts); if (!hdr) throw std::runtime_error("failed to read header"); @@ -1011,7 +1013,7 @@ struct read_processor { // open the output file const std::string output_mode = compress_output ? "w" : "wu"; - bgzf_file out(outfile, output_mode); + bamxx::bgzf_file out(outfile, output_mode); if (!out) throw std::runtime_error("error opening output file: " + outfile); @@ -1044,7 +1046,7 @@ struct read_processor { // now iterate over the reads, switching chromosomes and writing // output as needed - bam_rec aln; + bamxx::bam_rec aln; std::int32_t prev_tid = -1; std::vector::const_iterator chrom_itr{}; @@ -1190,7 +1192,7 @@ main_nanocount(int argc, const char **argv) { throw std::runtime_error("thread count cannot be negative"); std::ostringstream cmd; - copy(argv, argv + argc, std::ostream_iterator(cmd, " ")); + std::copy(argv, argv + argc, std::ostream_iterator(cmd, " ")); // file types from HTSlib use "-" for the filename to go to stdout if (outfile.empty()) From 71a928a372dff10bbc7e8d1a234a664d8e791c60 Mon Sep 17 00:00:00 2001 From: Andrew D Smith Date: Tue, 17 Jun 2025 11:51:59 -0700 Subject: [PATCH 06/13] .github/workflows/dnmtools_release_linux.yml: adding forgotten modification to configure.ac in submodule abismal in release build workflow --- .github/workflows/dnmtools_release_linux.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dnmtools_release_linux.yml b/.github/workflows/dnmtools_release_linux.yml index f1ac52b7..28aa5500 100644 --- a/.github/workflows/dnmtools_release_linux.yml +++ b/.github/workflows/dnmtools_release_linux.yml @@ -50,9 +50,9 @@ jobs: make -j4 CFLAGS="-Wall -O2 -fvisibility=hidden" libhts.a && \ cp libhts.a /usr/local/lib/ && \ cp -r ../htslib /usr/local/include/ && \ - find /usr/local && \ cd /workspace && \ sed -i "s/dnl AC/AC/" configure.ac && \ + sed -i "s/dnl AC/AC/" src/abismal/configure.ac && \ autoreconf -i && \ mkdir build && cd build && \ ../configure && \ From 0e6ce8a7f06fa5514fffc2276f8c99c304e42aad Mon Sep 17 00:00:00 2001 From: Andrew D Smith Date: Tue, 17 Jun 2025 13:27:56 -0700 Subject: [PATCH 07/13] configure.ac: adding option to turn on libdeflate in the configure script --- configure.ac | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 86e86ba8..9916e10b 100644 --- a/configure.ac +++ b/configure.ac @@ -43,11 +43,20 @@ the LDFLAGS and CPPFLAGS variables to specify the directories where the GSL library and headers can be found. " +dnl arg for using libdeflate, which might happen by default anyway +AC_ARG_WITH([libdeflate], + [AS_HELP_STRING([--with-libdeflate], [use libdeflate for BAM output])], + [with_libdeflate=yes], [with_libdeflate=no]) + dnl check for required libraries AC_SEARCH_LIBS([pthread_create], [pthread], [], [AC_MSG_FAILURE(["pthread library not found"])]) AC_SEARCH_LIBS([gzopen], [z], [], [AC_MSG_FAILURE(["Zlib library not found"])]) -dnl AC_SEARCH_LIBS([libdeflate_deflate_compress], [deflate], [], [AC_MSG_FAILURE(["libdeflate not found"])]) -AC_SEARCH_LIBS([hts_version], [hts], [], [AC_MSG_FAILURE([$hts_fail_msg])], [-lz -lpthread]) +AS_IF([test "x$with_libdeflate" = "xyes"], + [ + AC_SEARCH_LIBS([libdeflate_deflate_compress], [deflate], [], + [AC_MSG_ERROR([--with-libdeflate specified but libdeflate not found])]) + ]) +AC_SEARCH_LIBS([hts_version], [hts], [], [AC_MSG_FAILURE([$hts_fail_msg])]) AC_SEARCH_LIBS([cblas_dgemm], [gslcblas], [], [AC_MSG_FAILURE([$gsl_fail_msg])]) AC_SEARCH_LIBS([gsl_blas_dgemm], [gsl], [], [AC_MSG_FAILURE([$gsl_fail_msg])]) From a57ba7daa826769d936f98b19e4b6177e91d02aa Mon Sep 17 00:00:00 2001 From: Andrew D Smith Date: Tue, 17 Jun 2025 13:30:20 -0700 Subject: [PATCH 08/13] .github/workflows/dnmtools_release_macos.yml and .github/workflows/dnmtools_release_linux.yml: using --with-libdeflate to turn on libdeflate for release workflow builds --- .github/workflows/dnmtools_release_linux.yml | 4 +--- .github/workflows/dnmtools_release_macos.yml | 4 +++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/dnmtools_release_linux.yml b/.github/workflows/dnmtools_release_linux.yml index 28aa5500..24967e2c 100644 --- a/.github/workflows/dnmtools_release_linux.yml +++ b/.github/workflows/dnmtools_release_linux.yml @@ -51,11 +51,9 @@ jobs: cp libhts.a /usr/local/lib/ && \ cp -r ../htslib /usr/local/include/ && \ cd /workspace && \ - sed -i "s/dnl AC/AC/" configure.ac && \ - sed -i "s/dnl AC/AC/" src/abismal/configure.ac && \ autoreconf -i && \ mkdir build && cd build && \ - ../configure && \ + ../configure --with-libdeflate && \ make -j4 LDFLAGS="-static-libgcc -static-libstdc++ -s" run: | docker exec build-container bash -c "$SCRIPT" diff --git a/.github/workflows/dnmtools_release_macos.yml b/.github/workflows/dnmtools_release_macos.yml index 481ee31d..c8584058 100644 --- a/.github/workflows/dnmtools_release_macos.yml +++ b/.github/workflows/dnmtools_release_macos.yml @@ -42,7 +42,9 @@ jobs: run: | ./autogen.sh mkdir build && cd build - ../configure CXX=g++-14 LDFLAGS="-L/opt/dnmtools/lib -static-libgcc -static-libstdc++ -Wl,-dead_strip" CPPFLAGS="-I/opt/dnmtools/include" + ../configure --with-libdeflate \ + CXX=g++-14 LDFLAGS="-L/opt/dnmtools/lib -static-libgcc -static-libstdc++ -Wl,-dead_strip" \ + CPPFLAGS="-I/opt/dnmtools/include" make -j4 - name: Rename the binary run: mv build/dnmtools dnmtools_$(uname -m) From bfff99cf92efd273c61027f38479a2552730f7b3 Mon Sep 17 00:00:00 2001 From: Andrew D Smith Date: Tue, 17 Jun 2025 13:35:00 -0700 Subject: [PATCH 09/13] src/abismal: updating submodule --- src/abismal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/abismal b/src/abismal index 634d0301..b63cd99e 160000 --- a/src/abismal +++ b/src/abismal @@ -1 +1 @@ -Subproject commit 634d030113e24f2c020e81093fd5c706210fc38a +Subproject commit b63cd99e99ba988657200d0117f7b3f8b4f1803e From da5320ff9961bf4f60bfaeaf24e2742f4cba647a Mon Sep 17 00:00:00 2001 From: Andrew D Smith Date: Tue, 17 Jun 2025 13:47:38 -0700 Subject: [PATCH 10/13] .github/workflows/dnmtools_release_macos.yml: adding forgotten install for libdeflate --- .github/workflows/dnmtools_release_macos.yml | 21 ++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/.github/workflows/dnmtools_release_macos.yml b/.github/workflows/dnmtools_release_macos.yml index c8584058..530edf97 100644 --- a/.github/workflows/dnmtools_release_macos.yml +++ b/.github/workflows/dnmtools_release_macos.yml @@ -17,11 +17,23 @@ jobs: run: sudo mkdir -p /opt/dnmtools/lib /opt/dnmtools/include - name: Install dependency headers and static libs run: | - brew install zlib gsl automake + brew install zlib gsl automake cmake sudo cp $(brew --prefix zlib)/lib/*.a /opt/dnmtools/lib sudo cp $(brew --prefix gsl)/lib/*.a /opt/dnmtools/lib sudo cp -r $(brew --prefix zlib)/include/* /opt/dnmtools/include sudo cp -r $(brew --prefix gsl)/include/* /opt/dnmtools/include + - name: Build and install libdeflate + run: | + git clone https://github.com/ebiggers/libdeflate.git && \ + cd libdeflate && \ + cmake -B build \ + -DLIBDEFLATE_BUILD_GZIP=off \ + -DLIBDEFLATE_BUILD_TESTS=off \ + -DLIBDEFLATE_BUILD_SHARED_LIB=off \ + -DCMAKE_VERBOSE_MAKEFILE=on \ + -DCMAKE_BUILD_TYPE=Release && \ + cmake --build build -j4 && \ + cmake --install build --prefix=/opt/dnmtools - name: Build and install HTSlib run: | git clone --recursive https://github.com/samtools/htslib.git @@ -34,8 +46,8 @@ jobs: --disable-libcurl \ --disable-lzma \ --disable-ref-cache \ - --without-libdeflate \ - LDADD="-L/usr/local/lib" + --with-libdeflate \ + LDADD="-L/opt/dnmtools/lib" make -j4 CFLAGS="-Wall -O2 -fvisibility=hidden" libhts.a sudo cp libhts.a /opt/dnmtools/lib - name: Build dnmtools @@ -43,7 +55,8 @@ jobs: ./autogen.sh mkdir build && cd build ../configure --with-libdeflate \ - CXX=g++-14 LDFLAGS="-L/opt/dnmtools/lib -static-libgcc -static-libstdc++ -Wl,-dead_strip" \ + CXX=g++-14 \ + LDFLAGS="-L/opt/dnmtools/lib -static-libgcc -static-libstdc++ -Wl,-dead_strip" \ CPPFLAGS="-I/opt/dnmtools/include" make -j4 - name: Rename the binary From fe454cc56843d83322522dee78d724951fa6e2af Mon Sep 17 00:00:00 2001 From: Andrew D Smith Date: Tue, 17 Jun 2025 13:51:46 -0700 Subject: [PATCH 11/13] .github/workflows/dnmtools_release_macos.yml: adding sudo to install libdeflate in /opt/dnmtools --- .github/workflows/dnmtools_release_macos.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dnmtools_release_macos.yml b/.github/workflows/dnmtools_release_macos.yml index 530edf97..8fc6d3b1 100644 --- a/.github/workflows/dnmtools_release_macos.yml +++ b/.github/workflows/dnmtools_release_macos.yml @@ -33,7 +33,7 @@ jobs: -DCMAKE_VERBOSE_MAKEFILE=on \ -DCMAKE_BUILD_TYPE=Release && \ cmake --build build -j4 && \ - cmake --install build --prefix=/opt/dnmtools + sudo cmake --install build --prefix=/opt/dnmtools - name: Build and install HTSlib run: | git clone --recursive https://github.com/samtools/htslib.git From 43db2acd22876f9aa7e08e757b043a673fa73509 Mon Sep 17 00:00:00 2001 From: Andrew D Smith Date: Tue, 17 Jun 2025 13:54:47 -0700 Subject: [PATCH 12/13] .github/workflows/dnmtools_release_macos.yml: fixing LDADD to LDFLAGS and adding CPPFLAGS for building htslib with libdeflate --- .github/workflows/dnmtools_release_macos.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dnmtools_release_macos.yml b/.github/workflows/dnmtools_release_macos.yml index 8fc6d3b1..1da87971 100644 --- a/.github/workflows/dnmtools_release_macos.yml +++ b/.github/workflows/dnmtools_release_macos.yml @@ -47,7 +47,7 @@ jobs: --disable-lzma \ --disable-ref-cache \ --with-libdeflate \ - LDADD="-L/opt/dnmtools/lib" + LDFLAGS="-L/opt/dnmtools/lib" CPPFLAGS="-I/opt/dnmtools/include" make -j4 CFLAGS="-Wall -O2 -fvisibility=hidden" libhts.a sudo cp libhts.a /opt/dnmtools/lib - name: Build dnmtools From 3b5770facf8c0d1467eb3337bb6fe2d3358e6350 Mon Sep 17 00:00:00 2001 From: Andrew D Smith Date: Tue, 17 Jun 2025 13:58:40 -0700 Subject: [PATCH 13/13] .github/workflows/dnmtools_release_macos.yml: not install cmake with brew because it's already there --- .github/workflows/dnmtools_release_macos.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dnmtools_release_macos.yml b/.github/workflows/dnmtools_release_macos.yml index 1da87971..ea7e54e5 100644 --- a/.github/workflows/dnmtools_release_macos.yml +++ b/.github/workflows/dnmtools_release_macos.yml @@ -17,7 +17,7 @@ jobs: run: sudo mkdir -p /opt/dnmtools/lib /opt/dnmtools/include - name: Install dependency headers and static libs run: | - brew install zlib gsl automake cmake + brew install zlib gsl automake sudo cp $(brew --prefix zlib)/lib/*.a /opt/dnmtools/lib sudo cp $(brew --prefix gsl)/lib/*.a /opt/dnmtools/lib sudo cp -r $(brew --prefix zlib)/include/* /opt/dnmtools/include