diff --git a/easybuild/easyconfigs/b/bwa-mem2/bwa-mem2-2.2.1-intel-compilers-2023.1.0.eb b/easybuild/easyconfigs/b/bwa-mem2/bwa-mem2-2.2.1-intel-compilers-2023.1.0.eb new file mode 100644 index 00000000000..74c175b5994 --- /dev/null +++ b/easybuild/easyconfigs/b/bwa-mem2/bwa-mem2-2.2.1-intel-compilers-2023.1.0.eb @@ -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' diff --git a/easybuild/easyconfigs/b/bwa-mem2/bwa-mem2-2.2.1_use_external_deps.patch b/easybuild/easyconfigs/b/bwa-mem2/bwa-mem2-2.2.1_use_external_deps.patch new file mode 100644 index 00000000000..e6cbe00c724 --- /dev/null +++ b/easybuild/easyconfigs/b/bwa-mem2/bwa-mem2-2.2.1_use_external_deps.patch @@ -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) diff --git a/easybuild/easyconfigs/s/safestringlib/safestringlib-20240228-intel-compilers-2023.1.0.eb b/easybuild/easyconfigs/s/safestringlib/safestringlib-20240228-intel-compilers-2023.1.0.eb new file mode 100644 index 00000000000..89a13ab50ec --- /dev/null +++ b/easybuild/easyconfigs/s/safestringlib/safestringlib-20240228-intel-compilers-2023.1.0.eb @@ -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'