Index: head/biology/bolt-lmm/Makefile =================================================================== --- head/biology/bolt-lmm/Makefile (revision 508831) +++ head/biology/bolt-lmm/Makefile (revision 508832) @@ -1,46 +1,53 @@ # $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} MAINTAINER= jwb@FreeBSD.org COMMENT= Mixed model association testing and variance component analysis LICENSE= GPLv3 LICENSE_FILE= ${WRKSRC}/license.txt LIB_DEPENDS= libnlopt.so:math/nlopt \ libopenblas.so:math/openblas \ libboost_program_options.so:devel/boost-libs # gcc-c++11-lib needed to link with boost. Also requires compiler:openmp, but # 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= * OPTIONS_DEFINE= EXAMPLES pre-configure: @${RM} ${WRKSRC}/example/*.orig ${WRKSRC}/bolt @${REINPLACE_CMD} -e 's|tables/|${DATADIR}/tables/|g' \ ${BUILD_WRKSRC}/BoltParams.cpp @${REINPLACE_CMD} -e 's|../tables/|${DATADIR}/tables/|g' \ ${WRKSRC}/example/run_example.sh do-install: ${INSTALL_PROGRAM} ${INSTALL_WRKSRC}/bolt ${STAGEDIR}${PREFIX}/bin (cd ${WRKSRC}/example && ${COPYTREE_SHARE} . ${STAGEDIR}${EXAMPLESDIR}) (cd ${WRKSRC} && ${COPYTREE_SHARE} tables ${STAGEDIR}${DATADIR}) .include Index: head/biology/bolt-lmm/distinfo =================================================================== --- head/biology/bolt-lmm/distinfo (revision 508831) +++ head/biology/bolt-lmm/distinfo (revision 508832) @@ -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 Index: head/biology/bolt-lmm/files/patch-src_StatsUtils.cpp =================================================================== --- head/biology/bolt-lmm/files/patch-src_StatsUtils.cpp (revision 508831) +++ head/biology/bolt-lmm/files/patch-src_StatsUtils.cpp (nonexistent) @@ -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]; - } Property changes on: head/biology/bolt-lmm/files/patch-src_StatsUtils.cpp ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/biology/bolt-lmm/files/patch-src_LDscoreCalibration.cpp =================================================================== --- head/biology/bolt-lmm/files/patch-src_LDscoreCalibration.cpp (revision 508831) +++ head/biology/bolt-lmm/files/patch-src_LDscoreCalibration.cpp (nonexistent) @@ -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); Property changes on: head/biology/bolt-lmm/files/patch-src_LDscoreCalibration.cpp ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/biology/bolt-lmm/files/patch-src_Jackknife.cpp =================================================================== --- head/biology/bolt-lmm/files/patch-src_Jackknife.cpp (revision 508831) +++ head/biology/bolt-lmm/files/patch-src_Jackknife.cpp (nonexistent) @@ -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 &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]; Property changes on: head/biology/bolt-lmm/files/patch-src_Jackknife.cpp ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/biology/bolt-lmm/files/patch-src_SnpData.cpp =================================================================== --- head/biology/bolt-lmm/files/patch-src_SnpData.cpp (revision 508831) +++ head/biology/bolt-lmm/files/patch-src_SnpData.cpp (nonexistent) @@ -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++; - } Property changes on: head/biology/bolt-lmm/files/patch-src_SnpData.cpp ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/biology/bolt-lmm/files/patch-src_Makefile =================================================================== --- head/biology/bolt-lmm/files/patch-src_Makefile (revision 508831) +++ head/biology/bolt-lmm/files/patch-src_Makefile (revision 508832) @@ -1,138 +1,144 @@ ---- 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 -# CC = g++ -CC = icpc +# CXX = g++ +CXX ?= icpc ifeq (${debug},true) - CFLAGS += -g + CXXFLAGS += -g else - CFLAGS += -O2 + CXXFLAGS += -O2 endif -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 + ifneq ($(strip ${BOOST_INSTALL_DIR}),) + CPATHS += -I${BOOST_INSTALL_DIR}/include +@@ -52,7 +56,7 @@ ifneq ($(strip ${ZLIB_STATIC_DIR}),) endif -@@ -52,7 +51,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 -ifeq (${CC},g++) - 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 LPATHS += -L${GLIBC_STATIC_DIR} -L${ZLIB_STATIC_DIR} else ifeq (${linking},static-except-glibc) - LFLAGS += -static-libgcc -static-libstdc++ + LDFLAGS += -static-libgcc -static-libstdc++ LPATHS += -L${ZLIB_STATIC_DIR} endif else - CFLAGS += -DUSE_MKL #-DUSE_MKL_MALLOC - CFLAGS += -qopenmp - LFLAGS += -qopenmp - CFLAGS += -Wunused-variable -Wpointer-arith -Wuninitialized -Wreturn-type -Wcheck -Wshadow + CXXFLAGS += -DUSE_MKL #-DUSE_MKL_MALLOC + 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 $< + ${CXX} ${CXXFLAGS} ${CPATHS} -o $@ -c $< $T: ${OMAIN} - ${CC} ${LFLAGS} -o $T ${OMAIN} $L + ${CXX} ${LDFLAGS} -o $T ${OMAIN} $L clean: rm -f *.o