git: 22df0dbcfa87 - main - biology/gcta: chase the upgrade of OpenBLAS

From: Thierry Thomas <thierry_at_FreeBSD.org>
Date: Tue, 12 Dec 2023 19:04:17 UTC
The branch main has been updated by thierry:

URL: https://cgit.FreeBSD.org/ports/commit/?id=22df0dbcfa877e85bf5c29d7ff6808f7116cafb7

commit 22df0dbcfa877e85bf5c29d7ff6808f7116cafb7
Author:     Eijiro Shibusawa <phd_kimberlite@yahoo.co.jp>
AuthorDate: 2023-12-12 18:53:43 +0000
Commit:     Thierry Thomas <thierry@FreeBSD.org>
CommitDate: 2023-12-12 19:03:50 +0000

    biology/gcta: chase the upgrade of OpenBLAS
    
    GCTA should modify the LAPACK functios calls, this is a temporary fix.
    
    See <https://github.com/jianyangqt/gcta/issues/59>.
    
    PR:             273219
    Approved by:    jwb@
---
 biology/gcta/Makefile                       |  1 +
 biology/gcta/files/patch-include_Matrix.hpp | 24 ++++++++++++++++++++++++
 biology/gcta/files/patch-include_cpu.h      |  7 ++++---
 biology/gcta/files/patch-main_mkl.cpp       | 24 ++++++++++++++++++++++++
 biology/gcta/files/patch-src_StatLib.cpp    | 19 +++++++++++++++++++
 5 files changed, 72 insertions(+), 3 deletions(-)

diff --git a/biology/gcta/Makefile b/biology/gcta/Makefile
index c9aef3210017..a1721656f2ae 100644
--- a/biology/gcta/Makefile
+++ b/biology/gcta/Makefile
@@ -1,6 +1,7 @@
 PORTNAME=	gcta
 DISTVERSIONPREFIX=	v
 DISTVERSION=	1.94.1
+PORTREVISION=	1
 CATEGORIES=	biology
 
 MAINTAINER=	jwb@FreeBSD.org
