From 896f9129f5e2bb4a244c0a9309d880f724f1c8af Mon Sep 17 00:00:00 2001 From: DWesl <22566757+DWesl@users.noreply.github.com> Date: Mon, 20 Nov 2023 08:30:18 -0500 Subject: [PATCH 01/20] CI: Create a Cygwin workflow So far only tests whether ESMF actuall compiles on Cygwin. I don't actually run the tests yet. I will need to figure out how to add "-D_BSD_SOURCE" to C++ compile lines before it completes. --- .github/workflows/test-build-cygwin.yml | 51 +++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 .github/workflows/test-build-cygwin.yml diff --git a/.github/workflows/test-build-cygwin.yml b/.github/workflows/test-build-cygwin.yml new file mode 100644 index 0000000000..0982d312ed --- /dev/null +++ b/.github/workflows/test-build-cygwin.yml @@ -0,0 +1,51 @@ +name: Test on Cygwin +on: ["push", "pull_request"] + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +permissions: + contents: read # to fetch code (actions/checkout) + +env: + ESMF_BOPT: O + ESMF_OPTLEVEL: 2 + ESMF_COMM: mpiuni + ESMF_COMPILER: gfortran + ESMF_TESTSHAREDOBJ: ON + ESMF_RANLIB: ranlib + ESMF_LAPACK: system + ESMF_LAPACK_LIBPATH: /usr/lib + ESMF_LAPACK_LIBS: -llapack -lblas + NETCDF: /usr + ESMF_NETCDF: split + ESMF_NETCDF_INCLUDE: /usr/include + ESMF_NETCDF_LIBPATH: /usr/lib + ESMF_CXX: g++ + ESMF_CXXCOMPILEOPTS: "-g -O2" + ESMF_F90: gfortran + ESMF_F90COMPILEOPTS: "-g -O2" + ESMF_INSTALL_PREFIX: /tmp/fakeroot/usr + ESMF_INSTALL_DOCDIR: share/doc/esmf + +jobs: + cygwin_build_test: + runs-on: windows-latest + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + - uses: cygwin/cygwin-install-action@v4 + with: + platform: x86_64 + install-dir: 'C:\tools\cygwin' + packages: >- + openmpi gcc-core gcc-fortran gcc-g++ libnetcdf-devel libnetcdf-fortran-devel + texlive-collection-latex perl + - name: Build ESMF + run: | + C:\tools\cygwin\bin\dash.exe -c "make all" + - name: Build ESMF Docs + run: | + C:\tools\cygwin\bin\dash.exe -c "make doc" From 110c0be5b178b580a9977587563f98fd7d88a466 Mon Sep 17 00:00:00 2001 From: DWesl <22566757+DWesl@users.noreply.github.com> Date: Mon, 20 Nov 2023 08:38:15 -0500 Subject: [PATCH 02/20] FIX: Set ESMF_DIR to CI exec location. This should let the compilation start. --- .github/workflows/test-build-cygwin.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test-build-cygwin.yml b/.github/workflows/test-build-cygwin.yml index 0982d312ed..c80417bef4 100644 --- a/.github/workflows/test-build-cygwin.yml +++ b/.github/workflows/test-build-cygwin.yml @@ -9,6 +9,7 @@ permissions: contents: read # to fetch code (actions/checkout) env: + ESMF_DIR: /cygdrive/d/a/esmf/esmf ESMF_BOPT: O ESMF_OPTLEVEL: 2 ESMF_COMM: mpiuni From 3045b70081e1bd126cbed801699d5044928092cf Mon Sep 17 00:00:00 2001 From: DWesl <22566757+DWesl@users.noreply.github.com> Date: Mon, 20 Nov 2023 08:48:37 -0500 Subject: [PATCH 03/20] FIX: Install Cygwin make. --- .github/workflows/test-build-cygwin.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-build-cygwin.yml b/.github/workflows/test-build-cygwin.yml index c80417bef4..c95ac5f09f 100644 --- a/.github/workflows/test-build-cygwin.yml +++ b/.github/workflows/test-build-cygwin.yml @@ -43,7 +43,7 @@ jobs: install-dir: 'C:\tools\cygwin' packages: >- openmpi gcc-core gcc-fortran gcc-g++ libnetcdf-devel libnetcdf-fortran-devel - texlive-collection-latex perl + texlive-collection-latex perl make - name: Build ESMF run: | C:\tools\cygwin\bin\dash.exe -c "make all" From fd0e1673b3f2c274a6d542f48648e1316f13a115 Mon Sep 17 00:00:00 2001 From: DWesl <22566757+DWesl@users.noreply.github.com> Date: Mon, 20 Nov 2023 08:56:19 -0500 Subject: [PATCH 04/20] FIX: Ensure bash/dash installed, Cygwin make used. --- .github/workflows/test-build-cygwin.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-build-cygwin.yml b/.github/workflows/test-build-cygwin.yml index c95ac5f09f..455ffa3947 100644 --- a/.github/workflows/test-build-cygwin.yml +++ b/.github/workflows/test-build-cygwin.yml @@ -43,10 +43,10 @@ jobs: install-dir: 'C:\tools\cygwin' packages: >- openmpi gcc-core gcc-fortran gcc-g++ libnetcdf-devel libnetcdf-fortran-devel - texlive-collection-latex perl make + texlive-collection-latex perl make bash dash - name: Build ESMF run: | - C:\tools\cygwin\bin\dash.exe -c "make all" + C:\tools\cygwin\bin\dash.exe -c "/usr/bin/make all" - name: Build ESMF Docs run: | - C:\tools\cygwin\bin\dash.exe -c "make doc" + C:\tools\cygwin\bin\dash.exe -c "/usr/bin/make doc" From 839602d699ff875692fabe119580f8b4b4455c22 Mon Sep 17 00:00:00 2001 From: DWesl <22566757+DWesl@users.noreply.github.com> Date: Mon, 20 Nov 2023 09:05:05 -0500 Subject: [PATCH 05/20] FIX: Check ESMF_DIR setting. --- .github/workflows/test-build-cygwin.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/test-build-cygwin.yml b/.github/workflows/test-build-cygwin.yml index 455ffa3947..6f44fc8810 100644 --- a/.github/workflows/test-build-cygwin.yml +++ b/.github/workflows/test-build-cygwin.yml @@ -44,6 +44,9 @@ jobs: packages: >- openmpi gcc-core gcc-fortran gcc-g++ libnetcdf-devel libnetcdf-fortran-devel texlive-collection-latex perl make bash dash + - name: Check location + run: | + C:\tools\cygwin\bin\dash.exe -c "pwd; echo ${ESMF_DIR}" - name: Build ESMF run: | C:\tools\cygwin\bin\dash.exe -c "/usr/bin/make all" From 438d20c071528f725660cf68ad0424b851580a8f Mon Sep 17 00:00:00 2001 From: DWesl <22566757+DWesl@users.noreply.github.com> Date: Mon, 20 Nov 2023 09:19:36 -0500 Subject: [PATCH 06/20] DBG: Add more information to pwd check Hopefully this lets me figure out the unexpected end of file errors. --- .github/workflows/test-build-cygwin.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-build-cygwin.yml b/.github/workflows/test-build-cygwin.yml index 6f44fc8810..71d8cbecf3 100644 --- a/.github/workflows/test-build-cygwin.yml +++ b/.github/workflows/test-build-cygwin.yml @@ -46,7 +46,7 @@ jobs: texlive-collection-latex perl make bash dash - name: Check location run: | - C:\tools\cygwin\bin\dash.exe -c "pwd; echo ${ESMF_DIR}" + C:\tools\cygwin\bin\dash.exe -c "echo PWD; pwd; echo ESMF_DIR=${ESMF_DIR}" - name: Build ESMF run: | C:\tools\cygwin\bin\dash.exe -c "/usr/bin/make all" From fdd00b3d5b29bc269164393ae251b584b59c6159 Mon Sep 17 00:00:00 2001 From: DWesl <22566757+DWesl@users.noreply.github.com> Date: Mon, 20 Nov 2023 09:25:33 -0500 Subject: [PATCH 07/20] DBG: Try to fix newline errors. Forgot that Windows git would put \r\n line endings, which Cygwin doesn't like. --- .github/workflows/test-build-cygwin.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/test-build-cygwin.yml b/.github/workflows/test-build-cygwin.yml index 71d8cbecf3..668e0142fb 100644 --- a/.github/workflows/test-build-cygwin.yml +++ b/.github/workflows/test-build-cygwin.yml @@ -9,6 +9,9 @@ permissions: contents: read # to fetch code (actions/checkout) env: + SHELLOPTS: igncr + CYGWIN_NOWINPATH: 1 + CHERE_INVOKING: 1 ESMF_DIR: /cygdrive/d/a/esmf/esmf ESMF_BOPT: O ESMF_OPTLEVEL: 2 @@ -34,6 +37,7 @@ jobs: cygwin_build_test: runs-on: windows-latest steps: + - run: git config --global core.autocrlf input - uses: actions/checkout@v3 with: submodules: recursive From 6d4feceaef280460bf29b1ecdc4e590709ad7298 Mon Sep 17 00:00:00 2001 From: DWesl <22566757+DWesl@users.noreply.github.com> Date: Mon, 20 Nov 2023 09:49:07 -0500 Subject: [PATCH 08/20] BLD: Ensure kill, sigset*, M_PI, and friends get defined on Cygwin. Many declarations are hidden behind visibility macros. _BSD_SOURCE un-hides most of them. _POSIX_C_SOURCE un-hides another couple. --- build_config/Cygwin.gfortran.default/build_rules.mk | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/build_config/Cygwin.gfortran.default/build_rules.mk b/build_config/Cygwin.gfortran.default/build_rules.mk index 7fad49a1eb..26805e3abe 100644 --- a/build_config/Cygwin.gfortran.default/build_rules.mk +++ b/build_config/Cygwin.gfortran.default/build_rules.mk @@ -9,6 +9,7 @@ ESMF_F90DEFAULT = gfortran ESMF_CXXDEFAULT = g++ ESMF_CDEFAULT = gcc +ESMF_CXXCOMPILECPPFLAGS+= -D_BSD_SOURCE -D_POSIX_C_SOURCE=199309L ############################################################ # Default MPI setting. @@ -115,8 +116,8 @@ ESMF_CXXOPTFLAG_G += -Wall -Wextra -Wno-unused ############################################################ # Cygwin 1.5.24 does not yet support POSIX IPC (memory mapped files) -# -ESMF_CXXCOMPILECPPFLAGS += -DESMF_NO_POSIXIPC +# Cygwin 3.4.9 might +# ESMF_CXXCOMPILECPPFLAGS += -DESMF_NO_POSIXIPC ############################################################ # Fortran symbol convention From 9a8dad34b51dc0a37dbe3fa985f64bddca796472 Mon Sep 17 00:00:00 2001 From: DWesl <22566757+DWesl@users.noreply.github.com> Date: Mon, 20 Nov 2023 11:24:11 -0500 Subject: [PATCH 09/20] CI: Install liblapack-devel on Cygwin runner. --- .github/workflows/test-build-cygwin.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-build-cygwin.yml b/.github/workflows/test-build-cygwin.yml index 668e0142fb..c3e2491b1c 100644 --- a/.github/workflows/test-build-cygwin.yml +++ b/.github/workflows/test-build-cygwin.yml @@ -47,7 +47,7 @@ jobs: install-dir: 'C:\tools\cygwin' packages: >- openmpi gcc-core gcc-fortran gcc-g++ libnetcdf-devel libnetcdf-fortran-devel - texlive-collection-latex perl make bash dash + texlive-collection-latex perl make bash dash liblapack-devel - name: Check location run: | C:\tools\cygwin\bin\dash.exe -c "echo PWD; pwd; echo ESMF_DIR=${ESMF_DIR}" From 171e8b558914826cbb55d478df33d72599128726 Mon Sep 17 00:00:00 2001 From: DWesl <22566757+DWesl@users.noreply.github.com> Date: Mon, 20 Nov 2023 13:57:36 -0500 Subject: [PATCH 10/20] BLD: Fix shared library compile lines for Cygwin Cygwin is more like Windows than Linux here: make sure the import library gets generated in addition to the DLL and that both have the right names. Import library: lib${name}.dll.a Shared library: cyg${name}-${abi}.dll or cyg${name}.dll --- build/common.mk | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/build/common.mk b/build/common.mk index b5ed00dc71..f89b266f45 100644 --- a/build/common.mk +++ b/build/common.mk @@ -4010,7 +4010,11 @@ $(ESMF_LOCOBJDIR)/%.o : %.cpp .F90.$(ESMF_SL_SUFFIX): $(ESMF_F90COMPILEFREECPP_CMD) $(ESMF_SO_F90COMPILEOPTS) $< - $(ESMF_F90LINKER) $(ESMF_SO_F90LINKOPTS) $(ESMF_F90LINKOPTS) $(ESMF_F90LINKPATHS) $(ESMF_F90LINKRPATHS) -o $@ $*.o $(ESMF_F90ESMFLINKLIBS) + if [ ${ESMF_SL_SUFFIX} -ne "dll.a" ] ; then \ + $(ESMF_F90LINKER) $(ESMF_SO_F90LINKOPTS) $(ESMF_F90LINKOPTS) $(ESMF_F90LINKPATHS) $(ESMF_F90LINKRPATHS) -o $@ $*.o $(ESMF_F90ESMFLINKLIBS) \ + else \ + $(ESMF_F90LINKER) $(ESMF_SO_F90LINKOPTS) $(ESMF_F90LINKOPTS) $(ESMF_F90LINKPATHS) -shared -o $(@:.dll.a=.dll) -Wl,--out-implib=$@ -Wl,--export-all-symbols -Wl,--whole-archive $*.o -Wl,--no-whole-archive $(ESMF_F90ESMFLINKLIBS) \ + fi .F90.$(ESMF_LIB_SUFFIX): $(ESMF_F90COMPILEFREECPP_CMD) $< @@ -4111,11 +4115,16 @@ shared: mkdir tmp_$$NEXTLIB ;\ cd tmp_$$NEXTLIB ;\ $(ESMF_AREXTRACT) ../$$NEXTLIB.$(ESMF_LIB_SUFFIX) ;\ + if [ "${ESMF_SL_SUFFIX}" -ne "dll.a" ] ; then \ echo $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB.$(ESMF_SL_SUFFIX) *.o $(ESMF_SL_LIBLIBS) ;\ $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB.$(ESMF_SL_SUFFIX) *.o $(ESMF_SL_LIBLIBS) ;\ echo Converting $$NEXTLIB.$(ESMF_SL_SUFFIX) to $$NEXTLIB\_fullylinked.$(ESMF_SL_SUFFIX) ;\ echo $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB\_fullylinked.$(ESMF_SL_SUFFIX) *.o $(ESMF_CXXLINKOPTS) $(ESMF_CXXLINKPATHS) $(ESMF_CXXLINKRPATHS) $(ESMF_CXXLINKLIBS) ;\ $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB\_fullylinked.$(ESMF_SL_SUFFIX) *.o $(ESMF_CXXLINKOPTS) $(ESMF_CXXLINKPATHS) $(ESMF_CXXLINKRPATHS) $(ESMF_CXXLINKLIBS) ;\ + else \ + echo $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/cyg$${NEXTLIB#lib}\.dll -Wl,--out-implib=$(ESMF_LDIR)/$$NEXTLIB\.dll.a -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--whole-archive *.o -Wl,--no-whole-archive $(ESMF_CXXLINKOPTS) $(ESMF_CXXLINKPATHS) $(ESMF_CXXLINKRPATHS) $(ESMF_CXXLINKLIBS) ;\ + $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/cyg$${NEXTLIB#lib}\.dll -Wl,--out-implib=$(ESMF_LDIR)/$$NEXTLIB\.dll.a -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--whole-archive *.o -Wl,--no-whole-archive $(ESMF_CXXLINKOPTS) $(ESMF_CXXLINKPATHS) $(ESMF_CXXLINKRPATHS) $(ESMF_CXXLINKLIBS) ;\ + fi ;\ cd .. ;\ $(ESMF_RM) -r tmp_$$NEXTLIB ;\ fi ;\ From b8f1537fb139143cd183e85698dea4c0c0dd6a6e Mon Sep 17 00:00:00 2001 From: DWesl <22566757+DWesl@users.noreply.github.com> Date: Mon, 20 Nov 2023 18:19:58 -0500 Subject: [PATCH 11/20] FIX: Fix syntax in SL linking rule. I forgot the semicolons, so bash didn't recognize the control structures. --- build/common.mk | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build/common.mk b/build/common.mk index f89b266f45..762c24dba7 100644 --- a/build/common.mk +++ b/build/common.mk @@ -4011,10 +4011,10 @@ $(ESMF_LOCOBJDIR)/%.o : %.cpp .F90.$(ESMF_SL_SUFFIX): $(ESMF_F90COMPILEFREECPP_CMD) $(ESMF_SO_F90COMPILEOPTS) $< if [ ${ESMF_SL_SUFFIX} -ne "dll.a" ] ; then \ - $(ESMF_F90LINKER) $(ESMF_SO_F90LINKOPTS) $(ESMF_F90LINKOPTS) $(ESMF_F90LINKPATHS) $(ESMF_F90LINKRPATHS) -o $@ $*.o $(ESMF_F90ESMFLINKLIBS) \ + $(ESMF_F90LINKER) $(ESMF_SO_F90LINKOPTS) $(ESMF_F90LINKOPTS) $(ESMF_F90LINKPATHS) $(ESMF_F90LINKRPATHS) -o $@ $*.o $(ESMF_F90ESMFLINKLIBS); \ else \ - $(ESMF_F90LINKER) $(ESMF_SO_F90LINKOPTS) $(ESMF_F90LINKOPTS) $(ESMF_F90LINKPATHS) -shared -o $(@:.dll.a=.dll) -Wl,--out-implib=$@ -Wl,--export-all-symbols -Wl,--whole-archive $*.o -Wl,--no-whole-archive $(ESMF_F90ESMFLINKLIBS) \ - fi + $(ESMF_F90LINKER) $(ESMF_SO_F90LINKOPTS) $(ESMF_F90LINKOPTS) $(ESMF_F90LINKPATHS) -shared -o $(@:.dll.a=.dll) -Wl,--out-implib=$@ -Wl,--export-all-symbols -Wl,--whole-archive $*.o -Wl,--no-whole-archive $(ESMF_F90ESMFLINKLIBS); \ + fi; .F90.$(ESMF_LIB_SUFFIX): $(ESMF_F90COMPILEFREECPP_CMD) $< From 44c66ba7eb55da677277611e7dab0464aff3b814 Mon Sep 17 00:00:00 2001 From: DWesl <22566757+DWesl@users.noreply.github.com> Date: Mon, 20 Nov 2023 20:51:19 -0500 Subject: [PATCH 12/20] CI,FIX: Install protex files for doc build. Not sure if this will fix the failure, the error wasn't very clear. --- .github/workflows/test-build-cygwin.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test-build-cygwin.yml b/.github/workflows/test-build-cygwin.yml index c3e2491b1c..ad0d0970db 100644 --- a/.github/workflows/test-build-cygwin.yml +++ b/.github/workflows/test-build-cygwin.yml @@ -47,7 +47,8 @@ jobs: install-dir: 'C:\tools\cygwin' packages: >- openmpi gcc-core gcc-fortran gcc-g++ libnetcdf-devel libnetcdf-fortran-devel - texlive-collection-latex perl make bash dash liblapack-devel + texlive-collection-latex texlive-collection-latexextra perl make bash dash + liblapack-devel - name: Check location run: | C:\tools\cygwin\bin\dash.exe -c "echo PWD; pwd; echo ESMF_DIR=${ESMF_DIR}" From 72e2a45c94808eb73ba5240825b03fead0bac246 Mon Sep 17 00:00:00 2001 From: DWesl <22566757+DWesl@users.noreply.github.com> Date: Mon, 20 Nov 2023 21:00:42 -0500 Subject: [PATCH 13/20] CI: Add Python and tests to Cygwin CI job. --- .github/workflows/test-build-cygwin.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/test-build-cygwin.yml b/.github/workflows/test-build-cygwin.yml index ad0d0970db..3b67daa3eb 100644 --- a/.github/workflows/test-build-cygwin.yml +++ b/.github/workflows/test-build-cygwin.yml @@ -49,12 +49,22 @@ jobs: openmpi gcc-core gcc-fortran gcc-g++ libnetcdf-devel libnetcdf-fortran-devel texlive-collection-latex texlive-collection-latexextra perl make bash dash liblapack-devel + python39-devel python39-pip python39-numpy python39-pytest - name: Check location run: | C:\tools\cygwin\bin\dash.exe -c "echo PWD; pwd; echo ESMF_DIR=${ESMF_DIR}" - name: Build ESMF run: | C:\tools\cygwin\bin\dash.exe -c "/usr/bin/make all" + - name: Build ESMPy + run: | + C:\tools\cygwin\bin\dash.exe -c "cd src/addon/esmpy; python -m pip install ." + - name: Check ESMF + run: | + C:\tools\cygwin\bin\dash.exe -c "/usr/bin/make check" + - name: Check ESMPy + run: | + C:\tools\cygwin\bin\dash.exe -c "cd src/addon/esmpy; /usr/bin/make download test_all" - name: Build ESMF Docs run: | C:\tools\cygwin\bin\dash.exe -c "/usr/bin/make doc" From 9bf40dbb3c7ed0bd3e6c19ca8db891decc8423bf Mon Sep 17 00:00:00 2001 From: DWesl <22566757+DWesl@users.noreply.github.com> Date: Tue, 21 Nov 2023 10:32:01 -0500 Subject: [PATCH 14/20] CI: Ensure Lapack is in Cygwin path. --- .github/workflows/test-build-cygwin.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/test-build-cygwin.yml b/.github/workflows/test-build-cygwin.yml index 3b67daa3eb..cb1a179697 100644 --- a/.github/workflows/test-build-cygwin.yml +++ b/.github/workflows/test-build-cygwin.yml @@ -50,6 +50,10 @@ jobs: texlive-collection-latex texlive-collection-latexextra perl make bash dash liblapack-devel python39-devel python39-pip python39-numpy python39-pytest + - name: Set Windows PATH + uses: egor-tensin/cleanup-path@v3 + with: + dirs: 'C:\tools\cygwin\bin;C:\tools\cygwin\lib\lapack' - name: Check location run: | C:\tools\cygwin\bin\dash.exe -c "echo PWD; pwd; echo ESMF_DIR=${ESMF_DIR}" From 6ac7f8c0371777e54010120f195be0312673ffc8 Mon Sep 17 00:00:00 2001 From: Gerhard Theurich Date: Fri, 8 Dec 2023 11:31:07 -0800 Subject: [PATCH 15/20] Fix logic syntax, and formatting. --- build/common.mk | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/build/common.mk b/build/common.mk index 71bc5c04b1..1d9510ae4c 100644 --- a/build/common.mk +++ b/build/common.mk @@ -4027,10 +4027,10 @@ $(ESMF_LOCOBJDIR)/%.o : %.cpp .F90.$(ESMF_SL_SUFFIX): $(ESMF_F90COMPILEFREECPP_CMD) $(ESMF_SO_F90COMPILEOPTS) $< - if [ ${ESMF_SL_SUFFIX} -ne "dll.a" ] ; then \ - $(ESMF_F90LINKER) $(ESMF_SO_F90LINKOPTS) $(ESMF_F90LINKOPTS) $(ESMF_F90LINKPATHS) $(ESMF_F90LINKRPATHS) -o $@ $*.o $(ESMF_F90ESMFLINKLIBS); \ + if [ $(ESMF_SL_SUFFIX) != "dll.a" ] ; then \ + $(ESMF_F90LINKER) $(ESMF_SO_F90LINKOPTS) $(ESMF_F90LINKOPTS) $(ESMF_F90LINKPATHS) $(ESMF_F90LINKRPATHS) -o $@ $*.o $(ESMF_F90ESMFLINKLIBS); \ else \ - $(ESMF_F90LINKER) $(ESMF_SO_F90LINKOPTS) $(ESMF_F90LINKOPTS) $(ESMF_F90LINKPATHS) -shared -o $(@:.dll.a=.dll) -Wl,--out-implib=$@ -Wl,--export-all-symbols -Wl,--whole-archive $*.o -Wl,--no-whole-archive $(ESMF_F90ESMFLINKLIBS); \ + $(ESMF_F90LINKER) $(ESMF_SO_F90LINKOPTS) $(ESMF_F90LINKOPTS) $(ESMF_F90LINKPATHS) -shared -o $(@:.dll.a=.dll) -Wl,--out-implib=$@ -Wl,--export-all-symbols -Wl,--whole-archive $*.o -Wl,--no-whole-archive $(ESMF_F90ESMFLINKLIBS); \ fi; .F90.$(ESMF_LIB_SUFFIX): @@ -4131,17 +4131,17 @@ shared: echo Converting $$NEXTLIB.a to $$NEXTLIB.$(ESMF_SL_SUFFIX) ;\ mkdir tmp_$$NEXTLIB ;\ cd tmp_$$NEXTLIB ;\ - $(ESMF_AREXTRACT) ../$$NEXTLIB.$(ESMF_LIB_SUFFIX) ;\ - if [ "${ESMF_SL_SUFFIX}" -ne "dll.a" ] ; then \ - echo $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB.$(ESMF_SL_SUFFIX) *.o $(ESMF_SL_LIBLIBS) ;\ - $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB.$(ESMF_SL_SUFFIX) *.o $(ESMF_SL_LIBLIBS) ;\ - echo Converting $$NEXTLIB.$(ESMF_SL_SUFFIX) to $$NEXTLIB\_fullylinked.$(ESMF_SL_SUFFIX) ;\ - echo $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB\_fullylinked.$(ESMF_SL_SUFFIX) *.o $(ESMF_CXXLINKOPTS) $(ESMF_CXXLINKPATHS) $(ESMF_CXXLINKRPATHS) $(ESMF_CXXLINKLIBS) ;\ - $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB\_fullylinked.$(ESMF_SL_SUFFIX) *.o $(ESMF_CXXLINKOPTS) $(ESMF_CXXLINKPATHS) $(ESMF_CXXLINKRPATHS) $(ESMF_CXXLINKLIBS) ;\ + $(ESMF_AREXTRACT) ../$$NEXTLIB.$(ESMF_LIB_SUFFIX) ;\ + if [ $(ESMF_SL_SUFFIX) != "dll.a" ] ; then \ + echo $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB.$(ESMF_SL_SUFFIX) *.o $(ESMF_SL_LIBLIBS) ;\ + $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB.$(ESMF_SL_SUFFIX) *.o $(ESMF_SL_LIBLIBS) ;\ + echo Converting $$NEXTLIB.$(ESMF_SL_SUFFIX) to $$NEXTLIB\_fullylinked.$(ESMF_SL_SUFFIX) ;\ + echo $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB\_fullylinked.$(ESMF_SL_SUFFIX) *.o $(ESMF_CXXLINKOPTS) $(ESMF_CXXLINKPATHS) $(ESMF_CXXLINKRPATHS) $(ESMF_CXXLINKLIBS) ;\ + $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/$$NEXTLIB\_fullylinked.$(ESMF_SL_SUFFIX) *.o $(ESMF_CXXLINKOPTS) $(ESMF_CXXLINKPATHS) $(ESMF_CXXLINKRPATHS) $(ESMF_CXXLINKLIBS) ;\ else \ echo $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/cyg$${NEXTLIB#lib}\.dll -Wl,--out-implib=$(ESMF_LDIR)/$$NEXTLIB\.dll.a -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--whole-archive *.o -Wl,--no-whole-archive $(ESMF_CXXLINKOPTS) $(ESMF_CXXLINKPATHS) $(ESMF_CXXLINKRPATHS) $(ESMF_CXXLINKLIBS) ;\ - $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/cyg$${NEXTLIB#lib}\.dll -Wl,--out-implib=$(ESMF_LDIR)/$$NEXTLIB\.dll.a -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--whole-archive *.o -Wl,--no-whole-archive $(ESMF_CXXLINKOPTS) $(ESMF_CXXLINKPATHS) $(ESMF_CXXLINKRPATHS) $(ESMF_CXXLINKLIBS) ;\ - fi ;\ + $(ESMF_SL_LIBLINKER) $(ESMF_SL_LIBOPTS) -o $(ESMF_LDIR)/cyg$${NEXTLIB#lib}\.dll -Wl,--out-implib=$(ESMF_LDIR)/$$NEXTLIB\.dll.a -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--whole-archive *.o -Wl,--no-whole-archive $(ESMF_CXXLINKOPTS) $(ESMF_CXXLINKPATHS) $(ESMF_CXXLINKRPATHS) $(ESMF_CXXLINKLIBS) ;\ + fi ;\ cd .. ;\ $(ESMF_RM) -r tmp_$$NEXTLIB ;\ fi ;\ From 9afb99d5eb0986471e3da0a0d47d9859a84b8c02 Mon Sep 17 00:00:00 2001 From: DWesl <22566757+DWesl@users.noreply.github.com> Date: Mon, 11 Dec 2023 09:38:34 -0500 Subject: [PATCH 16/20] CI: Update Cygwin CI workflow triggers. Drop push, add workflow_dispatch and release. --- .github/workflows/test-build-cygwin.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-build-cygwin.yml b/.github/workflows/test-build-cygwin.yml index cb1a179697..682a31df8e 100644 --- a/.github/workflows/test-build-cygwin.yml +++ b/.github/workflows/test-build-cygwin.yml @@ -1,5 +1,5 @@ name: Test on Cygwin -on: ["push", "pull_request"] +on: ["workflow_dispatch", "pull_request", "release"] concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} From 8323f7676686cdcbef7dcf81389d6fb2f00887da Mon Sep 17 00:00:00 2001 From: DWesl <22566757+DWesl@users.noreply.github.com> Date: Fri, 10 May 2024 15:07:52 -0400 Subject: [PATCH 17/20] CI:Cygwin: Remove ESMPy and doc checks. I don't think those were actually working anyway, and I don't feel like debugging those. --- .github/workflows/test-build-cygwin.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/test-build-cygwin.yml b/.github/workflows/test-build-cygwin.yml index 682a31df8e..0fe330b7e4 100644 --- a/.github/workflows/test-build-cygwin.yml +++ b/.github/workflows/test-build-cygwin.yml @@ -66,9 +66,3 @@ jobs: - name: Check ESMF run: | C:\tools\cygwin\bin\dash.exe -c "/usr/bin/make check" - - name: Check ESMPy - run: | - C:\tools\cygwin\bin\dash.exe -c "cd src/addon/esmpy; /usr/bin/make download test_all" - - name: Build ESMF Docs - run: | - C:\tools\cygwin\bin\dash.exe -c "/usr/bin/make doc" From f04998c90163153821891ba2eca08aa7cb042d13 Mon Sep 17 00:00:00 2001 From: DWesl <22566757+DWesl@users.noreply.github.com> Date: Thu, 6 Feb 2025 05:26:46 -0500 Subject: [PATCH 18/20] CI: Drop runs on each CI commit --- .github/workflows/test-build-cygwin.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test-build-cygwin.yml b/.github/workflows/test-build-cygwin.yml index 0fe330b7e4..67ddd87e99 100644 --- a/.github/workflows/test-build-cygwin.yml +++ b/.github/workflows/test-build-cygwin.yml @@ -1,5 +1,8 @@ name: Test on Cygwin -on: ["workflow_dispatch", "pull_request", "release"] +on: + workflow_dispatch: + release: + type: ["published"] concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} From ff0fa780181425ccd31080580b8b2a0bdea6210d Mon Sep 17 00:00:00 2001 From: DWesl <22566757+DWesl@users.noreply.github.com> Date: Mon, 10 Feb 2025 08:27:33 -0500 Subject: [PATCH 19/20] CI:Cygwin: Run on release-like tags --- .github/workflows/test-build-cygwin.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/test-build-cygwin.yml b/.github/workflows/test-build-cygwin.yml index 67ddd87e99..0909f9db68 100644 --- a/.github/workflows/test-build-cygwin.yml +++ b/.github/workflows/test-build-cygwin.yml @@ -3,6 +3,9 @@ on: workflow_dispatch: release: type: ["published"] + push: + tags: + - 'v[0-9]+.[0-9]+.[0-9]+' concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} From a6ce87b03ff73d55c992f99eb2e725448c098f09 Mon Sep 17 00:00:00 2001 From: DWesl <22566757+DWesl@users.noreply.github.com> Date: Mon, 10 Feb 2025 08:30:34 -0500 Subject: [PATCH 20/20] CI:Cygwin: Install CMake for PIO --- .github/workflows/test-build-cygwin.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-build-cygwin.yml b/.github/workflows/test-build-cygwin.yml index 0909f9db68..8f70f10eb2 100644 --- a/.github/workflows/test-build-cygwin.yml +++ b/.github/workflows/test-build-cygwin.yml @@ -54,7 +54,7 @@ jobs: packages: >- openmpi gcc-core gcc-fortran gcc-g++ libnetcdf-devel libnetcdf-fortran-devel texlive-collection-latex texlive-collection-latexextra perl make bash dash - liblapack-devel + liblapack-devel cmake python39-devel python39-pip python39-numpy python39-pytest - name: Set Windows PATH uses: egor-tensin/cleanup-path@v3