diff --git a/gnu/local.mk b/gnu/local.mk index e4f596f0bd..feadac4bad 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1255,6 +1255,7 @@ dist_patch_DATA = \ %D%/packages/patches/hedgewars-network-bsd.patch \ %D%/packages/patches/helm-fix-gcc-9-build.patch \ %D%/packages/patches/http-parser-CVE-2020-8287.patch \ + %D%/packages/patches/htslib-for-stringtie.patch \ %D%/packages/patches/hubbub-sort-entities.patch \ %D%/packages/patches/hueplusplus-mbedtls.patch \ %D%/packages/patches/hurd-cross.patch \ diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 487c43a2da..2b9a27d44b 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -4884,6 +4884,18 @@ (define htslib-for-samtools-1.2 (native-inputs `(("perl" ,perl))))) +(define htslib-for-stringtie + (package + (inherit htslib) + (source (origin + (inherit (package-source htslib)) + (patches + (search-patches "htslib-for-stringtie.patch")))) + (arguments + `(#:configure-flags '("--with-libdeflate"))) + (inputs + (list bzip2 libdeflate openssl)))) + (define-public idr (package (name "idr") diff --git a/gnu/packages/patches/htslib-for-stringtie.patch b/gnu/packages/patches/htslib-for-stringtie.patch new file mode 100644 index 0000000000..3e6cd5bb63 --- /dev/null +++ b/gnu/packages/patches/htslib-for-stringtie.patch @@ -0,0 +1,26 @@ +These changes are commits d7e357946ead219b81cc1becbe0de8a99d96ca84 and +8ed0daa39bc662defa99507f926815431056543a in +https://github.com/samtools/htscodecs. The stringtie package expects these +changes to have been applied. + +diff -ru htslib-1.12/htscodecs/htscodecs/tokenise_name3.c stringtie-2.2.0/htslib/htscodecs/htscodecs/tokenise_name3.c +--- a/htscodecs/htscodecs/tokenise_name3.c 2021-02-22 13:07:06.000000000 +0100 ++++ b/htscodecs/htscodecs/tokenise_name3.c 2021-12-04 19:27:39.000000000 +0100 +@@ -211,7 +211,7 @@ + if (!ctx) return NULL; + ctx->max_names = max_names; + pthread_setspecific(tok_key, ctx); +- } else if (ctx->max_names < max_names) { ++ } else if (ctx->max_names < max_names+1) { + ctx = realloc(ctx, sizeof(*ctx) + ++max_names*sizeof(*ctx->lc)); + if (!ctx) return NULL; + ctx->max_names = max_names; +@@ -1058,6 +1058,8 @@ + tok = decode_token_type(ctx, ntok); + //fprintf(stderr, "Tok %d = %d\n", ntok, tok); + ++ ctx->lc[cnum].last_ntok = 0; ++ + switch (tok) { + case N_CHAR: + if (len+1 >= name_len) return -1; \ No newline at end of file