[med-svn] [Git][med-team/sambamba][upstream] New upstream version 1.0+dfsg

Andreas Tille (@tille) gitlab at salsa.debian.org
Thu Jan 19 11:30:35 GMT 2023



Andreas Tille pushed to branch upstream at Debian Med / sambamba


Commits:
dccf44ef by Andreas Tille at 2023-01-19T12:18:06+01:00
New upstream version 1.0+dfsg
- - - - -


9 changed files:

- + .github/workflows/ci.yaml
- .guix-build
- INSTALL.md
- README.md
- RELEASE-NOTES.md
- VERSION
- meson.build
- sambamba/main.d
- test/test_suite.sh


Changes:

=====================================
.github/workflows/ci.yaml
=====================================
@@ -0,0 +1,79 @@
+name: CI
+
+on: [push, pull_request]
+
+env:
+  LDC_VERSION: 1.30.0
+
+jobs:
+  build:
+    name: Build x86_64
+    runs-on: ubuntu-20.04
+    steps:
+      - name: Checkout
+        uses: actions/checkout at v3
+
+      - name: Install build dependencies
+        run: |
+          set -x
+          sudo apt-get update -q -y
+          sudo apt-get install -q -y liblz4-dev
+          ARCH=$(uname -m)
+          wget --quiet https://github.com/ldc-developers/ldc/releases/download/v${LDC_VERSION}/ldc2-${LDC_VERSION}-linux-${ARCH}.tar.xz
+          tar xf ldc2-${LDC_VERSION}-linux-${ARCH}.tar.xz
+          echo "ldc2-${LDC_VERSION}-linux-${ARCH}/bin" >> $GITHUB_PATH
+
+      - name: Build & test
+        run:  make -j2 check
+      
+      - name: Create artifact
+        run: |
+          VERSION=$(cat VERSION)
+          mkdir artifact
+          gzip --stdout bin/sambamba-${VERSION} > artifact/sambamba-${VERSION}-linux-amd64-static.gz
+      
+      - name: Upload artifact
+        uses: actions/upload-artifact at v1
+        with:
+          name: sambamba-binary-archives
+          path: artifact
+
+  
+  build-aarch64:
+    name: Build aarch64
+    runs-on: ubuntu-20.04
+
+    steps:
+    - name: Checkout
+      uses: actions/checkout at v3
+
+    - name: Build
+      uses: uraimo/run-on-arch-action at v2
+      with:
+        arch: aarch64
+        distro: ubuntu20.04
+        githubToken: ${{ github.token }}
+        dockerRunArgs: --volume "${PWD}:/sambamba"
+        install: |
+          set -x
+          apt-get update -q -y
+          apt-get install -qq -y gcc g++ wget file xz-utils tar liblz4-dev make python3 libxml2-dev libz-dev
+          ARCH=$(uname -m)
+          wget --quiet https://github.com/ldc-developers/ldc/releases/download/v${{ env.LDC_VERSION }}/ldc2-${{ env.LDC_VERSION }}-linux-${ARCH}.tar.xz
+          tar xf ldc2-${{ env.LDC_VERSION }}-linux-${ARCH}.tar.xz
+          echo "export PATH=$PWD/ldc2-${{ env.LDC_VERSION }}-linux-${ARCH}/bin:$PATH" >> $HOME/.env
+        run: |
+          set -x
+          source $HOME/.env
+          cd /sambamba
+          make -j2 check
+          VERSION=$(cat VERSION)
+          file bin/sambamba-${VERSION}
+          mkdir artifact
+          gzip --stdout bin/sambamba-${VERSION} > artifact/sambamba-${VERSION}-linux-arm64-static.gz
+      
+    - name: Upload artifact
+      uses: actions/upload-artifact at v1
+      with:
+        name: sambamba-binary-archives
+        path: artifact
\ No newline at end of file


=====================================
.guix-build
=====================================
@@ -3,4 +3,4 @@
 # See INSTALL.md for the build with make
 #
 # -L ~/iwrk/opensource/guix/guix-bioinformatics 
-guix shell -C -D meson ninja pkg-config python lz4 gcc-toolchain gdb bash ld-wrapper ldc which python git binutils-gold vim zlib $*
+guix shell -C meson ninja pkg-config lz4 gcc-toolchain gdb bash ld-wrapper ldc which python git binutils-gold coreutils vim zlib make $*