diff --git a/biology/gcta/files/patch-include_Matrix.hpp b/biology/gcta/files/patch-include_Matrix.hpp
new file mode 100644
index 000000000000..5039c75580bb
--- /dev/null
+++ b/biology/gcta/files/patch-include_Matrix.hpp
@@ -0,0 +1,24 @@
+--- include/Matrix.hpp.orig	2022-08-03 06:01:52 UTC
++++ include/Matrix.hpp
+@@ -32,7 +32,9 @@ bool _LLT(MatrixType &A, double &logdet){
+ #if GCTA_CPU_x86
+     dpotrf(&uplo, &cols, vi, &cols, &info);
+ #else
+-    dpotrf_(&uplo, &cols, vi, &cols, &info);
++    // OpenBLAS 0.3.25 requires a length argument.  Is 1 the right value?
++    // Should all dgeqrf_() calls be patched?
++    dpotrf_(&uplo, &cols, vi, &cols, &info, 1);
+ #endif    
+     //LOGGER << "  LLT time: " << LOGGER.tp("LLT") << std::endl;
+     if(info == 0){
+@@ -41,7 +43,9 @@ bool _LLT(MatrixType &A, double &logdet){
+ #if GCTA_CPU_x86        
+         dpotri(&uplo, &cols, vi, &cols, &info);
+ #else
+-        dpotri_(&uplo, &cols, vi, &cols, &info);
++        // OpenBLAS 0.3.25 requires a length argument.  Is 1 the right value?
++        // Should all doptri_() calls be patched?
++        dpotri_(&uplo, &cols, vi, &cols, &info, 1);
+ #endif
+         //LOGGER << "  LLT inverse time: " << LOGGER.tp("LLT_INV") << std::endl;
+         if(info == 0){
diff --git a/biology/gcta/files/patch-include_cpu.h b/biology/gcta/files/patch-include_cpu.h
index 41c192d4c5f7..92a8e4dd1212 100644
--- a/biology/gcta/files/patch-include_cpu.h
+++ b/biology/gcta/files/patch-include_cpu.h
@@ -1,15 +1,16 @@
---- include/cpu.h.orig	2023-10-13 13:09:13 UTC
+--- include/cpu.h.orig	2022-08-03 06:01:52 UTC
 +++ include/cpu.h
-@@ -13,7 +13,7 @@
+@@ -13,7 +13,8 @@
    #define GCTA_ARCH_i386 0
  #endif
  
 -#if GCTA_ARCH_x86_64 || GCTA_ARCH_i386
++// GCTA_ARCH_x86 is used (mostly) to enable Intel's MKL library
 +#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 @@
+@@ -50,4 +51,4 @@
    #include <lapack.h>
  #endif
  
diff --git a/biology/gcta/files/patch-main_mkl.cpp b/biology/gcta/files/patch-main_mkl.cpp
new file mode 100644
index 000000000000..a74cbecfa6fd
--- /dev/null
+++ b/biology/gcta/files/patch-main_mkl.cpp
@@ -0,0 +1,24 @@
+--- main/mkl.cpp.orig	2023-11-20 14:09:49 UTC
++++ main/mkl.cpp
+@@ -365,7 +365,9 @@ bool gcta::comput_inverse_logdet_LDLT_mkl(eigenMatrix 
+ #if GCTA_CPU_x86
+     dpotrf(&uplo, &int_n, Vi_mkl, &int_n, &info);
+ #else
+-    dpotrf_(&uplo, &int_n, Vi_mkl, &int_n, &info);
++    // OpenBLAS 0.3.25 requires a length argument.  Is 1 the right value?
++    // Should all dpotrf_() calls be patched?
++    dpotrf_(&uplo, &int_n, Vi_mkl, &int_n, &info, 1);
+ #endif
+     //LOGGER << "Finished decompose" << endl;
+     //spotrf( &uplo, &n, Vi_mkl, &n, &info );
+@@ -386,7 +388,9 @@ bool gcta::comput_inverse_logdet_LDLT_mkl(eigenMatrix 
+ #if GCTA_CPU_x86
+         dpotri(&uplo, &int_n, Vi_mkl, &int_n, &info);
+ #else
+-        dpotri_(&uplo, &int_n, Vi_mkl, &int_n, &info);
++        // OpenBLAS 0.3.25 requires a length argument.  Is 1 the right value?
++        // Should all dpotri_() calls be patched?
++        dpotri_(&uplo, &int_n, Vi_mkl, &int_n, &info, 1);
+ #endif
+         //LOGGER << "Inverse finished" << endl;
+         //spotri( &uplo, &n, Vi_mkl, &n, &info );
diff --git a/biology/gcta/files/patch-src_StatLib.cpp b/biology/gcta/files/patch-src_StatLib.cpp
new file mode 100644
index 000000000000..bde6badd351a
--- /dev/null
+++ b/biology/gcta/files/patch-src_StatLib.cpp
@@ -0,0 +1,19 @@
+--- src/StatLib.cpp.orig	2022-08-03 06:01:52 UTC
++++ src/StatLib.cpp
+@@ -1,3 +1,4 @@
++
+ /*
+    GCTA: a tool for Genome-wide Complex Trait Analysis
+ 
+@@ -117,8 +118,10 @@ namespace StatLib{
+         dormqr(&side, &t, &n, &n, &n, X, &lda, tau, c, 
+                 &lda, work, &lwork, &info);
+ #else
++        // OpenBLAS 0.3.25 requires a length argument.  Is 1 the right value?
++        // Should all dormqr_() calls be patched?
+         dormqr_(&side, &t, &n, &n, &n, X, &lda, tau, c, 
+-                &lda, work, &lwork, &info);
++                &lda, work, &lwork, &info, 1, 1);
+ #endif
+         if(info != 0){
+             return false;