@@ -30,17 +30,19 @@ jobs:
3030 os : [macos-latest, ubuntu-latest]
3131 config :
3232 # 3.44 is the last version that did not support uint64
33- - { pyver: "3.9", npver: "1", cftsver: "3440", doslow: ""}
33+ - { pyver: "3.9", npver: "1", cftsver: "3440", doslow: "", ft: "", cf: "" }
3434 # python 3 string writing fails on all 3.* builds
3535 # so test first 4.* release
36- - { pyver: "3.9", npver: "1", cftsver: "-4.0.0", doslow: ""}
36+ - { pyver: "3.9", npver: "1", cftsver: "-4.0.0", doslow: "", ft: "", cf: "" }
3737 # 4.1.0 is the first version for which tests pass for uint64
38- - { pyver: "3.9", npver: "1", cftsver: "-4.1.0", doslow: ""}
38+ - { pyver: "3.9", npver: "1", cftsver: "-4.1.0", doslow: "", ft: "", cf: "" }
3939 # 4.4.0 is first version for which tests pass for compressed
4040 # binary tables that exceed 2**32 bytes
41- - { pyver: "3.9", npver: "1", cftsver: "-4.4.0", doslow: "--slow"}
42- - { pyver: "3.9", npver: "1", cftsver: "latest", doslow: "--slow"}
43- - { pyver: "3.14", npver: "2", cftsver: "latest", doslow: "--slow"}
41+ - { pyver: "3.9", npver: "1", cftsver: "-4.4.0", doslow: "--slow", ft: "", cf: ""}
42+ - { pyver: "3.9", npver: "1", cftsver: "latest", doslow: "--slow", ft: "", cf: ""}
43+ - { pyver: "3.14", npver: "2", cftsver: "latest", doslow: "--slow", ft: "python-gil", cf: "--enable-reentrant"}
44+ - { pyver: "3.14", npver: "2", cftsver: "latest", doslow: "--slow", ft: "python-freethreading", cf: ""}
45+ - { pyver: "3.14", npver: "2", cftsver: "latest", doslow: "--slow", ft: "python-freethreading", cf: "--enable-reentrant"}
4446
4547 runs-on : ${{ matrix.os }}
4648 env :
@@ -74,33 +76,46 @@ jobs:
7476 create-args : >-
7577 python=${{ matrix.config.pyver }}
7678 numpy=${{ matrix.config.npver }}
79+ ${{ matrix.config.ft }}
7780
78- - name : build external cfitsio
81+ - name : set parallel testing flags
7982 run : |
80- export CFLAGS="${CFLAGS} ${TEST_CFLAGS}"
81-
82- mkdir -p cfitsio-external-build
83- cd cfitsio-external-build
84- rm -rf *
83+ if [[ "${{ matrix.config.ft }}" == "python-freethreading" ]]; then
84+ echo "PRP_FLAGS=--parallel-threads 4 --iterations 4 --ignore-gil-enabled" >> ${GITHUB_ENV}
85+ fi
8586
87+ - name : set cfitsio config flags and version
88+ run : |
8689 if [[ "${{ matrix.config.cftsver }}" == "latest" ]]; then
8790 cftsver=${LATEST_CFITSIO_VER}
8891 else
8992 cftsver="${{ matrix.config.cftsver }}"
9093 fi
9194
95+ echo "CFITSIO_VER=${cftsver}" >> ${GITHUB_ENV}
96+
9297 if [[ "${{ matrix.config.cftsver }}" == *3* ]]; then
93- config_flags=""
98+ config_flags="${{ matrix.config.cf }} "
9499 else
95- config_flags="--without-fortran --disable-shared"
100+ config_flags="--without-fortran --disable-shared ${{ matrix.config.cf }} "
96101 fi
97102
98- cfitsio_name=cfitsio${cftsver}
103+ echo "CFITSIO_CONFIG_FLAGS=${config_flags}" >> ${GITHUB_ENV}
104+
105+ - name : build external cfitsio
106+ run : |
107+ export CFLAGS="${CFLAGS} ${TEST_CFLAGS} -fPIC"
108+
109+ mkdir -p cfitsio-external-build
110+ cd cfitsio-external-build
111+ rm -rf *
112+
113+ cfitsio_name=cfitsio${CFITSIO_VER}
99114 wget https://heasarc.gsfc.nasa.gov/FTP/software/fitsio/c/${cfitsio_name}.tar.gz
100115 cfitsio_dir=`tar -tzf ${cfitsio_name}.tar.gz | sed -n "1,1p" | cut -f1 -d"/"`
101116 tar -xzvf ${cfitsio_name}.tar.gz
102117 cd ${cfitsio_dir}
103- CFLAGS="-fPIC" ./configure --prefix=$HOME/cfitsio-static-install ${config_flags }
118+ ./configure --prefix=$HOME/cfitsio-static-install ${CFITSIO_CONFIG_FLAGS }
104119 make install -j 4
105120 cd ..
106121 cd ..
@@ -121,7 +136,7 @@ jobs:
121136 python -c "import fitsio; assert fitsio.cfitsio_has_curl_support()"
122137 fi
123138
124- pytest -vv fitsio
139+ pytest -vv ${PRP_FLAGS} fitsio
125140
126141 - name : install bzip2 on linux
127142 if : matrix.os == 'ubuntu-latest'
@@ -130,30 +145,18 @@ jobs:
130145
131146 - name : build external cfitsio w/ bzip2
132147 run : |
133- export CFLAGS="${CFLAGS} ${TEST_CFLAGS}"
148+ export CFLAGS="${CFLAGS} ${TEST_CFLAGS} -fPIC "
134149
135150 mkdir -p cfitsio-external-build
136151 cd cfitsio-external-build
137152 rm -rf *
138153
139- if [[ "${{ matrix.config.cftsver }}" == "latest" ]]; then
140- cftsver=${LATEST_CFITSIO_VER}
141- else
142- cftsver="${{ matrix.config.cftsver }}"
143- fi
144-
145- if [[ "${{ matrix.config.cftsver }}" == *3440* ]]; then
146- config_flags="--with-bzip2"
147- else
148- config_flags="--without-fortran --disable-shared --with-bzip2"
149- fi
150-
151- cfitsio_name=cfitsio${cftsver}
154+ cfitsio_name=cfitsio${CFITSIO_VER}
152155 wget https://heasarc.gsfc.nasa.gov/FTP/software/fitsio/c/${cfitsio_name}.tar.gz
153156 cfitsio_dir=`tar -tzf ${cfitsio_name}.tar.gz | sed -n "1,1p" | cut -f1 -d"/"`
154157 tar -xzvf ${cfitsio_name}.tar.gz
155158 cd ${cfitsio_dir}
156- CFLAGS="-fPIC" ./configure --prefix=$HOME/cfitsio-static-install ${config_flags}
159+ ./configure --prefix=$HOME/cfitsio-static-install ${CFITSIO_CONFIG_FLAGS} --with-bzip2
157160 make install -j 4
158161 cd ..
159162 cd ..
@@ -177,4 +180,4 @@ jobs:
177180 python -c "import fitsio; assert fitsio.cfitsio_has_curl_support()"
178181 fi
179182
180- pytest -vv ${{ matrix.config.doslow }} fitsio
183+ pytest -vv ${{ matrix.config.doslow }} ${PRP_FLAGS} fitsio
0 commit comments