[med-svn] [Git][med-team/libbiod][master] 2 commits: Adapt patch set to new upstream version

Andreas Tille gitlab at salsa.debian.org
Tue Oct 9 07:19:26 BST 2018


Andreas Tille pushed to branch master at Debian Med / libbiod


Commits:
3fd98b80 by Andreas Tille at 2018-10-09T06:07:30Z
Adapt patch set to new upstream version

- - - - -
0186cd8f by Andreas Tille at 2018-10-09T06:11:16Z
Upload to unstable

- - - - -


21 changed files:

- debian/changelog
- − debian/patches/0002-improved-big-endian-support.patch
- − debian/patches/0003-include-the-AH-header-tag-to-SQ-lines.patch
- − debian/patches/0004-use-consistent-naming-21.patch
- − debian/patches/0005-fixes-lomereiter-sambamba-244.patch
- − debian/patches/0006-switch-to-undead.stream.patch
- − debian/patches/0007-std.c-core.stdc.patch
- − debian/patches/0008-fix-deprecations-and-some-warnings.patch
- − debian/patches/0009-fix-toHash-signature.patch
- − debian/patches/0011-better-.travis.yml-uses-dub-test-and-tests-ldc.patch
- − debian/patches/0013-fix-toJSON-usage-for-new-and-old-compilers.patch
- − debian/patches/0014-Add-compareCoordinatesAndStrand-to-fix-sorting-test-.patch
- − debian/patches/0015-Add-Meson-build-definition.patch
- − debian/patches/0016-fix-type-conversion.patch
- − debian/patches/0017_fix_expression_conversion.patch
- + debian/patches/001_fix_unit_tests.patch
- + debian/patches/002_include_bio2.patch
- + debian/patches/003_modernize_meson.patch
- − debian/patches/___series___
- − debian/patches/fix_deprecated_imports.patch
- + debian/patches/series


Changes:

=====================================
debian/changelog
=====================================
@@ -1,8 +1,8 @@
-libbiod (0.2.1-1) UNRELEASED; urgency=medium
+libbiod (0.2.1-1) unstable; urgency=medium
 
   * New upstream version
 
- -- Andreas Tille <tille at debian.org>  Tue, 09 Oct 2018 07:43:37 +0200
+ -- Andreas Tille <tille at debian.org>  Tue, 09 Oct 2018 08:07:56 +0200
 
 libbiod (0.1.0-6) unstable; urgency=medium
 


