aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason W. Bacon <jwb@FreeBSD.org>2023-10-14 12:52:46 +0000
committerJason W. Bacon <jwb@FreeBSD.org>2023-10-14 12:52:46 +0000
commit9d8c5cb3ebf27b3f044cc0755dcc71727e1261be (patch)
tree8aa7ea0ae4bf0c73ebb2ecdcda20c714d63eb9ea
parent8cab786461169648e8f3059386489966f79633e6 (diff)
downloadports-9d8c5cb3ebf27b3f044cc0755dcc71727e1261be.tar.gz
ports-9d8c5cb3ebf27b3f044cc0755dcc71727e1261be.zip
biology/gcta: Update to 1.94.1
Too many changes since v1.26 to list here Changes: https://yanglab.westlake.edu.cn/software/gcta/#Download Reported by: pkg-fallout
-rw-r--r--biology/gcta/Makefile42
-rw-r--r--biology/gcta/distinfo10
-rw-r--r--biology/gcta/files/patch-CMakeLists.txt98
-rw-r--r--biology/gcta/files/patch-Makefile59
-rw-r--r--biology/gcta/files/patch-eigen__func.h15
-rw-r--r--biology/gcta/files/patch-gcta.h29
-rw-r--r--biology/gcta/files/patch-include_cpu.h18
-rw-r--r--biology/gcta/files/patch-include_cpu__f77blas.h18
-rw-r--r--biology/gcta/files/patch-ld.cpp13
-rw-r--r--biology/gcta/files/patch-main_option.cpp28
-rw-r--r--biology/gcta/files/patch-mkl.cpp56
-rw-r--r--biology/gcta/files/patch-src_Geno.cpp11
-rw-r--r--biology/gcta/files/patch-src_main.cpp11
-rw-r--r--biology/gcta/pkg-descr10
14 files changed, 218 insertions, 200 deletions
diff --git a/biology/gcta/Makefile b/biology/gcta/Makefile
index f3ae8d589b4a..5599f5c22fee 100644
--- a/biology/gcta/Makefile
+++ b/biology/gcta/Makefile
@@ -1,34 +1,40 @@
PORTNAME= gcta
-DISTVERSION= 1.26.0
-PORTREVISION= 4
+DISTVERSIONPREFIX= v
+DISTVERSION= 1.94.1
CATEGORIES= biology
-MASTER_SITES= https://cnsgenomics.com/software/gcta/pre_gcta/:main \
- https://gitlab.com/libeigen/eigen/-/archive/${EIGEN_VERSION}/:eigen
-DISTFILES= ${PORTNAME}_${DISTVERSION}_src${EXTRACT_SUFX}:main \
- eigen-${EIGEN_VERSION}.tar.gz:eigen
MAINTAINER= jwb@FreeBSD.org
COMMENT= Genome-wide Complex Trait Analysis
WWW= https://cnsgenomics.com/software/gcta/index.html
LICENSE= GPLv3
-LICENSE_FILE= ${WRKSRC}/GNU_General_Public_License_v3.txt
+LICENSE_FILE= ${WRKSRC}/LICENSE
-LIB_DEPENDS= libopenblas.so:math/openblas
+BUILD_DEPENDS= boost-libs>0:devel/boost-libs \
+ spectra>0:math/spectra
+LIB_DEPENDS= libgsl.so:math/gsl \
+ libopenblas.so:math/openblas \
+ libsqlite3.so:databases/sqlite3 \
+ libzstd.so:archivers/zstd
-USES= compiler:c++11-lang dos2unix gmake localbase:ldflags zip
+USES= cmake eigen:3 localbase:ldflags
+USE_GITHUB= yes
-CXXFLAGS+= -I${WRKDIR}/eigen-${EIGEN_VERSION} -fopenmp
-LDFLAGS+= -lopenblas
+GH_ACCOUNT= jianyangqt
+GH_TUPLE= zhilizheng:plink-ng:3744540:plink/submods/plink-ng
-INSTALL_TARGET= install-strip
-PLIST_FILES= bin/gcta
+CONFIGURE_ENV+= EIGEN3_INCLUDE_DIR=${LOCALBASE}/include/eigen3 \
+ BOOST_INCLUDE_DIR=${LOCALBASE}/include/boost \
+ OPENBLAS=${LOCALBASE} \
+ SPECTRA_INCLUDE_DIR=${LOCALBASE}/include/Spectra
-EIGEN_VERSION= 3.3.9
+LDFLAGS+= -fopenmp
-do-extract:
- @${UNZIP_NATIVE_CMD} -d ${WRKSRC} ${DISTDIR}/${PORTNAME}_${DISTVERSION}_src${EXTRACT_SUFX}
- @cd ${WRKDIR} && \
- ${TAR} xzf ${DISTDIR}/eigen-${EIGEN_VERSION}.tar.gz
+PLIST_FILES= bin/gcta64 bin/gcta
+
+do-install:
+ @${MKDIR} ${STAGEDIR}${PREFIX}/bin
+ ${INSTALL_PROGRAM} ${BUILD_WRKSRC}/gcta64 ${STAGEDIR}${PREFIX}/bin
+ ${RLN} ${STAGEDIR}${PREFIX}/bin/gcta64 ${STAGEDIR}${PREFIX}/bin/gcta
.include <bsd.port.mk>
diff --git a/biology/gcta/distinfo b/biology/gcta/distinfo
index 91c72879eac1..9bda3ffe28e6 100644
--- a/biology/gcta/distinfo
+++ b/biology/gcta/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1657137653
-SHA256 (gcta_1.26.0_src.zip) = 554c48f421c93cbaf64b1c300ca507d8e7a56086b5c7d857227fbd4048f42acf
-SIZE (gcta_1.26.0_src.zip) = 198045
-SHA256 (eigen-3.3.9.tar.gz) = 7985975b787340124786f092b3a07d594b2e9cd53bbfe5f3d9b1daee7d55f56f
-SIZE (eigen-3.3.9.tar.gz) = 2142379
+TIMESTAMP = 1697202096
+SHA256 (jianyangqt-gcta-v1.94.1_GH0.tar.gz) = d38841587bef016d7885cc1b3287d7ed0373bd370674130e814e2c5e6a90bfbf
+SIZE (jianyangqt-gcta-v1.94.1_GH0.tar.gz) = 1101577
+SHA256 (zhilizheng-plink-ng-3744540_GH0.tar.gz) = dfa4879bc6bcbe24411451748c7c5dc803e42cafa55b008134f0d123cd933222
+SIZE (zhilizheng-plink-ng-3744540_GH0.tar.gz) = 3222588
diff --git a/biology/gcta/files/patch-CMakeLists.txt b/biology/gcta/files/patch-CMakeLists.txt
new file mode 100644
index 000000000000..886a9591c652
--- /dev/null
+++ b/biology/gcta/files/patch-CMakeLists.txt
@@ -0,0 +1,98 @@
+--- CMakeLists.txt.orig 2022-08-03 06:01:52 UTC
++++ CMakeLists.txt
+@@ -3,7 +3,7 @@ SET(CMAKE_INCLUDE_CURRENT_DIR ON)
+ SET(PROJECT_NAME_STR GCTA2)
+ PROJECT(${PROJECT_NAME_STR} C CXX)
+ SET(CMAKE_INCLUDE_CURRENT_DIR ON)
+-SET(CMAKE_CXX_STANDARD 11)
++SET(CMAKE_CXX_STANDARD 14)
+ SET(CMAKE_C_STANDARD 11)
+
+ # get system architecture
+@@ -16,8 +16,8 @@ endif()
+ MESSAGE(FATAL_ERROR "Use the Visual Studio project file which located in gcta_win64 directory")
+ endif()
+
+-if("${CMAKE_SYSTEM_NAME}" MATCHES "Linux" OR "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
+- MESSAGE("Linux and Mac are supported.")
++if("${CMAKE_SYSTEM_NAME}" MATCHES "FreeBSD" OR "${CMAKE_SYSTEM_NAME}" MATCHES "Linux" OR "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin")
++ MESSAGE("FreeBSD, Linux and Mac are supported.")
+ else()
+ MESSAGE("Your system: ${CMAKE_SYSTEM_NAME}")
+ MESSAGE(FATAL_ERROR "Only Linux and Mac are currently supported.")
+@@ -43,18 +43,18 @@ INCLUDE_DIRECTORIES("${EIGEN3_INCLUDE_DIR}")
+ ENDIF()
+ INCLUDE_DIRECTORIES("${EIGEN3_INCLUDE_DIR}")
+
+-SET(SPECTRA_LIB "$ENV{SPECTRA_LIB}")
+-IF(NOT SPECTRA_LIB)
+- MESSAGE(FATAL_ERROR "Specify environment variable SPECTRA_LIB to the location of Spectra package")
++SET(SPECTRA_INCLUDE_DIR "$ENV{SPECTRA_INCLUDE_DIR}")
++IF(NOT SPECTRA_INCLUDE_DIR)
++ MESSAGE(FATAL_ERROR "Specify environment variable SPECTRA_INCLUDE_DIR to the location of Spectra package")
+ ENDIF()
+-INCLUDE_DIRECTORIES("${SPECTRA_LIB}")
++INCLUDE_DIRECTORIES("${SPECTRA_INCLUDE_DIR}")
+
+
+-SET(BOOST_LIB "$ENV{BOOST_LIB}")
+-IF(NOT BOOST_LIB)
+- MESSAGE(FATAL_ERROR "Specify environment variable BOOST_LIB to the location of BOOST library")
++SET(BOOST_INCLUDE_DIR "$ENV{BOOST_INCLUDE_DIR}")
++IF(NOT BOOST_INCLUDE_DIR)
++ MESSAGE(FATAL_ERROR "Specify environment variable BOOST_INCLUDE_DIR to the location of BOOST headers")
+ ENDIF()
+-INCLUDE_DIRECTORIES("${BOOST_LIB}")
++INCLUDE_DIRECTORIES("${BOOST_INCLUDE_DIR}")
+
+
+ # PLINK2.0 pgen library;
+@@ -63,13 +63,28 @@ message(STATUS "ARCHITECTURE:${CMAKE_LIBRARY_ARCHITECT
+
+
+ message(STATUS "ARCHITECTURE:${CMAKE_LIBRARY_ARCHITECTURE}")
+-if(CMAKE_LIBRARY_ARCHITECTURE STREQUAL "aarch64")
++if("${CMAKE_SYSTEM_NAME}" MATCHES "FreeBSD")
+ SET(OPENBLAS "$ENV{OPENBLAS}")
+ IF(NOT OPENBLAS)
+ MESSAGE(FATAL_ERROR "Specify environment variable OPENBLAS to the location of OPENBLAS package")
+ ENDIF()
+ INCLUDE_DIRECTORIES("${OPENBLAS}/include")
+
++ find_library(lib_openblas NAMES openblas PATHS "${OPENBLAS}" "${LOCALBASE}/lib")
++ set(BLAS_LIB ${lib_openblas})
++
++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
++ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG")
++ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g")
++ add_compile_options(-fopenmp)
++
++elseif(CMAKE_LIBRARY_ARCHITECTURE STREQUAL "aarch64")
++ SET(OPENBLAS "$ENV{OPENBLAS}")
++ IF(NOT OPENBLAS)
++ MESSAGE(FATAL_ERROR "Specify environment variable OPENBLAS to the location of OPENBLAS package")
++ ENDIF()
++ INCLUDE_DIRECTORIES("${OPENBLAS}/include")
++
+ find_library(lib_openblas NAMES openblas PATHS "${OPENBLAS}" "${OPENBLAS}/lib")
+ set(BLAS_LIB ${lib_openblas})
+
+@@ -169,6 +184,8 @@ if(APPLE)
+ if(APPLE)
+ link_directories(${MKLROOT}/lib)
+ link_directories(/usr/local/lib)
++elseif("${CMAKE_SYSTEM_NAME}" MATCHES "FreeBSD")
++ link_directories(${LOCALBASE}/lib)
+ else(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ #linux
+ link_directories(${MKLROOT}/../../../lib/intel64)
+@@ -179,6 +196,9 @@ if(APPLE)
+ if(APPLE)
+ # iomp5
+ target_link_libraries(gcta64 ${libs_list} Pgenlib mainV1 z ${BLAS_LIB} sqlite3 zstd_s omp pthread m dl )
++elseif("${CMAKE_SYSTEM_NAME}" MATCHES "FreeBSD")
++ # FIXME: Clean this up
++ target_link_libraries(gcta64 mainV1 ${libs_list} Pgenlib gsl z sqlite3 zstd -Wl,--start-group ${BLAS_LIB} -Wl,--end-group -Wl,--whole-archive -lpthread -Wl,--no-whole-archive m dl)
+ else()
+ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ # error keeps only
diff --git a/biology/gcta/files/patch-Makefile b/biology/gcta/files/patch-Makefile
deleted file mode 100644
index b4844e0f9cee..000000000000
--- a/biology/gcta/files/patch-Makefile
+++ /dev/null
@@ -1,59 +0,0 @@
---- Makefile.orig 2020-04-15 01:43:44 UTC
-+++ Makefile
-@@ -6,21 +6,27 @@
- # ---------------------------------------------------------------------
-
- # Directory of the target
--OUTPUT = gcta64
-+OUTPUT = gcta
-
- # Compiler
--CXX = g++
-+CXX ?= g++
-
- # EIGEN library
--EIGEN_PATH = ../../../Lib/eigen
-+EIGEN_PATH ?= ../../../Lib/eigen
-
- # Intel MKL library
--MKL_PATH = /opt/intel/mkl
-+MKL_PATH ?= /opt/intel/mkl
-
- # Compiler flags
--CXXFLAGS = -w -O3 -m64 -static -fopenmp -I $(EIGEN_PATH) -DEIGEN_NO_DEBUG -I $(MKL_PATH)/include
--LIB += -static -lz -Wl,--start-group $(MKL_PATH)/lib/intel64/libmkl_intel_lp64.a $(MKL_PATH)/lib/intel64/libmkl_gnu_thread.a $(MKL_PATH)/lib/intel64/libmkl_core.a -Wl,--end-group -lpthread -lm -ldl
-+CXXFLAGS ?= -w -O3 -m64 -static -fopenmp -I $(EIGEN_PATH) -DEIGEN_NO_DEBUG -I $(MKL_PATH)/include
-+LDFLAGS += -lz -Wl,--start-group -lpthread -lm -ldl
-
-+MKDIR ?= mkdir
-+DESTDIR ?= .
-+PREFIX ?= /usr/local
-+INSTALL ?= install
-+STRIP ?= strip
-+
- HDR += CommFunc.h \
- cdflib.h \
- dcdflib.h \
-@@ -58,7 +64,7 @@ OBJ = $(SRC:.cpp=.o)
- all : $(OUTPUT)
-
- $(OUTPUT) :
-- $(CXX) $(CXXFLAGS) -o $(OUTPUT) $(OBJ) $(LIB)
-+ $(CXX) $(CXXFLAGS) -o $(OUTPUT) $(OBJ) $(LDFLAGS)
-
- $(OBJ) : $(HDR)
-
-@@ -69,6 +75,13 @@ $(OBJ) : $(HDR)
- $(OUTPUT) : $(OBJ)
-
- FORCE:
-+
-+install:
-+ ${MKDIR} -p ${DESTDIR}${PREFIX}/bin
-+ ${INSTALL} -c ${OUTPUT} ${DESTDIR}${PREFIX}/bin
-+
-+install-strip: install
-+ ${STRIP} ${DESTDIR}${PREFIX}/bin/${OUTPUT}
-
- clean:
- rm -f *.o
diff --git a/biology/gcta/files/patch-eigen__func.h b/biology/gcta/files/patch-eigen__func.h
deleted file mode 100644
index 5325c5975685..000000000000
--- a/biology/gcta/files/patch-eigen__func.h
+++ /dev/null
@@ -1,15 +0,0 @@
---- eigen_func.h.orig 2016-06-22 03:11:01 UTC
-+++ eigen_func.h
-@@ -12,9 +12,9 @@
- #ifndef _EIGENFUNC_H
- #define _EIGENFUNC_H
-
--#ifndef EIGEN_USE_MKL_ALL
--#define EIGEN_USE_MKL_ALL
--#endif
-+//#ifndef EIGEN_USE_MKL_ALL
-+//#define EIGEN_USE_MKL_ALL
-+//#endif
-
- #include "CommFunc.h"
- #include "StatFunc.h"
diff --git a/biology/gcta/files/patch-gcta.h b/biology/gcta/files/patch-gcta.h
deleted file mode 100644
index 07c889655082..000000000000
--- a/biology/gcta/files/patch-gcta.h
+++ /dev/null
@@ -1,29 +0,0 @@
---- gcta.h.orig 2016-06-22 03:11:01 UTC
-+++ gcta.h
-@@ -17,9 +17,9 @@
- #define EIGEN_YES_I_KNOW_SPARSE_MODULE_IS_NOT_STABLE_YET
- #endif
-
--#ifndef EIGEN_USE_MKL_ALL
--#define EIGEN_USE_MKL_ALL
--#endif
-+//#ifndef EIGEN_USE_MKL_ALL
-+//#define EIGEN_USE_MKL_ALL
-+//#endif
-
- #include "CommFunc.h"
- #include "StrFunc.h"
-@@ -36,8 +36,11 @@
- #include <unsupported/Eigen/SparseExtra>
- #include <unsupported/Eigen/IterativeSolvers>
- #include <omp.h>
--#include <mkl_cblas.h>
--#include <mkl_lapack.h>
-+#include <cblas.h>
-+#include <lapacke.h>
-+// Looks like openblas, cblas and lapacke are all that's needed
-+//#include <blaspp.h>
-+//#include <lapackpp.h>
-
- using namespace Eigen;
- using namespace std;
diff --git a/biology/gcta/files/patch-include_cpu.h b/biology/gcta/files/patch-include_cpu.h
new file mode 100644
index 000000000000..41c192d4c5f7
--- /dev/null
+++ b/biology/gcta/files/patch-include_cpu.h
@@ -0,0 +1,18 @@
+--- include/cpu.h.orig 2023-10-13 13:09:13 UTC
++++ include/cpu.h
+@@ -13,7 +13,7 @@
+ #define GCTA_ARCH_i386 0
+ #endif
+
+-#if GCTA_ARCH_x86_64 || GCTA_ARCH_i386
++#if !defined(__FreeBSD__) && (GCTA_ARCH_x86_64 || GCTA_ARCH_i386)
+ #define GCTA_CPU_x86 1
+ #else
+ #define GCTA_CPU_x86 0
+@@ -50,4 +50,4 @@
+ #include <lapack.h>
+ #endif
+
+-#endif //END GCTA_CPU_H
+\ No newline at end of file
++#endif //END GCTA_CPU_H
diff --git a/biology/gcta/files/patch-include_cpu__f77blas.h b/biology/gcta/files/patch-include_cpu__f77blas.h
new file mode 100644
index 000000000000..d887c81d9ade
--- /dev/null
+++ b/biology/gcta/files/patch-include_cpu__f77blas.h
@@ -0,0 +1,18 @@
+--- include/cpu_f77blas.h.orig 2023-10-13 13:10:15 UTC
++++ include/cpu_f77blas.h
+@@ -13,7 +13,7 @@
+ #define GCTA_ARCH_i386 0
+ #endif
+
+-#if GCTA_ARCH_x86_64 || GCTA_ARCH_i386
++#if !defined(__FreeBSD__) && (GCTA_ARCH_x86_64 || GCTA_ARCH_i386)
+ #define GCTA_CPU_x86 1
+ #else
+ #define GCTA_CPU_x86 0
+@@ -46,4 +46,4 @@
+ #include <f77blas.h>
+ #endif
+
+-#endif //END GCTA_F77BLAS_CPU_H
+\ No newline at end of file
++#endif //END GCTA_F77BLAS_CPU_H
diff --git a/biology/gcta/files/patch-ld.cpp b/biology/gcta/files/patch-ld.cpp
deleted file mode 100644
index c806493c1c30..000000000000
--- a/biology/gcta/files/patch-ld.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
---- ld.cpp.orig 2020-04-15 12:56:27 UTC
-+++ ld.cpp
-@@ -1004,7 +1004,9 @@ void gcta::calcu_max_ld_rsq_blk(eigenVector &multi_rsq
- }
-
-
-- SelfAdjointEigenSolver<MatrixXf> pca(rsq_sub.array());
-+ // Fixed compile by removing .array(). Not sure about the validity
-+ // of this change, but it seemed reasonable based on constructor docs.
-+ SelfAdjointEigenSolver<MatrixXf> pca(rsq_sub);
-
- // debug
- // ofstream tmp("tmp_R.txt");
diff --git a/biology/gcta/files/patch-main_option.cpp b/biology/gcta/files/patch-main_option.cpp
new file mode 100644
index 000000000000..fbf3f6c80d69
--- /dev/null
+++ b/biology/gcta/files/patch-main_option.cpp
@@ -0,0 +1,28 @@
+--- main/option.cpp.orig 2023-10-13 13:49:25 UTC
++++ main/option.cpp
+@@ -1112,10 +1112,10 @@ void option(int option_num, char* option_str[])
+
+ #ifdef _WIN32
+ if(chbuf != '\\') ref_ld_dirt = ref_ld_dirt + '\\';
+-#elif defined __linux__ || defined __APPLE__
++#elif defined __FreeBSD__ || defined __linux__ || defined __APPLE__
+ if(chbuf != '/') ref_ld_dirt = ref_ld_dirt + '/';
+ #else
+-#error Only Windows, Mac and Linux are supported.
++#error Only FreeBSD, Windows, Mac and Linux are supported.
+ #endif
+ LOGGER << "--ref-ld-chr " << ref_ld_dirt << endl;
+ } else if (strcmp(argv[i], "--w-ld-chr") == 0) {
+@@ -1124,10 +1124,10 @@ void option(int option_num, char* option_str[])
+ chbuf = w_ld_dirt.back();
+ #ifdef _WIN32
+ if(chbuf != '\\') w_ld_dirt = w_ld_dirt + '\\';
+-#elif defined __linux__ || defined __APPLE__
++#elif defined __FreeBSD__ || defined __linux__ || defined __APPLE__
+ if(chbuf != '/') w_ld_dirt = w_ld_dirt + '/';
+ #else
+-#error Only Windows, Mac and Linux are supported.
++#error Only FreeBSD, Windows, Mac and Linux are supported.
+ #endif
+
+ LOGGER << "--w-ld-chr " << w_ld_dirt << endl;
diff --git a/biology/gcta/files/patch-mkl.cpp b/biology/gcta/files/patch-mkl.cpp
deleted file mode 100644
index b27b6dabfbce..000000000000
--- a/biology/gcta/files/patch-mkl.cpp
+++ /dev/null
@@ -1,56 +0,0 @@
---- mkl.cpp.orig 2020-04-15 00:54:40 UTC
-+++ mkl.cpp
-@@ -357,7 +357,7 @@ bool gcta::comput_inverse_logdet_LDLT_mkl(eigenMatrix
- // MKL's Cholesky decomposition
- int info = 0, int_n = (int) n;
- char uplo = 'L';
-- dpotrf(&uplo, &int_n, Vi_mkl, &int_n, &info);
-+ dpotrf_(&uplo, &int_n, Vi_mkl, &int_n, &info);
- //spotrf( &uplo, &n, Vi_mkl, &n, &info );
- if (info < 0) throw ("Error: Cholesky decomposition failed. Invalid values found in the matrix.\n");
- else if (info > 0) return false;
-@@ -369,7 +369,7 @@ bool gcta::comput_inverse_logdet_LDLT_mkl(eigenMatrix
- }
-
- // Calcualte V inverse
-- dpotri(&uplo, &int_n, Vi_mkl, &int_n, &info);
-+ dpotri_(&uplo, &int_n, Vi_mkl, &int_n, &info);
- //spotri( &uplo, &n, Vi_mkl, &n, &info );
- if (info < 0) throw ("Error: invalid values found in the varaince-covaraince (V) matrix.\n");
- else if (info > 0) return false;
-@@ -405,7 +405,7 @@ bool gcta::comput_inverse_logdet_LU_mkl(eigenMatrix &V
- int LWORK = N*N;
- double *WORK = new double[n * n];
- int INFO;
-- dgetrf(&N, &N, Vi_mkl, &N, IPIV, &INFO);
-+ dgetrf_(&N, &N, Vi_mkl, &N, IPIV, &INFO);
- if (INFO < 0) throw ("Error: LU decomposition failed. Invalid values found in the matrix.\n");
- else if (INFO > 0) {
- delete[] Vi_mkl;
-@@ -418,7 +418,7 @@ bool gcta::comput_inverse_logdet_LU_mkl(eigenMatrix &V
- }
-
- // Calcualte V inverse
-- dgetri(&N, Vi_mkl, &N, IPIV, WORK, &LWORK, &INFO);
-+ dgetri_(&N, Vi_mkl, &N, IPIV, WORK, &LWORK, &INFO);
- if (INFO < 0) throw ("Error: invalid values found in the varaince-covaraince (V) matrix.\n");
- else if (INFO > 0) return false;
- else {
-@@ -453,7 +453,7 @@ bool gcta::comput_inverse_logdet_LU_mkl_array(int n, f
- int LWORK = N*N;
- double *WORK = new double[n * n];
- int INFO;
-- dgetrf(&N, &N, Vi_mkl, &N, IPIV, &INFO);
-+ dgetrf_(&N, &N, Vi_mkl, &N, IPIV, &INFO);
- if (INFO < 0) throw ("Error: LU decomposition failed. Invalid values found in the matrix.\n");
- else if (INFO > 0) {
- delete[] Vi_mkl;
-@@ -467,7 +467,7 @@ bool gcta::comput_inverse_logdet_LU_mkl_array(int n, f
- }
-
- // Calcualte V inverse
-- dgetri(&N, Vi_mkl, &N, IPIV, WORK, &LWORK, &INFO);
-+ dgetri_(&N, Vi_mkl, &N, IPIV, WORK, &LWORK, &INFO);
- if (INFO < 0) throw ("Error: invalid values found in the varaince-covaraince (V) matrix.\n");
- else if (INFO > 0) return (false); // Vi.diagonal()=Vi.diagonal().array()+Vi.diagonal().mean()*1e-3;
- else {
diff --git a/biology/gcta/files/patch-src_Geno.cpp b/biology/gcta/files/patch-src_Geno.cpp
new file mode 100644
index 000000000000..5b51b5533764
--- /dev/null
+++ b/biology/gcta/files/patch-src_Geno.cpp
@@ -0,0 +1,11 @@
+--- src/Geno.cpp.orig 2022-08-03 06:01:52 UTC
++++ src/Geno.cpp
+@@ -2948,7 +2948,7 @@ void Geno::bgen2bed(const vector<uint32_t> &raw_marker
+ }
+ //LOGGER.i(0, "MIDDLE: " + to_string(index) + "NUM_thread: " + to_string(omp_get_max_threads()));
+
+- #pragma omp ordered
++ // Conflict with previous on 2759 #pragma omp ordered
+ save_bed(buf, num_marker);
+ delete[] buf;
+ delete[] dec_data;
diff --git a/biology/gcta/files/patch-src_main.cpp b/biology/gcta/files/patch-src_main.cpp
new file mode 100644
index 000000000000..9c2db2b74814
--- /dev/null
+++ b/biology/gcta/files/patch-src_main.cpp
@@ -0,0 +1,11 @@
+--- src/main.cpp.orig 2023-10-13 13:46:01 UTC
++++ src/main.cpp
+@@ -226,7 +226,7 @@ int main(int argc, char *argv[]){
+
+ #ifdef _WIN32
+ _putenv_s("OMP_NUM_THREADS", to_string(thread_num).c_str());
+- #elif defined __linux__ || defined __APPLE__
++ #elif defined __FreeBSD__ || defined __linux__ || defined __APPLE__
+ setenv("OMP_NUM_THREADS", to_string(thread_num).c_str(), 1);
+ #else
+ #error Only Windows, Mac and Linux are supported.
diff --git a/biology/gcta/pkg-descr b/biology/gcta/pkg-descr
index 6c177f5eb311..6704dff92f83 100644
--- a/biology/gcta/pkg-descr
+++ b/biology/gcta/pkg-descr
@@ -1,5 +1,5 @@
-GCTA (Genome-wide Complex Trait Analysis) was originally designed to estimate
-the proportion of phenotypic variance explained by genome- or chromosome-wide
-SNPs for complex traits (the GREML method), and has subsequently extended for
-many other analyses to better understand the genetic architecture of complex
-traits.
+GCTA (Genome-wide Complex Trait Analysis) was originally designed to
+estimate the proportion of phenotypic variance explained by genome- or
+chromosome-wide SNPs for complex traits (the GREML method), and has
+subsequently extended for many other analyses to better understand the
+genetic architecture of complex traits.