commit: f29006c0342e1eeabb3ad285fb6fd6cf5608f127 Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> AuthorDate: Wed Dec 10 22:55:10 2025 +0000 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> CommitDate: Thu Dec 11 04:40:22 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f29006c0
sci-libs/cfitsio: Fix build with modern dev-lang/cfortran Closes: https://bugs.gentoo.org/803350 Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org> Part-of: https://github.com/gentoo/gentoo/pull/44984 Closes: https://github.com/gentoo/gentoo/pull/44984 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org> sci-libs/cfitsio/cfitsio-4.6.3.ebuild | 4 +- .../files/cfitsio-4.6.3-system-fortran.patch | 145 +++++++++++++++++++++ 2 files changed, 148 insertions(+), 1 deletion(-) diff --git a/sci-libs/cfitsio/cfitsio-4.6.3.ebuild b/sci-libs/cfitsio/cfitsio-4.6.3.ebuild index 3b1eff8596d3..029e21beae86 100644 --- a/sci-libs/cfitsio/cfitsio-4.6.3.ebuild +++ b/sci-libs/cfitsio/cfitsio-4.6.3.ebuild @@ -28,9 +28,11 @@ RDEPEND=" # Bug #803350 DEPEND=" ${RDEPEND} - <dev-lang/cfortran-20110621 + dev-lang/cfortran " +PATCHES=( "${FILESDIR}/${P}-system-fortran.patch" ) # bug #803350 + pkg_setup() { fortran-2_pkg_setup } diff --git a/sci-libs/cfitsio/files/cfitsio-4.6.3-system-fortran.patch b/sci-libs/cfitsio/files/cfitsio-4.6.3-system-fortran.patch new file mode 100644 index 000000000000..3a93d7b09d25 --- /dev/null +++ b/sci-libs/cfitsio/files/cfitsio-4.6.3-system-fortran.patch @@ -0,0 +1,145 @@ +Source: +https://salsa.debian.org/debian-astro-team/cfitsio/-/blob/master/debian/patches/02-system-cfortran.patch + +Use system cfortran header. + +--- a/f77_wrap.h ++++ b/f77_wrap.h +@@ -1,6 +1,6 @@ + #define UNSIGNED_BYTE + +-#include "cfortran.h" ++#include <cfortran/cfortran.h> + + /************************************************************************ + Some platforms creates longs as 8-byte integers. On other machines, ints +@@ -29,16 +29,16 @@ + #undef LONGV_cfT + #undef PLONG_cfT + +-#define LONGV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,LONGV,A,B,C,D,E) +-#define PLONG_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,PLONG,A,B,C,D,E) ++#define LONGV_cfSTR(N,T,A,B,C,D,E) CFORTRAN_XCAT_(CFARGS,N)(T,LONGV,A,B,C,D,E) ++#define PLONG_cfSTR(N,T,A,B,C,D,E) CFORTRAN_XCAT_(CFARGS,N)(T,PLONG,A,B,C,D,E) + #define LONGVVVVVVV_cfTYPE int + #define PLONG_cfTYPE int +-#define LONGV_cfQ(B) long *B, _(B,N); ++#define LONGV_cfQ(B) long *B, CFORTRAN_XCAT_(B,N); + #define PLONG_cfQ(B) long B; +-#define LONGV_cfT(M,I,A,B,D) ( (_(B,N) = * _3(M,_LONGV_A,I)), \ +- B = F2Clongv(_(B,N),A) ) ++#define LONGV_cfT(M,I,A,B,D) ( (CFORTRAN_XCAT_(B,N) = * CFORTRAN_XCAT_3(M,_LONGV_A,I)), \ ++ B = F2Clongv(CFORTRAN_XCAT_(B,N),A) ) + #define PLONG_cfT(M,I,A,B,D) ((B=*A),&B) +-#define LONGV_cfR(A,B,D) C2Flongv(_(B,N),A,B); ++#define LONGV_cfR(A,B,D) C2Flongv(CFORTRAN_XCAT_(B,N),A,B); + #define PLONG_cfR(A,B,D) *A=B; + #define LONGV_cfH(S,U,B) + #define PLONG_cfH(S,U,B) +@@ -93,7 +93,7 @@ extern unsigned long gMinStrLen; + A->dsc$w_length, \ + num_elem(A->dsc$a_pointer, \ + A->dsc$w_length, \ +- _3(M,_STRV_A,I) ) ) ++ CFORTRAN_XCAT_3(M,_STRV_A,I) ) ) + #else + #ifdef CRAYFortran + #define PPSTRING_cfT(M,I,A,B,D) (unsigned char*)_fcdtocp(A) +@@ -103,20 +103,20 @@ extern unsigned long gMinStrLen; + #endif + + #define _cfMAX(A,B) ( (A>B) ? A : B ) +-#define STRINGV_cfQ(B) char **B; unsigned int _(B,N), _(B,M); ++#define STRINGV_cfQ(B) char **B; unsigned int CFORTRAN_XCAT_(B,N), CFORTRAN_XCAT_(B,M); + #define STRINGV_cfR(A,B,D) free(B[0]); free(B); + #define TTSTR( A,B,D) \ + ((B=(char*)malloc(_cfMAX(D,gMinStrLen)+1))[D]='\0',memcpy(B,A,D), \ + kill_trailing(B,' ')) + #define TTTTSTRV( A,B,D,E) ( \ +- _(B,N)=_cfMAX(E,1), \ +- _(B,M)=_cfMAX(D,gMinStrLen)+1, \ +- B=(char**)malloc(_(B,N)*sizeof(char*)), \ +- B[0]=(char*)malloc(_(B,N)*_(B,M)), \ +- vindex(B,_(B,M),_(B,N),f2cstrv2(A,B[0],D,_(B,M),_(B,N))) \ ++ CFORTRAN_XCAT_(B,N)=_cfMAX(E,1), \ ++ CFORTRAN_XCAT_(B,M)=_cfMAX(D,gMinStrLen)+1, \ ++ B=(char**)malloc(CFORTRAN_XCAT_(B,N)*sizeof(char*)), \ ++ B[0]=(char*)malloc(CFORTRAN_XCAT_(B,N)*CFORTRAN_XCAT_(B,M)), \ ++ vindex(B,CFORTRAN_XCAT_(B,M),CFORTRAN_XCAT_(B,N),f2cstrv2(A,B[0],D,CFORTRAN_XCAT_(B,M),CFORTRAN_XCAT_(B,N))) \ + ) + #define RRRRPSTRV(A,B,D) \ +- c2fstrv2(B[0],A,_(B,M),D,_(B,N)), \ ++ c2fstrv2(B[0],A,CFORTRAN_XCAT_(B,M),D,CFORTRAN_XCAT_(B,N)), \ + free(B[0]), \ + free(B); + +@@ -169,10 +169,10 @@ static char *f2cstrv2(char *fstr, char* + #undef BYTE_cfSTR + #undef BYTEV_cfSTR + +-#define BYTE_cfINT(N,A,B,X,Y,Z) _(CFARGS,N)(A,BYTE,B,X,Y,Z,0) +-#define BYTEV_cfINT(N,A,B,X,Y,Z) _(CFARGS,N)(A,BYTEV,B,X,Y,Z,0) +-#define BYTE_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,BYTE,A,B,C,D,E) +-#define BYTEV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,BYTEV,A,B,C,D,E) ++#define BYTE_cfINT(N,A,B,X,Y,Z) CFORTRAN_XCAT_(CFARGS,N)(A,BYTE,B,X,Y,Z,0) ++#define BYTEV_cfINT(N,A,B,X,Y,Z) CFORTRAN_XCAT_(CFARGS,N)(A,BYTEV,B,X,Y,Z,0) ++#define BYTE_cfSTR(N,T,A,B,C,D,E) CFORTRAN_XCAT_(CFARGS,N)(T,BYTE,A,B,C,D,E) ++#define BYTEV_cfSTR(N,T,A,B,C,D,E) CFORTRAN_XCAT_(CFARGS,N)(T,BYTEV,A,B,C,D,E) + #define BYTE_cfSEP(T,B) INT_cfSEP(T,B) + #define BYTEV_cfSEP(T,B) INT_cfSEP(T,B) + #define BYTE_cfH(S,U,B) STRING_cfH(S,U,B) +@@ -211,11 +211,11 @@ static char *f2cstrv2(char *fstr, char* + + #undef LOGICALV_cfSTR + #undef LOGICALV_cfT +-#define LOGICALV_cfSTR(N,T,A,B,C,D,E) _(CFARGS,N)(T,LOGICALV,A,B,C,D,E) +-#define LOGICALV_cfQ(B) char *B; unsigned int _(B,N); +-#define LOGICALV_cfT(M,I,A,B,D) (_(B,N)= * _3(M,_LOGV_A,I), \ +- B=F2CcopyLogVect(_(B,N),A)) +-#define LOGICALV_cfR(A,B,D) C2FcopyLogVect(_(B,N),A,B); ++#define LOGICALV_cfSTR(N,T,A,B,C,D,E) CFORTRAN_XCAT_(CFARGS,N)(T,LOGICALV,A,B,C,D,E) ++#define LOGICALV_cfQ(B) char *B; unsigned int CFORTRAN_XCAT_(B,N); ++#define LOGICALV_cfT(M,I,A,B,D) (CFORTRAN_XCAT_(B,N)= * CFORTRAN_XCAT_3(M,_LOGV_A,I), \ ++ B=F2CcopyLogVect(CFORTRAN_XCAT_(B,N),A)) ++#define LOGICALV_cfR(A,B,D) C2FcopyLogVect(CFORTRAN_XCAT_(B,N),A,B); + #define LOGICALV_cfH(S,U,B) + + static char *F2CcopyLogVect(long size, int *A) +@@ -268,20 +268,20 @@ extern fitsfile *gFitsFiles[]; /* + memchr(A,'\0',D) ? A : TTSTR(A,B,D) + + #define FCALLSCFUN0(T0,CN,UN,LN) \ +- CFextern _(T0,_cfFZ)(UN,LN) void ABSOFT_cf2(T0)); \ +- CFextern _(T0,_cfFZ)(UN,LN) void ABSOFT_cf2(T0)) \ +- {_Icf(2,UU,T0,A0,0); _Icf(0,L,T0,0,0) CN(); _Icf(0,K,T0,0,0) _(T0,_cfI)} ++ CFextern CFORTRAN_XCAT_(T0,_cfFZ)(UN,LN) void ABSOFT_cf2(T0)); \ ++ CFextern CFORTRAN_XCAT_(T0,_cfFZ)(UN,LN) void ABSOFT_cf2(T0)) \ ++ {_Icf(2,UU,T0,A0,0); _Icf(0,L,T0,0,0) CN(); _Icf(0,K,T0,0,0) CFORTRAN_XCAT_(T0,_cfI)} + + #define FCALLSCFUN14(T0,CN,UN,LN,T1,T2,T3,T4,T5,T6,T7,T8,T9,TA,TB,TC,TD,TE) \ +- CFextern _(T0,_cfF)(UN,LN) \ ++ CFextern CFORTRAN_XCAT_(T0,_cfF)(UN,LN) \ + CFARGT14(NCF,DCF,ABSOFT_cf2(T0),T1,T2,T3,T4,T5,T6,T7,T8,T9,TA,TB,TC,TD,TE)); \ +- CFextern _(T0,_cfF)(UN,LN) \ ++ CFextern CFORTRAN_XCAT_(T0,_cfF)(UN,LN) \ + CFARGT14(NCF,DCF,ABSOFT_cf2(T0),T1,T2,T3,T4,T5,T6,T7,T8,T9,TA,TB,TC,TD,TE)) \ + { CFARGT14S(QCF,T1,T2,T3,T4,T5,T6,T7,T8,T9,TA,TB,TC,TD,TE) \ + _Icf(2,UU,T0,A0,0); _Icf(0,L,T0,0,0) CN( TCF(LN,T1,1,0) TCF(LN,T2,2,1) \ + TCF(LN,T3,3,1) TCF(LN,T4,4,1) TCF(LN,T5,5,1) TCF(LN,T6,6,1) TCF(LN,T7,7,1) \ + TCF(LN,T8,8,1) TCF(LN,T9,9,1) TCF(LN,TA,10,1) TCF(LN,TB,11,1) TCF(LN,TC,12,1) \ + TCF(LN,TD,13,1) TCF(LN,TE,14,1) ); _Icf(0,K,T0,0,0) \ +- CFARGT14S(RCF,T1,T2,T3,T4,T5,T6,T7,T8,T9,TA,TB,TC,TD,TE) _(T0,_cfI) \ ++ CFARGT14S(RCF,T1,T2,T3,T4,T5,T6,T7,T8,T9,TA,TB,TC,TD,TE) CFORTRAN_XCAT_(T0,_cfI) \ + } + +--- a/Makefile.am ++++ b/Makefile.am +@@ -12,7 +12,7 @@ soname_version = @version_info@ + soname_version_lnx = ${soname_version}.0.0 + + include_HEADERS = fitsio.h fitsio2.h longnam.h drvrsmem.h \ +- cfortran.h f77_wrap.h region.h ++ f77_wrap.h region.h + + F77_WRAPPERS = f77_wrap1.c f77_wrap2.c f77_wrap3.c f77_wrap4.c +