=====================================
INSTALL.md
=====================================
@@ -9,6 +9,14 @@
 
 The biod project was moved back into the sambamba git repo. It is no longer a dependency. We use [.guix-build](.guixbuild) to set up the build environment in a GNU Guix container.
 
+For optimal performance it really is important to compile '-singleobj' and -flto=full' as described in http://johanengelen.github.io/ldc/2016/11/10/Link-Time-Optimization-LDC.html
+At this point only the standard Makefile is fully optimized. The meson build system does not do singleobj yet (it makes a 5% difference in runtime).
+
+For the most optimal system use
+
+    make release
+    make check
+
 ## Install Sambamba from source
 
 Tested on Debian:
@@ -23,8 +31,10 @@ possible to install the build tools with GNU Guix
 
     guix package -i gcc-toolchain gdb bash ld-wrapper ldc which python git
 
+(see also [guix-build](.guix-build))
+
 Even better, with Guix, you can create a light-weight container in the source tree
-and run our development setup (gold was added lately by ldc)
+and run our development setup (lately gold is required by ldc)
 
     source .guix-build
     make clean
@@ -37,7 +47,7 @@ this way all dependencies are isolated. To create a static release use
 
 Note that the static build is not working on GNU Guix right now because the Phobos libs are missing (shared lib only).
 
-Alternatively use the meson+ninja build with
+Alternatively use the Guix meson+ninja build with
 
     rm -rf build/ ; env D_LD=gold CC=gcc meson build --buildtype release
     cd build/
@@ -89,9 +99,9 @@ start it with, for example
 
 ## Check list for release
 
-- [ ] Test meson build with local lz4
-- [ ] Build and test static version
-- [ ] Build and test optimized version with performance run
-- [ ] Update release notes
+- [X] Test meson build with local lz4
+- [X] Build and test static version
+- [X] Build and test optimized version with performance run
+- [X] Update release notes
 - [ ] Release on github
 - [ ] Ping Debian, Guix and Conda projects


