biology/bolt-lmm: Upgrade to 2.3.4

Remove previously upstreamed patches
New Makefile patch that preserves default behavior and should be palatable
to upstream
This commit is contained in:
Jason W. Bacon 2019-08-13 15:30:21 +00:00
parent 2a2e8da848
commit cdd2c0e9b9
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=508832
7 changed files with 62 additions and 119 deletions

View file

@ -1,8 +1,7 @@
# $FreeBSD$
PORTNAME= bolt-lmm
DISTVERSION= 2.3.2
PORTREVISION= 2
DISTVERSION= 2.3.4
CATEGORIES= biology
MASTER_SITES= https://data.broadinstitute.org/alkesgroup/BOLT-LMM/downloads/
DISTNAME= BOLT-LMM_v${PORTVERSION}
@ -21,11 +20,19 @@ LIB_DEPENDS= libnlopt.so:math/nlopt \
# both merely add a GCC requirement.
USES= compiler:gcc-c++11-lib gmake
BUILD_WRKSRC= ${WRKDIR}/${DISTNAME}/src
INSTALL_WRKSRC= ${WRKDIR}/${DISTNAME}/src
CXXFLAGS_i386= -DUSE_SSE -msse -msse2
CXXFLAGS_amd64= -DUSE_SSE
BUILD_WRKSRC= ${WRKDIR}/${DISTNAME}/src
INSTALL_WRKSRC= ${WRKDIR}/${DISTNAME}/src
CXXFLAGS_i386= -DUSE_SSE -msse -msse2
CXXFLAGS_amd64= -DUSE_SSE
CXXFLAGS_powerpc64= -DNO_WARN_X86_INTRINSICS -mvsx
MAKE_ARGS= BOOST_INSTALL_DIR=${LOCALBASE} \
NLOPT_INSTALL_DIR=${LOCALBASE} \
ZLIB_STATIC_DIR=/usr/lib \
LIBSTDCXX_STATIC_DIR=/usr/lib \
GLIBC_STATIC_DIR=/usr/lib \
SSEFLAGS="" \
MEMCPY="" \
LLAPACK="-lopenblas -lgfortran"
PORTEXAMPLES= *

View file

@ -1,3 +1,3 @@
TIMESTAMP = 1558717810
SHA256 (BOLT-LMM_v2.3.2.tar.gz) = ee505a04138f6c80bfefad4df4b81a2d07e72114dd8329d187c97543f5a0521f
SIZE (BOLT-LMM_v2.3.2.tar.gz) = 335057533
TIMESTAMP = 1565528176
SHA256 (BOLT-LMM_v2.3.4.tar.gz) = 2477faff5028ff8fee5d8f4e6b0cab6d0752b268fd508fe64530a66807d9b0c0
SIZE (BOLT-LMM_v2.3.4.tar.gz) = 335128004

View file

