[med-svn] [Git][med-team/nim-hts][upstream] New upstream version 0.3.13+ds

Nilesh Patra gitlab at salsa.debian.org
Thu Nov 26 11:56:15 GMT 2020



Nilesh Patra pushed to branch upstream at Debian Med / nim-hts


Commits:
05e0b475 by Nilesh Patra at 2020-11-26T11:52:20+00:00
New upstream version 0.3.13+ds
- - - - -


6 changed files:

- CHANGES.md
- Dockerfile
- − Dockerfile.musl-hts-nim
- README.md
- src/hts/private/hts_concat.nim
- src/hts/vcf.nim


Changes:

=====================================
CHANGES.md
=====================================
@@ -1,3 +1,7 @@
+v0.3.13
+=======
++ changes for nim ORC/ARC GCs
+
 v0.3.11
 =======
 + add bgzi.open which allows opening for reading and writing without quit() and replaces


=====================================
Dockerfile
=====================================
@@ -4,7 +4,7 @@ FROM alpine:3.11.5
 ENV CFLAGS="-fPIC -O3"
 
 RUN apk add wget git xz bzip2-static musl m4 autoconf tar xz-dev bzip2-dev build-base libpthread-stubs libzip-dev gfortran \
-	    openssl-libs-static openblas-static pcre-dev curl llvm-dev curl-static
+	    openssl-libs-static openblas-static pcre-dev curl llvm-dev curl-static bash
 
 RUN mkdir -p /usr/local/include && \
     git clone --depth 1 https://github.com/ebiggers/libdeflate.git && \
@@ -38,7 +38,7 @@ ENV PATH=:/root/.nimble/bin:/nim/bin/:$PATH
 
 RUN \
     git clone https://github.com/samtools/htslib && \
-    cd htslib && git checkout 1.10.2 && autoheader && autoconf && \
+    cd htslib && git checkout 1.11 && autoheader && autoconf && \
     ./configure --disable-s3 --disable-libcurl --with-libdeflate && \
     make -j4 CFLAGS="-fPIC -O3" install && \
     cd ../ && \
@@ -49,20 +49,20 @@ RUN \
     cd ../ && rm -rf htslib bcftools
 
 
+RUN sh -c 'curl --proto "=https" --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -q -y'
+#	    && apk add clang-libs
 
-RUN sh -c 'curl --proto "=https" --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -q -y' \
-	    && apk add clang-libs
-
-ENV HTSLIB=dynamic
+ENV HTSLIB=system
 ENV PATH=$PATH:~/.cargo/bin/
 
-COPY docker/d4.patch /tmp/
+#COPY docker/d4.patch /tmp/
 
+#&& git apply < /tmp/d4.patch \
 RUN ~/.cargo/bin/rustup target add x86_64-unknown-linux-musl \
 	&& git clone https://github.com/38/d4-format \
 	&& cd d4-format \
-	&& git apply < /tmp/d4.patch \
-	&& ~/.cargo/bin/cargo build --target x86_64-unknown-linux-musl --release
+        && ln -s /usr/bin/gcc /usr/bin/musl-gcc \
+	&& ~/.cargo/bin/cargo build --all --target x86_64-unknown-linux-musl --release
 
 RUN install -m 644 d4-format/target/x86_64-unknown-linux-musl/release/libd4binding.a /usr/lib && \
 	install -m 644 d4-format/d4binding/include/d4.h /usr/include


=====================================
Dockerfile.musl-hts-nim deleted
=====================================
@@ -1,38 +0,0 @@
-## This dockerfile
-# 1. builds htslib and all dependencies currently without libcurl
-# 2. installs nim
-# 3. sets up a nim binary (nsb) that is expected to be called from an external binary (static_builder)
-# These facilitate building static binaries for projects using hts-nim.
-
-# docker build -t brentp/musl-hts-nim:latest -f Dockerfile.musl-hts-nim ..
-FROM alpine:3.9
-
-ENV LDFLAGS=-static PKG_CONFIG='pkg-config --static'
-ENV curl_LDFLAGS=-all-static
-
-RUN apk add curl musl build-base git autoconf zlib-dev bzip2-dev xz-dev curl-dev
-
-RUN cd / && \
-    git clone -b devel --depth 10 git://github.com/nim-lang/nim nim && \
-    cd nim && sh ./build_all.sh
-
-RUN git clone --depth 1 https://github.com/ebiggers/libdeflate.git && \
-    cd libdeflate && make -j 2 CFLAGS='-fPIC -O3' libdeflate.a && \
-    cp libdeflate.a /usr/local/lib && cp libdeflate.h /usr/include && \
-    cd .. && rm -rf libdeflate && \
-    git clone https://github.com/samtools/htslib && \
-    cd htslib && git checkout 1.9 && autoheader && autoconf && \
-   ./configure --enable-plugins --disable-libcurl --with-libdeflate && \
-   make -j4 install && \
-   cd ../ && rm -rf htslib
-
-ADD . /src/
-
-ENV PATH=/root/.nimble/bin:/nim/bin/:$PATH
-
-RUN cat /src/docker/docker.nim.cfg >> /nim/config/nim.cfg && \
-    cd /src/ && nimble install -y && \
-    nimble install -y docopt && \
-    nimble install -y c2nim@#3ec45c24585ebaed && \
-    nim c -o:/usr/local/bin/nsb /src/docker/nsb.nim && \
-    rm -rf /src/


