Skip to content

Commit

Permalink
Merge pull request #20217 from smoors/20240326170611_new_pr_bwa-mem2221
Browse files Browse the repository at this point in the history
{bio}[intel-compilers/2023.1.0] bwa-mem2 v2.2.1
  • Loading branch information
akesandgren authored Mar 28, 2024
2 parents 26eb8de + d49fff2 commit bb12f5f
Show file tree
Hide file tree
Showing 3 changed files with 138 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
easyblock = 'MakeCp'

name = 'bwa-mem2'
version = '2.2.1'

homepage = 'https://github.com/bwa-mem2/bwa-mem2'
description = """
The tool bwa-mem2 is the next version of the bwa-mem algorithm in bwa. It
produces alignment identical to bwa and is ~1.3-3.1x faster depending on the
use-case, dataset and the running machine."""

toolchain = {'name': 'intel-compilers', 'version': '2023.1.0'}
toolchainopts = {'pic': True, 'oneapi': False}

github_account = 'bwa-mem2'
source_urls = [GITHUB_SOURCE]
sources = ['v%(version)s.tar.gz']
patches = ['%(name)s-%(version)s_use_external_deps.patch']
checksums = [
{'v2.2.1.tar.gz': '36ddd28ce7020d5a036ddeffa00e692296fd40c80380671bd4ea5757bd28841b'},
{'bwa-mem2-2.2.1_use_external_deps.patch': '0a9d7f7b3289029e19cf7dbab1778448097b9e0f92fa41a74a8cf81c9e114967'},
]

dependencies = [('safestringlib', '20240228')]

build_cmd_targets = 'multi'

files_to_copy = [(['bwa-mem2*'], 'bin')]

sanity_check_paths = {
'files': ['bin/%(name)s'],
'dirs': [],
}

sanity_check_commands = ['bwa-mem2 version']

moduleclass = 'bio'
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
Use external safestringlib dependency
Author: Samuel Moors (Vrije Universiteit Brussel)

diff -ur bwa-mem2-2.2.1.orig/Makefile bwa-mem2-2.2.1/Makefile
--- bwa-mem2-2.2.1.orig/Makefile 2021-03-17 06:36:00.000000000 +0100
+++ bwa-mem2-2.2.1/Makefile 2024-03-27 20:54:40.532807000 +0100
@@ -42,14 +42,13 @@
ARCH_FLAGS= -msse -msse2 -msse3 -mssse3 -msse4.1
MEM_FLAGS= -DSAIS=1
CPPFLAGS+= -DENABLE_PREFETCH -DV17=1 -DMATE_SORT=0 $(MEM_FLAGS)
-INCLUDES= -Isrc -Iext/safestringlib/include
-LIBS= -lpthread -lm -lz -L. -lbwa -Lext/safestringlib -lsafestring $(STATIC_GCC)
+INCLUDES= -Isrc
+LIBS= -lpthread -lm -lz -L. -lbwa -lsafestring_shared $(STATIC_GCC)
OBJS= src/fastmap.o src/bwtindex.o src/utils.o src/memcpy_bwamem.o src/kthread.o \
src/kstring.o src/ksw.o src/bntseq.o src/bwamem.o src/profiling.o src/bandedSWA.o \
src/FMI_search.o src/read_index_ele.o src/bwamem_pair.o src/kswv.o src/bwa.o \
src/bwamem_extra.o src/kopen.o
BWA_LIB= libbwa.a
-SAFE_STR_LIB= ext/safestringlib/libsafestring.a

ifeq ($(arch),sse41)
ifeq ($(CXX), icpc)
@@ -101,31 +100,27 @@
all:$(EXE)

