diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 23283250..93e70bb4 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -12,6 +12,9 @@ on: is-version-branch: type: boolean required: true + skip: + type: boolean + required: true env: DOTNET_INSTALL_DIR: ${{ github.workspace }}/.dotnet/ @@ -19,6 +22,7 @@ env: jobs: BuildNugetPackages-MacOS: + if: ${{ ! inputs.skip }} strategy: matrix: os: [macos-14, macos-13] diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f63d5752..b4d5715d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -26,17 +26,36 @@ jobs: is-pre-release: ${{ steps.set.outputs.is_pre_release }} dotnet-version: ${{ steps.set.outputs.dotnet_version }} is-version-branch: ${{ steps.set.outputs.is_version_branch }} + skip-unix: ${{ steps.set.outputs.skip_unix }} + skip-windows: ${{ steps.set.outputs.skip_windows }} + skip-osx: ${{ steps.set.outputs.skip_osx }} steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} + - name: Set env for the reusable workflows id: set run: | - echo "is_pre_release=$IS_PRE_RELEASE" >> $GITHUB_OUTPUT + echo "is_pre_release=$IS_PRE_RELEASE" >> $GITHUB_OUTPUT echo "dotnet_version=$DOTNET_VERSION" >> $GITHUB_OUTPUT if [[ ${{ github.ref }} =~ ^refs/heads/v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then echo "is_version_branch=true" >> $GITHUB_OUTPUT else echo "is_version_branch=false" >> $GITHUB_OUTPUT - fi + fi; + # Skip build for specific OS + git log -1 --pretty=format:"%B" | cat + for os in unix windows osx; do + if git log -1 --pretty=format:"%B" | grep -Eq "\[(skip|no) $os\]|\[$os skip\]"; then + echo "skip_$os=true" >> $GITHUB_OUTPUT + echo "Skip build for $os" + else + echo "skip_$os=false" >> $GITHUB_OUTPUT + echo "Building for $os" + fi + done LinuxBuild: needs: env-context @@ -46,6 +65,7 @@ jobs: is-pre-release: ${{ fromJSON(needs.env-context.outputs.is-pre-release) }} dotnet-version: ${{ needs.env-context.outputs.dotnet-version }} is-version-branch: ${{ fromJSON(needs.env-context.outputs.is-version-branch) }} + skip: ${{ fromJSON(needs.env-context.outputs.skip-unix) }} WindowsBuild: needs: env-context @@ -55,6 +75,7 @@ jobs: is-pre-release: ${{ fromJSON(needs.env-context.outputs.is-pre-release) }} dotnet-version: ${{ needs.env-context.outputs.dotnet-version }} is-version-branch: ${{ fromJSON(needs.env-context.outputs.is-version-branch) }} + skip: ${{ fromJSON(needs.env-context.outputs.skip-windows) }} MacOSBuild: needs: env-context @@ -64,6 +85,7 @@ jobs: is-pre-release: ${{ fromJSON(needs.env-context.outputs.is-pre-release) }} dotnet-version: ${{ needs.env-context.outputs.dotnet-version }} is-version-branch: ${{ fromJSON(needs.env-context.outputs.is-version-branch) }} + skip: ${{ fromJSON(needs.env-context.outputs.skip-osx) }} TestAndPushPackages: needs: [env-context, LinuxBuild, WindowsBuild, MacOSBuild] diff --git a/.github/workflows/unix.yml b/.github/workflows/unix.yml index d30f3b16..19f58d79 100644 --- a/.github/workflows/unix.yml +++ b/.github/workflows/unix.yml @@ -12,6 +12,9 @@ on: is-version-branch: type: boolean required: true + skip: + type: boolean + required: true env: DOCKER_REGISTRY: ghcr.io/maxrev-dev @@ -22,6 +25,7 @@ permissions: jobs: BuildNugetPackages-Linux: + if: ${{ ! inputs.skip }} strategy: matrix: include: diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index b0026c50..d003e65b 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -12,6 +12,9 @@ on: is-version-branch: type: boolean required: true + skip: + type: boolean + required: true env: DOTNET_INSTALL_DIR: ${{ github.workspace }}/.dotnet @@ -19,6 +22,7 @@ env: jobs: BuildNugetPackages-Windows: + if: ${{ ! inputs.skip }} strategy: matrix: os: [windows-latest] diff --git a/osx/gdal-makefile b/osx/gdal-makefile index 8ed08690..825c264c 100644 --- a/osx/gdal-makefile +++ b/osx/gdal-makefile @@ -99,8 +99,7 @@ configure_hdf: @cd $(HDF_CMAKE_TMP) && cmake $(HDF_SOURCE) \ -DCMAKE_INSTALL_PREFIX=$(BUILD_ROOT)/hdf-build -Wno-dev \ -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_C_FLAGS="-fPIC" \ - -DCMAKE_CXX_FLAGS="-fPIC" \ + -DCMAKE_C_FLAGS="-fPIC -w" \ -DCMAKE_PREFIX_PATH=$(VCPKG_INSTALLED_DYNAMIC) \ -DCMAKE_OSX_DEPLOYMENT_TARGET=$(OSX_DEPLOYMENT_TARGET) || exit 1 @@ -124,8 +123,8 @@ configure_gdal: @cd $(GDAL_CMAKE_TMP) && cmake $(GDAL_ROOT) \ -DCMAKE_INSTALL_PREFIX=$(BUILD_ROOT)/gdal-build -Wno-dev \ -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_C_FLAGS="-fPIC" \ - -DCMAKE_CXX_FLAGS="-fPIC" \ + -DCMAKE_C_FLAGS="-fPIC -w" \ + -DCMAKE_CXX_FLAGS="-fPIC -w" \ -DGDAL_USE_DEFLATE=OFF \ -DGDAL_USE_ZLIB_INTERNAL=ON \ -DGDAL_CSHARP_APPS=OFF \ @@ -166,8 +165,8 @@ configure_proj: cmake $(PROJ_ROOT) \ -DCMAKE_BUILD_TYPE=Release -Wno-dev \ -DCMAKE_MAKE_PROGRAM=make \ - -DCMAKE_C_FLAGS="-Wno-deprecated-declarations" \ - -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" \ + -DCMAKE_C_FLAGS="-w" \ + -DCMAKE_CXX_FLAGS="-w" \ -DCMAKE_INSTALL_PREFIX=$(PROJ_BUILD) \ -DBUILD_TESTING=OFF \ -DBUILD_SHARED_LIBS=ON \ diff --git a/tests/MaxRev.Gdal.Core.Tests.AzureFunctions/MaxRev.Gdal.Core.Tests.AzureFunctions.csproj b/tests/MaxRev.Gdal.Core.Tests.AzureFunctions/MaxRev.Gdal.Core.Tests.AzureFunctions.csproj index 06bd57e0..634ccf59 100644 --- a/tests/MaxRev.Gdal.Core.Tests.AzureFunctions/MaxRev.Gdal.Core.Tests.AzureFunctions.csproj +++ b/tests/MaxRev.Gdal.Core.Tests.AzureFunctions/MaxRev.Gdal.Core.Tests.AzureFunctions.csproj @@ -7,7 +7,7 @@ <_FunctionsSkipCleanOutput>true - + diff --git a/tests/MaxRev.Gdal.Core.Tests.XUnit/MaxRev.Gdal.Core.Tests.XUnit.csproj b/tests/MaxRev.Gdal.Core.Tests.XUnit/MaxRev.Gdal.Core.Tests.XUnit.csproj index 43be02e8..6fc593e0 100644 --- a/tests/MaxRev.Gdal.Core.Tests.XUnit/MaxRev.Gdal.Core.Tests.XUnit.csproj +++ b/tests/MaxRev.Gdal.Core.Tests.XUnit/MaxRev.Gdal.Core.Tests.XUnit.csproj @@ -7,7 +7,7 @@ x64;arm64 - + diff --git a/tests/MaxRev.Gdal.Core.Tests/MaxRev.Gdal.Core.Tests.csproj b/tests/MaxRev.Gdal.Core.Tests/MaxRev.Gdal.Core.Tests.csproj index 7e89cf28..45be806c 100644 --- a/tests/MaxRev.Gdal.Core.Tests/MaxRev.Gdal.Core.Tests.csproj +++ b/tests/MaxRev.Gdal.Core.Tests/MaxRev.Gdal.Core.Tests.csproj @@ -8,7 +8,7 @@ MaxRev.Gdal.Core.Tests - + \ No newline at end of file diff --git a/unix/gdal-makefile b/unix/gdal-makefile index dfeb8eed..6355e1bc 100644 --- a/unix/gdal-makefile +++ b/unix/gdal-makefile @@ -115,8 +115,8 @@ configure_gdal: @cd $(GDAL_CMAKE_TMP) && cmake $(GDAL_ROOT) \ -DCMAKE_BUILD_TYPE=Release -Wno-dev \ - -DCMAKE_C_FLAGS="-fPIC" \ - -DCMAKE_CXX_FLAGS="-fPIC" \ + -DCMAKE_C_FLAGS="-fPIC -w" \ + -DCMAKE_CXX_FLAGS="-fPIC -w" \ -DGDAL_USE_DEFLATE=OFF \ -DGDAL_USE_ZLIB_INTERNAL=ON \ -DGDAL_CSHARP_APPS=ON \ @@ -147,8 +147,8 @@ configure_proj: cmake $(PROJ_ROOT) \ -DCMAKE_BUILD_TYPE=Release -Wno-dev\ -DCMAKE_MAKE_PROGRAM=make \ - -DCMAKE_C_FLAGS="-Wno-deprecated-declarations" \ - -DCMAKE_CXX_FLAGS="-Wno-deprecated-declarations" \ + -DCMAKE_C_FLAGS="-w" \ + -DCMAKE_CXX_FLAGS="-w" \ -DCMAKE_INSTALL_PREFIX=$(PROJ_BUILD) \ -DBUILD_TESTING=OFF \ -DBUILD_SHARED_LIBS=ON \ diff --git a/win/install.ps1 b/win/install.ps1 index cb8f500a..7530df70 100644 --- a/win/install.ps1 +++ b/win/install.ps1 @@ -47,8 +47,6 @@ try { Install-Proj -cleanProjBuild $cleanProjBuild -cleanProjIntermediate $cleanProjIntermediate - Get-ProjDatum - Reset-GdalSourceBindings $env:INCLUDE = Add-EnvVar $env:INCLUDE "$env:SDK_PREFIX\include" $env:LIB = Add-EnvVar $env:LIB "$env:SDK_PREFIX\lib" diff --git a/win/partials.psm1 b/win/partials.psm1 index 5b9683a9..a5b8ab13 100644 --- a/win/partials.psm1 +++ b/win/partials.psm1 @@ -2,8 +2,6 @@ function Set-GdalVariables { $env:VS_VERSION = "Visual Studio 17 2022" $env:SDK = "release-1930-x64" #2022 x64 $env:SDK_ZIP = "$env:SDK" + "-dev.zip" - $env:PROJ_DATUM = "proj-datumgrid-1.8.zip" - $env:PROJ_DATUM_URL = "http://download.osgeo.org/proj/$env:PROJ_DATUM" $env:SDK_URL = "http://download.gisinternals.com/sdk/downloads/$env:SDK_ZIP" $env:LIBWEBP_URL = "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.3.2-windows-x64.zip" $env:LIBZSTD_URL = "https://github.com/facebook/zstd/releases/download/v1.5.5/zstd-v1.5.5-win64.zip" @@ -11,7 +9,6 @@ function Set-GdalVariables { $env:VS_VER = "2022" $env:ARCHITECTURE = "amd64" $env:WIN64_ARG = "WIN64=YES" - $env:platform = "x64" $env:CMAKE_ARCHITECTURE = "x64" $env:CMAKE_PARALLEL_JOBS = 4 @@ -26,11 +23,11 @@ function Set-GdalVariables { $env:GDAL_DRIVER_PATH = "$env:GDAL_INSTALL_DIR\share\gdal" $env:PROJ_LIB = "$env:PROJ_INSTALL_DIR\share\proj" $env:GdalCmakeBuild = "$env:BUILD_ROOT\gdal-cmake-temp" - $env:VCPKG_INSTALLED_PKGCONFIG = "$env:BUILD_ROOT\vcpkg\installed\x64-windows\lib\pkgconfig" $env:SDK_LIB = "$env:SDK_PREFIX\lib" $env:SDK_BIN = "$env:SDK_PREFIX\bin" $env:GDAL_INSTALL_DIR = "$env:BUILD_ROOT\gdal-build" $env:VCPKG_INSTALLED = "$env:BUILD_ROOT\vcpkg\installed\x64-windows" + $env:VCPKG_INSTALLED_PKGCONFIG = "$env:VCPKG_INSTALLED\lib\pkgconfig" $env:WEBP_ROOT = Get-ForceResolvePath("$env:BUILD_ROOT\sdk\libwebp*") } @@ -152,28 +149,17 @@ function Install-Proj { cmake -G $env:VS_VERSION -A $env:CMAKE_ARCHITECTURE $env:PROJ_SOURCE ` -DCMAKE_INSTALL_PREFIX="$env:PROJ_INSTALL_DIR" ` -DCMAKE_BUILD_TYPE=Release -Wno-dev ` + -DCMAKE_C_FLAGS="/w" ` + -DCMAKE_CXX_FLAGS="/w" ` -DPROJ_TESTS=OFF -DBUILD_LIBPROJ_SHARED=ON ` -DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_ROOT\scripts\buildsystems\vcpkg.cmake" ` - -DCMAKE_PREFIX_PATH="$env:VCPKG_ROOT\installed\x64-windows;$env:SDK_PREFIX" ` + -DCMAKE_PREFIX_PATH="$env:VCPKG_INSTALLED;$env:SDK_PREFIX" ` -DBUILD_SHARED_LIBS=ON -DENABLE_CURL=ON -DENABLE_TIFF=ON exec { cmake --build . -j $env:CMAKE_PARALLEL_JOBS --config Release --target install } Write-BuildStep "Done building PROJ" } -function Get-ProjDatum { - Write-BuildStep "Checking for PROJ datum grid" - Set-Location "$env:BUILD_ROOT\proj-build\share\proj" - if (-Not (Test-Path -Path $env:PROJ_DATUM -PathType Leaf)) { - Write-BuildInfo "Downloading PROJ datum grid" - Invoke-WebRequest $env:PROJ_DATUM_URL -OutFile $env:PROJ_DATUM - Write-BuildStep "PROJ datum grid was downloaded" - } - else { - Write-BuildStep "PROJ datum grid already exists" - } -} - function Get-GdalVersion { return (Get-Content "$env:GDAL_SOURCE\VERSION") } @@ -253,8 +239,7 @@ function Build-Gdal { New-FolderIfNotExistsAndSetCurrentLocation $env:GdalCmakeBuild New-FolderIfNotExists "$PSScriptRoot\..\nuget" - $env:ARCH_FLAGS = "/arch:AVX2 /Ob2 /Oi /Os /Oy" - $env:VCPKG_INSTALLED = "$env:BUILD_ROOT\vcpkg\installed\x64-windows" + $env:ARCH_FLAGS = "/arch:AVX2 /Ob2 /Oi /Os /Oy /w" # disabling KEA driver as it causes build issues on Windows # https://github.com/OSGeo/gdal/blob/3b232ee17d8f3d93bf3535b77fbb436cb9a9c2e0/.github/workflows/windows_build.yml#L178 @@ -267,9 +252,9 @@ function Build-Gdal { cmake -G $env:VS_VERSION -A $env:CMAKE_ARCHITECTURE "$env:GDAL_SOURCE" ` $env:CMAKE_INSTALL_PREFIX -DCMAKE_BUILD_TYPE=Release -Wno-dev ` -DCMAKE_C_FLAGS="$env:ARCH_FLAGS" ` + -DCMAKE_CXX_FLAGS="$env:ARCH_FLAGS" ` -DCMAKE_PREFIX_PATH="$env:VCPKG_INSTALLED;$env:SDK_PREFIX" ` -DGDAL_USE_OPENEXR=OFF ` - -DCMAKE_CXX_FLAGS="$env:ARCH_FLAGS" ` $env:WEBP_INCLUDE $env:WEBP_LIB ` $env:PROJ_ROOT $env:MYSQL_LIBRARY ` $env:Poppler_INCLUDE_DIR $env:Poppler_LIBRARY `