=====================================
README.md
=====================================
@@ -8,28 +8,28 @@ Table of Contents
 =================
 
    * [Introduction](#introduction)
-   * [Binary installation](#binary-installation)
-      * [Install stable release](#install-stable-release)
-      * [Bioconda install](#bioconda-install)
-      * [GNU Guix install](#gnu-guix-install)
-      * [Debian GNU/Linux install](#debian-gnulinux-install)
-      * [Homebrew install](#homebrew-install)
-   * [Getting help](#getting-help)
-      * [Reporting a sambamba bug or issue](#reporting-a-sambamba-bug-or-issue)
-      * [Check list:](#check-list)
-      * [Code of conduct](#code-of-conduct)
+   * [Binary Installation](#binary-installation)
+      * [Install Stable Release](#install-stable-release)
+      * [Bioconda Install](#bioconda-install)
+      * [GNU Guix Install](#gnu-guix-install)
+      * [Debian GNU/Linux Install](#debian-gnulinux-install)
+      * [Homebrew Install](#homebrew-install)
+   * [Getting Help](#getting-help)
+      * [Reporting a Sambamba Bug or Issue](#reporting-a-sambamba-bug-or-issue)
+      * [Checklist](#checklist)
+      * [Code of Conduct](#code-of-conduct)
    * [Compiling Sambamba](#compiling-sambamba)
-      * [Compilation dependencies](#compilation-dependencies)
+      * [Compilation Dependencies](#compilation-dependencies)
       * [Compiling for Linux](#compiling-for-linux)
          * [GNU Guix](#gnu-guix)
       * [Compiling for Mac OS X](#compiling-for-mac-os-x)
       * [Development](#development)
-   * [Debugging and troubleshooting](#debugging-and-troubleshooting)
-      * [Segfaults on certain Intel Xeons](#segfaults-on-certain-intel-xeons)
-      * [Dump core](#dump-core)
+   * [Debugging and Troubleshooting](#debugging-and-troubleshooting)
+      * [Segfaults on Certain Intel Xeons](#segfaults-on-certain-intel-xeons)
+      * [Dump Core](#dump-core)
       * [Use catchsegv](#use-catchsegv)
 
-* [Using gdb](#using-gdb)
+* [Using GDB](#using-gdb)
    * [License](#license)
    * [Credit](#credit)
 
@@ -37,78 +37,82 @@ Table of Contents
 <a name="intro"></a>
 # Introduction
 
-Sambamba is a high performance highly parallel robust and fast tool (and library), written in the D programming language, for working with SAM and BAM files. Because of its efficiency Sambamba is an important work horse running in many sequencing centres around the world today. As of December 2021, Sambamba has been cited over [740 times](http://scholar.google.nl/citations?hl=en&user=5ijHQRIAAAAJ) and has been installed from Conda over [200K times](https://anaconda.org/bioconda/sambamba). Sambamba is also distributed by [Debian](https://packages.debian.org/testing/sambamba). To cite sambamba see [Credit](#credit).
+*January 2023*: announcing v1.0 release of the great sambamba tool!
 
-Current functionality is an important subset of samtools
-functionality, including view, index, sort, markdup, and depth. Most
-tools support piping: just specify `/dev/stdin` or `/dev/stdout` as
-filenames. When we started writing sambamba (in 2012) the main
+A minor fix and a major release. After 10 years and over one thousand citations we can announce sambamba 1.0 stable!
+
+Sambamba is a high performance, highly parallel, robust and fast tool (and library), written in the D programming language, for working with SAM and BAM files. Because of its efficiency, Sambamba is an important work horse running in many sequencing centers around the world today. As of January 2023, Sambamba has been cited over [1000 times](http://scholar.google.nl/citations?hl=en&user=5ijHQRIAAAAJ) and has been installed from Conda over [250,000 times](https://anaconda.org/bioconda/sambamba). Sambamba is also distributed by [Debian](https://packages.debian.org/testing/sambamba). To cite Sambamba, see [Credit](#credit).
+
+Current functionality is an important subset of `samtools`
+functionality including view, index, sort, markdup, and depth. Most
+tools support piping. Just specify `/dev/stdin` or `/dev/stdout` as
+filenames. When we started writing Sambamba in 2012, the main
 advantage over `samtools` was parallelized BAM reading and writing.
 
-In March 2017 `samtools` 1.4 was released, reaching some parity. A [recent performance comparison](https://github.com/guigolab/sambamBench-nf) shows that sambamba still holds its ground and can even do better. Here are some comparison [metrics](https://public-docs.crg.es/rguigo/Data/epalumbo/sambamba_ws_report.html). For example, for flagstat sambamba is 1.4x faster than samtools. For index they are similar. For markdup almost *6x* faster and for view *4x* faster. For sort sambamba has been beaten, though sambamba is notably up to *2x* faster than samtools on large RAM machines (120GB+).
+In March 2017, `samtools` 1.4 was released, reaching some parity. A [recent performance comparison](https://github.com/guigolab/sambamBench-nf) shows that Sambamba still holds its ground and can even do better. Here are some comparison [metrics](https://public-docs.crg.es/rguigo/Data/epalumbo/sambamba_ws_report.html). For example, for flagstat, Sambamba is 1.4x faster than samtools. For index, they are similar. For markdup, almost *6x* faster, and for view, *4x* faster. For sort, Sambamba has been beaten, though Sambamba is notably up to *2x* faster than samtools on large RAM machines (120GB+).
 
-In addition sambamba has a few interesting features to offer, in particular
+In addition, Sambamba has a few interesting features to offer. In particular:
 
-- fast large machine `sort`, see [performance](./test/benchmark/stats.org)
-- automatic index creation when writing any coordinate-sorted file
-- `view -L <bed file>` utilizes BAM index to skip unrelated chunks
-- `depth` allows to measure base, sliding window, or region coverages
-  - [Chanjo](https://www.chanjo.co/) builds upon this and gets you to exon/gene levels of abstraction
-- `markdup`, a fast implementation of Picard algorithm
-- `slice` quickly extracts a region into a new file, tweaking only first/last chunks
-- and more (you'll have to try)
+* Fast large machine `sort`, see [performance](./test/benchmark/stats.org)
+* Automatic index creation when writing any coordinate-sorted file
+* `view -L <bed file>` utilizes BAM index to skip unrelated chunks
+* `depth` allows to measure base, sliding window, or region coverages
+  * [Chanjo](https://www.chanjo.co/) builds upon this and gets you to exon/gene levels of abstraction
+* `markdup`, a fast implementation of Picard algorithm
+* `slice` quickly extracts a region into a new file, tweaking only first/last chunks
+* ...and more (you'll have to try)
 
-The D language is extremely suitable for high performance computing (HPC). At this point we think that the BAM format is here to stay for processing reference guided sequencing data and we aim to make it easy to parse and process BAM files.
+The D language is extremely suitable for high performance computing (HPC). At this point, we think that the BAM format is here to stay for processing reference guided sequencing data, and we aim to make it easy to parse and process BAM files.
 
 Sambamba is free and open source software, licensed under GPLv2+.
 See manual pages [online](https://lomereiter.github.io/sambamba/docs/sambamba-view.html)
 to know more about what is available and how to use it.
 
-For more information on Sambamba contact the mailing list (see [Getting help](#getting-help)).
+For more information on Sambamba, contact the mailing list (see [Getting help](#getting-help)).
 
-## No CRAM support
+## No CRAM Support
 
-**Important notice: with version 0.8 support for CRAM was removed from
+**Important Notice: With version 0.8 support for CRAM was removed from
 Sambamba (see the [RELEASE NOTES](./RELEASE-NOTES.md))**
 
-To use CRAM you can still use one of the older (binary)
+To use CRAM, you can still use one of the older (binary)
 [releases](https://github.com/biod/sambamba/releases) of Sambamba.
 
 <a name="install"></a>
-# Binary installation
-## Install stable release
+# Binary Installation
+## Install Stable Release
 
 For those not in the mood to learn/install new package managers, there
 are Github source and binary
 [releases](https://github.com/biod/sambamba/releases). Simply download
-the tarball, unpack it and run it according to the accompanying
+the tarball, unpack it, and run it according to the accompanying
 release notes.
 
 Below package managers Conda, GNU Guix, Debian and Homebrew also
 provide recent binary installs for Linux.  For MacOS you may use Conda
 or Homebrew.
 
-## Bioconda install
+## Bioconda Install
 
 [![Install with CONDA](https://anaconda.org/bioconda/sambamba/badges/installer/conda.svg)](https://anaconda.org/bioconda/sambamba)
 
-Ther should be binary downloads for Linux and MacOS.
+There should be binary downloads for Linux and MacOS.
 
 With Conda use the [`bioconda`](https://bioconda.github.io/) channel.
 
-## GNU Guix install
+## GNU Guix Install
 
 [![GuixBadge](https://img.shields.io/badge/gnuguix-sambamba--0.6.8-brightgreen.svg)](https://www.gnu.org/software/guix/packages/S/)
 
-A reproducible [GNU Guix package](https://www.gnu.org/software/guix/packages/s.html) for sambamba is available. The development version is packaged [here](https://gitlab.com/genenetwork/guix-bioinformatics/blob/master/gn/packages/sambamba.scm).
+A reproducible [GNU Guix package](https://www.gnu.org/software/guix/packages/s.html) for Sambamba is available. The development version is packaged [here](https://gitlab.com/genenetwork/guix-bioinformatics/blob/master/gn/packages/sambamba.scm).
 
-## Debian GNU/Linux install
+## Debian GNU/Linux Install
 
 [![DebianBadge](https://badges.debian.net/badges/debian/testing/sambamba/version.svg)](https://packages.debian.org/testing/sambamba)
 
 See also Debian package [status](https://tracker.debian.org/pkg/sambamba).
 
-## Homebrew install
+## Homebrew Install
 
 [![BrewBadge](https://img.shields.io/badge/%F0%9F%8D%BAbrew-sambamba-brightgreen.svg)](https://github.com/brewsci/homebrew-bio)
 
@@ -119,52 +123,52 @@ Users of Homebrew can also use the formula from [homebrew-bio](https://github.co
 It should work for Linux and MacOS.
 
 <a name="help"></a>
-# Getting help
+# Getting Help
 
 Sambamba has a
 [mailing list](https://groups.google.com/forum/#!forum/sambamba-discussion)
 for installation help and general discussion.
 
-## Reporting a sambamba bug or issue
+## Reporting a Ssambamba Bug or Issue
 
-Before posting an issue search the issue tracker and [mailing list](https://groups.google.com/forum/#!forum/sambamba-discussion) first. It is likely someone may have encountered something similar. Also try running the latest version of sambamba to make sure it has not been fixed already. Support/installation questions should be aimed at the mailing list. The issue tracker is for development issues around the software itself. When reporting an issue include the output of the program and the contents of the output directory.
+Before posting an issue, search the issue tracker and [mailing list](https://groups.google.com/forum/#!forum/sambamba-discussion) first. It is likely someone may have encountered something similar. Also try running the latest version of Sambamba to make sure it has not been fixed already. Support/installation questions should be aimed at the mailing list. The issue tracker is for development issues around the software itself. When reporting an issue, include the output of the program and the contents of the output directory.
 
-Please use the following check list. It exists for multiple reasons :)
+Please use the following checklist. It exists for multiple reasons. :)
 
-## Check list:
+## Checklist
 
-1. [X] I have found and issue with sambamba
+1. [X] I have found an issue with Sambamba
 2. [ ] I have searched for it on the [issue tracker](https://github.com/biod/sambamba/issues) (also check closed issues)
 3. [ ] I have searched for it on the [mailing list](https://groups.google.com/forum/#!forum/sambamba-discussion)
-4. [ ] I have tried the latest [release](https://github.com/biod/sambamba/releases) of sambamba
-5. [ ] I have read and agreed to below code of conduct
-6. [ ] If it is a support/install question I have posted it to the [mailing list](https://groups.google.com/forum/#!forum/sambamba-discussion)
-7. [ ] If it is software development related I have posted a new issue on the [issue tracker](https://github.com/biod/sambamba/issues) or added to an existing one
-8. [ ] In the message I have included the output of my sambamba run
-9. [ ] In the message I have included the relevant files in the output directory
-10. [ ] I have made available the data to reproduce the problem (optional)
+4. [ ] I have tried the latest [release](https://github.com/biod/sambamba/releases) of Sambamba
+5. [ ] I have read and agreed to the below code of conduct
+6. [ ] If it is a support/install question, I have posted it to the [mailing list](https://groups.google.com/forum/#!forum/sambamba-discussion)
+7. [ ] If it is software development related, I have posted a new issue on the [issue tracker](https://github.com/biod/sambamba/issues) or added to an existing one
+8. [ ] In the message, I have included the output of my Sambamba run
+9. [ ] In the message, I have included relevant files in the output directory
+10. [ ] (Optional) I have made the data available to reproduce the problem
 
-To find bugs the sambamba software developers may ask to install a development version of the software. They may also ask you for your data and will treat it confidentially.  Please always remember that sambamba is written and maintained by volunteers with good intentions. Our time is valuable too. By helping us as much as possible we can provide this tool for everyone to use.
+To find bugs, the Sambamba software developers may ask to install a development version of the software. They may also ask you for your data and will treat it confidentially.  Please always remember that Sambamba is written and maintained by volunteers with good intentions. Our time is valuable, too. By helping us as much as possible, we can provide this tool for everyone to use.
 
-## Code of conduct
+## Code of Conduct
 
-By using sambamba and communicating with its communtity you implicitely agree to abide by the [code of conduct](https://software-carpentry.org/conduct/) as published by the Software Carpentry initiative.
+By using Sambamba and communicating with its community, you implicitly agree to abide by the [code of conduct](https://software-carpentry.org/conduct/) as published by the Software Carpentry initiative.
 
 
 <a name="compile"></a>
 # Compiling Sambamba
 
-Note: in general there is no need to compile sambamba. You can use a recent binary install as listed above.
+Note: In general, there is no need to compile Sambamba. You can use a recent binary install as listed above.
 
 The preferred method for compiling Sambamba is with the LDC compiler which targets LLVM. LLVM version 6 is faster than earlier editions.
 
-## Compilation dependencies
+## Compilation Dependencies
 
 See [INSTALL.md](./INSTALL.md).
 
 ## Compiling for Linux
 
-The LDC compiler's github repository provides binary images. The current preferred release for sambamba is LDC - the LLVM D compiler (>= 1.6.1). After installing LDC from https://github.com/ldc-developers/ldc/releases/ with, for example
+The LDC compiler's Github repository provides binary images. The current preferred release for Sambamba is LDC - the LLVM D compiler (>= 1.6.1). After installing LDC from https://github.com/ldc-developers/ldc/releases/ with, for example
 
 ```sh
 cd
@@ -186,7 +190,7 @@ To build a development/debug version run
 make clean && make debug
 ```
 
-To run the test fetch shunit2 from https://github.com/kward/shunit2 and put it in the path so
+To run the test, fetch shunit2 from https://github.com/kward/shunit2 and put it in the path so
 you can run
 
 ```sh
@@ -208,7 +212,7 @@ For more instructions see [INSTALL.md](./INSTALL.md).
 
 ## Compiling with Meson/Ninja
 
-Debian uses a meson+ninja build. It may work with something like
+Debian uses a Meson+Ninja build. It may work with something like
 
 ```sh
 meson build
@@ -217,7 +221,7 @@ ninja
 ninja test
 ```
 
-or with some tuning
+or possibly with some additional tuning
 
 ```sh
 rm -rf build/ ; env D_LD=gold CC=gcc meson build --buildtype release
@@ -247,19 +251,19 @@ documentation](https://github.com/biod/sambamba-dev-docs).
 
 <a name="debug"></a>
 
-# Debugging and troubleshooting
+# Debugging and Troubleshooting
 
-## Segfaults on certain Intel Xeons
+## Segfaults on Certain Intel Xeons
 
-Important note: some older Xeon processors segfault under heavy hyper
+Important Note: Some older Xeon processors segfault under heavy hyper
 threading - which Sambamba utilizes.  Please read
 [this](https://blog.cloudflare.com/however-improbable-the-story-of-a-processor-bug/)
 when encountering seemingly random crashes. There is no real fix other
 than disabling hyperthreading. Also discussed [here](https://github.com/biod/sambamba/issues/335). Thank Intel for producing this bug.
 
-## Dump core
+## Dump Core
 
-In a crash sambamba can dump a core file. To make this happen set
+In a crash, Sambamba can dump a core file. To make this happen set
 
 ```sh
 ulimit -c unlimited
@@ -270,31 +274,31 @@ time of segfault.
 
 ## Use catchsegv
 
-Another option is to use catchsegv
+Another option is to use `catchsegv`
 
 ```sh
 catchsegv ./build/sambamba command
 ```
 
-this will show state on stdout which can be sent to us.
+This will show state on stdout which can be sent to us.
 
-## Using gdb
+## Using GDB
 
-In case of crashes it's helpful to have GDB stacktraces (`bt`
+In case of crashes, it's helpful to have GDB stacktraces (`bt`
 command). A full stacktrace for all threads:
 
 ```
 thread apply all backtrace full
 ```
 
-Note that GDB should be made aware of D garbage collector which emits
-SIGUSR signals and gdb needs to ignore them with
+Note that GDB should be made aware of D garbage collector, which emits
+SIGUSR signals and GDB needs to ignore them with
 
 ```
 handle SIGUSR1 SIGUSR2 nostop noprint
 ```
 
-A binary relocatable install of sambamba with debug information and
+A binary, relocatable install of Sambamba with debug information and
 all dependencies can be fetched from the binary link above.  Unpack
 the tarball and run the contained install.sh script with TARGET
 
@@ -302,7 +306,7 @@ the tarball and run the contained install.sh script with TARGET
 ./install.sh ~/sambamba-test
 ```
 
-Run sambamba in gdb with
+Run Sambamba in GDB with
 
 ```
 gdb -ex 'handle SIGUSR1 SIGUSR2 nostop noprint' \
@@ -317,7 +321,7 @@ Sambamba is generously distributed under GNU Public License v2+.
 <a name="credits"></a>
 # Credit
 
-Citations are the bread and butter of Science.  If you are using Sambamba in your research and want to support our future work on Sambamba, please cite the following publication:
+Citations are the bread and butter of science.  If you are using Sambamba in your research and want to support our future work on Sambamba, please cite the following publication:
 A. Tarasov, A. J. Vilella, E. Cuppen, I. J. Nijman, and P. Prins. [Sambamba: fast processing of NGS alignment formats](https://doi.org/10.1093/bioinformatics/btv098). Bioinformatics, 2015.
 
 ## Bibtex reference


=====================================
RELEASE-NOTES.md
=====================================
@@ -1,10 +1,17 @@
-## ChangeLog v0.8.2 (2022....)
+## ChangeLog v1.0.0 (20230119)
 
-+ Slightly faster static sambamba with ldc2 1.27+LLVM 11.
+A minor fix and a major release. After 10 years and over one thousand citations we can announce sambamba 1.0 stable!
+
+## ChangeLog v0.8.2 (20220116)
+
+Maintenance release aligns with D compiler updates which had sambamba breaking in Debian. Notably lz4 got removed from the source tree and the meson build system is close to becoming the default. Again some free speed improvement thanks to the latest ldc2+LLVM toolchain. Amazing work by these groups!
+
++ Slightly faster (approx 5%) static sambamba with ldc2 1.27+LLVM 11.
 + Purged lz4 sources in favour of using the lz4 dependency (the Debian
   library appears to be complete)
 + Fixed meson builds for Debian, see https://github.com/biod/sambamba/issues/484
   (thanks @atille)
++ Optimized meson build so it is close to static build times
 + Removed most ldc2 deprecation warnings
 + Moved Python scripts 2->3 (following the Debian patch)
 + Fix ldc 1.27.1 build by using get to unwrap Nullable


=====================================
VERSION
=====================================
@@ -1 +1 @@
-0.8.2
+1.0.0


=====================================
meson.build
=====================================
@@ -23,15 +23,15 @@ build_root = meson.build_root()
 
 cc = meson.get_compiler('c')
 
-# if meson.get_compiler('d').get_id() != 'llvm'
-#     error('We only support the LLVM D compiler at this time. Please compile with LDC.')
-# endif
-
-extra_dflags = [ '-I=../BioD/' ]
-if get_option('optimize_strong')
-    extra_dflags += ['-O3', '-release', '-enable-inlining', '-boundscheck=off']
+if meson.get_compiler('d').get_id() != 'llvm'
+    error('We only support the LLVM D compiler at this time. Please compile with LDC.')
 endif
 
+# The optimized flags are
+# ldc2 -singleobj -wi -I. -IBioD -g -J. -O3 -release -enable-inlining -boundscheck=off -L-lz -c -of=bin/sambamba-0.8.2.o
+extra_dflags = [ '-I../BioD','-g','-release','-boundscheck=off']
+extra_ldflags = ['-L=-flto=full']
+
 #
 # Sources
 #
@@ -234,6 +234,7 @@ sambamba_exe = executable('sambamba',
      version_info_d_fname],
     dependencies: [zlib,lz4],
     d_args: extra_dflags,
+    link_args: extra_ldflags,
     d_import_dirs: [include_directories('.'),include_directories('BioD')],
     install: true
 )


=====================================
sambamba/main.d
=====================================
@@ -1,7 +1,7 @@
 /*
     This file is part of Sambamba.
     Copyright (C) 2012-2017    Artem Tarasov <lomereiter at gmail.com>
-    Copyright (C) 2012-2020    Pjotr Prins <pjotr.prins at thebird.nl>
+    Copyright (C) 2012-2022    Pjotr Prins <pjotr.prins at thebird.nl>
 
     Sambamba is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -83,7 +83,7 @@ For bug reports and feature requests see
 
 void printVersion() {
     stderr.writeln();
-    stderr.writeln("sambamba " ~ VERSION ~ " by Artem Tarasov and Pjotr Prins (C) 2012-2021");
+    stderr.writeln("sambamba " ~ VERSION ~ " by Artem Tarasov and Pjotr Prins (C) 2012-2022");
     stderr.writeln("    LDC " ~ LDC_VERSION_STRING ~ " / DMD " ~ DMD_VERSION_STRING ~
      " / LLVM" ~ LLVM_VERSION_STRING ~ " / bootstrap " ~ BOOTSTRAP_VERSION_STRING);
     stderr.writeln();


=====================================
test/test_suite.sh
=====================================
@@ -207,11 +207,12 @@ testIssue356(){
     assertEquals 0 $?
 }
 
-testIssue421(){
+# Disable test until we have a single pass, see issue 421
+# testIssue421(){
     # sambamba-markdup: not enough data in stream https://github.com/biod/sambamba/issues/421
-    cat test/issue_204.bam | $sambamba $opts markdup /dev/stdin test.bam 2> /dev/null
-    # assertEquals 0 $?  Disable test until we have a single pass, see issue 421
-}
+    # cat test/issue_204.bam | $sambamba $opts markdup /dev/stdin test.bam 2> /dev/null
+    # assertEquals 0 $?
+# }
 
 testFastaIndex(){
     # check input and output are from here: http://www.htslib.org/doc/faidx.html



View it on GitLab: https://salsa.debian.org/med-team/sambamba/-/commit/dccf44ef695c108ee8e0df3aa25fefe104ac790d

-- 
View it on GitLab: https://salsa.debian.org/med-team/sambamba/-/commit/dccf44ef695c108ee8e0df3aa25fefe104ac790d
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/20230119/78096fc8/attachment-0001.htm>


More information about the debian-med-commit mailing list