@ -1,13 +0,0 @@
--- src/Jackknife.cpp.orig 2019-08-03 00:15:27 UTC
+++ src/Jackknife.cpp
@@ -28,8 +28,8 @@ namespace Jackknife {
using std::make_pair;
double stddev(const vector <double> &x, int n) {
- for (int i = 0; i < n; i++) if (isnan(x[i])) return NAN;
- for (int i = 0; i < n; i++) if (isinf(x[i])) return INFINITY;
+ for (int i = 0; i < n; i++) if (std::isnan(x[i])) return NAN;
+ for (int i = 0; i < n; i++) if (std::isinf(x[i])) return INFINITY;
double s = 0.0, s2 = 0.0;
for (int i = 0; i < n; i++) {
s += x[i];

View file

@ -1,24 +0,0 @@
--- src/LDscoreCalibration.cpp.orig 2019-08-03 00:18:05 UTC
+++ src/LDscoreCalibration.cpp
@@ -201,8 +201,8 @@ namespace LDscoreCalibration {
snps[m].MAF >= minMAF && // MAF threshold
statsRef[m] > 0 && // ref stat available
statsCur[m] > 0 && // cur stat available
- !isnan(LDscores[m]) && // LD Score available
- !isnan(LDscoresChip[m]); // LD Score weight available
+ !std::isnan(LDscores[m]) && // LD Score available
+ !std::isnan(LDscoresChip[m]); // LD Score weight available
// perform outlier removal
double outlierChisqThresh = std::max(MIN_OUTLIER_CHISQ_THRESH, N * outlierVarFracThresh);
@@ -256,8 +256,8 @@ namespace LDscoreCalibration {
maskSnps[m] =
snps[m].MAF >= minMAF && // MAF threshold
stats[m] > 0 && // stat available
- !isnan(LDscores[m]) && // LD Score available
- !isnan(LDscoresChip[m]); // LD Score weight available
+ !std::isnan(LDscores[m]) && // LD Score available
+ !std::isnan(LDscoresChip[m]); // LD Score weight available
// perform outlier removal
double outlierChisqThresh = std::max(MIN_OUTLIER_CHISQ_THRESH, N * outlierVarFracThresh);

View file

@ -1,21 +1,27 @@
--- src/Makefile.orig 2018-03-13 02:44:52 UTC
--- src/Makefile.orig 2019-08-11 03:05:04 UTC
+++ src/Makefile
@@ -1,29 +1,28 @@
@@ -1,31 +1,35 @@
+
### modify these paths to local Boost and NLopt install directories
-BOOST_INSTALL_DIR = /home/pl88/boost_1_58_0/install
-NLOPT_INSTALL_DIR = /n/groups/price/poru/HSPH_SVN/src/BOLT-LMM/nlopt-2.4.2
+BOOST_INSTALL_DIR ?= ${LOCALBASE}
+# Redundant on FreeBSD NLOPT_INSTALL_DIR = /n/groups/price/poru/HSPH_SVN/src/BOLT-LMM/nlopt-2.4.2
+### by setting them in the environment or make command line args
+### which will override variables set with ?=
INTELROOT = /n/groups/price/poru/external_software/intel_mkl_2018
MKLROOT = ${INTELROOT}/mkl
-INTELROOT = /n/groups/price/poru/external_software/intel_mkl_2019u4
-MKLROOT = ${INTELROOT}/mkl
-ZLIB_STATIC_DIR = /n/groups/price/poru/external_software/zlib/zlib-1.2.11 # probably unnecessary on most systems
-LIBSTDCXX_STATIC_DIR = /n/groups/price/poru/external_software/libstdc++/usr/lib/gcc/x86_64-redhat-linux/4.8.5/
-GLIBC_STATIC_DIR = /home/pl88/glibc-static/usr/lib64
+ZLIB_STATIC_DIR ?= /usr/lib
+LIBSTDCXX_STATIC_DIR ?= /usr/lib
+GLIBC_STATIC_DIR ?= /usr/lib
+BOOST_INSTALL_DIR ?= /home/pl88/boost_1_58_0/install
+NLOPT_INSTALL_DIR ?= /n/groups/price/poru/HSPH_SVN/src/BOLT-LMM/nlopt-2.4.2
+INTELROOT ?= /n/groups/price/poru/external_software/intel_mkl_2019u4
+MKLROOT ?= ${INTELROOT}/mkl
+ZLIB_STATIC_DIR ?= /n/groups/price/poru/external_software/zlib/zlib-1.2.11 # probably unnecessary on most systems
+LIBSTDCXX_STATIC_DIR ?= /n/groups/price/poru/external_software/libstdc++/usr/lib/gcc/x86_64-redhat-linux/4.8.5/
+GLIBC_STATIC_DIR ?= /home/pl88/glibc-static/usr/lib64
+
ifeq ($(strip ${linking}),)
linking = dynamic
endif
@ -36,33 +42,25 @@
-CFLAGS += -msse -msse2
-CFLAGS += -DUSE_SSE -DMEASURE_DGEMM -DVERBOSE
-CFLAGS += -Wall
+CXXFLAGS += -DMEASURE_DGEMM -DVERBOSE
+CXXFLAGS += -Wall
+# Set SSEFLAGS to empty string in the env or make command line if building on
+# systems with no SSE such as PowerPC
+SSEFLAGS ?= -msse -msse2 -DUSE_SSE
+CXXFLAGS += ${SSEFLAGS} -DMEASURE_DGEMM -DVERBOSE -Wall
-
# add Boost include and lib paths
@@ -38,9 +37,9 @@ endif
# add NLopt include and lib paths
ifneq ($(strip ${NLOPT_INSTALL_DIR}),)
CPATHS += -I${NLOPT_INSTALL_DIR}/api
- LPATHS += -L${NLOPT_INSTALL_DIR}/.libs
+ LPATHS += -L${NLOPT_INSTALL_DIR}/libs
ifeq (${linking},dynamic)
- LPATHS += -Wl,-rpath,${NLOPT_INSTALL_DIR}/.libs
+ LPATHS += -Wl,-rpath,${NLOPT_INSTALL_DIR}/libs
endif
endif
@@ -52,7 +51,7 @@ ifneq ($(strip ${ZLIB_STATIC_DIR}),)
ifneq ($(strip ${BOOST_INSTALL_DIR}),)
CPATHS += -I${BOOST_INSTALL_DIR}/include
@@ -52,7 +56,7 @@ ifneq ($(strip ${ZLIB_STATIC_DIR}),)
endif
# add MKL paths (if not compiling with g++, i.e., compiling with icpc)
-ifneq (${CC},g++)
+ifneq (${CXX},${CXX})
+ifeq (${CXX},icpc)
CPATHS += -I${MKLROOT}/include
ifeq (${linking},dynamic)
LPATHS += -L${MKLROOT}/lib/intel64 -Wl,-rpath,${MKLROOT}/lib/intel64 # for libmkl*
@@ -61,28 +60,28 @@ ifneq (${CC},g++)
ifeq (${linking},static)
LPATHS += -L${INTELROOT}/lib/intel64 '-Wl,-rpath,$$ORIGIN/lib' # for libiomp5.so (now packaged with binary)
@@ -65,34 +69,34 @@ ifneq (${CC},g++)
endif
# add flags for static linking; build LAPACK/MKL component of link line
@ -70,10 +68,10 @@
- CFLAGS += -fopenmp
- LFLAGS += -fopenmp
- LLAPACK = -llapack -lgfortran
+ifeq (${CXX},${CXX})
+ifneq (${CXX},icpc)
+ CXXFLAGS += -fopenmp
+ LDFLAGS += -fopenmp
+ LLAPACK = -lopenblas -lgfortran
+ LLAPACK ?= -llapack -lgfortran
ifeq (${linking},static)
- LFLAGS += -static
+ LDFLAGS += -static
@ -92,39 +90,47 @@
+ CXXFLAGS += -qopenmp
+ LDFLAGS += -qopenmp
+ CXXFLAGS += -Wunused-variable -Wpointer-arith -Wuninitialized -Wreturn-type -Wcheck -Wshadow
LIOMP5 = -liomp5
LDL = -ldl
ifeq (${linking},static)
- LFLAGS += -static
+ LDFLAGS += -static
LPATHS += -L${GLIBC_STATIC_DIR} -L${ZLIB_STATIC_DIR}
LLAPACK = -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_core.a ${MKLROOT}/lib/intel64/libmkl_intel_thread.a -Wl,--end-group
LLAPACK = -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_intel_thread.a ${MKLROOT}/lib/intel64/libmkl_core.a -Wl,--end-group
else ifeq (${linking},static-except-glibc)
- LFLAGS += -static-intel -static-libstdc++ -static-libgcc
+ LDFLAGS += -static-intel -static-libstdc++ -static-libgcc
LPATHS += -L${ZLIB_STATIC_DIR}
LLAPACK = -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_core.a ${MKLROOT}/lib/intel64/libmkl_intel_thread.a -Wl,--end-group
LLAPACK = -Wl,--start-group ${MKLROOT}/lib/intel64/libmkl_intel_lp64.a ${MKLROOT}/lib/intel64/libmkl_intel_thread.a ${MKLROOT}/lib/intel64/libmkl_core.a -Wl,--end-group
else ifeq (${linking},static-except-glibc-intel)
- LFLAGS += -static-libstdc++ -static-libgcc
+ LDFLAGS += -static-libstdc++ -static-libgcc
LPATHS += -L${ZLIB_STATIC_DIR}
LLAPACK = -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core
else
@@ -95,7 +94,8 @@ else
@@ -105,7 +109,7 @@ else
endif
# build link line (minus flags)
-LLIBS = -lboost_program_options -lboost_iostreams -lz -lnlopt
+LLIBS = -lnlopt -lboost_program_options -lboost_iostreams -lz
+# LLIBS = /usr/local/lib/libboost_program_options.a -lnlopt -lboost_iostreams -lz
ifeq (${linking},static-except-glibc)
L = -L${LIBSTDCXX_STATIC_DIR} ${LPATHS} -Wl,--wrap=memcpy -Wl,-Bstatic ${LLIBS} ${LLAPACK} -Wl,-Bdynamic -lpthread -lm
else
@@ -105,16 +105,18 @@ endif
L = -L${LIBSTDCXX_STATIC_DIR} ${LPATHS} -Wl,--wrap=memcpy -Wl,-Bstatic ${LLIBS} ${LLAPACK} -Wl,-Bdynamic ${LIOMP5} -lpthread -lm ${LDL}
else ifeq (${linking},static-except-glibc-intel)
@@ -117,16 +121,20 @@ endif
T = bolt
-O = Bolt.o BoltParams.o BoltParEstCV.o BoltReml.o CovariateBasis.o DataMatrix.o FileUtils.o Jackknife.o LDscoreCalibration.o MapInterpolater.o MatrixUtils.o MemoryUtils.o NonlinearOptMulti.o NumericUtils.o PhenoBuilder.o RestrictSnpSet.o SnpData.o SnpInfo.o SpectrumTools.o StatsUtils.o StringUtils.o Timer.o memcpy.o
+O = Bolt.o BoltParams.o BoltParEstCV.o BoltReml.o CovariateBasis.o DataMatrix.o FileUtils.o Jackknife.o LDscoreCalibration.o MapInterpolater.o MatrixUtils.o MemoryUtils.o NonlinearOptMulti.o NumericUtils.o PhenoBuilder.o RestrictSnpSet.o SnpData.o SnpInfo.o SpectrumTools.o StatsUtils.o StringUtils.o Timer.o
+# Set to empty string in env or make command line to use system memcpy
+MEMCPY ?= memcpy.o
+O = Bolt.o BoltParams.o BoltParEstCV.o BoltReml.o CovariateBasis.o DataMatrix.o FileUtils.o Jackknife.o LDscoreCalibration.o MapInterpolater.o MatrixUtils.o MemoryUtils.o NonlinearOptMulti.o NumericUtils.o PhenoBuilder.o RestrictSnpSet.o SnpData.o SnpInfo.o SpectrumTools.o StatsUtils.o StringUtils.o Timer.o ${MEMCPY}
OMAIN = BoltMain.o $O
-.PHONY: clean
+.PHONY: clean all
+all: $T
+all: ${T}
+
%.o: %.cpp
- ${CC} ${CFLAGS} ${CPATHS} -o $@ -c $<

View file

@ -1,20 +0,0 @@
--- src/SnpData.cpp.orig 2019-08-03 00:23:17 UTC
+++ src/SnpData.cpp
@@ -996,7 +996,7 @@ namespace LMM {
for (int w = 0; w < W; w++)
if (isProximal(m, mp, windows[w].first, windows[w].second)) {
foundProximal = true;
- if (!isnan(r2)) {
+ if (!std::isnan(r2)) {
for (int a = 0; a < A; a++) {
double weight = pow((snps[mp].MAF * (1-snps[mp].MAF)), alphaMAFdeps[a]);
LDscores[w*A+a] += weight * r2;
@@ -1048,7 +1048,7 @@ namespace LMM {
if (snps[mp].chrom != snps[m].chrom) {
fillSnpRow(&mpRow[0], mp);
double r2 = compute_r2(&mRow[0], &mpRow[0], Nstride);
- if (!isnan(r2)) {
+ if (!std::isnan(r2)) {
totOffChrom_r2s += r2;
numOffChrom_r2s++;
}

View file

@ -1,13 +0,0 @@
--- src/StatsUtils.cpp.orig 2019-08-03 00:24:37 UTC
+++ src/StatsUtils.cpp
@@ -33,8 +33,8 @@ namespace StatsUtils {
if (n <= 1) return NAN;
double s = 0.0, s2 = 0.0;
for (uint64 i = 0; i < n; i++) {
- if (isnan(x[i])) return NAN;
- if (isinf(x[i])) return INFINITY;
+ if (std::isnan(x[i])) return NAN;
+ if (std::isinf(x[i])) return INFINITY;
s += x[i];
s2 += x[i]*x[i];
}