=====================================
debian/patches/0002-improved-big-endian-support.patch deleted
=====================================
@@ -1,554 +0,0 @@
-From 0b44f2a93ea1843f383c35126b677a2aaebab1f2 Mon Sep 17 00:00:00 2001
-From: Artem Tarasov <artem.tarasov at embl.de>
-Date: Sat, 16 Jul 2016 06:57:56 +0200
-Subject: [PATCH 02/14] improved big endian support
-
----
- bio/bam/read.d              |  5 ++--
- bio/bam/readrange.d         | 34 +++++++++++---------------
- bio/bam/writer.d            | 21 ++++++----------
- bio/core/bgzf/compress.d    | 36 ++++++++++-----------------
- bio/core/bgzf/constants.d   | 34 +++++++++++++-------------
- bio/core/bgzf/inputstream.d | 59 ++++++++++++++++++++++-----------------------
- 6 files changed, 84 insertions(+), 105 deletions(-)
-
-diff --git a/bio/bam/read.d b/bio/bam/read.d
-index 3d15881..6e81263 100644
---- a/bio/bam/read.d
-+++ b/bio/bam/read.d
-@@ -71,6 +71,7 @@ import std.exception;
- import std.system;
- import std.traits;
- import std.array;
-+import std.bitmanip;
- import std.c.stdlib;
- 
- /**
-@@ -704,7 +705,7 @@ struct BamRead {
-     /*
-       Constructs the struct from memory chunk
-       */
--    this(ubyte[] chunk) {
-+    this(ubyte[] chunk, bool fix_byte_order=true) {
- 
-         // Switching endianness lazily is not a good idea:
-         //
-@@ -720,7 +721,7 @@ struct BamRead {
-         _chunk = chunk;
-         this._is_slice = true;
- 
--        if (std.system.endian != Endian.littleEndian) {
-+        if (fix_byte_order && std.system.endian != Endian.littleEndian) {
-             switchChunkEndianness();
- 
-             // Dealing with tags is the responsibility of TagStorage.
-diff --git a/bio/bam/readrange.d b/bio/bam/readrange.d
-index 1a2ec87..6767a74 100644
---- a/bio/bam/readrange.d
-+++ b/bio/bam/readrange.d
-@@ -1,6 +1,6 @@
- /*
-     This file is part of BioD.
--    Copyright (C) 2012-2014    Artem Tarasov <lomereiter at gmail.com>
-+    Copyright (C) 2012-2016    Artem Tarasov <lomereiter at gmail.com>
- 
-     Permission is hereby granted, free of charge, to any person obtaining a
-     copy of this software and associated documentation files (the "Software"),
-@@ -8,10 +8,10 @@
-     the rights to use, copy, modify, merge, publish, distribute, sublicense,
-     and/or sell copies of the Software, and to permit persons to whom the
-     Software is furnished to do so, subject to the following conditions:
--    
-+
-     The above copyright notice and this permission notice shall be included in
-     all copies or substantial portions of the Software.
--    
-+
-     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-@@ -28,11 +28,11 @@ import bio.bam.abstractreader;
- import bio.bam.reader;
- import bio.core.bgzf.inputstream;
- import bio.core.bgzf.virtualoffset;
--import bio.core.utils.switchendianness;
- 
- import std.stream;
- import std.algorithm;
- import std.system;
-+import std.bitmanip;
- 
- /// Read + its start/end virtual offsets
- struct BamReadBlock {
-@@ -54,7 +54,7 @@ mixin template withOffsets() {
-                  plus the current read itself.
-      */
-     BamReadBlock front() @property {
--        return BamReadBlock(_start_voffset, 
-+        return BamReadBlock(_start_voffset,
-                             _stream.virtualTell(),
-                             _current_record);
-     }
-@@ -79,8 +79,8 @@ mixin template withoutOffsets() {
- }
- 
- /// $(D front) return type is determined by $(I IteratePolicy)
--struct BamReadRange(alias IteratePolicy) 
--{ 
-+struct BamReadRange(alias IteratePolicy)
-+{
-     /// Create new range from BgzfInputStream.
-     this(BgzfInputStream stream, BamReader reader=null) {
-         _stream = stream;
-@@ -95,7 +95,7 @@ struct BamReadRange(alias IteratePolicy)
-     }
- 
-     mixin IteratePolicy;
--   
-+
-     ///
-     void popFront() {
-         readNext();
-@@ -126,21 +126,18 @@ private:
-             _empty = true;
-             return;
-         }
--     
-+
-         // In order to get the right virtual offset, we need to do it here.
-         version(extraVerbose) {
-             // import std.stdio; stderr.writeln("record v.o. = ", _stream.virtualTell());
-         }
-         beforeNextBamReadLoad();
- 
--        // (FIXME: that won't work on Big Endian systems!)
--        
-         // Here's where _empty is really set!
--        int block_size = void;
--        ubyte* ptr = cast(ubyte*)(&block_size);
-+        ubyte[int.sizeof] tmp = void;
-         auto _read = 0;
-         while (_read < int.sizeof) {
--            auto _actually_read = _endian_stream.readBlock(ptr, int.sizeof - _read);
-+            auto _actually_read = _endian_stream.readBlock(tmp.ptr + _read, int.sizeof - _read);
-             if (_actually_read == 0) {
-                 version(development) {
-                     import std.stdio;
-@@ -150,18 +147,15 @@ private:
-                 return;
-             }
-             _read += _actually_read;
--            ptr += _actually_read;
--        } 
-+        }
-+
-+        int block_size = littleEndianToNative!int(tmp);
- 
-         version(extraVerbose) {
-             import std.stdio;
-             stderr.writeln("[uncompressed] record size: ", block_size);
-         }
- 
--        if (std.system.endian != Endian.littleEndian) {
--            switchEndianness(&block_size, int.sizeof);
--        }
--
-         ubyte[] data = void;
-         if (_reader !is null && _reader._seqprocmode) {
-             if (block_size > _buffer.length)
-diff --git a/bio/bam/writer.d b/bio/bam/writer.d
-index 187b40a..4d5b4f1 100644
---- a/bio/bam/writer.d
-+++ b/bio/bam/writer.d
-@@ -8,10 +8,10 @@
-     the rights to use, copy, modify, merge, publish, distribute, sublicense,
-     and/or sell copies of the Software, and to permit persons to whom the
-     Software is furnished to do so, subject to the following conditions:
--    
-+
-     The above copyright notice and this permission notice shall be included in
-     all copies or substantial portions of the Software.
--    
-+
-     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-@@ -32,7 +32,6 @@ import bio.bam.readrange;
- import bio.core.bgzf.outputstream;
- import bio.core.bgzf.virtualoffset;
- import bio.core.utils.stream;
--import bio.core.utils.switchendianness;
- 
- import std.parallelism;
- import std.exception;
-@@ -41,6 +40,7 @@ import std.traits;
- import std.system;
- import std.algorithm;
- import std.array;
-+import std.bitmanip;
- 
- /** Class for outputting BAM.
-     $(BR)
-@@ -73,12 +73,12 @@ final class BamWriter {
-     ///     compression_level  = compression level, must be in range -1..9
-     ///     task_pool          = task pool to use for parallel compression
-     ///     buffer_size        = size of BgzfOutputStream buffer
--    this(std.stream.Stream stream, 
-+    this(std.stream.Stream stream,
-          int compression_level=-1,
-          std.parallelism.TaskPool task_pool=std.parallelism.taskPool,
--         size_t buffer_size=0) 
-+         size_t buffer_size=0)
-     {
--        _stream = new BgzfOutputStream(stream, compression_level, 
-+        _stream = new BgzfOutputStream(stream, compression_level,
-                                        task_pool, buffer_size);
-         _stream.setWriteHandler((ubyte[] uncompressed, ubyte[] compressed) {
-             _bytes_written += compressed.length;
-@@ -120,13 +120,8 @@ final class BamWriter {
- 
-     package void writeInteger(T)(T integer) if (isIntegral!T)
-     {
--        T num = integer;
--        static if (T.sizeof != 1) {
--            if (std.system.endian != Endian.littleEndian) {
--                switchEndianness(&num, T.sizeof);
--            }
--        }
--        _stream.writeExact(&num, T.sizeof);
-+        ubyte[T.sizeof] buf = nativeToLittleEndian(integer);
-+        _stream.writeExact(buf.ptr, buf.length);
-     }
- 
-     private {
-diff --git a/bio/core/bgzf/compress.d b/bio/core/bgzf/compress.d
-index 5bf01ad..63b959a 100644
---- a/bio/core/bgzf/compress.d
-+++ b/bio/core/bgzf/compress.d
-@@ -1,6 +1,6 @@
- /*
-     This file is part of BioD.
--    Copyright (C) 2012-2014    Artem Tarasov <lomereiter at gmail.com>
-+    Copyright (C) 2012-2016    Artem Tarasov <lomereiter at gmail.com>
- 
-     Permission is hereby granted, free of charge, to any person obtaining a
-     copy of this software and associated documentation files (the "Software"),
-@@ -8,10 +8,10 @@
-     the rights to use, copy, modify, merge, publish, distribute, sublicense,
-     and/or sell copies of the Software, and to permit persons to whom the
-     Software is furnished to do so, subject to the following conditions:
--    
-+
-     The above copyright notice and this permission notice shall be included in
-     all copies or substantial portions of the Software.
--    
-+
-     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-@@ -28,20 +28,20 @@ import bio.core.utils.zlib;
- 
- import std.array;
- import std.system;
--import core.bitop;
-+import std.bitmanip: nativeToLittleEndian;
- 
- /// Returns BGZF block containing compressed $(D chunk).
- /// If $(D buffer) is provided, it will be used for storing the block.
- ///
--/// Params: 
-+/// Params:
- ///         chunk =  chunk of memory to be compressed
- ///         level =  compression level, see zlib documentation
- ///         buffer = optional buffer which will be used for storing
- ///                  decompressed data
- ///
- /// For uncompressed BAM output, use level = 0.
--ubyte[] bgzfCompress(ubyte[] chunk, int level=-1, ubyte[] buffer=null) 
--in 
-+ubyte[] bgzfCompress(ubyte[] chunk, int level=-1, ubyte[] buffer=null)
-+in
- {
-     assert(-1 <= level && level <= 9);
- }
-@@ -70,9 +70,9 @@ body
-     zs.avail_out = cast(int)(buffer.length - BLOCK_HEADER_LENGTH - BLOCK_FOOTER_LENGTH);
- 
-     auto err = bio.core.utils.zlib.deflateInit2(&zs, /* compression level */ level,
--                                            /* deflated compression method */ Z_DEFLATED, 
--                                            /* winbits (no header) */ -15, 
--                                            /* memory usage level (default) */ 8, 
-+                                            /* deflated compression method */ Z_DEFLATED,
-+                                            /* winbits (no header) */ -15,
-+                                            /* memory usage level (default) */ 8,
-                                             /* default compression strategy */ Z_DEFAULT_STRATEGY);
-     if (err != Z_OK) {
-         throw new ZlibException("deflateInit2", err);
-@@ -94,20 +94,10 @@ body
-     // Write (block length - 1) in BC subfield.
-     // Why -1? To fit the value into 2 bytes (it's assumed to be in range 1-65536).
-     ushort len = cast(ushort)(buffer.length - 1);
--    buffer[BLOCK_HEADER_LENGTH - 2] = len & 0xFF;         // little endian
--    buffer[BLOCK_HEADER_LENGTH - 1] = len >> 8;
-+    buffer[BLOCK_HEADER_LENGTH - 2 .. $][0 .. 2] = nativeToLittleEndian(len);
- 
-     // Write the footer
--    *(cast(uint*)(buffer.ptr + buffer.length - 8)) = crc32(0, chunk);
--    *(cast(uint*)(buffer.ptr + buffer.length - 4)) = cast(uint)chunk.length;
--
--    uint* ptr;
--    if (std.system.endian != Endian.littleEndian) {
--        ptr = cast(uint*)(buffer.ptr + buffer.length - 8);
--        *ptr = bswap(*ptr);
--        ptr = cast(uint*)(buffer.ptr + buffer.length - 4);
--        *ptr = bswap(*ptr);
--    }
--
-+    buffer[$ - 8 .. $ - 4] = nativeToLittleEndian(crc32(0, chunk));
-+    buffer[$- 4 .. $] = nativeToLittleEndian(cast(uint)chunk.length);
-     return buffer;
- }
-diff --git a/bio/core/bgzf/constants.d b/bio/core/bgzf/constants.d
-index 1985309..9136bc9 100644
---- a/bio/core/bgzf/constants.d
-+++ b/bio/core/bgzf/constants.d
-@@ -1,6 +1,6 @@
- /*
-     This file is part of BioD.
--    Copyright (C) 2012    Artem Tarasov <lomereiter at gmail.com>
-+    Copyright (C) 2012-2016    Artem Tarasov <lomereiter at gmail.com>
- 
-     Permission is hereby granted, free of charge, to any person obtaining a
-     copy of this software and associated documentation files (the "Software"),
-@@ -8,10 +8,10 @@
-     the rights to use, copy, modify, merge, publish, distribute, sublicense,
-     and/or sell copies of the Software, and to permit persons to whom the
-     Software is furnished to do so, subject to the following conditions:
--    
-+
-     The above copyright notice and this permission notice shall be included in
-     all copies or substantial portions of the Software.
--    
-+
-     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-@@ -23,9 +23,9 @@
- */
- module bio.core.bgzf.constants;
- 
--immutable BGZF_MAGIC = 0x04_08_8B_1F; // little endian
-+immutable ubyte[4] BGZF_MAGIC = [0x1F, 0x8B, 0x8, 0x4];
- 
--immutable ubyte[16] BLOCK_HEADER_START = 
-+immutable ubyte[16] BLOCK_HEADER_START =
-     [ 31, 139,   8,   4,  // BGZF magic
-        0,   0,   0,   0,  // GZIP modification time
-        0,                 // GZIP extra flags
-@@ -35,17 +35,17 @@ immutable ubyte[16] BLOCK_HEADER_START =
-        2,   0];           // Subfield length (holds 1 ushort)
- 
- // empty block
--immutable ubyte[28] BGZF_EOF = 
--    [31, 139, 8, 4, 
--        0, 0, 0, 0, 
--                 0, 
--               255, 
--              6, 0, 
--            66, 67, 
--              2, 0, 
--             27, 0, 
--              3, 0, 
--        0, 0, 0, 0, 
-+immutable ubyte[28] BGZF_EOF =
-+    [31, 139, 8, 4,
-+        0, 0, 0, 0,
-+                 0,
-+               255,
-+              6, 0,
-+            66, 67,
-+              2, 0,
-+             27, 0,
-+              3, 0,
-+        0, 0, 0, 0,
-         0, 0, 0, 0];
- 
- 
-@@ -58,4 +58,4 @@ immutable BLOCK_HEADER_LENGTH = BLOCK_HEADER_START.length + ushort.sizeof;
- immutable BLOCK_FOOTER_LENGTH = uint.sizeof + uint.sizeof;
- 
- immutable BGZF_MAX_BLOCK_SIZE = 65536;
--immutable BGZF_BLOCK_SIZE = 0xFF00; 
-+immutable BGZF_BLOCK_SIZE = 0xFF00;
-diff --git a/bio/core/bgzf/inputstream.d b/bio/core/bgzf/inputstream.d
-index fa9548b..169e189 100644
---- a/bio/core/bgzf/inputstream.d
-+++ b/bio/core/bgzf/inputstream.d
-@@ -1,6 +1,6 @@
- /*
-     This file is part of BioD.
--    Copyright (C) 2013    Artem Tarasov <lomereiter at gmail.com>
-+    Copyright (C) 2013-2016    Artem Tarasov <lomereiter at gmail.com>
- 
-     Permission is hereby granted, free of charge, to any person obtaining a
-     copy of this software and associated documentation files (the "Software"),
-@@ -8,10 +8,10 @@
-     the rights to use, copy, modify, merge, publish, distribute, sublicense,
-     and/or sell copies of the Software, and to permit persons to whom the
-     Software is furnished to do so, subject to the following conditions:
--    
-+
-     The above copyright notice and this permission notice shall be included in
-     all copies or substantial portions of the Software.
--    
-+
-     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-@@ -48,7 +48,7 @@ bool fillBgzfBufferFromStream(Stream stream, bool is_seekable,
- {
-     if (stream.eof())
-         return false;
--    
-+
-     ulong start_offset;
-     void throwBgzfException(string msg) {
-         throw new BgzfException("Error reading BGZF block starting from offset " ~
-@@ -57,24 +57,23 @@ bool fillBgzfBufferFromStream(Stream stream, bool is_seekable,
- 
-     if (is_seekable)
-         start_offset = stream.position;
--    
-+
-     try {
--        uint bgzf_magic = void;
--           
--        // TODO: fix byte order if needed
-+        ubyte[4] bgzf_magic = void;
-+
-         size_t bytes_read;
--        while (bytes_read < uint.sizeof) {
--            auto buf = (cast(ubyte*)&bgzf_magic)[bytes_read .. uint.sizeof];
--            auto read_ = stream.read(buf);
-+        while (bytes_read < 4) {
-+            auto buf = bgzf_magic.ptr + bytes_read;
-+            auto read_ = stream.read(buf[0 .. 4 - bytes_read]);
-             if (read_ == 0)
-                 return false;
-             bytes_read += read_;
-         }
- 
--        if (bgzf_magic != BGZF_MAGIC) { 
-+        if (bgzf_magic != BGZF_MAGIC) {
-             throwBgzfException("wrong BGZF magic");
-         }
--        
-+
-         ushort gzip_extra_length = void;
- 
-         if (is_seekable) {
-@@ -89,7 +88,7 @@ bool fillBgzfBufferFromStream(Stream stream, bool is_seekable,
-         }
- 
-         stream.read(gzip_extra_length);
--          
-+
-         ushort bsize = void; // total Block SIZE minus 1
-         bool found_block_size = false;
- 
-@@ -99,16 +98,16 @@ bool fillBgzfBufferFromStream(Stream stream, bool is_seekable,
-             ubyte si1 = void;    // Subfield Identifier1
-             ubyte si2 = void;    // Subfield Identifier2
-             ushort slen = void;  // Subfield LENgth
--                
--            stream.read(si1);    
--            stream.read(si2);    
--            stream.read(slen);   
- 
--            if (si1 == BAM_SI1 && si2 == BAM_SI2) { 
-+            stream.read(si1);
-+            stream.read(si2);
-+            stream.read(slen);
-+
-+            if (si1 == BAM_SI1 && si2 == BAM_SI2) {
-                 // found 'BC' as subfield identifier
--                    
-+
-                 if (slen != 2) {
--                    throwBgzfException("wrong BC subfield length: " ~ 
-+                    throwBgzfException("wrong BC subfield length: " ~
-                                        to!string(slen) ~ "; expected 2");
-                 }
- 
-@@ -117,7 +116,7 @@ bool fillBgzfBufferFromStream(Stream stream, bool is_seekable,
-                 }
- 
-                 // read block size
--                stream.read(bsize); 
-+                stream.read(bsize);
-                 found_block_size = true;
- 
-                 // skip the rest
-@@ -139,11 +138,11 @@ bool fillBgzfBufferFromStream(Stream stream, bool is_seekable,
-             if (number_of_bytes_read !is null)
-                 *number_of_bytes_read += nbytes;
-             len += nbytes;
--        } 
-+        }
- 
-         if (len != gzip_extra_length) {
--            throwBgzfException("total length of subfields in bytes (" ~ 
--                               to!string(len) ~ 
-+            throwBgzfException("total length of subfields in bytes (" ~
-+                               to!string(len) ~
-                                ") is not equal to gzip_extra_length (" ~
-                                to!string(gzip_extra_length) ~ ")");
-         }
-@@ -151,7 +150,7 @@ bool fillBgzfBufferFromStream(Stream stream, bool is_seekable,
-         if (!found_block_size) {
-             throwBgzfException("block size was not found in any subfield");
-         }
--           
-+
-         // read compressed data
-         auto cdata_size = bsize - gzip_extra_length - 19;
-         if (cdata_size > BGZF_MAX_BLOCK_SIZE) {
-@@ -178,7 +177,7 @@ bool fillBgzfBufferFromStream(Stream stream, bool is_seekable,
- 
-         if (number_of_bytes_read !is null)
-             *number_of_bytes_read += 12 + cdata_size + block.crc32.sizeof + block.input_size.sizeof;
--           
-+
-         // version(extraVerbose) {stderr.writeln("[compressed] read block input size: ", block.input_size);}
-         block._buffer = buffer[0 .. max(block.input_size, cdata_size)];
-         block.start_offset = start_offset;
-@@ -213,7 +212,7 @@ class StreamSupplier : BgzfBlockSupplier {
-         size_t _size;
-         ushort _skip_start;
-     }
--    
-+
-     ///
-     this(Stream stream, ushort skip_start=0) {
-         _stream = stream;
-@@ -267,7 +266,7 @@ class StreamChunksSupplier : BgzfBlockSupplier {
-             }
-         }
-     }
--    
-+
-     this(Stream stream, bio.core.bgzf.chunk.Chunk[] chunks) {
-         _stream = stream;
-         assert(_stream.seekable);
-@@ -485,7 +484,7 @@ class BgzfInputStream : Stream {
-             setEOF();
-             return 0;
-         }
--        
-+
-         auto buffer = cast(ubyte*)buf;
- 
-         auto len = min(size, _read_buffer.length);
--- 
-2.11.0
-


=====================================
debian/patches/0003-include-the-AH-header-tag-to-SQ-lines.patch deleted
=====================================
@@ -1,31 +0,0 @@
-From 589d65025a68a42ec03bbf6d64c57a7da7754201 Mon Sep 17 00:00:00 2001
-From: indraniel <indraniel at gmail.com>
-Date: Thu, 4 Aug 2016 15:43:37 -0500
-Subject: [PATCH 03/14] + include the AH header tag to @SQ lines
-
-  - the "AH" header tag corresponds to Alternate Haplotypes in ALT
-    mapping mode
-  - based on samtools/hts-specs issue 147: https://github.com/samtools/hts-specs/pull/147
-  - this tag is already being produced by `bwa` 0.7.15
-      * see tag 0.7.15 (r1140) https://github.com/lh3/bwa/releases/tag/v0.7.15
----
- bio/sam/header.d | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/bio/sam/header.d b/bio/sam/header.d
-index b6ec094..aceac15 100644
---- a/bio/sam/header.d
-+++ b/bio/sam/header.d
-@@ -223,7 +223,8 @@ mixin HeaderLineStruct!("SqLine", "@SQ", "name",
-           Field!("assembly", "AS"),
-           Field!("md5", "M5"),
-           Field!("species", "SP"),
--          Field!("uri", "UR"));
-+          Field!("uri", "UR"),
-+          Field!("AlternateHaplotype", "AH"));
- 
- mixin HeaderLineStruct!("RgLine", "@RG", "identifier",
-           Field!("identifier", "ID"),
--- 
-2.11.0
-


=====================================
debian/patches/0004-use-consistent-naming-21.patch deleted
=====================================
@@ -1,33 +0,0 @@
-From 47d081e06cb2df81269ec31d45cc50f12ec3c8b1 Mon Sep 17 00:00:00 2001
-From: Artem Tarasov <artem.tarasov at embl.de>
-Date: Fri, 5 Aug 2016 06:43:33 +0200
-Subject: [PATCH 04/14] use consistent naming (#21)
-
----
- bio/sam/header.d | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/bio/sam/header.d b/bio/sam/header.d
-index aceac15..6f315e5 100644
---- a/bio/sam/header.d
-+++ b/bio/sam/header.d
-@@ -1,6 +1,6 @@
- /*
-     This file is part of BioD.
--    Copyright (C) 2012-2015    Artem Tarasov <lomereiter at gmail.com>
-+    Copyright (C) 2012-2016    Artem Tarasov <lomereiter at gmail.com>
- 
-     Permission is hereby granted, free of charge, to any person obtaining a
-     copy of this software and associated documentation files (the "Software"),
-@@ -224,7 +224,7 @@ mixin HeaderLineStruct!("SqLine", "@SQ", "name",
-           Field!("md5", "M5"),
-           Field!("species", "SP"),
-           Field!("uri", "UR"),
--          Field!("AlternateHaplotype", "AH"));
-+          Field!("alternate_haplotype", "AH"));
- 
- mixin HeaderLineStruct!("RgLine", "@RG", "identifier",
-           Field!("identifier", "ID"),
--- 
-2.11.0
-


=====================================
debian/patches/0005-fixes-lomereiter-sambamba-244.patch deleted
=====================================
@@ -1,59 +0,0 @@
-From 1248586b54af4bd4dfb28ebfebfc6bf012e7a587 Mon Sep 17 00:00:00 2001
-From: Artem Tarasov <artem.tarasov at embl.de>
-Date: Sat, 10 Sep 2016 08:58:07 +0200
-Subject: [PATCH 05/14] fixes lomereiter/sambamba#244
-
----
- bio/bam/pileup.d | 14 ++++++++++----
- 1 file changed, 10 insertions(+), 4 deletions(-)
-
-diff --git a/bio/bam/pileup.d b/bio/bam/pileup.d
-index 576a16b..a4c6a12 100644
---- a/bio/bam/pileup.d
-+++ b/bio/bam/pileup.d
-@@ -864,6 +864,11 @@ struct PileupChunkRange(C) {
-     private bool _use_md_tag;
-     private ulong _start_from;
-     private ulong _end_at;
-+    private int _chunk_right_end;
-+
-+    private int computeRightEnd(ref ElementType!C chunk) {
-+        return chunk.map!(r => r.position + r.basesCovered()).reduce!max;
-+    }
- 
-     this(C chunks, bool use_md_tag, ulong start_from, ulong end_at) {
-         _chunks = chunks;
-@@ -885,10 +890,9 @@ struct PileupChunkRange(C) {
-                     break;
-                 }
- 
--                auto last_read = _current_chunk[$-1];
--                if (last_read.position + last_read.basesCovered() > start_from) {
-+                _chunk_right_end = computeRightEnd(_current_chunk);
-+                if (_chunk_right_end > start_from)
-                     break;
--                }
-             }
-         }
-     }
-@@ -900,7 +904,7 @@ struct PileupChunkRange(C) {
-     auto front() @property {
-         auto end_pos = _current_chunk[$-1].position;
-         if (_chunks.empty || _chunks.front[0].ref_id != _current_chunk[$-1].ref_id)
--            end_pos += _current_chunk[$-1].basesCovered();
-+            end_pos = _chunk_right_end;
- 
-         return makePileup(chain(_prev_chunk, _current_chunk),
-                           _use_md_tag,
-@@ -921,6 +925,8 @@ struct PileupChunkRange(C) {
-             if (_current_chunk[0].ref_id >= 0) break;
-         }
- 
-+        _chunk_right_end = computeRightEnd(_current_chunk);
-+
-         // if we changed reference, nullify prev_chunk
-         if (_prev_chunk.length > 0 &&
-             _prev_chunk[$ - 1].ref_id == _current_chunk[0].ref_id)
--- 
-2.11.0
-


=====================================
debian/patches/0006-switch-to-undead.stream.patch deleted
=====================================
@@ -1,265 +0,0 @@
-From c37b0e7e03de77d231d596a16293907fa4f7ca92 Mon Sep 17 00:00:00 2001
-From: John Colvin <john.loughran.colvin at gmail.com>
-Date: Fri, 16 Dec 2016 12:41:21 +0000
-Subject: [PATCH 06/14] switch to undead.stream;
-
----
- bio/bam/bai/indexing.d             | 2 +-
- bio/bam/baifile.d                  | 2 +-
- bio/bam/reader.d                   | 2 +-
- bio/bam/readrange.d                | 2 +-
- bio/bam/reference.d                | 2 +-
- bio/bam/referenceinfo.d            | 2 +-
- bio/bam/writer.d                   | 4 ++--
- bio/core/bgzf/inputstream.d        | 2 +-
- bio/core/bgzf/outputstream.d       | 2 +-
- bio/core/utils/stream.d            | 4 ++--
- bio/core/utils/switchendianness.d  | 2 +-
- bio/sff/reader.d                   | 2 +-
- bio/sff/readrange.d                | 2 +-
- bio/sff/writer.d                   | 2 +-
- dub.json                           | 5 ++++-
- examples/create_bam_from_scratch.d | 2 +-
- test/unittests.d                   | 2 +-
- 17 files changed, 22 insertions(+), 19 deletions(-)
-
-diff --git a/bio/bam/bai/indexing.d b/bio/bam/bai/indexing.d
-index 270f5e6..43e89d3 100644
---- a/bio/bam/bai/indexing.d
-+++ b/bio/bam/bai/indexing.d
-@@ -30,7 +30,7 @@ import bio.bam.constants;
- import bio.bam.bai.bin;
- import bio.core.bgzf.chunk;
- 
--import std.stream;
-+import undead.stream;
- import std.array;
- import std.algorithm;
- import std.system;
-diff --git a/bio/bam/baifile.d b/bio/bam/baifile.d
-index 57359a9..276e685 100644
---- a/bio/bam/baifile.d
-+++ b/bio/bam/baifile.d
-@@ -28,7 +28,7 @@ public import bio.bam.bai.bin;
- import bio.core.bgzf.virtualoffset;
- import bio.bam.constants;
- 
--import std.stream;
-+import undead.stream;
- import std.system;
- import std.exception;
- import std.algorithm;
-diff --git a/bio/bam/reader.d b/bio/bam/reader.d
-index fae864f..728ccb5 100644
---- a/bio/bam/reader.d
-+++ b/bio/bam/reader.d
-@@ -94,7 +94,7 @@ class BamReader : IBamSamReader {
-       }
-       -------------------------------------------
-      */
--    this(std.stream.Stream stream, 
-+    this(undead.stream.Stream stream,
-          std.parallelism.TaskPool task_pool = std.parallelism.taskPool) {
-         _source_stream = new EndianStream(stream, Endian.littleEndian);
-         _task_pool = task_pool;
-diff --git a/bio/bam/readrange.d b/bio/bam/readrange.d
-index 6767a74..fc17aff 100644
---- a/bio/bam/readrange.d
-+++ b/bio/bam/readrange.d
-@@ -29,7 +29,7 @@ import bio.bam.reader;
- import bio.core.bgzf.inputstream;
- import bio.core.bgzf.virtualoffset;
- 
--import std.stream;
-+import undead.stream;
- import std.algorithm;
- import std.system;
- import std.bitmanip;
-diff --git a/bio/bam/reference.d b/bio/bam/reference.d
-index 997e6b4..6406b32 100644
---- a/bio/bam/reference.d
-+++ b/bio/bam/reference.d
-@@ -47,7 +47,7 @@ import bio.bam.region;
- import bio.bam.randomaccessmanager;
- import bio.core.bgzf.virtualoffset;
- 
--import std.stream;
-+import undead.stream;
- import std.exception;
- import std.array;
- 
-diff --git a/bio/bam/referenceinfo.d b/bio/bam/referenceinfo.d
-index 3824fe8..91b8d96 100644
---- a/bio/bam/referenceinfo.d
-+++ b/bio/bam/referenceinfo.d
-@@ -23,7 +23,7 @@
- */
- module bio.bam.referenceinfo;
- 
--import std.stream;
-+import undead.stream;
- import std.exception;
- import std.array;
- 
-diff --git a/bio/bam/writer.d b/bio/bam/writer.d
-index 4d5b4f1..5e92930 100644
---- a/bio/bam/writer.d
-+++ b/bio/bam/writer.d
-@@ -35,7 +35,7 @@ import bio.core.utils.stream;
- 
- import std.parallelism;
- import std.exception;
--import std.stream;
-+import undead.stream;
- import std.traits;
- import std.system;
- import std.algorithm;
-@@ -73,7 +73,7 @@ final class BamWriter {
-     ///     compression_level  = compression level, must be in range -1..9
-     ///     task_pool          = task pool to use for parallel compression
-     ///     buffer_size        = size of BgzfOutputStream buffer
--    this(std.stream.Stream stream,
-+    this(undead.stream.Stream stream,
-          int compression_level=-1,
-          std.parallelism.TaskPool task_pool=std.parallelism.taskPool,
-          size_t buffer_size=0)
-diff --git a/bio/core/bgzf/inputstream.d b/bio/core/bgzf/inputstream.d
-index 169e189..2bfc658 100644
---- a/bio/core/bgzf/inputstream.d
-+++ b/bio/core/bgzf/inputstream.d
-@@ -30,7 +30,7 @@ import bio.core.bgzf.chunk;
- import bio.bam.constants;
- import bio.core.utils.roundbuf;
- 
--import std.stream;
-+import undead.stream;
- import std.exception;
- import std.conv;
- import std.parallelism;
-diff --git a/bio/core/bgzf/outputstream.d b/bio/core/bgzf/outputstream.d
-index b9f3d07..89cbecb 100644
---- a/bio/core/bgzf/outputstream.d
-+++ b/bio/core/bgzf/outputstream.d
-@@ -28,7 +28,7 @@ import bio.core.bgzf.compress;
- 
- import bio.core.utils.roundbuf;
- 
--import std.stream;
-+import undead.stream;
- import std.exception;
- import std.parallelism;
- import std.array;
-diff --git a/bio/core/utils/stream.d b/bio/core/utils/stream.d
-index 6c5146d..ee57fe7 100644
---- a/bio/core/utils/stream.d
-+++ b/bio/core/utils/stream.d
-@@ -1,6 +1,6 @@
- module bio.core.utils.stream;
- 
--public import std.stream;
-+public import undead.stream;
- import core.stdc.stdio;
- import core.stdc.errno;
- import core.stdc.string;
-@@ -48,7 +48,7 @@ FileMode toFileMode(string mode) {
-     return result;
- }
- 
--final class File: std.stream.File {
-+final class File: undead.stream.File {
-     this(string filename, string mode="rb") {
-         version (Posix) {
-             // Issue 8528 workaround
-diff --git a/bio/core/utils/switchendianness.d b/bio/core/utils/switchendianness.d
-index 7b141cf..6772e70 100644
---- a/bio/core/utils/switchendianness.d
-+++ b/bio/core/utils/switchendianness.d
-@@ -1,5 +1,5 @@
- /**
--  (Almost) a copy-paste from std/stream.d
-+  (Almost) a copy-paste from undead.stream.d
- */
- module bio.core.utils.switchendianness;
- 
-diff --git a/bio/sff/reader.d b/bio/sff/reader.d
-index d0c21a2..257a859 100644
---- a/bio/sff/reader.d
-+++ b/bio/sff/reader.d
-@@ -29,7 +29,7 @@ import bio.sff.readrange;
- import bio.sff.constants;
- 
- import bio.core.utils.stream;
--import std.stream;
-+import undead.stream;
- import std.system;
- import std.range;
- import std.exception;
-diff --git a/bio/sff/readrange.d b/bio/sff/readrange.d
-index eda29d3..5f70f08 100644
---- a/bio/sff/readrange.d
-+++ b/bio/sff/readrange.d
-@@ -5,7 +5,7 @@ import bio.sff.index;
- import bio.core.utils.switchendianness;
- 
- import std.algorithm;
--import std.stream;
-+import undead.stream;
- import std.system;
- import std.array;
- 
-diff --git a/bio/sff/writer.d b/bio/sff/writer.d
-index 7937d79..1ebd0ca 100644
---- a/bio/sff/writer.d
-+++ b/bio/sff/writer.d
-@@ -4,7 +4,7 @@ import bio.sff.constants;
- import bio.sff.utils.roundup;
- 
- import bio.core.utils.stream;
--import std.stream;
-+import undead.stream;
- import std.system;
- 
- /// Class for outputting SFF files
-diff --git a/dub.json b/dub.json
-index ec26904..6135f32 100644
---- a/dub.json
-+++ b/dub.json
-@@ -8,5 +8,8 @@
- 	"copyright": "Copyright © 2016, BioD developers",
- 	"license": "MIT",
- 	"sourcePaths": ["bio"],
--	"importPaths": ["bio"]
-+	"importPaths": ["bio"],
-+    "dependencies": {
-+        "undead": "~>1.0.6"
-+    }
- }
-diff --git a/examples/create_bam_from_scratch.d b/examples/create_bam_from_scratch.d
-index ad6053a..b011d93 100644
---- a/examples/create_bam_from_scratch.d
-+++ b/examples/create_bam_from_scratch.d
-@@ -3,7 +3,7 @@
- // this example shows how to create BAM files from scratch
- import bio.bam.read, bio.bam.referenceinfo, bio.sam.header;
- import bio.bam.reader, bio.bam.writer;
--import std.stream, std.stdio;
-+import undead.stream, std.stdio;
- 
- void main() {
-     auto header = new SamHeader(); // First, create SAM header 
-diff --git a/test/unittests.d b/test/unittests.d
-index 4435008..cefa6a9 100644
---- a/test/unittests.d
-+++ b/test/unittests.d
-@@ -49,7 +49,7 @@ import bio.core.utils.roundbuf;
- import std.path;
- import std.range;
- import std.stdio;
--import std.stream;
-+import undead.stream;
- import std.algorithm;
- import std.array;
- import std.conv;
--- 
-2.11.0
-


=====================================
debian/patches/0007-std.c-core.stdc.patch deleted
=====================================
@@ -1,175 +0,0 @@
-From 4901cda76512a1c819bc2f9ec2af7048ae9db80d Mon Sep 17 00:00:00 2001
-From: John Colvin <john.loughran.colvin at gmail.com>
-Date: Fri, 16 Dec 2016 13:30:13 +0000
-Subject: [PATCH 07/14] std.c -> core.stdc
-
----
- bio/bam/bai/indexing.d       | 2 +-
- bio/bam/read.d               | 2 +-
- bio/bam/thirdparty/msgpack.d | 4 ++--
- bio/bam/utils/array.d        | 2 +-
- bio/core/bgzf/outputstream.d | 6 +++---
- bio/core/utils/bylinefast.d  | 2 +-
- bio/core/utils/format.d      | 6 +++---
- bio/core/utils/stream.d      | 2 +-
- bio/sam/reader.d             | 2 +-
- 9 files changed, 14 insertions(+), 14 deletions(-)
-
-diff --git a/bio/bam/bai/indexing.d b/bio/bam/bai/indexing.d
-index 43e89d3..fec5662 100644
---- a/bio/bam/bai/indexing.d
-+++ b/bio/bam/bai/indexing.d
-@@ -35,7 +35,7 @@ import std.array;
- import std.algorithm;
- import std.system;
- import std.exception;
--import std.c.string;
-+import core.stdc.string;
- 
- // Suppose we have an alignment which covers bases on a reference,
- // starting from one position and ending at another position.
-diff --git a/bio/bam/read.d b/bio/bam/read.d
-index 6e81263..3f51dc8 100644
---- a/bio/bam/read.d
-+++ b/bio/bam/read.d
-@@ -72,7 +72,7 @@ import std.system;
- import std.traits;
- import std.array;
- import std.bitmanip;
--import std.c.stdlib;
-+import core.stdc.stdlib;
- 
- /**
-   Represents single CIGAR operation
-diff --git a/bio/bam/thirdparty/msgpack.d b/bio/bam/thirdparty/msgpack.d
-index bf5ca5b..1032b33 100644
---- a/bio/bam/thirdparty/msgpack.d
-+++ b/bio/bam/thirdparty/msgpack.d
-@@ -59,7 +59,7 @@ else
- // for Converting Endian using ntohs and ntohl;
- version(Windows)
- {
--    import std.c.windows.winsock;
-+    import core.stdc.windows.winsock;
- }
- else
- {
-@@ -82,7 +82,7 @@ static if (real.sizeof == double.sizeof) {
-     import std.numeric;
- }
- 
--version(unittest) import std.file, std.c.string;
-+version(unittest) import std.file, core.stdc.string;
- 
- 
- @trusted:
-diff --git a/bio/bam/utils/array.d b/bio/bam/utils/array.d
-index 4e5f8a1..42000df 100644
---- a/bio/bam/utils/array.d
-+++ b/bio/bam/utils/array.d
-@@ -23,7 +23,7 @@
- */
- module bio.bam.utils.array;
- 
--import std.c.string;
-+import core.stdc.string;
- import std.traits;
- 
- /// Modifies array in-place so that $(D slice) is replaced by
-diff --git a/bio/core/bgzf/outputstream.d b/bio/core/bgzf/outputstream.d
-index 89cbecb..ae335be 100644
---- a/bio/core/bgzf/outputstream.d
-+++ b/bio/core/bgzf/outputstream.d
-@@ -34,7 +34,7 @@ import std.parallelism;
- import std.array;
- import std.algorithm : max;
- import std.typecons;
--import std.c.stdlib;
-+import core.stdc.stdlib;
- 
- alias void delegate(ubyte[], ubyte[]) BlockWriteHandler;
- 
-@@ -88,7 +88,7 @@ class BgzfOutputStream : Stream {
- 
-         // 1 extra block to which we can write while n_tasks are executed
-         auto comp_buf_size = (2 * n_tasks + 2) * max_block_size;
--        auto p = cast(ubyte*)std.c.stdlib.malloc(comp_buf_size);
-+        auto p = cast(ubyte*)core.stdc.stdlib.malloc(comp_buf_size);
-         _compression_buffer = p[0 .. comp_buf_size];
-         _buffer = _compression_buffer[0 .. block_size];
-         _tmp = _compression_buffer[max_block_size .. max_block_size * 2];
-@@ -210,7 +210,7 @@ class BgzfOutputStream : Stream {
-         _stream.close();
- 
-         writeable = false;
--        std.c.stdlib.free(_compression_buffer.ptr);
-+        core.stdc.stdlib.free(_compression_buffer.ptr);
-     }
- 
-     /// Adds EOF block. This function is called in close() method.
-diff --git a/bio/core/utils/bylinefast.d b/bio/core/utils/bylinefast.d
-index 50fb756..6a71520 100644
---- a/bio/core/utils/bylinefast.d
-+++ b/bio/core/utils/bylinefast.d
-@@ -6,7 +6,7 @@ module bio.core.utils.bylinefast;
- 
- import std.stdio;
- import std.string: indexOf;
--import std.c.string: memmove;
-+import core.stdc.string: memmove;
- 
- /**
-    Reads by line in an efficient way (10 times faster than File.byLine from std.stdio).
-diff --git a/bio/core/utils/format.d b/bio/core/utils/format.d
-index ae8b4e6..a3ac3f1 100644
---- a/bio/core/utils/format.d
-+++ b/bio/core/utils/format.d
-@@ -34,8 +34,8 @@
-  */
- module bio.core.utils.format;
- 
--import std.c.stdio;
--import std.c.stdlib;
-+import core.stdc.stdio;
-+import core.stdc.stdlib;
- import std.string;
- import std.traits;
- import std.array;
-@@ -161,7 +161,7 @@ private {
-         if (isSomeString!T)
-     {
-         auto str = cast(const(char)[])s;
--        std.c.string.memcpy(sink, str.ptr, str.length);
-+        core.stdc.string.memcpy(sink, str.ptr, str.length);
-         sink += str.length;
-     }
- 
-diff --git a/bio/core/utils/stream.d b/bio/core/utils/stream.d
-index ee57fe7..b3f7d34 100644
---- a/bio/core/utils/stream.d
-+++ b/bio/core/utils/stream.d
-@@ -15,7 +15,7 @@ version(Posix){
- version(Windows) {
-     private import std.file;
-     private import std.utf;
--    private import std.c.windows.windows;
-+    private import core.stdc.windows.windows;
-     extern (Windows) {
-         DWORD GetFileType(HANDLE hFile);
-     }
-diff --git a/bio/sam/reader.d b/bio/sam/reader.d
-index e7724ed..4302e9b 100644
---- a/bio/sam/reader.d
-+++ b/bio/sam/reader.d
-@@ -49,7 +49,7 @@ import std.typecons;
- import std.parallelism;
- import std.process;
- import std.exception;
--import std.c.string;
-+import core.stdc.string;
- 
- BamRead _parseSamRecord(Tuple!(char[], SamReader, OutBuffer) t) {
-     auto r = parseAlignmentLine(cast(string)t[0], t[1]._header, t[2]);
--- 
-2.11.0
-


=====================================
debian/patches/0008-fix-deprecations-and-some-warnings.patch deleted
=====================================
@@ -1,187 +0,0 @@
-From 4394f15bfdda766dce69fd3f5711d05bae71a1bb Mon Sep 17 00:00:00 2001
-From: John Colvin <john.loughran.colvin at gmail.com>
-Date: Fri, 16 Dec 2016 14:25:58 +0000
-Subject: [PATCH 08/14] fix deprecations and some warnings
-
----
- bio/bam/randomaccessmanager.d | 1 +
- bio/bam/read.d                | 1 +
- bio/bam/reader.d              | 2 +-
- bio/bam/snpcallers/maq.d      | 2 +-
- bio/bam/tagvalue.d            | 2 +-
- bio/bam/thirdparty/msgpack.d  | 8 ++++----
- bio/core/utils/format.d       | 1 +
- bio/core/utils/outbuffer.d    | 2 +-
- bio/core/utils/stream.d       | 1 -
- bio/sam/header.d              | 2 +-
- dub.json                      | 3 ++-
- 11 files changed, 14 insertions(+), 11 deletions(-)
-
-diff --git a/bio/bam/randomaccessmanager.d b/bio/bam/randomaccessmanager.d
-index e5beb4b..fcd5d62 100644
---- a/bio/bam/randomaccessmanager.d
-+++ b/bio/bam/randomaccessmanager.d
-@@ -50,6 +50,7 @@ import std.traits;
- import std.exception;
- import std.container;
- import std.parallelism;
-+static import std.file;
- 
- debug {
-     import std.stdio;
-diff --git a/bio/bam/read.d b/bio/bam/read.d
-index 3f51dc8..b2f8cd1 100644
---- a/bio/bam/read.d
-+++ b/bio/bam/read.d
-@@ -1579,6 +1579,7 @@ unittest {
- 
-     {
-     import std.typecons;
-+    static import bio.bam.thirdparty.msgpack;
-     auto packer = bio.bam.thirdparty.msgpack.packer(Appender!(ubyte[])());
-     read.toMsgpack(packer);
-     auto data = packer.stream.data;
-diff --git a/bio/bam/reader.d b/bio/bam/reader.d
-index 728ccb5..f1fb8d4 100644
---- a/bio/bam/reader.d
-+++ b/bio/bam/reader.d
-@@ -95,7 +95,7 @@ class BamReader : IBamSamReader {
-       -------------------------------------------
-      */
-     this(undead.stream.Stream stream,
--         std.parallelism.TaskPool task_pool = std.parallelism.taskPool) {
-+         TaskPool task_pool = taskPool) {
-         _source_stream = new EndianStream(stream, Endian.littleEndian);
-         _task_pool = task_pool;
- 
-diff --git a/bio/bam/snpcallers/maq.d b/bio/bam/snpcallers/maq.d
-index 2cb8a4b..3eee066 100644
---- a/bio/bam/snpcallers/maq.d
-+++ b/bio/bam/snpcallers/maq.d
-@@ -5,7 +5,7 @@ module bio.bam.snpcallers.maq;
-  */
- 
- import core.stdc.math;
--import std.math : LN2, LN10, isnan;
-+import std.math : LN2, LN10, isNaN;
- import std.traits;
- import std.range;
- import std.algorithm;
-diff --git a/bio/bam/tagvalue.d b/bio/bam/tagvalue.d
-index dbd9aad..55adb1d 100644
---- a/bio/bam/tagvalue.d
-+++ b/bio/bam/tagvalue.d
-@@ -296,7 +296,7 @@ string injectOpCast() {
-     }
- 
-     cs ~= `(is(T == string)) {` ~
--          `  if (is_string) {`
-+          `  if (is_string) {` ~
-           `    return bam_typeid == 'Z' ? u.Z : u.H;`~
-           `  } else if (is_integer || is_float || is_character) {`~
-           `    `~injectSwitchPrimitive("string")~
-diff --git a/bio/bam/thirdparty/msgpack.d b/bio/bam/thirdparty/msgpack.d
-index 1032b33..8aea071 100644
---- a/bio/bam/thirdparty/msgpack.d
-+++ b/bio/bam/thirdparty/msgpack.d
-@@ -344,7 +344,7 @@ struct PackerImpl(Stream) if (isOutputRange!(Stream, ubyte) && isOutputRange!(St
-      * Params:
-      *  withFieldName = serialize class / struct with field name
-      */
--    this(bool withFieldName = false)
-+    this(bool withFieldName)
-     {
-         withFieldName_ = withFieldName;
-     }
-@@ -3145,7 +3145,7 @@ struct Value
-      *  type  = the type of value.
-      */
-     @safe
--    this(Type type = Type.nil)
-+    this(Type type)
-     {
-         this.type = type;
-     }
-@@ -3617,7 +3617,7 @@ struct Value
-                         ret ^= value.toHash();
-                     }
-                     return ret;
--                } catch assert(0);
-+                } catch (Exception) assert(0);
-         }
-     }
- }
-@@ -4656,7 +4656,7 @@ mixin template MessagePackable(Members...)
-             if (withFieldName) {
-                 packer.beginMap(this.tupleof.length);
-                 foreach (i, member; this.tupleof) {
--                    pack(getFieldName!(typeof(this), i));
-+                    packer.pack(getFieldName!(typeof(this), i));
-                     packer.pack(member);
-                 }
-             } else {
-diff --git a/bio/core/utils/format.d b/bio/core/utils/format.d
-index a3ac3f1..74bcfaf 100644
---- a/bio/core/utils/format.d
-+++ b/bio/core/utils/format.d
-@@ -36,6 +36,7 @@ module bio.core.utils.format;
- 
- import core.stdc.stdio;
- import core.stdc.stdlib;
-+static import core.stdc.string;
- import std.string;
- import std.traits;
- import std.array;
-diff --git a/bio/core/utils/outbuffer.d b/bio/core/utils/outbuffer.d
-index 56c0879..983bb58 100644
---- a/bio/core/utils/outbuffer.d
-+++ b/bio/core/utils/outbuffer.d
-@@ -93,7 +93,7 @@ class OutBuffer {
-     /// Responsibility that there's enough capacity is on the user
-     void putUnsafe(T)(T bytes) if (is(T == ubyte[])) {
-         _heap_ptr[_heap_used .. _heap_used + bytes.length] = bytes[];
--        _heap_used += bytes.length;;
-+        _heap_used += bytes.length;
-     }
- 
-     /// ditto
-diff --git a/bio/core/utils/stream.d b/bio/core/utils/stream.d
-index b3f7d34..aafcd43 100644
---- a/bio/core/utils/stream.d
-+++ b/bio/core/utils/stream.d
-@@ -135,7 +135,6 @@ final class File: undead.stream.File {
-                         if (ret <= 0) {
-                             size = 0;
-                             throw new ReadException("read timeout");
--                            break;
-                         }
-                     } else {
-                         throw new ReadException(to!string(strerror(errno)));
-diff --git a/bio/sam/header.d b/bio/sam/header.d
-index 6f315e5..3d4697e 100644
---- a/bio/sam/header.d
-+++ b/bio/sam/header.d
-@@ -707,7 +707,7 @@ class SamHeader {
- 
-         JSONValue json;
-         json.object = result;
--        sink.write(toJSON(&json));
-+        sink.write(toJSON(json));
-     }
- 
-     /// Packs message in the following format:
-diff --git a/dub.json b/dub.json
-index 6135f32..693e9c7 100644
---- a/dub.json
-+++ b/dub.json
-@@ -11,5 +11,6 @@
- 	"importPaths": ["bio"],
-     "dependencies": {
-         "undead": "~>1.0.6"
--    }
-+    },
-+    "buildRequirements": ["allowWarnings"]
- }
--- 
-2.11.0
-


=====================================
debian/patches/0009-fix-toHash-signature.patch deleted
=====================================
@@ -1,128 +0,0 @@
-From 05f86b887728a30128c68cb14012f84093132eac Mon Sep 17 00:00:00 2001
-From: John Colvin <john.loughran.colvin at gmail.com>
-Date: Fri, 16 Dec 2016 14:28:52 +0000
-Subject: [PATCH 09/14] fix toHash signature
-
----
- bio/sam/header.d | 30 +++++++++++++++---------------
- 1 file changed, 15 insertions(+), 15 deletions(-)
-
-diff --git a/bio/sam/header.d b/bio/sam/header.d
-index 3d4697e..df88d64 100644
---- a/bio/sam/header.d
-+++ b/bio/sam/header.d
-@@ -8,10 +8,10 @@
-     the rights to use, copy, modify, merge, publish, distribute, sublicense,
-     and/or sell copies of the Software, and to permit persons to whom the
-     Software is furnished to do so, subject to the following conditions:
--    
-+
-     The above copyright notice and this permission notice shall be included in
-     all copies or substantial portions of the Software.
--    
-+
-     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-@@ -117,7 +117,7 @@ private {
-     mixin template toSamMethod(string line_prefix, Field...) {
-         void toSam(Sink)(auto ref Sink sink) const if (isSomeSink!Sink) {
-             sink.write(line_prefix);
--            mixin(serializeFields!Field());    
-+            mixin(serializeFields!Field());
-         }
-     }
- 
-@@ -132,9 +132,9 @@ private {
- 
-     mixin template toHashMethod(string struct_name, string id_field, Field...) {
-         static if (id_field != null) {
--            hash_t toHash() const {
-+            hash_t toHash() const nothrow @safe{
-                 hash_t result = 1;
--                mixin(generateHashExpression!Field());    
-+                mixin(generateHashExpression!Field());
-                 return result;
-             }
- 
-@@ -195,12 +195,12 @@ private {
-         }
-     }
- 
--    mixin template HeaderLineStruct(string struct_name, 
-+    mixin template HeaderLineStruct(string struct_name,
-                                     string line_prefix,
-                                     string id_field,
--                                    Field...) 
-+                                    Field...)
-     {
--         mixin(`struct `~struct_name~`{ 
-+         mixin(`struct `~struct_name~`{
-                     mixin structFields!Field;
-                     mixin parseStaticMethod!(struct_name, Field);
-                     mixin toSamMethod!(line_prefix, Field);
-@@ -359,7 +359,7 @@ class HeaderLineDictionary(T) {
-             _index_to_id.length = _index_to_id.length - 1;
- 
-             _dict.remove(id);
--            _id_to_index.remove(id); 
-+            _id_to_index.remove(id);
- 
-             return true;
-         }
-@@ -484,7 +484,7 @@ class SamHeader {
-                     try {
-                         sorting_order = to!SortingOrder(header_line.sorting_order);
-                     } catch (ConvException e) {
--                        sorting_order = SortingOrder.unknown; 
-+                        sorting_order = SortingOrder.unknown;
-                         // FIXME: should we do that silently?
-                     }
-                 } else {
-@@ -536,14 +536,14 @@ class SamHeader {
- 
-         core.memory.GC.enable();
-     }
--       
-+
-     /// Format version
-     string format_version;
- 
-     /// Sorting order
-     SortingOrder sorting_order = SortingOrder.unknown;
- 
--    /// Dictionary of @SQ lines. 
-+    /// Dictionary of @SQ lines.
-     /// Removal is not allowed, you can only replace the whole dictionary.
-     SqLineDictionary sequences() @property {
-         if (_sequences is null)
-@@ -624,7 +624,7 @@ class SamHeader {
-             sink.write(to!string(sorting_order));
-         }
-         sink.write('\n');
--       
-+
-         for (size_t i = 0; i < sequences.length; i++) {
-             auto sq_line = getSequence(i);
-             sq_line.toSam(sink);
-@@ -713,7 +713,7 @@ class SamHeader {
-     /// Packs message in the following format:
-     /// $(BR)
-     /// MsgPack array with elements
--    ///   $(OL 
-+    ///   $(OL
-     ///     $(LI format version - string)
-     ///     $(LI sorting order - string)
-     ///     $(LI @SQ lines - array of dictionaries)
-@@ -789,7 +789,7 @@ unittest {
-     dict["zzz"] = zzz;
-     header.sequences = dict;
- 
--    assert(header.text == 
-+    assert(header.text ==
-       "@HD\tVN:1.4\tSO:coordinate\n at SQ\tSN:yay\tLN:111\n at SQ\tSN:zzz\tLN:222\tUR:ftp://nyan.cat\n");
-     assert(header.sequences == dict);
- 
--- 
-2.11.0
-


=====================================
debian/patches/0011-better-.travis.yml-uses-dub-test-and-tests-ldc.patch deleted
=====================================
@@ -1,24 +0,0 @@
-From 27cbaadf3707728f18621970ba60fe9a4d5755aa Mon Sep 17 00:00:00 2001
-From: John Colvin <john.loughran.colvin at gmail.com>
-Date: Fri, 16 Dec 2016 14:35:27 +0000
-Subject: [PATCH 11/14] better .travis.yml, uses dub test and tests ldc
-
----
- .travis.yml | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/.travis.yml b/.travis.yml
-index d7b3485..5a09379 100644
---- a/.travis.yml
-+++ b/.travis.yml
-@@ -1,3 +1,5 @@
- language: d
--script:
--- rdmd -unittest -d test/unittests.d
-+
-+d:
-+  - dmd
-+  - ldc
--- 
-2.11.0
-


=====================================
debian/patches/0013-fix-toJSON-usage-for-new-and-old-compilers.patch deleted
=====================================
@@ -1,28 +0,0 @@
-From 468c01931dcdade9478c6849e85a105c8930c604 Mon Sep 17 00:00:00 2001
-From: John Colvin <john.loughran.colvin at gmail.com>
-Date: Fri, 16 Dec 2016 14:40:47 +0000
-Subject: [PATCH 13/14] fix toJSON usage for new and old compilers
-
----
- bio/sam/header.d | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/bio/sam/header.d b/bio/sam/header.d
-index df88d64..57054bf 100644
---- a/bio/sam/header.d
-+++ b/bio/sam/header.d
-@@ -707,7 +707,10 @@ class SamHeader {
- 
-         JSONValue json;
-         json.object = result;
--        sink.write(toJSON(json));
-+        static if (__VERSION__ < 2072)
-+            sink.write(toJSON(&json));
-+        else
-+            sink.write(toJSON(json));
-     }
- 
-     /// Packs message in the following format:
--- 
-2.11.0
-


=====================================
debian/patches/0014-Add-compareCoordinatesAndStrand-to-fix-sorting-test-.patch deleted
=====================================
@@ -1,840 +0,0 @@
-From b7f1db860d212ee5fb6f9adfb36c6e783aaeb6f5 Mon Sep 17 00:00:00 2001
-From: Pjotr Prins <pjotr.public01 at thebird.nl>
-Date: Thu, 23 Feb 2017 10:24:23 +0000
-Subject: [PATCH 14/14] Add compareCoordinatesAndStrand to fix sorting test in
- depth which came out when compiling with debug settings.
-
-sambamba depth now tests for a sorted BAM file irrespective of read
-direction/strand.
-
-Also removed trailing spaces in these files.
----
- bio/bam/multireader.d |  26 ++---
- bio/bam/read.d        | 274 ++++++++++++++++++++++++++------------------------
- 2 files changed, 156 insertions(+), 144 deletions(-)
-
-diff --git a/bio/bam/multireader.d b/bio/bam/multireader.d
-index 2a9705f..c0650b0 100644
---- a/bio/bam/multireader.d
-+++ b/bio/bam/multireader.d
-@@ -8,10 +8,10 @@
-     the rights to use, copy, modify, merge, publish, distribute, sublicense,
-     and/or sell copies of the Software, and to permit persons to whom the
-     Software is furnished to do so, subject to the following conditions:
--    
-+
-     The above copyright notice and this permission notice shall be included in
-     all copies or substantial portions of the Software.
--    
-+
-     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-@@ -66,7 +66,7 @@ bool compare(T)(auto ref T r1, auto ref T r2) {
-         sorting_order = r1[1].merged_header.sorting_order;
- 
-     if (sorting_order == SortingOrder.coordinate)
--        return compareCoordinates(r1[0], r2[0]);
-+        return compareCoordinatesAndStrand(r1[0], r2[0]);
-     else if (sorting_order == SortingOrder.queryname)
-         return compareReadNames(r1[0], r2[0]);
-     else
-@@ -86,10 +86,10 @@ auto readRange(BamReader reader, SamHeaderMerger merger, FileId index) {
-     return zip(reader.reads.multiBamReads(index), repeat(merger), repeat(index));
- }
- 
--// (BamReader, SamHeaderMerger, FileId, int, uint, uint) -> 
-+// (BamReader, SamHeaderMerger, FileId, int, uint, uint) ->
- //                                    [(MultiBamRead, SamHeaderMerger, FileId)]
- auto readRange(BamReader reader, SamHeaderMerger merger, FileId index,
--               int ref_id, uint start, uint end) 
-+               int ref_id, uint start, uint end)
- {
-     int old_ref_id = ref_id;
-     if (merger !is null)
-@@ -139,12 +139,12 @@ auto readRangesWithProgress
-                   .map!(t => readRangeWithProgress(t[0], t[1], t[2], f, u(t[2])))();
- }
- 
--// ([BamReader], SamHeaderMerger, int, uint, uint) -> 
-+// ([BamReader], SamHeaderMerger, int, uint, uint) ->
- //                                    [[(MultiBamRead, SamHeaderMerger, FileId)]]
--auto readRanges(BamReader[] readers, SamHeaderMerger merger, 
--                int ref_id, uint start, uint end) 
-+auto readRanges(BamReader[] readers, SamHeaderMerger merger,
-+                int ref_id, uint start, uint end)
- {
--    return readers.zip(repeat(merger), iota(readers.length), 
-+    return readers.zip(repeat(merger), iota(readers.length),
-                        repeat(ref_id), repeat(start), repeat(end))
-                   .map!(t => readRange(t[0], t[1], t[2], t[3], t[4], t[5]))();
- }
-@@ -160,8 +160,8 @@ auto readRanges(BamReader[] readers, SamHeaderMerger merger, BamRegion[] regions
- 
- // tweaks RG and PG tags, and reference sequence ID
- // [[(BamRead, SamHeaderMerger, size_t)]] -> [[MultiBamRead]]
--auto adjustTags(R)(R reads_with_aux_info, TaskPool pool, size_t bufsize) 
--    if (isInputRange!R) 
-+auto adjustTags(R)(R reads_with_aux_info, TaskPool pool, size_t bufsize)
-+    if (isInputRange!R)
- {
-   alias R2 = typeof(pool.map!adjustTagsInRange(reads_with_aux_info.front, 1));
-   R2[] result;
-@@ -189,7 +189,7 @@ auto adjustTagsInRange(R)(R read_with_aux_info) if (!isInputRange!R) {
-             auto new_ref_id = to!int(ref_id_map[file_id][old_ref_id]);
-             if (new_ref_id != old_ref_id)
-                 read.ref_id = new_ref_id;
--        } 
-+        }
- 
-         auto program = read["PG"];
-         if (!program.is_nothing) {
-@@ -216,7 +216,7 @@ auto adjustTagsInRange(R)(R read_with_aux_info) if (!isInputRange!R) {
- 
- ///
- class MultiBamReader {
--  
-+
-     ///
-     this(BamReader[] readers) {
-         _readers = readers;
-diff --git a/bio/bam/read.d b/bio/bam/read.d
-index b2f8cd1..2d8182c 100644
---- a/bio/bam/read.d
-+++ b/bio/bam/read.d
-@@ -8,10 +8,10 @@
-     the rights to use, copy, modify, merge, publish, distribute, sublicense,
-     and/or sell copies of the Software, and to permit persons to whom the
-     Software is furnished to do so, subject to the following conditions:
--    
-+
-     The above copyright notice and this permission notice shall be included in
-     all copies or substantial portions of the Software.
--    
-+
-     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-@@ -31,7 +31,7 @@
- /// ...
- /// assert(!read.is_unmapped);              // check flag
- /// assert(read.ref_id != -1);              // access field
--/// 
-+///
- /// int edit_distance = to!int(read["NM"]); // access tag
- /// read["NM"] = 0;                         // modify tag
- /// read["NM"] = null;                      // remove tag
-@@ -82,14 +82,14 @@ struct CigarOperation {
-     /*
-         WARNING!
- 
--      It is very essential that the size of 
-+      It is very essential that the size of
-       this struct is EXACTLY equal to uint.sizeof!
- 
-       The reason is to avoid copying of arrays during alignment parsing.
- 
-       Namely, when some_pointer points to raw cigar data,
-       we can just do a cast. This allows to access those data
--      directly, not doing any memory allocations. 
-+      directly, not doing any memory allocations.
-     */
- 
-     private uint raw; // raw data from BAM
-@@ -121,7 +121,7 @@ struct CigarOperation {
-     uint length() @property const nothrow {
-         return raw >> 4;
-     }
--  
-+
-     /// CIGAR operation as one of MIDNSHP=X.
-     /// Absent or invalid operation is represented by '?'
-     char type() @property const nothrow {
-@@ -153,7 +153,7 @@ struct CigarOperation {
-         return ((raw & 0xF) >> 1) == 2; // 4 or 5
-     }
- 
--    private void toSam(Sink)(auto ref Sink sink) const 
-+    private void toSam(Sink)(auto ref Sink sink) const
-         if (isSomeSink!Sink)
-     {
-         sink.write(length);
-@@ -170,7 +170,7 @@ struct CigarOperation {
- struct ExtendedCigarRange(CigarOpRange, MdOpRange) {
-     static assert(isInputRange!CigarOpRange && is(Unqual!(ElementType!CigarOpRange) == CigarOperation));
-     static assert(isInputRange!MdOpRange && is(Unqual!(ElementType!MdOpRange) == MdOperation));
--  
-+
-     private {
-         CigarOpRange _cigar;
-         MdOpRange _md_ops;
-@@ -199,7 +199,7 @@ struct ExtendedCigarRange(CigarOpRange, MdOpRange) {
-             import std.stdio;
-             writeln(_front_cigar_op, " - ", _front_md_op);
-         }
--        
-+
-         if (_front_cigar_op.type != 'M')
-             return _front_cigar_op;
- 
-@@ -208,7 +208,7 @@ struct ExtendedCigarRange(CigarOpRange, MdOpRange) {
-             uint len = min(_front_md_op.match, _front_cigar_op.length);
-             return CigarOperation(len, '=');
-         }
--    
-+
-         assert(_front_md_op.is_mismatch);
-         return CigarOperation(min(_n_mismatches, _front_cigar_op.length), 'X');
-     }
-@@ -237,7 +237,7 @@ struct ExtendedCigarRange(CigarOpRange, MdOpRange) {
-         auto len = _front_cigar_op.length;
-         if (_n_mismatches > 0) {
-             enforce(_front_md_op.is_mismatch);
--      
-+
-             if (len > _n_mismatches) {
-                 _front_cigar_op = CigarOperation(len - _n_mismatches, 'M');
-                 _n_mismatches = 0;
-@@ -252,7 +252,7 @@ struct ExtendedCigarRange(CigarOpRange, MdOpRange) {
-         } else {
-             enforce(_front_md_op.is_match);
-             auto n_matches = _front_md_op.match;
--      
-+
-             if (len > n_matches) {
-                 _front_cigar_op = CigarOperation(len - n_matches, 'M');
-                 fetchNextMdOp();
-@@ -265,14 +265,14 @@ struct ExtendedCigarRange(CigarOpRange, MdOpRange) {
-             }
-         }
-     }
--  
-+
-     private {
-         void fetchNextCigarOp() {
-             if (_cigar.empty) {
-                 _empty = true;
-                 return;
-             }
--        
-+
-             _front_cigar_op = _cigar.front;
-             _cigar.popFront();
-         }
-@@ -282,7 +282,7 @@ struct ExtendedCigarRange(CigarOpRange, MdOpRange) {
-                 return;
- 
-             _n_mismatches = 0;
--      
-+
-             _front_md_op = _md_ops.front;
-             _md_ops.popFront();
- 
-@@ -301,7 +301,7 @@ auto makeExtendedCigar(CigarOpRange, MdOpRange)(CigarOpRange cigar, MdOpRange md
-     return ExtendedCigarRange!(CigarOpRange, MdOpRange)(cigar, md_ops);
- }
- 
--/** 
-+/**
-   BAM record representation.
- */
- struct BamRead {
-@@ -377,42 +377,42 @@ struct BamRead {
-     /// Next segment in the template unmapped
-     @property bool mate_is_unmapped()         const nothrow { return cast(bool)(flag & 0x8); }
-     /// ditto
--    @property void mate_is_unmapped(bool b)         { _setFlag( 3, b); } 
-+    @property void mate_is_unmapped(bool b)         { _setFlag( 3, b); }
- 
-     /// Sequence being reverse complemented
-     @property bool is_reverse_strand()        const nothrow { return cast(bool)(flag & 0x10); }
-     /// ditto
--    @property void is_reverse_strand(bool b)        { _setFlag( 4, b); } 
-+    @property void is_reverse_strand(bool b)        { _setFlag( 4, b); }
- 
-     /// Sequence of the next segment in the template being reversed
-     @property bool mate_is_reverse_strand()   const nothrow { return cast(bool)(flag & 0x20); }
-     /// ditto
--    @property void mate_is_reverse_strand(bool b)   { _setFlag( 5, b); } 
-+    @property void mate_is_reverse_strand(bool b)   { _setFlag( 5, b); }
- 
-     /// The first segment in the template
-     @property bool is_first_of_pair()         const nothrow { return cast(bool)(flag & 0x40); }
-     /// ditto
--    @property void is_first_of_pair(bool b)         { _setFlag( 6, b); } 
-+    @property void is_first_of_pair(bool b)         { _setFlag( 6, b); }
- 
-     /// The last segment in the template
-     @property bool is_second_of_pair()        const nothrow { return cast(bool)(flag & 0x80); }
-     /// ditto
--    @property void is_second_of_pair(bool b)        { _setFlag( 7, b); } 
-+    @property void is_second_of_pair(bool b)        { _setFlag( 7, b); }
- 
-     /// Secondary alignment
-     @property bool is_secondary_alignment()   const nothrow { return cast(bool)(flag & 0x100); }
-     /// ditto
--    @property void is_secondary_alignment(bool b)   { _setFlag( 8, b); } 
-+    @property void is_secondary_alignment(bool b)   { _setFlag( 8, b); }
- 
-     /// Not passing quality controls
-     @property bool failed_quality_control()   const nothrow { return cast(bool)(flag & 0x200); }
-     /// ditto
--    @property void failed_quality_control(bool b)   { _setFlag( 9, b); } 
-+    @property void failed_quality_control(bool b)   { _setFlag( 9, b); }
- 
-     /// PCR or optical duplicate
-     @property bool is_duplicate()             const nothrow { return cast(bool)(flag & 0x400); }
-     /// ditto
--    @property void is_duplicate(bool b)             { _setFlag(10, b); } 
-+    @property void is_duplicate(bool b)             { _setFlag(10, b); }
- 
-     /// Supplementary alignment
-     @property bool is_supplementary()         const nothrow { return cast(bool)(flag & 0x800); }
-@@ -438,10 +438,10 @@ struct BamRead {
- 
-     /// ditto
-     @property void name(string new_name) {
--        enforce(new_name.length >= 1 && new_name.length <= 255, 
-+        enforce(new_name.length >= 1 && new_name.length <= 255,
-                 "name length must be in 1-255 range");
-         _dup();
--        bio.bam.utils.array.replaceSlice(_chunk, 
-+        bio.bam.utils.array.replaceSlice(_chunk,
-                  _chunk[_read_name_offset .. _read_name_offset + _l_read_name - 1],
-                  cast(ubyte[])new_name);
-         _l_read_name = cast(ubyte)(new_name.length + 1);
-@@ -449,7 +449,7 @@ struct BamRead {
- 
-     /// List of CIGAR operations
-     @property const(CigarOperation)[] cigar() const nothrow {
--        return cast(const(CigarOperation)[])(_chunk[_cigar_offset .. _cigar_offset + 
-+        return cast(const(CigarOperation)[])(_chunk[_cigar_offset .. _cigar_offset +
-                                              _n_cigar_op * CigarOperation.sizeof]);
-     }
- 
-@@ -534,32 +534,32 @@ struct BamRead {
-             return opIndex(_len - 1);
-         }
- 
--        /* 
-+        /*
-         I have no fucking idea why this tiny piece of code
-         does NOT get inlined by stupid DMD compiler.
- 
--        Therefore I use string mixin instead. 
-+        Therefore I use string mixin instead.
-         (hell yeah! Back to the 90s! C macros rulez!)
- 
-         private size_t _getActualPosition(size_t index) const
-         {
-             if (_use_first_4_bits) {
-                 // [0 1] [2 3] [4 5] [6 7] ...
--                //            |               
--                //            V               
--                //   0     1     2     3      
-+                //            |
-+                //            V
-+                //   0     1     2     3
-                 return index >> 1;
-             } else {
-                 // [. 0] [1 2] [3 4] [5 6] ...
--                //            |               
--                //            V               
--                //   0     1     2     3      
-+                //            |
-+                //            V
-+                //   0     1     2     3
-                 return (index >> 1) + (index & 1);
-             }
--        }*/ 
-+        }*/
- 
-         private static string _getActualPosition(string index) {
--            return "((" ~ index ~") >> 1) + " ~ 
-+            return "((" ~ index ~") >> 1) + " ~
-                    "(_use_first_4_bits ? 0 : ((" ~ index ~ ") & 1))";
-         }
- 
-@@ -574,15 +574,15 @@ struct BamRead {
- 
-         ///
-         @property SequenceResult save() const {
--            return SequenceResult(_data[mixin(_getActualPosition("_index")) .. $], 
--                                  _len - _index, 
-+            return SequenceResult(_data[mixin(_getActualPosition("_index")) .. $],
-+                                  _len - _index,
-                                   _useFirst4Bits(_index));
-         }
- 
-         ///
-         SequenceResult opSlice(size_t i, size_t j) const {
--            return SequenceResult(_data[mixin(_getActualPosition("_index + i")) .. $], 
--                                  j - i, 
-+            return SequenceResult(_data[mixin(_getActualPosition("_index + i")) .. $],
-+                                  j - i,
-                                   _useFirst4Bits(_index + i));
-         }
- 
-@@ -668,7 +668,7 @@ struct BamRead {
-     static assert(isRandomAccessRange!(ReturnType!sequence));
- 
-     /// Sets query sequence. Sets all base qualities to 255 (i.e. unknown).
--    @property void sequence(string seq) 
-+    @property void sequence(string seq)
-     {
-         _dup();
- 
-@@ -683,8 +683,8 @@ struct BamRead {
-                 replacement[i] |= cast(ubyte)(Base(seq[2 * i + 1]).internal_code);
-         }
- 
--        bio.bam.utils.array.replaceSlice(_chunk, 
--                     _chunk[_seq_offset .. _tags_offset], 
-+        bio.bam.utils.array.replaceSlice(_chunk,
-+                     _chunk[_seq_offset .. _tags_offset],
-                      replacement);
- 
-         _l_seq = cast(int)seq.length;
-@@ -715,7 +715,7 @@ struct BamRead {
-         // 3) the code will be too complicated, whereas there're
-         //    not so many users of big-endian systems
-         //
--        // In summa, BAM is little-endian format, so big-endian 
-+        // In summa, BAM is little-endian format, so big-endian
-         // users will suffer anyway, it's unavoidable.
- 
-         _chunk = chunk;
-@@ -727,33 +727,33 @@ struct BamRead {
-             // Dealing with tags is the responsibility of TagStorage.
-             fixTagStorageByteOrder();
-         }
--    } 
-+    }
- 
--    // Doesn't touch tags, only fields. 
-+    // Doesn't touch tags, only fields.
-     // @@@TODO: NEEDS TESTING@@@
-     private void switchChunkEndianness() {
--        // First 8 fields are 32-bit integers:                 
--        //                                                     
--        // 0) refID                int                         
--        // 1) pos                  int                         
--        // 2) bin_mq_nl           uint                         
--        // 3) flag_nc             uint                         
--        // 4) l_seq                int                         
--        // 5) next_refID           int                         
--        // 6) next_pos             int                         
--        // 7) tlen                 int                         
-+        // First 8 fields are 32-bit integers:
-+        //
-+        // 0) refID                int
-+        // 1) pos                  int
-+        // 2) bin_mq_nl           uint
-+        // 3) flag_nc             uint
-+        // 4) l_seq                int
-+        // 5) next_refID           int
-+        // 6) next_pos             int
-+        // 7) tlen                 int
-         // ----------------------------------------------------
--        // (after them name follows which is string)      
--        //                                                     
-+        // (after them name follows which is string)
-+        //
-         switchEndianness(_chunk.ptr, 8 * uint.sizeof);
- 
-         // Then we need to switch endianness of CIGAR data:
--        switchEndianness(_chunk.ptr + _cigar_offset, 
-+        switchEndianness(_chunk.ptr + _cigar_offset,
-                          _n_cigar_op * uint.sizeof);
-     }
-- 
--    private size_t calculateChunkSize(string read_name, 
--                                      string sequence, 
-+
-+    private size_t calculateChunkSize(string read_name,
-+                                      string sequence,
-                                       in CigarOperation[] cigar)
-     {
-         return 8 * int.sizeof
-@@ -776,7 +776,7 @@ struct BamRead {
-         if (this._chunk is null) {
-             this._chunk = new ubyte[calculateChunkSize(read_name, sequence, cigar)];
-         }
--        
-+
-         this._refID      =  -1;         // set default values
-         this._pos        =  -1;         // according to SAM/BAM
-         this._mapq       = 255;         // specification
-@@ -817,7 +817,7 @@ struct BamRead {
-         return result;
-     }
- 
--    /// Compare two alignments, including tags 
-+    /// Compare two alignments, including tags
-     /// (the tags must follow in the same order for equality).
-     bool opEquals(BamRead other) const pure nothrow {
-         // don't forget about _is_slice trick
-@@ -835,7 +835,7 @@ struct BamRead {
-     @property size_t size_in_bytes() const {
-         return int.sizeof + _chunk.length;
-     }
--   
-+
-     package void write(BamWriter writer) {
-         writer.writeInteger(cast(int)(_chunk.length));
- 
-@@ -858,7 +858,7 @@ struct BamRead {
-     /// Packs message in the following format:
-     /// $(BR)
-     /// MsgPack array with elements
--    ///   $(OL 
-+    ///   $(OL
-     ///     $(LI name - string)
-     ///     $(LI flag - ushort)
-     ///     $(LI reference sequence id - int)
-@@ -916,9 +916,9 @@ struct BamRead {
-             throw new FormatException("unknown format specifier");
-         }
-     }
--    
-+
-     /// ditto
--    void toSam(Sink)(auto ref Sink sink) const 
-+    void toSam(Sink)(auto ref Sink sink) const
-         if (isSomeSink!Sink)
-     {
-         sink.write(name);
-@@ -1025,10 +1025,10 @@ struct BamRead {
-         } else {
-             sink.writeJson(_reader.reference_sequences[mate_ref_id].name);
-         }
--        
-+
-         sink.write(`,"pnext":`); sink.write(mate_position + 1);
-         sink.write(`,"tlen":`); sink.write(template_length);
--     
-+
-         sink.write(`,"seq":"`);
-         if (sequence_length == 0)
-             sink.write('*');
-@@ -1041,7 +1041,7 @@ struct BamRead {
-         sink.writeJson(base_qualities);
- 
-         sink.write(`,"tags":{`);
--   
-+
-         bool not_first = false;
-         foreach (k, v; this) {
-             if (not_first)
-@@ -1087,8 +1087,8 @@ struct BamRead {
-     void raw_data(ubyte[] data) @property {
-         _chunk = data;
-     }
--    
--    package ubyte[] _chunk; // holds all the data, 
-+
-+    package ubyte[] _chunk; // holds all the data,
-                     // the access is organized via properties
-                     // (see below)
- 
-@@ -1130,36 +1130,36 @@ private:
- 
-     // Official field names from SAM/BAM specification.
-     // For internal use only
--    @property  int _refID()      const nothrow { 
--        return *(cast( int*)(_chunk.ptr + int.sizeof * 0)); 
-+    @property  int _refID()      const nothrow {
-+        return *(cast( int*)(_chunk.ptr + int.sizeof * 0));
-     }
- 
--    @property  int _pos()        const nothrow { 
--        return *(cast( int*)(_chunk.ptr + int.sizeof * 1)); 
-+    @property  int _pos()        const nothrow {
-+        return *(cast( int*)(_chunk.ptr + int.sizeof * 1));
-     }
- 
--    @property uint _bin_mq_nl()  const nothrow pure @system { 
--        return *(cast(uint*)(_chunk.ptr + int.sizeof * 2)); 
-+    @property uint _bin_mq_nl()  const nothrow pure @system {
-+        return *(cast(uint*)(_chunk.ptr + int.sizeof * 2));
-     }
- 
--    @property uint _flag_nc()    const nothrow { 
--        return *(cast(uint*)(_chunk.ptr + int.sizeof * 3)); 
-+    @property uint _flag_nc()    const nothrow {
-+        return *(cast(uint*)(_chunk.ptr + int.sizeof * 3));
-     }
- 
--    @property  int _l_seq()      const nothrow { 
--        return *(cast( int*)(_chunk.ptr + int.sizeof * 4)); 
-+    @property  int _l_seq()      const nothrow {
-+        return *(cast( int*)(_chunk.ptr + int.sizeof * 4));
-     }
- 
-     @property  int _next_refID() const nothrow {
--        return *(cast( int*)(_chunk.ptr + int.sizeof * 5)); 
-+        return *(cast( int*)(_chunk.ptr + int.sizeof * 5));
-     }
- 
--    @property  int _next_pos()   const nothrow { 
--        return *(cast( int*)(_chunk.ptr + int.sizeof * 6)); 
-+    @property  int _next_pos()   const nothrow {
-+        return *(cast( int*)(_chunk.ptr + int.sizeof * 6));
-     }
- 
-     @property  int _tlen()       const nothrow {
--        return *(cast( int*)(_chunk.ptr + int.sizeof * 7)); 
-+        return *(cast( int*)(_chunk.ptr + int.sizeof * 7));
-     }
- 
-     // Setters, also only for internal use
-@@ -1176,29 +1176,29 @@ private:
-     //
-     //             The layout of bin_mq_nl and flag_nc is as follows
-     //                     (upper bits -------> lower bits):
--    // 
-+    //
-     // bin_mq_nl [ { bin (16b) }  { mapping quality (8b) } { read name length (8b) } ]
-     //
-     // flag_nc   [ { flag (16b) } { n_cigar_op (16b) } ]
-     //
--    @property ushort _bin()         const nothrow { 
--        return _bin_mq_nl >> 16; 
-+    @property ushort _bin()         const nothrow {
-+        return _bin_mq_nl >> 16;
-     }
--    @property  ubyte _mapq()        const nothrow { 
--        return (_bin_mq_nl >> 8) & 0xFF; 
-+    @property  ubyte _mapq()        const nothrow {
-+        return (_bin_mq_nl >> 8) & 0xFF;
-     }
--    @property  ubyte _l_read_name() const nothrow pure { 
--        return _bin_mq_nl & 0xFF; 
-+    @property  ubyte _l_read_name() const nothrow pure {
-+        return _bin_mq_nl & 0xFF;
-     }
--    @property ushort _flag()        const nothrow { 
--        return _flag_nc >> 16; 
-+    @property ushort _flag()        const nothrow {
-+        return _flag_nc >> 16;
-     }
--    @property ushort _n_cigar_op()  const nothrow { 
--        return _flag_nc & 0xFFFF; 
-+    @property ushort _n_cigar_op()  const nothrow {
-+        return _flag_nc & 0xFFFF;
-     }
--  
-+
-     // Setters for those properties
--    @property void _bin(ushort n)         { _bin_mq_nl = (_bin_mq_nl &  0xFFFF) | (n << 16); } 
-+    @property void _bin(ushort n)         { _bin_mq_nl = (_bin_mq_nl &  0xFFFF) | (n << 16); }
-     @property void _mapq(ubyte n)         { _bin_mq_nl = (_bin_mq_nl & ~0xFF00) | (n << 8); }
-     @property void _l_read_name(ubyte n)  { _bin_mq_nl = (_bin_mq_nl & ~0xFF  ) | n; }
-     @property void _flag(ushort n)        { _flag_nc   = (_flag_nc   &  0xFFFF) | (n << 16); }
-@@ -1207,24 +1207,24 @@ private:
-     // Offsets of various arrays in bytes.
-     // Currently, are computed each time, so if speed will be an issue,
-     // they can be made fields instead of properties.
--    @property size_t _read_name_offset() const nothrow pure { 
--        return 8 * int.sizeof; 
-+    @property size_t _read_name_offset() const nothrow pure {
-+        return 8 * int.sizeof;
-     }
- 
--    @property size_t _cigar_offset()     const nothrow pure { 
--        return _read_name_offset + _l_read_name * char.sizeof; 
-+    @property size_t _cigar_offset()     const nothrow pure {
-+        return _read_name_offset + _l_read_name * char.sizeof;
-     }
- 
--    @property size_t _seq_offset()       const nothrow { 
--        return _cigar_offset + _n_cigar_op * uint.sizeof; 
-+    @property size_t _seq_offset()       const nothrow {
-+        return _cigar_offset + _n_cigar_op * uint.sizeof;
-     }
- 
--    @property size_t _qual_offset()      const nothrow { 
-+    @property size_t _qual_offset()      const nothrow {
-         return _seq_offset + (_l_seq + 1) / 2;
-     }
- 
-     // Offset of auxiliary data
--    @property size_t _tags_offset()      const nothrow { 
-+    @property size_t _tags_offset()      const nothrow {
-         return _qual_offset + _l_seq;
-     }
- 
-@@ -1257,7 +1257,7 @@ public:
- }
- 
- 
--/// Lazy tag storage. 
-+/// Lazy tag storage.
- ///
- ///   Provides hash-like access and opportunity to iterate
- ///   storage like an associative array.
-@@ -1298,7 +1298,7 @@ mixin template TagStorage() {
-         auto __tags_chunk = _tags_chunk; // _tags_chunk is evaluated lazily
-         if (__tags_chunk.length < 4)
-             return Value(null);
--        
-+
-        size_t offset = 0;
-        while (offset + 1 < __tags_chunk.length) {
-            if (__tags_chunk[offset .. offset + 2] == key) {
-@@ -1313,8 +1313,8 @@ mixin template TagStorage() {
-     }
- 
-     /// ditto
--    void opIndexAssign(T)(T value, string key) 
--        if (is(T == Value) || __traits(compiles, GetTypeId!T)) 
-+    void opIndexAssign(T)(T value, string key)
-+        if (is(T == Value) || __traits(compiles, GetTypeId!T))
-     {
-         static if(is(T == Value)) {
-             enforce(key.length == 2, "Key length must be 2");
-@@ -1378,7 +1378,7 @@ mixin template TagStorage() {
-         auto __tags_chunk = _tags_chunk;
-         skipValue(offset, __tags_chunk); // now offset is updated and points to the end
-         auto end = offset;
--        
-+
-         prepareSlice(_chunk, __tags_chunk[begin .. end], sizeInBytes(value));
- 
-         emplaceValue(_chunk.ptr + _tags_offset + begin, value);
-@@ -1428,9 +1428,9 @@ mixin template TagStorage() {
-         if (std.system.endian == Endian.littleEndian) {
-             writer.writeByteArray(_tags_chunk[]);
-         } else {
--            fixTagStorageByteOrder();                                
-+            fixTagStorageByteOrder();
-             writer.writeByteArray(_tags_chunk[]);
--            fixTagStorageByteOrder();                                
-+            fixTagStorageByteOrder();
-         }
-     }
- 
-@@ -1486,7 +1486,7 @@ mixin template TagStorage() {
-                         p += size;
-                     }
-                 } else {
--                    // skip 
-+                    // skip
-                     p += length;
-                 }
-             } else {
-@@ -1509,8 +1509,8 @@ unittest {
-     import std.math;
- 
-     writeln("Testing BamRead behaviour...");
--    auto read = BamRead("readname", 
--                        "AGCTGACTACGTAATAGCCCTA", 
-+    auto read = BamRead("readname",
-+                        "AGCTGACTACGTAATAGCCCTA",
-                         [CigarOperation(22, 'M')]);
-     assert(read.sequence_length == 22);
-     assert(read.cigar.length == 1);
-@@ -1522,7 +1522,7 @@ unittest {
-     assert(read.name == "anothername");
-     assert(read.cigarString() == "22M");
- 
--    read.base_qualities = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
-+    read.base_qualities = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
-                            13, 14, 15, 16, 17, 18, 19, 20, 21, 22];
-     assert(reduce!"a+b"(0, read.base_qualities) == 253);
- 
-@@ -1602,7 +1602,7 @@ unittest {
- /// $(P The idea is that this should be a drop-in replacement for BamRead in algorithms,
- /// as the struct uses 'alias this' construction for the wrapped read.)
- struct EagerBamRead(R=BamRead) {
--    /// 
-+    ///
-     this(R read) {
-         this.read = read;
-         this.end_position = read.position + read.basesCovered();
-@@ -1612,7 +1612,7 @@ struct EagerBamRead(R=BamRead) {
-     R read;
-     ///
-     alias read this;
-- 
-+
-     /// End position on the reference, computed as position + basesCovered().
-     int end_position;
- 
-@@ -1629,11 +1629,11 @@ template isBamRead(T)
- {
-     static if (is(Unqual!T : BamRead))
-         enum isBamRead = true;
--    else 
--        enum isBamRead = __traits(compiles, 
-+    else
-+        enum isBamRead = __traits(compiles,
-         {
-             T t; bool p;
--            p = t.ref_id == 1;          p = t.position == 2;          p = t.bin.id == 3;  
-+            p = t.ref_id == 1;          p = t.position == 2;          p = t.bin.id == 3;
-             p = t.mapping_quality == 4; p = t.flag == 5;              p = t.sequence_length == 6;
-             p = t.mate_ref_id == 7;     p = t.mate_position == 8;     p = t.template_length == 9;
-             p = t.is_paired;            p = t.proper_pair;            p = t.is_unmapped;
-@@ -1649,22 +1649,22 @@ template isBamRead(T)
- /// (return whether first read is 'less' than second))
- ///
- /// $(P This function can be called on:
--///   $(UL 
-+///   $(UL
- ///     $(LI two reads)
- ///     $(LI read and string in any order)))
--bool compareReadNames(R1, R2)(const auto ref R1 a1, const auto ref R2 a2) 
-+bool compareReadNames(R1, R2)(const auto ref R1 a1, const auto ref R2 a2)
-     if (isBamRead!R1 && isBamRead!R2)
- {
-     return a1.name < a2.name;
- }
- 
--bool compareReadNames(R1, R2)(const auto ref R1 a1, const auto ref R2 a2) 
-+bool compareReadNames(R1, R2)(const auto ref R1 a1, const auto ref R2 a2)
-     if (isBamRead!R1 && isSomeString!R2)
- {
-     return a1.name < a2;
- }
- 
--bool compareReadNames(R1, R2)(const auto ref R1 a1, const auto ref R2 a2) 
-+bool compareReadNames(R1, R2)(const auto ref R1 a1, const auto ref R2 a2)
-     if (isSomeString!R1 && isBamRead!R2)
- {
-     return a1 < a2.name;
-@@ -1747,10 +1747,12 @@ unittest {
- /// (returns whether first read is 'less' than second))
- ///
- /// $(P This function can be called on:
--///   $(UL 
-+///   $(UL
- ///     $(LI two reads (in this case, reference IDs are also taken into account))
- ///     $(LI read and integer in any order)))
--bool compareCoordinates(R1, R2)(const auto ref R1 a1, const auto ref R2 a2)
-+
-+/// This function takes read direction into account (used for original samtools style sorting)
-+bool compareCoordinatesAndStrand(R1, R2)(const auto ref R1 a1, const auto ref R2 a2)
-     if (isBamRead!R1 && isBamRead!R2)
- {
-     if (a1.ref_id == -1) return false; // unmapped reads should be last
-@@ -1763,6 +1765,16 @@ bool compareCoordinates(R1, R2)(const auto ref R1 a1, const auto ref R2 a2)
- }
- 
- bool compareCoordinates(R1, R2)(const auto ref R1 a1, const auto ref R2 a2)
-+    if (isBamRead!R1 && isBamRead!R2)
-+{
-+    if (a1.ref_id == -1) return false; // unmapped reads should be last
-+    if (a2.ref_id == -1) return true;
-+    if (a1.ref_id < a2.ref_id) return true;
-+    if (a1.ref_id > a2.ref_id) return false;
-+    return (a1.position < a2.position);
-+}
-+
-+bool compareCoordinates(R1, R2)(const auto ref R1 a1, const auto ref R2 a2)
-     if (isBamRead!R1 && isIntegral!R2)
- {
-     return a1.position < a2;
--- 
-2.11.0
-


=====================================
debian/patches/0015-Add-Meson-build-definition.patch deleted
=====================================
@@ -1,140 +0,0 @@
-From 815047a6f2ddbf2ae4aec9fcb32d624b543fd1d6 Mon Sep 17 00:00:00 2001
-From: Matthias Klumpp <matthias at tenstral.net>
-Date: Tue, 28 Feb 2017 14:44:30 +0100
-Subject: [PATCH] Add Meson build definition
-
----
- meson.build | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 127 insertions(+)
- create mode 100644 meson.build
-
---- /dev/null
-+++ b/meson.build
-@@ -0,0 +1,127 @@
-+project('BioD', 'd')
-+
-+project_version   = '0.1.0'
-+project_soversion = '0'
-+
-+src_dir = include_directories('.')
-+pkgc = import('pkgconfig')
-+
-+#
-+# Dependencies
-+#
-+undead_dep = dependency('undead', version : '>=1.0.6')
-+zlib_dep = dependency('zlib')
-+
-+#
-+# Sources
-+#
-+biod_src = [
-+    'bio/bam/utils/value.d',
-+    'bio/bam/utils/samheadermerger.d',
-+    'bio/bam/utils/array.d',
-+    'bio/bam/utils/graph.d',
-+    'bio/bam/pileup.d',
-+    'bio/bam/readrange.d',
-+    'bio/bam/reader.d',
-+    'bio/bam/thirdparty/msgpack.d',
-+    'bio/bam/baifile.d',
-+    'bio/bam/iontorrent/flowcall.d',
-+    'bio/bam/iontorrent/flowindex.d',
-+    'bio/bam/splitter.d',
-+    'bio/bam/abstractreader.d',
-+    'bio/bam/bai/indexing.d',
-+    'bio/bam/bai/bin.d',
-+    'bio/bam/multireader.d',
-+    'bio/bam/reference.d',
-+    'bio/bam/md/operation.d',
-+    'bio/bam/md/core.d',
-+    'bio/bam/md/parse.d',
-+    'bio/bam/md/reconstruct.d',
-+    'bio/bam/tagvalue.d',
-+    'bio/bam/validation/alignment.d',
-+    'bio/bam/validation/samheader.d',
-+    'bio/bam/region.d',
-+    'bio/bam/randomaccessmanager.d',
-+    'bio/bam/referenceinfo.d',
-+    'bio/bam/constants.d',
-+    'bio/bam/snpcallers/maq.d',
-+    'bio/bam/snpcallers/simple.d',
-+    'bio/bam/read.d',
-+    'bio/bam/writer.d',
-+    'bio/bam/baseinfo.d',
-+    'bio/maf/reader.d',
-+    'bio/maf/parser.d',
-+    'bio/maf/block.d',
-+    'bio/core/utils/memoize.d',
-+    'bio/core/utils/algo.d',
-+    'bio/core/utils/stream.d',
-+    'bio/core/utils/zlib.d',
-+    'bio/core/utils/tmpfile.d',
-+    'bio/core/utils/roundbuf.d',
-+    'bio/core/utils/format.d',
-+    'bio/core/utils/bylinefast.d',
-+    'bio/core/utils/range.d',
-+    'bio/core/utils/switchendianness.d',
-+    'bio/core/utils/outbuffer.d',
-+    'bio/core/genotype.d',
-+    'bio/core/fasta.d',
-+    'bio/core/base.d',
-+    'bio/core/kmer.d',
-+    'bio/core/region.d',
-+    'bio/core/tinymap.d',
-+    'bio/core/sequence.d',
-+    'bio/core/bgzf/outputstream.d',
-+    'bio/core/bgzf/chunk.d',
-+    'bio/core/bgzf/inputstream.d',
-+    'bio/core/bgzf/constants.d',
-+    'bio/core/bgzf/block.d',
-+    'bio/core/bgzf/virtualoffset.d',
-+    'bio/core/bgzf/compress.d',
-+    'bio/core/call.d',
-+    'bio/sff/utils/roundup.d',
-+    'bio/sff/index.d',
-+    'bio/sff/readrange.d',
-+    'bio/sff/reader.d',
-+    'bio/sff/constants.d',
-+    'bio/sff/read.d',
-+    'bio/sff/writer.d',
-+    'bio/sam/utils/fastrecordparser.d',
-+    'bio/sam/utils/recordparser.d',
-+    'bio/sam/reader.d',
-+    'bio/sam/header.d'
-+]
-+
-+#
-+# Includes
-+#
-+install_subdir('bio/', install_dir: 'include/d/')
-+
-+#
-+# Library and pkg-config
-+#
-+biod_lib = library('biod',
-+        [biod_src],
-+        include_directories: [src_dir],
-+        dependencies: [undead_dep, zlib_dep],
-+        install: true,
-+        version: project_version,
-+        soversion: project_soversion
-+)
-+pkgc.generate(name: 'biod',
-+              libraries: biod_lib,
-+              subdirs: 'd/',
-+              version: project_version,
-+              description: 'Bioinformatics library in D (utils for working with SAM, BAM, SFF formats).'
-+)
-+
-+#
-+# Tests
-+#
-+biod_test_exe = executable('biod_test',
-+    ['test/unittests.d',
-+    biod_src],
-+    include_directories: [src_dir],
-+    dependencies: [undead_dep, zlib_dep],
-+    d_args: meson.get_compiler('d').unittest_args()
-+)
-+test('biod_tests', biod_test_exe)


=====================================
debian/patches/0016-fix-type-conversion.patch deleted
=====================================
@@ -1,15 +0,0 @@
-Author: Matthias Klumpp <mak at debian.org>
-Last-Update: Mon, 10 Apr 2017 03:49:19 +0200
-Bug-Debian: https://bugs.debian.org/859688
-Description: undead.stream uses ulong instead of size_t for positions,
- so we do that too here to be compatible
-
---- a/bio/sff/read.d
-+++ b/bio/sff/read.d
-@@ -22,5 +22,5 @@ struct SffRead {
-     ushort clip_adapter_right;
- 
-     /// Record start offset in the file
--    size_t file_offset;
-+    ulong file_offset; // undead.stream uses ulong instead of size_t for positions, so we do that too here to be compatible
- }


=====================================
debian/patches/0017_fix_expression_conversion.patch deleted
=====================================
@@ -1,56 +0,0 @@
-From: Pjotr Prins <pjotr.public01 at thebird.nl>
-Date: Sat, 28 Jul 2018 00:05:29 +0000
-Origin: https://github.com/biod/BioD/commit/dd07f3497979b5d7f32ad32476da5108ffc5121e
-Bug-Debian: https://bugs.debian.org/907451
-Subject: [PATCH] Fixes:
-
-BioD/bio/maf/reader.d(53): Error: cannot implicitly convert expression `this._f.byLine(cast(Flag)true, '\x0a')` of type `ByLineImpl!(char, char)` to `ByLine!(char, char)`
-
-See https://github.com/bioconda/bioconda-recipes/pull/8787#issuecomment-389195848
----
- bio/maf/reader.d | 9 +++++----
- 1 file changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/bio/maf/reader.d b/bio/maf/reader.d
-index 708c5b3..c57decd 100644
---- a/bio/maf/reader.d
-+++ b/bio/maf/reader.d
-@@ -1,6 +1,7 @@
- /*
-     This file is part of BioD.
-     Copyright (C) 2013    Artem Tarasov <lomereiter at gmail.com>
-+    Copyright (C) 2018    Pjotr Prins <pjotr.prins at thebird.nl>
- 
-     Permission is hereby granted, free of charge, to any person obtaining a
-     copy of this software and associated documentation files (the "Software"),
-@@ -8,10 +9,10 @@
-     the rights to use, copy, modify, merge, publish, distribute, sublicense,
-     and/or sell copies of the Software, and to permit persons to whom the
-     Software is furnished to do so, subject to the following conditions:
--    
-+
-     The above copyright notice and this permission notice shall be included in
-     all copies or substantial portions of the Software.
--    
-+
-     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-@@ -50,7 +51,7 @@ struct MafBlockRange {
- 
-     this(string fn) {
-         _f = File(fn);
--        _lines = _f.byLine(KeepTerminator.yes);
-+        _lines = cast(LineRange)_f.byLine(KeepTerminator.yes);
-         skipHeader();
-         popFront();
-     }
-@@ -85,7 +86,7 @@ struct MafBlockRange {
- 
- ///
- class MafReader {
-- 
-+
-     private string _fn;
- 
-     ///


=====================================
debian/patches/001_fix_unit_tests.patch
=====================================
@@ -0,0 +1,21 @@
+Origin: https://github.com/biod/BioD/pull/38/commits/643b454f04f36d66c34304b7186a3d2c24fdf783
+From: Matthias Klumpp <matthias at tenstral.net>
+Date: Thu, 4 Oct 2018 14:33:37 +0200
+Subject: [PATCH] trivial: Fix unittests
+
+---
+ test/unittests.d | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/test/unittests.d b/test/unittests.d
+index d52fb687..263662af 100644
+--- a/test/unittests.d
++++ b/test/unittests.d
+@@ -22,6 +22,7 @@
+ 
+ */
+ 
++import bio.bam.cigar;
+ import bio.bam.reader;
+ import bio.bam.writer;
+ import bio.sam.reader;


=====================================
debian/patches/002_include_bio2.patch
=====================================
@@ -0,0 +1,66 @@
+Origin: https://github.com/biod/BioD/pull/38/commits/ee9428fea0d240ad6a65892346ddc051e086af16
+From: Matthias Klumpp <matthias at tenstral.net>
+Date: Thu, 4 Oct 2018 14:35:02 +0200
+Subject: [PATCH] meson: Include bio2 in libbiod build
+
+---
+ meson.build | 21 +++++++++++++++++++--
+ 1 file changed, 19 insertions(+), 2 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 76da2a00..88f3bcc7 100644
+--- a/meson.build
++++ b/meson.build
+@@ -89,19 +89,33 @@ biod_src = [
+     'bio/sam/utils/recordparser.d',
+     'bio/sam/reader.d',
+     'bio/sam/header.d'
++
++bio2_src = [
++    'bio2/bam/header.d',
++    'bio2/bam/reader.d',
++    'bio2/bam/writer.d',
++    'bio2/bgzf.d',
++    'bio2/bgzf_writer.d',
++    'bio2/constants.d',
++    'bio2/hashing.d',
++    'bio2/logger.d',
++    'bio2/pileup.d',
++    'bio2/reads.d',
++    'bio2/unpack.d'
+ ]
+ 
+ #
+ # Includes
+ #
+-install_subdir('bio/', install_dir: 'include/d/')
++install_subdir('bio/', install_dir: 'include/d/bio/')
++install_subdir('bio2/', install_dir: 'include/d/bio/')
+ 
+ #
+ # Library and pkg-config
+ #
+ biod_lib = library('biod',
+-        [biod_src],
+         include_directories: [src_dir],
++        [biod_src, bio2_src],
+         dependencies: [undead_dep, zlib_dep],
+         install: true,
+         version: project_version,
+@@ -111,6 +125,7 @@ pkgc.generate(name: 'biod',
+               libraries: biod_lib,
+               subdirs: 'd/',
+               version: project_version,
++              subdirs: 'd/bio/',
+               description: 'Bioinformatics library in D (utils for working with SAM, BAM, SFF formats).'
+ )
+ 
+@@ -121,6 +136,8 @@ biod_test_exe = executable('biod_test',
+     ['test/unittests.d',
+     biod_src],
+     include_directories: [src_dir],
++     biod_src,
++     bio2_src],
+     dependencies: [undead_dep, zlib_dep],
+     d_args: meson.get_compiler('d').unittest_args()
+ )


=====================================
debian/patches/003_modernize_meson.patch
=====================================
@@ -0,0 +1,199 @@
+From c059165f359327c5a67aadabe18d6016efb58780 Mon Sep 17 00:00:00 2001
+From: Matthias Klumpp <matthias at tenstral.net>
+Date: Thu, 4 Oct 2018 14:35:24 +0200
+Subject: [PATCH] meson: Modernize Meson build definition
+Origin: https://github.com/biod/BioD/pull/38/commits/c059165f359327c5a67aadabe18d6016efb58780
+
+---
+ meson.build | 131 +++++++++++++++++++++++++++-------------------------
+ 1 file changed, 67 insertions(+), 64 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 88f3bcc7..9d308efd 100644
+--- a/meson.build
++++ b/meson.build
+@@ -1,6 +1,9 @@
+-project('BioD', 'd')
++project('BioD', 'd',
++    meson_version : '>=0.46',
++    license : 'MIT',
++    version : '0.2.2'
++)
+ 
+-project_version   = '0.1.0'
+ project_soversion = '0'
+ 
+ src_dir = include_directories('.')
+@@ -16,79 +19,83 @@ zlib_dep = dependency('zlib')
+ # Sources
+ #
+ biod_src = [
+-    'bio/bam/utils/value.d',
+-    'bio/bam/utils/samheadermerger.d',
+-    'bio/bam/utils/array.d',
+-    'bio/bam/utils/graph.d',
+-    'bio/bam/pileup.d',
+-    'bio/bam/readrange.d',
+-    'bio/bam/reader.d',
+-    'bio/bam/thirdparty/msgpack.d',
++    'bio/bam/abstractreader.d',
++    'bio/bam/bai/bin.d',
+     'bio/bam/baifile.d',
++    'bio/bam/bai/indexing.d',
++    'bio/bam/baseinfo.d',
++    'bio/bam/cigar.d',
++    'bio/bam/constants.d',
+     'bio/bam/iontorrent/flowcall.d',
+     'bio/bam/iontorrent/flowindex.d',
+-    'bio/bam/splitter.d',
+-    'bio/bam/abstractreader.d',
+-    'bio/bam/bai/indexing.d',
+-    'bio/bam/bai/bin.d',
+-    'bio/bam/multireader.d',
+-    'bio/bam/reference.d',
+-    'bio/bam/md/operation.d',
+     'bio/bam/md/core.d',
++    'bio/bam/md/operation.d',
+     'bio/bam/md/parse.d',
+     'bio/bam/md/reconstruct.d',
+-    'bio/bam/tagvalue.d',
+-    'bio/bam/validation/alignment.d',
+-    'bio/bam/validation/samheader.d',
+-    'bio/bam/region.d',
++    'bio/bam/multireader.d',
++    'bio/bam/pileup.d',
+     'bio/bam/randomaccessmanager.d',
++    'bio/bam/read.d',
++    'bio/bam/reader.d',
++    'bio/bam/readrange.d',
++    'bio/bam/reference.d',
+     'bio/bam/referenceinfo.d',
+-    'bio/bam/constants.d',
++    'bio/bam/region.d',
+     'bio/bam/snpcallers/maq.d',
+     'bio/bam/snpcallers/simple.d',
+-    'bio/bam/read.d',
++    'bio/bam/splitter.d',
++    'bio/bam/tagvalue.d',
++    'bio/bam/thirdparty/msgpack.d',
++    'bio/bam/utils/array.d',
++    'bio/bam/utils/graph.d',
++    'bio/bam/utils/samheadermerger.d',
++    'bio/bam/utils/value.d',
++    'bio/bam/validation/alignment.d',
++    'bio/bam/validation/samheader.d',
+     'bio/bam/writer.d',
+-    'bio/bam/baseinfo.d',
+-    'bio/maf/reader.d',
+-    'bio/maf/parser.d',
+-    'bio/maf/block.d',
+-    'bio/core/utils/memoize.d',
+-    'bio/core/utils/algo.d',
+-    'bio/core/utils/stream.d',
+-    'bio/core/utils/zlib.d',
+-    'bio/core/utils/tmpfile.d',
+-    'bio/core/utils/roundbuf.d',
+-    'bio/core/utils/format.d',
+-    'bio/core/utils/bylinefast.d',
+-    'bio/core/utils/range.d',
+-    'bio/core/utils/switchendianness.d',
+-    'bio/core/utils/outbuffer.d',
+-    'bio/core/genotype.d',
+-    'bio/core/fasta.d',
+     'bio/core/base.d',
+-    'bio/core/kmer.d',
+-    'bio/core/region.d',
+-    'bio/core/tinymap.d',
+-    'bio/core/sequence.d',
+-    'bio/core/bgzf/outputstream.d',
++    'bio/core/bgzf/block.d',
+     'bio/core/bgzf/chunk.d',
+-    'bio/core/bgzf/inputstream.d',
++    'bio/core/bgzf/compress.d',
+     'bio/core/bgzf/constants.d',
+-    'bio/core/bgzf/block.d',
++    'bio/core/bgzf/inputstream.d',
++    'bio/core/bgzf/outputstream.d',
+     'bio/core/bgzf/virtualoffset.d',
+-    'bio/core/bgzf/compress.d',
+     'bio/core/call.d',
+-    'bio/sff/utils/roundup.d',
+-    'bio/sff/index.d',
+-    'bio/sff/readrange.d',
+-    'bio/sff/reader.d',
+-    'bio/sff/constants.d',
+-    'bio/sff/read.d',
+-    'bio/sff/writer.d',
++    'bio/core/fasta.d',
++    'bio/core/fastq.d',
++    'bio/core/genotype.d',
++    'bio/core/kmer.d',
++    'bio/core/region.d',
++    'bio/core/sequence.d',
++    'bio/core/tinymap.d',
++    'bio/core/utils/algo.d',
++    'bio/core/utils/bylinefast.d',
++    'bio/core/utils/exception.d',
++    'bio/core/utils/format.d',
++    'bio/core/utils/memoize.d',
++    'bio/core/utils/outbuffer.d',
++    'bio/core/utils/range.d',
++    'bio/core/utils/roundbuf.d',
++    'bio/core/utils/stream.d',
++    'bio/core/utils/switchendianness.d',
++    'bio/core/utils/tmpfile.d',
++    'bio/core/utils/zlib.d',
++    'bio/maf/block.d',
++    'bio/maf/parser.d',
++    'bio/maf/reader.d',
++    'bio/sam/header.d',
++    'bio/sam/reader.d',
+     'bio/sam/utils/fastrecordparser.d',
+     'bio/sam/utils/recordparser.d',
+-    'bio/sam/reader.d',
+-    'bio/sam/header.d'
++    'bio/sff/constants.d',
++    'bio/sff/index.d',
++    'bio/sff/read.d',
++    'bio/sff/reader.d',
++    'bio/sff/readrange.d',
++    'bio/sff/utils/roundup.d',
++    'bio/sff/writer.d'
++]
+ 
+ bio2_src = [
+     'bio2/bam/header.d',
+@@ -114,18 +121,16 @@ install_subdir('bio2/', install_dir: 'include/d/bio/')
+ # Library and pkg-config
+ #
+ biod_lib = library('biod',
+-        include_directories: [src_dir],
+         [biod_src, bio2_src],
+         dependencies: [undead_dep, zlib_dep],
+         install: true,
+-        version: project_version,
++        version: meson.project_version(),
+         soversion: project_soversion
+ )
+ pkgc.generate(name: 'biod',
+               libraries: biod_lib,
+-              subdirs: 'd/',
+-              version: project_version,
+               subdirs: 'd/bio/',
++              version: meson.project_version(),
+               description: 'Bioinformatics library in D (utils for working with SAM, BAM, SFF formats).'
+ )
+ 
+@@ -134,11 +139,9 @@ pkgc.generate(name: 'biod',
+ #
+ biod_test_exe = executable('biod_test',
+     ['test/unittests.d',
+-    biod_src],
+-    include_directories: [src_dir],
+      biod_src,
+      bio2_src],
+     dependencies: [undead_dep, zlib_dep],
+-    d_args: meson.get_compiler('d').unittest_args()
++    d_unittest: true
+ )
+ test('biod_tests', biod_test_exe)


=====================================
debian/patches/___series___ deleted
=====================================
@@ -1,15 +0,0 @@
-# fix_deprecated_imports.patch
-0002-improved-big-endian-support.patch
-0003-include-the-AH-header-tag-to-SQ-lines.patch
-0004-use-consistent-naming-21.patch
-0005-fixes-lomereiter-sambamba-244.patch
-0006-switch-to-undead.stream.patch
-0007-std.c-core.stdc.patch
-0008-fix-deprecations-and-some-warnings.patch
-0009-fix-toHash-signature.patch
-0011-better-.travis.yml-uses-dub-test-and-tests-ldc.patch
-0013-fix-toJSON-usage-for-new-and-old-compilers.patch
-0014-Add-compareCoordinatesAndStrand-to-fix-sorting-test-.patch
-0015-Add-Meson-build-definition.patch
-0016-fix-type-conversion.patch
-0017_fix_expression_conversion.patch


=====================================
debian/patches/fix_deprecated_imports.patch deleted
=====================================
@@ -1,81 +0,0 @@
-Author: Andreas Tille <tille at debian.org>
-Last-Update: Sat, 25 Feb 2017 20:34:50 +0100
-Description: Fix deprecated imports
-
---- a/bio/bam/bai/indexing.d
-+++ b/bio/bam/bai/indexing.d
-@@ -35,7 +35,7 @@ import std.array;
- import std.algorithm;
- import std.system;
- import std.exception;
--import std.c.string;
-+import core.std.c.string;
- 
- // Suppose we have an alignment which covers bases on a reference,
- // starting from one position and ending at another position.
---- a/bio/bam/thirdparty/msgpack.d
-+++ b/bio/bam/thirdparty/msgpack.d
-@@ -82,7 +82,7 @@ static if (real.sizeof == double.sizeof)
-     import std.numeric;
- }
- 
--version(unittest) import std.file, std.c.string;
-+version(unittest) import std.file, core.std.c.string;
- 
- 
- @trusted:
---- a/bio/bam/utils/array.d
-+++ b/bio/bam/utils/array.d
-@@ -23,7 +23,7 @@
- */
- module bio.bam.utils.array;
- 
--import std.c.string;
-+import core.std.c.string;
- import std.traits;
- 
- /// Modifies array in-place so that $(D slice) is replaced by
---- a/bio/core/utils/bylinefast.d
-+++ b/bio/core/utils/bylinefast.d
-@@ -6,7 +6,7 @@ module bio.core.utils.bylinefast;
- 
- import std.stdio;
- import std.string: indexOf;
--import std.c.string: memmove;
-+import core.std.c.string: memmove;
- 
- /**
-    Reads by line in an efficient way (10 times faster than File.byLine from std.stdio).
---- a/bio/core/utils/format.d
-+++ b/bio/core/utils/format.d
-@@ -34,8 +34,8 @@
-  */
- module bio.core.utils.format;
- 
--import std.c.stdio;
--import std.c.stdlib;
-+import core.stdc.stdio;
-+import core.stdc.stdlib;
- import std.string;
- import std.traits;
- import std.array;
-@@ -161,7 +161,7 @@ private {
-         if (isSomeString!T)
-     {
-         auto str = cast(const(char)[])s;
--        std.c.string.memcpy(sink, str.ptr, str.length);
-+        core.std.c.string.memcpy(sink, str.ptr, str.length);
-         sink += str.length;
-     }
- 
---- a/bio/sam/reader.d
-+++ b/bio/sam/reader.d
-@@ -49,7 +49,7 @@ import std.typecons;
- import std.parallelism;
- import std.process;
- import std.exception;
--import std.c.string;
-+import core.std.c.string;
- 
- BamRead _parseSamRecord(Tuple!(char[], SamReader, OutBuffer) t) {
-     auto r = parseAlignmentLine(cast(string)t[0], t[1]._header, t[2]);


=====================================
debian/patches/series
=====================================
@@ -0,0 +1,3 @@
+001_fix_unit_tests.patch
+002_include_bio2.patch
+003_modernize_meson.patch



View it on GitLab: https://salsa.debian.org/med-team/libbiod/compare/49fc8f170add4866ca318e86396e9003b1468973...0186cd8f07f9608c6b1cc85170b05c4f7292832a

-- 
View it on GitLab: https://salsa.debian.org/med-team/libbiod/compare/49fc8f170add4866ca318e86396e9003b1468973...0186cd8f07f9608c6b1cc85170b05c4f7292832a
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/20181009/4c7c7ea0/attachment-0001.html>


More information about the debian-med-commit mailing list