=====================================
README.md
=====================================
@@ -17,7 +17,7 @@ too different to python.
 
 If you use this library, please cite [the paper](https://academic.oup.com/bioinformatics/advance-article-abstract/doi/10.1093/bioinformatics/bty358/4990493)
 
-Projects using `hts-nim` are accumulating [in the wiki](https://github.com/brentp/hts-nim/wiki/Examples)
+Projects using `hts-nim` are accumulating [in the wiki](https://github.com/brentp/hts-nim/wiki/Example-uses-of-hts-nim)
 
 ## Installation
 
@@ -29,7 +29,7 @@ Examples of `hts-nim` tools are available in the [hts-nim-tools repo](https://gi
 
 below are examples of the syntax in this library see the [docs](https://brentp.github.io/hts-nim/) for more info:
 
-Also see examples and other repos using hts-nim in the [wiki](https://github.com/brentp/hts-nim/wiki/Examples)
+Also see examples and other repos using hts-nim in the [wiki](https://github.com/brentp/hts-nim/wiki/Example-uses-of-hts-nim)
 
 ## BAM / CRAM / SAM
 


=====================================
src/hts/private/hts_concat.nim
=====================================
@@ -8,9 +8,10 @@ elif defined(macosx):
 else:
   const
     libname* = "libhts.so"
-when NimMajor < 1:
-    type
-        csize_t* = csize
+
+when (NimMajor, NimMinor) < (1, 1):
+  type
+    csize_t* = csize
 ##
 ## enum hts_fmt_option {
 ##     // CRAM specific


=====================================
src/hts/vcf.nim
=====================================
@@ -73,6 +73,17 @@ var empty_samples: seq[string]
 converter toInt(b:BCF_HEADER_TYPE): int = b.int
 converter toCint(b:BCF_HEADER_TYPE): cint = b.cint
 
+proc destroy_variant(v:Variant) =
+  if v != nil and v.c != nil and v.own:
+    bcf_destroy(v.c)
+    v.c = nil
+  if v.p != nil:
+    free(v.p)
+
+proc destroy_format(f:Format) =
+  if f != nil and f.p != nil:
+    free(f.p)
+
 proc n_samples*(v:VCF): int {.inline.} =
   bcf_hdr_nsamples(v.header.hdr).int
 
@@ -175,15 +186,68 @@ proc remove_format*(h:Header, ID:string): Status =
   bcf_hdr_remove(h.hdr, BCF_HEADER_TYPE.BCF_HL_FMT.cint, ID.cstring)
   return Status(bcf_hdr_sync(h.hdr))
 
-proc info*(v:Variant): INFO {.inline, noInit.} =
-  discard bcf_unpack(v.c, BCF_UN_STR or BCF_UN_FLT or BCF_UN_INFO)
-  result = INFO(i:0, v:v)
+proc destroy_vcf(v:VCF) =
+  bcf_hdr_destroy(v.header.hdr)
+  if v.tidx != nil:
+    tbx_destroy(v.tidx)
+  if v.bidx != nil:
+    hts_idx_destroy(v.bidx)
+  if v.c != nil:
+    bcf_destroy(v.c)
+  if v.fname != "-" and v.fname != "/dev/stdin":
+    if v.hts != nil:
+      discard hts_close(v.hts)
+      v.hts = nil
+  else:
+    flushFile(stdout)
+
+var
+  errno* {.importc, header: "<errno.h>".}: cint
+
+proc strerror(errnum:cint): cstring {.importc, header: "<errno.h>", cdecl.}
+
+
+proc open*(v:var VCF, fname:string, mode:string="r", samples:seq[string]=empty_samples, threads:int=0): bool =
+  ## open a VCF at the given path
+  new(v, destroy_vcf)
+  var vmode = mode
+  if vmode[0] == 'w' and vmode.len == 1:
+    if fname.endswith(".gz"): vmode &= "z"
+    elif fname.endswith(".bcf"): vmode &= "b"
+
+  v.hts = hts_open(fname.cstring, vmode.cstring)
+  v.fname = fname
+  if v.hts == nil:
+    stderr.write_line "hts-nim/vcf: error opening file:" & fname & ". " & $strerror(errno)
+    return false
+
+  if mode[0] == 'w': return true
+
+  if mode[0] == 'r' and 0 != threads and 0 != hts_set_threads(v.hts, cint(threads)):
+    raise newException(ValueError, "error setting number of threads")
 
-proc destroy_format(f:Format) =
-  if f != nil and f.p != nil:
-    free(f.p)
 
-proc format*(v:Variant): FORMAT {.inline, noInit.} =
+  v.header = Header(hdr:bcf_hdr_read(v.hts))
+  if v.header.hdr == nil:
+    raise newException(OSError, &"[hts-nim/vcf] error reading VCF header from '{fname}'")
+  if samples.len != 0:
+    v.set_samples(samples)
+
+  v.c = bcf_init()
+
+  if v.c == nil:
+    stderr.write_line "hts-nim/vcf: error opening file:" & fname
+    return false
+
+  return true
+
+proc newVariant*(): Variant {.noInit.} =
+  ## make an empty variant.
+  new(result, destroy_variant)
+  result.c = bcf_init()
+  result.own = true
+
+proc format*(v:Variant): FORMAT {.inline.} =
   discard bcf_unpack(v.c, BCF_UN_ALL)
   new(result, destroy_format)
   result.v = v
@@ -396,44 +460,6 @@ proc set*(i:INFO, key:string, values:var seq[int32]): Status {.inline.} =
       values[0].addr.pointer, len(values).cint, BCF_HT_INT.cint)
   return Status(ret.int)
 
-proc destroy_variant(v:Variant) =
-  if v != nil and v.c != nil and v.own:
-    bcf_destroy(v.c)
-    v.c = nil
-  if v.p != nil:
-    free(v.p)
-
-proc from_string*(v: var Variant, h: Header, s:var string) =
-  var str = kstring_t(s:s.cstring, l:s.len.csize_t, m:s.len.csize_t)
-  if v == nil:
-    new(v, destroy_variant)
-    v.own = true
-  if v.c == nil:
-    v.c = bcf_init()
-  if vcf_parse(str.addr, h.hdr, v.c) != 0:
-   raise newException(ValueError, "hts-nim/Variant/from_string: error parsing variant:" & s)
-
-proc newVariant*(): Variant {.noInit.} =
-  ## make an empty variant.
-  new(result, destroy_variant)
-  result.c = bcf_init()
-  result.own = true
-
-proc destroy_vcf(v:VCF) =
-  bcf_hdr_destroy(v.header.hdr)
-  if v.tidx != nil:
-    tbx_destroy(v.tidx)
-  if v.bidx != nil:
-    hts_idx_destroy(v.bidx)
-  if v.c != nil:
-    bcf_destroy(v.c)
-  if v.fname != "-" and v.fname != "/dev/stdin":
-    if v.hts != nil:
-      discard hts_close(v.hts)
-      v.hts = nil
-  else:
-    flushFile(stdout)
-
 proc close*(v:VCF) =
   if v.fname != "-" and v.fname != "/dev/stdin" and v.hts != nil:
     if hts_close(v.hts) != 0:
@@ -469,44 +495,9 @@ proc write_variant*(v:VCF, variant:Variant): bool =
       doAssert bcf_hdr_sync(variant.vcf.header.hdr) == 0
   return bcf_write(v.hts, v.header.hdr, variant.c) == 0
 
-var
-  errno* {.importc, header: "<errno.h>".}: cint
-
-proc strerror(errnum:cint): cstring {.importc, header: "<errno.h>", cdecl.}
-
-proc open*(v:var VCF, fname:string, mode:string="r", samples:seq[string]=empty_samples, threads:int=0): bool =
-  ## open a VCF at the given path
-  new(v, destroy_vcf)
-  var vmode = mode
-  if vmode[0] == 'w' and vmode.len == 1:
-    if fname.endswith(".gz"): vmode &= "z"
-    elif fname.endswith(".bcf"): vmode &= "b"
-
-  v.hts = hts_open(fname.cstring, vmode.cstring)
-  v.fname = fname
-  if v.hts == nil:
-    stderr.write_line "hts-nim/vcf: error opening file:" & fname & ". " & $strerror(errno)
-    return false
-
-  if mode[0] == 'w': return true
-
-  if mode[0] == 'r' and 0 != threads and 0 != hts_set_threads(v.hts, cint(threads)):
-    raise newException(ValueError, "error setting number of threads")
-
-
-  v.header = Header(hdr:bcf_hdr_read(v.hts))
-  if v.header.hdr == nil:
-    raise newException(OSError, &"[hts-nim/vcf] error reading VCF header from '{fname}'")
-  if samples.len != 0:
-    v.set_samples(samples)
-
-  v.c = bcf_init()
-
-  if v.c == nil:
-    stderr.write_line "hts-nim/vcf: error opening file:" & fname
-    return false
-
-  return true
+proc info*(v:Variant): INFO {.inline, noInit.} =
+  discard bcf_unpack(v.c, BCF_UN_STR or BCF_UN_FLT or BCF_UN_INFO)
+  result = INFO(i:0, v:v)
 
 proc bcf_hdr_int2id(hdr: ptr bcf_hdr_t, typ: int, rid:int): cstring {.inline.} =
   var v = cast[CPtr[bcf_idpair_t]](hdr.id[typ])



View it on GitLab: https://salsa.debian.org/med-team/nim-hts/-/commit/05e0b475fe35f21817ad1fa3c0a8739c5c699389

-- 
View it on GitLab: https://salsa.debian.org/med-team/nim-hts/-/commit/05e0b475fe35f21817ad1fa3c0a8739c5c699389
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20201126/f7024ceb/attachment-0001.html>


More information about the debian-med-commit mailing list