multi:
- rm -f src/*.o $(BWA_LIB); cd ext/safestringlib/ && $(MAKE) clean;
+ rm -f src/*.o $(BWA_LIB);
$(MAKE) arch=sse41 EXE=bwa-mem2.sse41 CXX=$(CXX) all
- rm -f src/*.o $(BWA_LIB); cd ext/safestringlib/ && $(MAKE) clean;
+ rm -f src/*.o $(BWA_LIB);
$(MAKE) arch=sse42 EXE=bwa-mem2.sse42 CXX=$(CXX) all
- rm -f src/*.o $(BWA_LIB); cd ext/safestringlib/ && $(MAKE) clean;
+ rm -f src/*.o $(BWA_LIB);
$(MAKE) arch=avx EXE=bwa-mem2.avx CXX=$(CXX) all
- rm -f src/*.o $(BWA_LIB); cd ext/safestringlib/ && $(MAKE) clean;
+ rm -f src/*.o $(BWA_LIB);
$(MAKE) arch=avx2 EXE=bwa-mem2.avx2 CXX=$(CXX) all
- rm -f src/*.o $(BWA_LIB); cd ext/safestringlib/ && $(MAKE) clean;
+ rm -f src/*.o $(BWA_LIB);
$(MAKE) arch=avx512 EXE=bwa-mem2.avx512bw CXX=$(CXX) all
- $(CXX) -Wall -O3 src/runsimd.cpp -Iext/safestringlib/include -Lext/safestringlib/ -lsafestring $(STATIC_GCC) -o bwa-mem2
+ $(CXX) -Wall -O3 src/runsimd.cpp -lsafestring_shared $(STATIC_GCC) -o bwa-mem2


-$(EXE):$(BWA_LIB) $(SAFE_STR_LIB) src/main.o
+$(EXE):$(BWA_LIB) src/main.o
$(CXX) $(CXXFLAGS) $(LDFLAGS) src/main.o $(BWA_LIB) $(LIBS) -o $@

$(BWA_LIB):$(OBJS)
ar rcs $(BWA_LIB) $(OBJS)

-$(SAFE_STR_LIB):
- cd ext/safestringlib/ && $(MAKE) clean && $(MAKE) CC=$(CC) directories libsafestring.a
-
clean:
rm -fr src/*.o $(BWA_LIB) $(EXE) bwa-mem2.sse41 bwa-mem2.sse42 bwa-mem2.avx bwa-mem2.avx2 bwa-mem2.avx512bw
- cd ext/safestringlib/ && $(MAKE) clean

depend:
(LC_ALL=C; export LC_ALL; makedepend -Y -- $(CXXFLAGS) $(CPPFLAGS) -I. -- src/*.cpp)
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
easyblock = 'CMakeMake'

name = 'safestringlib'
version = '20240228'
_commit = 'b006356'

homepage = 'https://github.com/intel/safestringlib'
description = """
The Secure Development Lifecycle (SDL) recommends banning certain C Library
functions because they directly contribute to security vulnerabilities such as
buffer overflows. However routines for the manipulation of strings and memory
buffers are common in software and firmware, and are essential to accomplish
certain programming tasks. Safer replacements for these functions that avoid or
prevent serious security vulnerabilities (e.g. buffer overflows, string format
attacks, conversion overflows/underflows, etc.) are available in the SafeString
Library."""

toolchain = {'name': 'intel-compilers', 'version': '2023.1.0'}

github_account = 'intel'
sources = [{
'source_urls': [GITHUB_SOURCE],
'download_filename': '%s.tar.gz' % _commit,
'filename': SOURCE_TAR_GZ,
}]
checksums = ['ea8e8952d7ade32a19df18af3a645ea54af924ff63a9b1a0b60e0e51be396d31']

builddependencies = [
('CMake', '3.26.3'),
]

postinstallcmds = ['cp libsafestring_static.a %(installdir)s/lib/']

sanity_check_paths = {
'files': ['lib/libsafestring_shared.%s' % SHLIB_EXT, 'lib/libsafestring_static.a'],
'dirs': ['include', 'share/safestring/cmake'],
}

moduleclass = 'lib'

0 comments on commit bb12f5f

Please sign in to comment.