4141
4242 - name : Configured git attributes for line endings (Windows) # 防止接下来在windows平台checkout代码时,文本文件的换行符发生变化,导致MSYS2工作出错
4343 if : contains(matrix.os, 'windows')
44- run : git config --global core.autocrlf input
44+ run : |
45+ git config --global core.autocrlf input
4546
4647 - name : Checkout code # 下载库代码
4748 uses : actions/checkout@v3
@@ -101,6 +102,7 @@ jobs:
101102 # sudo apt update
102103 # sudo apt install -y libfftw3-dev
103104
105+ # ------------------------------- 安装依赖 -----------------------------------------------
104106 # 在 ubuntu 系统上创建低版本 glibc (2.17) 的环境进行编译,以提供向后兼容能力
105107 - name : Create CentOS 7.7 container (Ubuntu)
106108 if : contains(matrix.os, 'ubuntu')
@@ -115,19 +117,9 @@ jobs:
115117 docker exec ${{ env.CONTAINER_ID }} bash -c "
116118 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup && \
117119 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo && \
118- yum clean all -y && yum makecache -y && yum install -y gcc make
119- "
120-
121- # Centos 7.7 docker环境中编译fftw库需要添加 -fPIC
122- - name : Build static FFTW in container (Ubuntu)
123- if : contains(matrix.os, 'ubuntu')
124- run : |
125- docker exec ${{ env.CONTAINER_ID }} bash -c "
126- curl -O https://www.fftw.org/fftw-3.3.10.tar.gz && tar -xzvf fftw-3.3.10.tar.gz && \
127- cd fftw-3.3.10 && \
128- ./configure CFLAGS="-fPIC" && make && make install && \
129- ./configure CFLAGS="-fPIC" --enable-float && make && make install && \
130- cd .. && rm -rf fftw*
120+ sed -i 's/mirrors.cloud.aliyuncs.com/mirrors.aliyun.com/g' /etc/yum.repos.d/CentOS-Base.repo && \
121+ sed -i 's/mirrors.aliyuncs.com/mirrors.aliyun.com/g' /etc/yum.repos.d/CentOS-Base.repo && \
122+ yum clean all -y && yum makecache -y && yum install -y gcc gcc-c++ make wget m4
131123 "
132124
133125 - name : Install dependencies (macOS)
@@ -138,25 +130,54 @@ jobs:
138130 brew install fftw
139131
140132 FFTW_PREFIX=$(brew --prefix fftw)
141- echo "FFT_INC_PATH =$FFTW_PREFIX/include" >> $GITHUB_ENV
142- echo "FFT_LIB_PATH =$FFTW_PREFIX/lib" >> $GITHUB_ENV
133+ echo "FFTW_INC_PATH =$FFTW_PREFIX/include" >> $GITHUB_ENV
134+ echo "FFTW_LIB_PATH =$FFTW_PREFIX/lib" >> $GITHUB_ENV
143135
144- # ----------------- 编译C库和C程序 ----------------------------------
136+
137+ # ----------------------------- 安装 FFTW -------------------------------
138+ - name : Install FFTW (ubuntu)
139+ if : contains(matrix.os, 'ubuntu')
140+ run : |
141+ FILENAME="fftw3-${{ matrix.os }}-${{ matrix.arch }}"
142+ # 在 centos 7 镜像中编译好的fftw
143+ wget "https://raw.githubusercontent.com/Dengda98/dengda98.github.io/refs/heads/main/assets/packages/${FILENAME}.tar.gz"
144+ tar -xzvf ${FILENAME}.tar.gz
145+
146+ # 这里 workspace 名称取决于创建容器时的命名
147+ echo "FFTW_INC_PATH=/workspace/$FILENAME/include" >> $GITHUB_ENV
148+ echo "FFTW_LIB_PATH=/workspace/$FILENAME/lib" >> $GITHUB_ENV
149+
150+ # ---------------------------- 安装 NetCDF -------------------------------
151+ - name : Install NetCDF
152+ run : |
153+ # 之前在各个系统上预编译好的 NetCDF 安装包
154+ FILENAME="netcdf-c-4.9.3-${{ matrix.os }}-${{ matrix.arch }}"
155+ curl -O "https://raw.githubusercontent.com/Dengda98/dengda98.github.io/refs/heads/main/assets/packages/${FILENAME}.tar.gz"
156+ tar -xzvf ${FILENAME}.tar.gz
157+
158+ # 记录路径
159+ if [[ "${{ matrix.os }}" == *"ubuntu"* ]]; then
160+ echo "NC_INC_PATH=/workspace/$FILENAME/include" >> $GITHUB_ENV
161+ echo "NC_LIB_PATH=/workspace/$FILENAME/lib" >> $GITHUB_ENV
162+ else
163+ echo "NC_INC_PATH=$(pwd)/$FILENAME/include" >> $GITHUB_ENV
164+ echo "NC_LIB_PATH=$(pwd)/$FILENAME/lib" >> $GITHUB_ENV
165+ fi
166+
167+
168+ # -------------------------------- 编译C库和C程序 ----------------------------------
145169 - name : Build the project (macOS)
146170 if : contains(matrix.os, 'macos')
147171 working-directory : ./pygrt/C_extension
148172 run : |
149-
150- # Mac系统需要显式设置头文件路径和库路径
151- export C_INCLUDE_PATH=$FFT_INC_PATH:$C_INCLUDE_PATH
152- export LIBRARY_PATH=$FFT_LIB_PATH:${LIBRARY_PATH}
153- export LD_LIBRARY_PATH=$FFT_LIB_PATH:${LD_LIBRARY_PATH}
154- export DYLD_LIBRARY_PATH=$FFT_LIB_PATH:${DYLD_LIBRARY_PATH}
155-
156173 make ARCH="-arch ${{ matrix.arch }}" \
157174 CC=gcc-14 \
158- LFFT_FLAGS="$FFT_LIB_PATH/libfftw3.a $FFT_LIB_PATH/libfftw3f.a"
175+ LFFTW_FLAGS="$FFTW_LIB_PATH/libfftw3.a $FFTW_LIB_PATH/libfftw3f.a" \
176+ LNETCDF_FLAGS="$NC_LIB_PATH/libnetcdf.a" \
177+ CFLAGS2="-I$FFTW_INC_PATH -I$NC_INC_PATH"
159178 make cleanbuild
179+ ls -l lib/
180+ ls -l bin/
160181 otool -L lib/libgrt.so
161182 otool -L bin/*
162183
@@ -165,25 +186,37 @@ jobs:
165186 shell : msys2 {0}
166187 working-directory : ./pygrt/C_extension
167188 run : |
168- make
189+ make \
190+ LNETCDF_FLAGS="$NC_LIB_PATH/libnetcdf.a" \
191+ CFLAGS2="-I$NC_INC_PATH"
192+
169193 make cleanbuild
194+ ls -l lib/
195+ ls -l bin/
170196 ldd lib/libgrt.so
171197 ldd bin/*
172198
173- # - name: Build the project (Ubuntu)
174- # if: contains(matrix.os, 'ubuntu')
175- # working-directory: ./pygrt/C_extension
176- # run: |
177- # make
178- # make cleanbuild
179- # ldd lib/libgrt.so
180- # ldd bin/*
181-
182199 - name : Build the project in container (Ubuntu)
183200 if : contains(matrix.os, 'ubuntu')
184201 working-directory :
185202 run : |
186- docker exec ${{ env.CONTAINER_ID }} bash -c "cd ./pygrt/C_extension && ls && make && make cleanbuild && cd -"
203+ cat > tmprun.sh <<EOF
204+ cd ./pygrt/C_extension
205+ ls
206+ make \
207+ LFFTW_FLAGS="$FFTW_LIB_PATH/libfftw3.a $FFTW_LIB_PATH/libfftw3f.a" \
208+ LNETCDF_FLAGS="$NC_LIB_PATH/libnetcdf.a" \
209+ CFLAGS2="-I$FFTW_INC_PATH -I$NC_INC_PATH"
210+ make cleanbuild
211+ cd -
212+ EOF
213+
214+ echo "-------------------------------------"
215+ cat tmprun.sh
216+
217+ docker exec ${{ env.CONTAINER_ID }} bash tmprun.sh
218+ rm tmprun.sh
219+
187220 cd ./pygrt/C_extension
188221 ldd lib/libgrt.so
189222 ldd bin/*
@@ -195,7 +228,7 @@ jobs:
195228 docker stop ${{ env.CONTAINER_ID }}
196229 docker rm ${{ env.CONTAINER_ID }}
197230
198- # ------------------------ 定义接下来打包程序命名时的系统名后缀 ---------------
231+ # ------------------------------------- 定义接下来打包程序命名时的系统名后缀 ---------------- ---------------
199232 - name : Define the package OS suffix
200233 run : |
201234 # 符合pypi命名规范,否则上传失败
@@ -231,7 +264,7 @@ jobs:
231264 with :
232265 name : ${{ matrix.os }}-${{ matrix.arch }}_tar
233266 path : ${{ env.PACK_NAME }}.tar.gz
234-
267+
235268
236269
237270 # =======================================================================================
0 commit comments