diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b15a9c3f9..a7edc7290 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,7 +4,7 @@ name: Build on: [push, pull_request] env: - PY_VER: "3.10" + PY_VER: "3.11" CMAKE_VERSION: "~3.25.0" FORCE_COLOR: "YES" KART_S3_TEST_DATA_POINT_CLOUD: "s3://kart-bring-your-own-data-poc/auckland-small-laz1.2/*.laz" @@ -55,7 +55,7 @@ jobs: ports: - 1433:1433 mysql: - image: mysql + image: public.ecr.aws/docker/library/mysql:latest options: >- -e MYSQL_ROOT_PASSWORD=PassWord1 ports: @@ -71,7 +71,7 @@ jobs: # - name: "setup: cmake & ninja" - uses: lukka/get-cmake@arm64-win-linux + uses: lukka/get-cmake@v3.25.2 # workaround for node 20 issue with: cmakeVersion: "${{ env.CMAKE_VERSION }}" @@ -84,17 +84,16 @@ jobs: - name: "setup: misc" run: | sudo apt-get update -q -y - sudo apt-get install -q -y --no-install-recommends ccache + sudo apt-get install -q -y --no-install-recommends autoconf-archive ccache mkdir -p ${{ env.CCACHE_DIR }} echo "/usr/lib/ccache" >> $GITHUB_PATH - name: "setup: vcpkg" - uses: lukka/run-vcpkg@v10 + uses: lukka/run-vcpkg@v11.1 with: vcpkgDirectory: "${{ github.workspace }}/vcpkg-vendor/vcpkg" vcpkgJsonGlob: "**/vcpkg-vendor/vcpkg.json" - prependedCacheKey: "20221110a-ubuntu-22.04" - appendedCacheKey: "C${{ env.CMAKE_VERSION}}:${{ hashFiles('vcpkg-vendor/vcpkg-overlay-triplets/**', 'vcpkg-vendor/vcpkg-overlay-ports/**', 'vcpkg-vendor/vcpkg-toolchain-setup.cmake') }}" + doNotCache: false # do-cache # # App Build @@ -117,17 +116,12 @@ jobs: echo "is_release=$IS_RELEASE" >> $GITHUB_OUTPUT - name: "app: configuration & vendor dependencies" - uses: lukka/run-cmake@v10 + uses: lukka/run-cmake@v10.6 with: configurePreset: ci-linux - - name: "check for vcpkg errors" - if: "failure() || cancelled()" - run: | - echo "RUNVCPKG_NO_CACHE=1" >> $GITHUB_ENV - - name: "app: build" - uses: lukka/run-cmake@v10 + uses: lukka/run-cmake@v10.6 with: configurePreset: ci-linux buildPreset: ci-linux @@ -161,7 +155,7 @@ jobs: mv fienode /usr/local/bin/ - name: "test: unit tests" - uses: lukka/run-cmake@v10 + uses: lukka/run-cmake@v10.6 with: configurePreset: ci-linux testPreset: ci-linux @@ -175,7 +169,7 @@ jobs: # - name: "bundle: assemble" - uses: lukka/run-cmake@v10 + uses: lukka/run-cmake@v10.6 with: configurePreset: ci-linux buildPreset: ci-bundle-linux @@ -186,7 +180,7 @@ jobs: ./build/pyinstaller/dist/kart/kart --version - name: "bundle: e2e tests" - uses: lukka/run-cmake@v10 + uses: lukka/run-cmake@v10.6 with: configurePreset: ci-linux testPreset: ci-e2e-linux @@ -261,7 +255,7 @@ jobs: ports: - 1433:1433 mysql: - image: mysql + image: public.ecr.aws/docker/library/mysql:latest options: >- -e MYSQL_ROOT_PASSWORD=PassWord1 ports: @@ -286,7 +280,7 @@ jobs: image: ${{ matrix.os.image }} env: ACLOCAL_PATH: "/usr/local/share/aclocal:/usr/share/aclocal" - PATH: "/opt/python/cp310-cp310/bin:/opt/rh/devtoolset-10/root/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/github/home/.cargo/bin:/opt/mssql-tools/bin" + PATH: "/opt/python/cp311-cp311/bin:/opt/rh/devtoolset-10/root/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/github/home/.cargo/bin:/opt/mssql-tools/bin" steps: - uses: actions/checkout@v3 @@ -297,7 +291,7 @@ jobs: # setup # - name: "setup: cmake & ninja" - uses: lukka/get-cmake@arm64-win-linux + uses: lukka/get-cmake@v3.25.2 # workaround for node 20 issue with: cmakeVersion: "${{ env.CMAKE_VERSION }}" @@ -313,7 +307,7 @@ jobs: git config --global --add safe.directory ${GITHUB_WORKSPACE} - yum install -y perl-IPC-Cmd rpm-build unixODBC zip + yum install -y autoconf-archive perl-IPC-Cmd rpm-build unixODBC zip echo "installing golang..." curl -qL "https://go.dev/dl/go1.19.2.linux-${ARCH}.tar.gz" | tar xz -C /usr/local/ @@ -324,12 +318,11 @@ jobs: fi - name: "setup: vcpkg" - uses: lukka/run-vcpkg@v10 + uses: lukka/run-vcpkg@v11.1 with: - vcpkgDirectory: "vcpkg-vendor/vcpkg" + vcpkgDirectory: "${{ github.workspace }}/vcpkg-vendor/vcpkg" vcpkgJsonGlob: "**/vcpkg-vendor/vcpkg.json" - prependedCacheKey: "20230113a-linux-${{ matrix.os.label }}" - appendedCacheKey: "C${{ env.CMAKE_VERSION}}:${{ hashFiles('vcpkg-vendor/vcpkg-overlay-triplets/**', 'vcpkg-vendor/vcpkg-overlay-ports/**', 'vcpkg-vendor/vcpkg-toolchain-setup.cmake') }}" + doNotCache: false # do-cache - name: "setup: pkgconf" working-directory: /__w/_temp @@ -359,19 +352,13 @@ jobs: echo "is_release=$IS_RELEASE" >> $GITHUB_OUTPUT - name: "app: configuration & vendor dependencies" - uses: lukka/run-cmake@v10 + uses: lukka/run-cmake@v10.6 env: LD_LIBRARY_PATH: "${{ env.LD_LIBRARY_PATH }}:${{ env.GITHUB_WORKSPACE }}/build/vcpkg_installed/${{ env.ARCH_TRIPLET }}/lib" with: configurePreset: ci-linux configurePresetAdditionalArgs: ${{ env.OPTIONS_FOR_CMAKE }} - - name: "check for vcpkg errors" - if: "failure() || cancelled()" - shell: bash - run: | - echo "RUNVCPKG_NO_CACHE=1" >> $GITHUB_ENV - - name: "app: build" shell: bash run: | @@ -486,34 +473,34 @@ jobs: runner: buildjet-2vcpu-ubuntu-2204-arm os: - label: "tgz-ubuntu-22.04" - image: "ubuntu:jammy" + image: "public.ecr.aws/ubuntu/ubuntu:jammy" type: "tgz" - label: "ubuntu-22.04" - image: "ubuntu:jammy" + image: "public.ecr.aws/ubuntu/ubuntu:jammy" type: "deb" - label: "ubuntu-20.04" - image: "ubuntu:focal" + image: "public.ecr.aws/ubuntu/ubuntu:focal" type: "deb" - label: "ubuntu-18.04" - image: "ubuntu:bionic" + image: "public.ecr.aws/ubuntu/ubuntu:bionic" type: "deb" - label: "debian-stable" - image: "debian:stable-slim" + image: "public.ecr.aws/docker/library/debian:stable-slim" type: "deb" - label: "debian-oldstable" - image: "debian:oldstable-slim" + image: "public.ecr.aws/docker/library/debian:oldstable-slim" type: "deb" - label: "amazonlinux-2023" - image: "amazonlinux:2023" + image: "public.ecr.aws/amazonlinux/amazonlinux:2023" type: "rpm" - label: "fedora-latest" - image: "fedora:latest" + image: "public.ecr.aws/docker/library/fedora:latest" type: "rpm" - label: "almalinux-9" - image: "almalinux:9" + image: "public.ecr.aws/docker/library/almalinux:9" type: "rpm" - label: "almalinux-8" - image: "almalinux:8" + image: "public.ecr.aws/docker/library/almalinux:8" type: "rpm" runs-on: ${{ matrix.arch.runner }} @@ -614,7 +601,7 @@ jobs: env: CCACHE_DIR: ${{ github.workspace }}/.cache/ccache CCACHE_COMPRESS: "1" - PY_VER_ID: "cp310-cp310" + PY_VER_ID: "cp311-cp311" steps: - uses: actions/checkout@v3 @@ -633,7 +620,7 @@ jobs: cache-dependency-path: 'requirements/*.txt' - name: "setup: cmake & ninja" - uses: lukka/get-cmake@arm64-win-linux + uses: lukka/get-cmake@v3.25.2 # workaround for node 20 issue with: cmakeVersion: "${{ env.CMAKE_VERSION }}" @@ -646,7 +633,7 @@ jobs: - name: "setup: misc" run: | sudo apt-get update -q -y - sudo apt-get install -q -y --no-install-recommends ccache unixodbc file sqlite3 + sudo apt-get install -q -y --no-install-recommends autoconf-archive ccache unixodbc file sqlite3 mkdir -p ${{ env.CCACHE_DIR }} echo "/usr/lib/ccache" >> $GITHUB_PATH @@ -718,6 +705,7 @@ jobs: # macOS: strategy: + fail-fast: false matrix: os: - id: macos-12 @@ -748,7 +736,7 @@ jobs: MACOS_PKGSIGN_ID: ${{ secrets.MACOS_PKGSIGN_ID }} MACOS_NOTARIZE_KEYCHAIN_PROFILE: "NOTARIZE_AUTH" # X.Y version needs to match PY_VER: - PY_VER_INSTALLER: "https://www.python.org/ftp/python/3.10.9/python-3.10.9-macos11.pkg" + PY_VER_INSTALLER: "https://www.python.org/ftp/python/3.11.6/python-3.11.6-macos11.pkg" steps: - uses: actions/checkout@v3 @@ -855,12 +843,12 @@ jobs: fi - name: "app: configuration & vendor dependencies" - uses: lukka/run-cmake@v10 + uses: lukka/run-cmake@v10.6 with: configurePreset: ci-macos - name: "app: build" - uses: lukka/run-cmake@v10 + uses: lukka/run-cmake@v10.6 with: configurePreset: ci-macos buildPreset: ci-macos @@ -889,7 +877,7 @@ jobs: sudo mv clone_checker /usr/local/bin/ - name: "test: unit tests" - uses: lukka/run-cmake@v10 + uses: lukka/run-cmake@v10.6 with: configurePreset: ci-macos testPreset: ci-macos @@ -919,7 +907,7 @@ jobs: --password "$MACOS_NOTARIZE_PW" - name: "bundle: assemble" - uses: lukka/run-cmake@v10 + uses: lukka/run-cmake@v10.6 with: configurePreset: ci-macos buildPreset: ci-bundle-macos @@ -930,7 +918,7 @@ jobs: ./build/pyinstaller/dist/Kart.app/Contents/MacOS/kart --version - name: "bundle: e2e tests" - uses: lukka/run-cmake@v10 + uses: lukka/run-cmake@v10.6 with: configurePreset: ci-macos testPreset: ci-e2e-macos @@ -1041,12 +1029,11 @@ jobs: cache-dependency-path: 'requirements/*.txt' - name: "setup: vcpkg" - uses: lukka/run-vcpkg@v10 + uses: lukka/run-vcpkg@v11 with: vcpkgDirectory: "${{ github.workspace }}/vcpkg-vendor/vcpkg" vcpkgJsonGlob: "**/vcpkg-vendor/vcpkg.json" - prependedCacheKey: "20221201a" - appendedCacheKey: "C${{ env.CMAKE_VERSION}}:N${{ env.NINJA_VERSION }}:${{ hashFiles('vcpkg-vendor/vcpkg-overlay-triplets/**', 'vcpkg-vendor/vcpkg-overlay-ports/**', 'vcpkg-vendor/vcpkg-toolchain-setup.cmake') }}" + doNotCache: false # do-cache - name: "setup: misc" shell: pwsh @@ -1084,17 +1071,12 @@ jobs: fi - name: "app: configuration & vendor dependencies" - uses: lukka/run-cmake@v10 + uses: lukka/run-cmake@v10.6 with: configurePreset: ci-windows - - name: "check for vcpkg errors" - if: failure() || cancelled() - run: | - echo "RUNVCPKG_NO_CACHE=1" >> $GITHUB_ENV - - name: "app: build" - uses: lukka/run-cmake@v10 + uses: lukka/run-cmake@v10.6 with: configurePreset: ci-windows buildPreset: ci-windows @@ -1116,7 +1098,7 @@ jobs: ./build/kart.cmd --version - name: "test: unit tests" - uses: lukka/run-cmake@v10 + uses: lukka/run-cmake@v10.6 with: configurePreset: ci-windows testPreset: ci-windows @@ -1126,7 +1108,7 @@ jobs: # - name: "bundle: assemble" - uses: lukka/run-cmake@v10 + uses: lukka/run-cmake@v10.6 env: SIGN_AZURE_VAULT: ${{ secrets.WIN_SIGN_AZURE_VAULT }} SIGN_AZURE_CLIENTID: ${{ secrets.WIN_SIGN_AZURE_CLIENTID }} @@ -1142,7 +1124,7 @@ jobs: ./build/pyinstaller/dist/kart/kart.exe --version - name: "bundle: e2e tests" - uses: lukka/run-cmake@v10 + uses: lukka/run-cmake@v10.6 with: configurePreset: ci-windows testPreset: ci-e2e-windows diff --git a/.gitmodules b/.gitmodules index beeb46ec9..b76287457 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "vcpkg-vendor/vcpkg"] path = vcpkg-vendor/vcpkg url = https://github.com/koordinates/vcpkg.git - branch = kx-master + branch = kx-20231101 diff --git a/CHANGELOG.md b/CHANGELOG.md index a083d37cf..6d1903248 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ _When adding new entries to the changelog, please include issue/PR numbers where - Fixes a bug where Kart would misidentify a non-Kart repo as a Kart V1 repo in some circumstances. [#918](https://github.com/koordinates/kart/issues/918) - Improve schema extraction for point cloud datasets. [#924](https://github.com/koordinates/kart/issues/924) - Some tweaks to `--dry-run` output of Kart LFS commands. [#932](https://github.com/koordinates/kart/pull/932) +- Now using Python 3.11 to build Kart, and vendored dependencies have been updated to newer versions. [#933](https://github.com/koordinates/kart/pull/933) ## 0.14.2 diff --git a/CMakeLists.txt b/CMakeLists.txt index 5a2de6ab1..5a7b4d354 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -355,8 +355,10 @@ if(MACOS) COMMAND ${XCODE_CODESIGN} --display --verbose \"\${CHECK_DIR}/\${CPACK_PACKAGE_FILE_NAME}/Kart.app\" COMMAND_ECHO STDERR COMMAND_ERROR_IS_FATAL ANY) + # codesign --verify --strict=all only works in macOS 15 and later, + # a bug in earlier versions means it fails with 'file not found' execute_process( - COMMAND ${XCODE_CODESIGN} --verify --verbose --deep --strict=all \"\${CHECK_DIR}/\${CPACK_PACKAGE_FILE_NAME}/Kart.app\" + COMMAND ${XCODE_CODESIGN} --verify --verbose --deep \"\${CHECK_DIR}/\${CPACK_PACKAGE_FILE_NAME}/Kart.app\" COMMAND_ECHO STDERR COMMAND_ERROR_IS_FATAL ANY) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1874acf1f..9620db718 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -38,10 +38,11 @@ $ git submodule update --init --recursive ### Setting Python3 +Python 3.11 is now used (as of Kart v0.15) to build official Kart releases. CMake will try to automatically find a Python3 install on your system with which to build Kart. However, to avoid any issues caused by different Python implementations, it is recommended to force CMake -to use Python 3.10, by supplying the flag `-DPython3_EXECUTABLE` - for example: -`-DPython3_EXECUTABLE=$(command -v python3.10)` +to use Python 3.11 , by supplying the flag `-DPython3_EXECUTABLE` - for example: +`-DPython3_EXECUTABLE=$(command -v python3.11)` When using CI artifacts to build this is not just recommended, but required. @@ -49,7 +50,7 @@ When using CI artifacts to build this is not just recommended, but required. Then configure Kart: ```console -$ cmake -B build -S . -DPython3_EXECUTABLE=/path/to/python3.10 -DUSE_VCPKG=ON +$ cmake -B build -S . -DPython3_EXECUTABLE=/path/to/python3.11 -DUSE_VCPKG=ON ``` Configuration builds all the dependencies using [VCPKG](https://github.com/microsoft/vcpkg) @@ -77,7 +78,7 @@ Kart with `-DCLI_HELPER=ON`. ### Downloading vendor dependencies from CI -If you're having issues with VCPKG in the above, you can download a recent master-branch vendor CI artifact for your platform (eg: `vendor-macos-X64-py3.10.zip`). +If you're having issues with VCPKG in the above, you can download a recent master-branch vendor CI artifact for your platform (eg: `vendor-macos-X64-py3.11.zip`). To do this, take the following steps: 1. Start at the list of recent [successful builds on master](https://github.com/koordinates/kart/actions/workflows/build.yml?query=branch%3Amaster+is%3Asuccess). 1. Select a commit - ideally the commit that you have checked out locally, but if you don't see it, just choosing the top one will generally work. @@ -88,12 +89,12 @@ To do this, take the following steps: Then: ```console -$ cmake -B build -S . -DPython3_EXECUTABLE=/path/to/python3.10 -DVENDOR_ARCHIVE=/path/to/downloaded/vendor-{os}-{arch}-py3.10.zip -DUSE_VCPKG=OFF +$ cmake -B build -S . -DPython3_EXECUTABLE=/path/to/python3.11 -DVENDOR_ARCHIVE=/path/to/downloaded/vendor-{os}-{arch}-py3.11.zip -DUSE_VCPKG=OFF $ cmake --build build $ build/kart --version ``` -Note you'll need to have the same version of Python that Kart CI currently uses (Python 3.10). +Note you'll need to have the same version of Python that Kart CI currently uses (Python 3.11). ### Running the tests @@ -119,10 +120,11 @@ Clone Kart from Github: ### Setting Python3 +Python 3.11 is now used (as of Kart v0.15) to build official Kart releases. CMake will try to automatically find a Python3 install on your system with which to build Kart. However, to avoid any issues caused by different Python implementations, it is recommended to force CMake -to use Python 3.10, by supplying the flag `-DPython3_EXECUTABLE` - for example: -`-DPython3_EXECUTABLE="C:\Program Files\Python310\python.exe"` +to use Python 3.11, by supplying the flag `-DPython3_EXECUTABLE` - for example: +`-DPython3_EXECUTABLE="C:\Program Files\Python311\python.exe"` When using CI artifacts to build this is not just recommended, but required. @@ -151,7 +153,7 @@ $ build\pyinstaller\dist\kart\kart.exe --version ### Downloading vendor dependencies from CI -If you're having issues with VCPKG in the above, you can download a recent master-branch vendor CI artifact for your platform (eg: `vendor-windows-X64-py3.10.zip`). +If you're having issues with VCPKG in the above, you can download a recent master-branch vendor CI artifact for your platform (eg: `vendor-windows-X64-py3.11.zip`). To do this, take the following steps: 1. Start at the list of recent [successful builds on master](https://github.com/koordinates/kart/actions/workflows/build.yml?query=branch%3Amaster+is%3Asuccess). 1. Select a commit - ideally the commit that you have checked out locally, but if you don't see it, just choosing the top one will generally work. @@ -162,12 +164,12 @@ To do this, take the following steps: Then: ```console -> cmake -B build -S . -DPython3_EXECUTABLE=C:\path\to\python310.exe -DVENDOR_ARCHIVE=D:\path\to\downloaded\vendor-windows-X64-py3.10.zip -DUSE_VCPKG=OFF +> cmake -B build -S . -DPython3_EXECUTABLE=C:\path\to\python310.exe -DVENDOR_ARCHIVE=D:\path\to\downloaded\vendor-windows-X64-py3.11.zip -DUSE_VCPKG=OFF > cmake --build build > .\build\venv\Scripts\kart.exe --version ``` -Note you'll need to have the same version of Python that Kart CI currently uses (Python 3.10). +Note you'll need to have the same version of Python that Kart CI currently uses (Python 3.11). ### Running the tests diff --git a/cmake/KartBundle.cmake b/cmake/KartBundle.cmake index 00c5a734d..b25923097 100644 --- a/cmake/KartBundle.cmake +++ b/cmake/KartBundle.cmake @@ -1,7 +1,7 @@ include(PyCreateVirtualEnvironment) file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/bundleEnv.requirements.txt - "pyinstaller~=5.6.2\n" "macholib>=1.8;sys_platform=='darwin'\n") + "pyinstaller~=6.1.0\n" "macholib>=1.8;sys_platform=='darwin'\n") createvirtualenvironment(bundleEnv REQUIREMENTS_TXT "bundleEnv.requirements.txt") @@ -80,7 +80,9 @@ elseif(MACOS AND MACOS_SIGN_BUNDLE) --strict --entitlements ${CMAKE_CURRENT_SOURCE_DIR}/platforms/macos/entitlements.plist -o runtime pyinstaller/dist/Kart.app COMMAND ${XCODE_CODESIGN} --display --verbose pyinstaller/dist/Kart.app - COMMAND ${XCODE_CODESIGN} --verify --verbose --deep --strict=all pyinstaller/dist/Kart.app + # codesign --verify --strict=all only works in macOS 15 and later, + # a bug in earlier versions means it fails with "file not found" + COMMAND ${XCODE_CODESIGN} --verify --verbose --deep pyinstaller/dist/Kart.app COMMAND ${CMAKE_COMMAND} -E touch pyinstaller/codesign.stamp VERBATIM COMMENT "Code-signing macOS bundle") diff --git a/cmake/PythonGetABIInfo.cmake b/cmake/PythonGetABIInfo.cmake index 6476219aa..37bb33665 100644 --- a/cmake/PythonGetABIInfo.cmake +++ b/cmake/PythonGetABIInfo.cmake @@ -12,8 +12,8 @@ Output Variables: Python3_MACOSX_DEPLOYMENT_TARGET: (macOS only) Stores the macOS deployment target Python was built with (eg: 10.9) Python3_PURELIB_REL_PATH: - Relatuve path from a virtualenv root to the site-packages directory - eg: lib/python3.10/site-packages + Relative path from a virtualenv root to the site-packages directory + eg: lib/python3.11/site-packages #]=============================================================================] diff --git a/kart.spec b/kart.spec index 4b538c456..37d8debab 100644 --- a/kart.spec +++ b/kart.spec @@ -22,7 +22,7 @@ from PyInstaller.depend import dylib from PyInstaller.utils.hooks import collect_data_files BINARY_DIR = os.environ.get("BINARY_DIR", "build") -USE_CLI_HELPER = os.environ.get("USE_CLI_HELPER", "ON") == "ON" +USE_CLI_HELPER = os.environ.get("USE_CLI_HELPER", "ON") == "ON" and not is_win if is_win: lib_suffix_glob = 'dll' @@ -89,10 +89,10 @@ if not is_win: binaries += [ (f'{BINARY_DIR}/venv/bin/git', '.'), ] - if USE_CLI_HELPER: - binaries += [ - (f'{BINARY_DIR}/cli_helper/kart', '.'), - ] +if USE_CLI_HELPER: + binaries += [ + (f'{BINARY_DIR}/cli_helper/kart', '.'), + ] kart_version_file = os.environ.get("KART_VERSION_FILE", "kart/VERSION") @@ -105,7 +105,6 @@ datas = [ ('COPYING', '.'), (f'{BINARY_DIR}/venv/share/gdal', 'share/gdal'), (f'{BINARY_DIR}/venv/share/proj', 'share/proj'), - (f'{BINARY_DIR}/venv/pyodbc.pyi', '.'), (f'{BINARY_DIR}/venv/help', 'help'), ] @@ -194,12 +193,9 @@ if is_linux or is_darwin: pyi_pyz = PYZ(pyi_analysis.pure, pyi_analysis.zipped_data, cipher=None) -if is_win: - exe_icon = 'platforms/windows/kart.ico' - exe_name = 'kart' -else: - exe_icon = 'platforms/macos/kart.icns' - exe_name = 'kart_cli' if USE_CLI_HELPER else 'kart' + +exe_icon = 'platforms/windows/kart.ico' if is_win else 'platforms/macos/kart.icns' +exe_name = 'kart_cli' if USE_CLI_HELPER else 'kart' pyi_exe = EXE( pyi_pyz, @@ -238,29 +234,62 @@ pyi_app = BUNDLE( }, ) +if is_win: + dist_bin_root = Path(DISTPATH) / "Kart" +elif is_darwin: + dist_bin_root = Path(DISTPATH) / "Kart.app" / "Contents" / "MacOS" +elif is_linux: + dist_bin_root = Path(DISTPATH) / "kart" + + +if is_darwin: + # On macOS, helper executables and libraries are found in Kart.app/Contents/Frameworks + dist_contents_root = Path(DISTPATH) / "Kart.app" / "Contents" / "Frameworks" +else: + # On other platforms Pyinstaller now hides such files inside a contents folder, + # defaults to /_internal/ see https://github.com/pyinstaller/pyinstaller/pull/7713 + dist_contents_root = ( + (dist_bin_root / "_internal") + if (dist_bin_root / "_internal").is_dir() + else dist_bin_root + ) + +# We want not just the python executable but also the helper executable to be in the binary root folder. +if USE_CLI_HELPER and dist_contents_root != dist_bin_root: + (dist_contents_root / f"kart{exe_suffix}").rename( + dist_bin_root / f"kart{exe_suffix}" + ) + + # Ideally we'd do this before BUNDLE so it could sign it on macOS, but we # can do that ourselves later. if symlinks: - if is_darwin: - dist_bin_root = Path(DISTPATH) / 'Kart.app' / 'Contents' / 'MacOS' - elif is_linux: - dist_bin_root = Path(DISTPATH) / 'kart' - else: + if is_win: raise RuntimeError("Symlinks don't work well on Windows!") + elif is_darwin: + # On macOS, PyInstaller makes a Frameworks directory for binaries / libraries, + # and a Resources directory for data and populates them accordingly. + # But then it cross symlinks everything so that you can find it in both regardless. + # Now that we're setting up symlinks, that means we just need to set them up in both directories. + dist_resources_root = Path(DISTPATH) / "Kart.app" / "Contents" / "Resources" + dist_contents_roots = [dist_contents_root, dist_resources_root] + else: + dist_contents_roots = [dist_contents_root] for sl, td in symlinks: sl, td = Path(sl), Path(td) - tp = dist_bin_root / td - - st = sl.readlink() - - if sl.name == "git": # git itself - (tp / sl.name).symlink_to("../../git") - elif str(st) == "../../bin/git": # git-foo -> git - (tp / sl.name).symlink_to("../../git") - elif str(st) == st.name: # git-foo -> git-bar - (tp / sl.name).symlink_to(st.name) - else: - raise ValueError( - "Found symlink I don't know how to handle: source={sl} -> {st}; dest={td}/{sl.name} -> ???" - ) + for root in dist_contents_roots: + tp = root / td + + st = sl.readlink() + + if sl.name == "git": # git itself + (tp / sl.name).symlink_to("../../git") + elif str(st) == "../../bin/git": # git-foo -> git + (tp / sl.name).symlink_to("../../git") + elif str(st) == st.name: # git-foo -> git-bar + (tp / sl.name).symlink_to(st.name) + else: + raise ValueError( + "Found symlink I don't know how to handle: source={sl} -> {st}; dest={td}/{sl.name} -> ???" + ) diff --git a/platforms/windows/cpack-wix-patch.xml b/platforms/windows/cpack-wix-patch.xml index ef7871b67..ccfe10409 100644 --- a/platforms/windows/cpack-wix-patch.xml +++ b/platforms/windows/cpack-wix-patch.xml @@ -1,8 +1,12 @@ - - - - + + + + + + + @@ -11,9 +15,4 @@ - - - - - \ No newline at end of file + diff --git a/requirements/dev.txt b/requirements/dev.txt index 25ce47b87..a013846ba 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.10 +# This file is autogenerated by pip-compile with Python 3.11 # by the following command: # # "cmake --build build --target py-requirements" @@ -60,10 +60,6 @@ six==1.16.0 # asttokens stack-data==0.6.2 # via ipython -tomli==2.0.1 - # via - # -c test.txt - # ipdb traitlets==5.7.1 # via # ipython diff --git a/requirements/docs.txt b/requirements/docs.txt index b1e2501fe..77c9945ef 100644 --- a/requirements/docs.txt +++ b/requirements/docs.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.10 +# This file is autogenerated by pip-compile with Python 3.11 # by the following command: # # "cmake --build build --target py-requirements" @@ -9,18 +9,13 @@ alabaster==0.7.12 babel==2.11.0 # via sphinx certifi==2022.12.7 - # via - # -c requirements.txt - # requests + # via requests charset-normalizer==2.1.1 # via requests colorama==0.4.6 - # via - # -c test.txt - # sphinx-autobuild + # via sphinx-autobuild docutils==0.17.1 # via - # -c requirements.txt # sphinx # sphinx-rtd-theme idna==3.4 @@ -34,22 +29,15 @@ livereload==2.6.3 markupsafe==2.1.1 # via jinja2 packaging==22.0 - # via - # -c test.txt - # sphinx + # via sphinx pygments==2.13.0 - # via - # -c requirements.txt - # sphinx + # via sphinx pytz==2022.6 # via babel requests==2.31.0 # via sphinx six==1.16.0 - # via - # -c requirements.txt - # -c test.txt - # livereload + # via livereload snowballstemmer==2.2.0 # via sphinx sphinx==5.3.0 @@ -75,6 +63,4 @@ sphinxcontrib-serializinghtml==1.1.5 tornado==6.2 # via livereload urllib3==1.26.16 - # via - # -c requirements.txt - # requests + # via requests diff --git a/requirements/requirements.txt b/requirements/requirements.txt index ecea1c277..fa96f265f 100644 --- a/requirements/requirements.txt +++ b/requirements/requirements.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.10 +# This file is autogenerated by pip-compile with Python 3.11 # by the following command: # # "cmake --build build --target py-requirements" @@ -30,7 +30,7 @@ docutils==0.17.1 # rst2txt #gdal==3.6.3 # via -r vendor-wheels.txt -greenlet==2.0.1 ; os_name != "posix" +greenlet==3.0.1 # via sqlalchemy jmespath==1.0.1 # via @@ -40,7 +40,7 @@ jsonschema==4.17.3 # via -r requirements.in msgpack==0.6.2 # via -r requirements.in -#psycopg2==2.8.5 +#psycopg2==2.9.9 # via -r vendor-wheels.txt pycparser==2.21 # via cffi @@ -52,11 +52,11 @@ pygments==2.13.0 # rst2txt pymysql==1.0.2 # via -r requirements.in -pyodbc==4.0.32 +pyodbc==5.0.1 # via -r vendor-wheels.txt pyrsistent==0.19.2 # via jsonschema -#pysqlite3==0.4.5 +#pysqlite3==0.5.2 # via -r vendor-wheels.txt python-dateutil==2.8.2 # via botocore diff --git a/requirements/test.txt b/requirements/test.txt index ca2ba219a..918f8ce0f 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -1,5 +1,5 @@ # -# This file is autogenerated by pip-compile with Python 3.10 +# This file is autogenerated by pip-compile with Python 3.11 # by the following command: # # "cmake --build build --target py-requirements" @@ -15,9 +15,9 @@ attrs==22.1.0 colorama==0.4.6 # via -r test.in coverage[toml]==6.5.0 - # via pytest-cov -exceptiongroup==1.0.4 - # via pytest + # via + # coverage + # pytest-cov execnet==1.9.0 # via pytest-xdist fields==5.0.0 @@ -70,9 +70,5 @@ six==1.16.0 # pytest-profiling termcolor==2.1.1 # via pytest-sugar -tomli==2.0.1 - # via - # coverage - # pytest webencodings==0.5.1 # via html5lib diff --git a/requirements/vendor-wheels.txt b/requirements/vendor-wheels.txt index 29c2690f6..d943d3ac1 100644 --- a/requirements/vendor-wheels.txt +++ b/requirements/vendor-wheels.txt @@ -1,8 +1,8 @@ cffi==1.15.1 cryptography==41.0.3 gdal==3.6.3 -psycopg2==2.8.5 +psycopg2==2.9.9 pygit2==1.9.0 -pyodbc==4.0.32 -pysqlite3==0.4.5 +pyodbc==5.0.1 +pysqlite3==0.5.2 reflink==0.2.1 diff --git a/tests/scripts/e2e-1.ps1 b/tests/scripts/e2e-1.ps1 index 7ff136b75..939cd3ee4 100644 --- a/tests/scripts/e2e-1.ps1 +++ b/tests/scripts/e2e-1.ps1 @@ -44,7 +44,7 @@ If ((Get-Item $KART_PATH).Directory.Name -eq 'Scripts') { Write-Output "Kart is at: ${KART_PATH} (Prefix: ${KART_PREFIX})" # Spatialite -$SPATIALITE=("${KART_PREFIX}\mod_spatialite" -replace '\\', '/').ToLower() +$SPATIALITE=("${KART_PREFIX}\_internal\mod_spatialite" -replace '\\', '/').ToLower() New-Item -ItemType Directory -Path "${TMP_PATH}\test" Push-Location "${TMP_PATH}\test" diff --git a/tests/scripts/e2e-1.sh b/tests/scripts/e2e-1.sh index 40c1747a8..1ddbf81fb 100755 --- a/tests/scripts/e2e-1.sh +++ b/tests/scripts/e2e-1.sh @@ -38,6 +38,10 @@ export SHELL=/bin/bash KART_PATH=$(dirname "$(realpath "$(command -v kart)")") echo "Kart is at: ${KART_PATH}" + +SPATIALITE_PATH=$(echo 'from kart import spatialite_path; print(spatialite_path)' | kart --post-mortem 2>/dev/null | grep spatialite | awk '{print $2}') +echo "Spatialite is at: ${SPATIALITE_PATH}" + mkdir "${TMP_PATH}/test" cd "${TMP_PATH}/test" set -x @@ -57,7 +61,8 @@ kart log kart checkout kart switch -c edit-1 sqlite3 --bail test.gpkg " - SELECT load_extension('${KART_PATH}/mod_spatialite'); + PRAGMA trusted_schema=1; + SELECT load_extension('${SPATIALITE_PATH}'); SELECT EnableGpkgMode(); INSERT INTO mylayer (fid, geom) VALUES (999, GeomFromEWKT('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')); " diff --git a/vcpkg-vendor/CMakeLists.txt b/vcpkg-vendor/CMakeLists.txt index ad7238b55..90bd1a02e 100644 --- a/vcpkg-vendor/CMakeLists.txt +++ b/vcpkg-vendor/CMakeLists.txt @@ -223,11 +223,11 @@ pg_config=${PG_CONFIG_EXE} define= ") -set(PYSCOPG2_WHEEL_VER 2.8.5) +set(PYSCOPG2_WHEEL_VER 2.9.9) ExternalProject_Add( psycopg2 - URL https://files.pythonhosted.org/packages/a8/8f/1c5690eebf148d1d1554fc00ccf9101e134636553dbb75bdfef4f85d7647/psycopg2-2.8.5.tar.gz - URL_HASH SHA256=f7d46240f7a1ae1dd95aab38bd74f7428d46531f69219954266d669da60c0818 + URL https://files.pythonhosted.org/packages/c9/5e/dc6acaf46d78979d6b03458b7a1618a68e152a6776fce95daac5e0f0301b/psycopg2-2.9.9.tar.gz + URL_HASH SHA256=d1454bde93fb1e224166811694d600e746430c006fbb031ea06ecc2ea41bf156 DOWNLOAD_NO_PROGRESS ON BUILD_IN_SOURCE ON DEPENDS wheelBuildEnv PostgreSQL::PostgreSQL @@ -283,6 +283,7 @@ list(APPEND WHEEL_LIST ${INSTALL_DIR}/pygit2-${PYGIT2_WHEEL_VER}-${Python3_WHEEL if(NOT WIN32) find_package(unixodbc CONFIG REQUIRED) set(PYODBC_BUILD_DEPENDS UNIX::odbc) + set(ODBC_CONFIG_DIR ${CURRENT_PACKAGES_DIR}/tools/unixodbc/bin) endif() file( @@ -294,12 +295,12 @@ include_dirs=${BUILD_WHEEL_INCLUDE_DIRS} library_dirs=${BUILD_WHEEL_LIBRARY_DIRS} ") -set(PYODBC_WHEEL_VER 4.0.32) +set(PYODBC_WHEEL_VER 5.0.1) ExternalProject_Add( pyodbc # if you build from a git repository, pyodbc adds +commit0c0ffee to the wheel version - URL https://files.pythonhosted.org/packages/d1/21/755f5fa373d01d1803d992c7611799dc4e9fcbb5db7d0852990d6ab3c9ad/pyodbc-4.0.32.tar.gz - URL_HASH SHA256=9be5f0c3590655e1968488410fe3528bb8023d527e7ccec1f663d64245071a6b + URL https://files.pythonhosted.org/packages/22/6f/012f32aecf744e439980257be0ba4dd8c70a4e03c9f86f5fcd986fbfb012/pyodbc-5.0.1.tar.gz + URL_HASH SHA256=03d7d0b04d5a9156099ce8d03e92f3956783746fa9234eb6f5b5cfc12b645011 DOWNLOAD_NO_PROGRESS ON BUILD_IN_SOURCE ON DEPENDS wheelBuildEnv ${PYODBC_BUILD_DEPENDS} @@ -308,7 +309,8 @@ ExternalProject_Add( CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/pyodbc-prefix/setup.cfg BUILD_COMMAND ${CMAKE_COMMAND} -E rm -rf /*.whl - COMMAND ${wheelBuildEnv_PYTHON} -m build --wheel --outdir /dist + COMMAND ${CMAKE_COMMAND} -E env --modify PATH=path_list_prepend:${ODBC_CONFIG_DIR} -- + ${wheelBuildEnv_PYTHON} -m build --wheel --outdir /dist INSTALL_COMMAND ${CMAKE_COMMAND} -E copy /dist/pyodbc-${PYODBC_WHEEL_VER}-${Python3_WHEEL_ID}.whl ) ExternalProject_Get_Property(pyodbc INSTALL_DIR) @@ -328,7 +330,7 @@ include_dirs=${BUILD_WHEEL_INCLUDE_DIRS} library_dirs=${BUILD_WHEEL_LIBRARY_DIRS} ") -set(PYSQLITE3_WHEEL_VER 0.4.5) +set(PYSQLITE3_WHEEL_VER 0.5.2) ExternalProject_Add( pysqlite3 GIT_REPOSITORY https://github.com/coleifer/pysqlite3.git diff --git a/vcpkg-vendor/cmake-vcpkg-build-linux.sh b/vcpkg-vendor/cmake-vcpkg-build-linux.sh index 065b11d8f..8126856f5 100755 --- a/vcpkg-vendor/cmake-vcpkg-build-linux.sh +++ b/vcpkg-vendor/cmake-vcpkg-build-linux.sh @@ -11,7 +11,7 @@ set -euo pipefail # - quay.io/pypa/manylinux2014_aarch64 # should also work with most other OS images too (eg: ubuntu:jammy, ubuntu:focal) -PYVER=3.10 +PYVER=3.11 APT_DEPENDS=( autoconf build-essential diff --git a/vcpkg-vendor/vcpkg b/vcpkg-vendor/vcpkg index 09cbbcd67..625ba82b9 160000 --- a/vcpkg-vendor/vcpkg +++ b/vcpkg-vendor/vcpkg @@ -1 +1 @@ -Subproject commit 09cbbcd678a3a5e21b099347147e36dd7b321967 +Subproject commit 625ba82b98209eb7e76f335e635e280f2117862f diff --git a/vcpkg-vendor/vcpkg-overlay-ports/gdal/fix-find-spatialite.patch b/vcpkg-vendor/vcpkg-overlay-ports/gdal/fix-find-spatialite.patch new file mode 100644 index 000000000..45713e765 --- /dev/null +++ b/vcpkg-vendor/vcpkg-overlay-ports/gdal/fix-find-spatialite.patch @@ -0,0 +1,13 @@ +diff --git a/cmake/modules/packages/FindSPATIALITE.cmake b/cmake/modules/packages/FindSPATIALITE.cmake +index d64daecefbc8..79827d9e19e5 100644 +--- a/cmake/modules/packages/FindSPATIALITE.cmake ++++ b/cmake/modules/packages/FindSPATIALITE.cmake +@@ -64,6 +64,6 @@ if(SPATIALITE_LIBRARY AND SPATIALITE_INCLUDE_DIR + AND NOT SPATIALITE_VERSION_STRING) + file(STRINGS "${SPATIALITE_INCLUDE_DIR}/spatialite.h" _spatialite_h_ver +- REGEX "^[ \t]version[ \t]([0-9]+\\.[0-9]+),.*") +- string(REGEX REPLACE "[ \t]version[ \t]([0-9]+\\.[0-9]+),.*" "\\1" _spatialite_h_ver ${_spatialite_h_ver}) ++ REGEX "^[ \t]version[ \t]([0-9]+\\.[0-9]+)[,.].*") ++ string(REGEX REPLACE "[ \t]version[ \t]([0-9]+\\.[0-9]+)[,.].*" "\\1" _spatialite_h_ver "${_spatialite_h_ver}") + set(SPATIALITE_VERSION_STRING "${_spatialite_h_ver}") + endif() diff --git a/vcpkg-vendor/vcpkg-overlay-ports/gdal/portfile.cmake b/vcpkg-vendor/vcpkg-overlay-ports/gdal/portfile.cmake index d2f8c7aec..9ec71b740 100644 --- a/vcpkg-vendor/vcpkg-overlay-ports/gdal/portfile.cmake +++ b/vcpkg-vendor/vcpkg-overlay-ports/gdal/portfile.cmake @@ -8,6 +8,7 @@ vcpkg_from_github( find-link-libraries.patch fix-gdal-target-interfaces.patch libkml.patch + fix-find-spatialite.patch ) # `vcpkg clean` stumbles over one subdir file(REMOVE_RECURSE "${SOURCE_PATH}/autotest") diff --git a/vcpkg-vendor/vcpkg-overlay-ports/libspatialite/fix-mingw.patch b/vcpkg-vendor/vcpkg-overlay-ports/libspatialite/fix-mingw.patch index c29b03449..abbe3520a 100644 --- a/vcpkg-vendor/vcpkg-overlay-ports/libspatialite/fix-mingw.patch +++ b/vcpkg-vendor/vcpkg-overlay-ports/libspatialite/fix-mingw.patch @@ -1,23 +1,10 @@ -diff --git a/src/gaiageo/gg_shape.c b/src/gaiageo/gg_shape.c -index ee2f1cf..01f2571 100644 ---- a/src/gaiageo/gg_shape.c -+++ b/src/gaiageo/gg_shape.c -@@ -58,7 +58,7 @@ the terms of any one of the MPL, the GPL or the LGPL. - #endif - - #ifdef _WIN32 --#include -+#include - #endif - - #if OMIT_ICONV == 0 /* if ICONV is disabled no SHP support is available */ diff --color -ur a/configure.ac b/configure.ac --- a/configure.ac 2022-07-21 17:23:50.490298108 +0200 +++ b/configure.ac 2022-07-21 17:25:45.671489524 +0200 @@ -116,7 +116,6 @@ # Checks for installed libraries - AC_CHECK_LIB(sqlite3,sqlite3_prepare_v2,,AC_MSG_ERROR(['libsqlite3' is required but it doesn't seem to be installed on this system.]),-lm) + # AC_CHECK_LIB(sqlite3,sqlite3_prepare_v2,,AC_MSG_ERROR(['libsqlite3' is required but it doesn't seem to be installed on this system.]),-lm) -AC_CHECK_LIB(z,inflateInit_,,AC_MSG_ERROR(['libz' is required but it doesn't seem to be installed on this system.]),-lm) AC_CONFIG_FILES([Makefile \ diff --git a/vcpkg-vendor/vcpkg-overlay-ports/libspatialite/fix-utf8-source.patch b/vcpkg-vendor/vcpkg-overlay-ports/libspatialite/fix-utf8-source.patch new file mode 100644 index 000000000..76dcf77a5 --- /dev/null +++ b/vcpkg-vendor/vcpkg-overlay-ports/libspatialite/fix-utf8-source.patch @@ -0,0 +1,32 @@ +diff --git a/src/srsinit/epsg_inlined_21.c b/src/srsinit/epsg_inlined_21.c +index 94aa9d4..457b38a 100644 +--- a/src/srsinit/epsg_inlined_21.c ++++ b/src/srsinit/epsg_inlined_21.c +@@ -619,9 +619,9 @@ initialize_epsg_21 (int filter, struct epsg_defs **first, struct epsg_defs **las + add_srs_wkt (p, 27, + "lic, Chad, Chile, China, Christmas Island, Cocos (Keelin"); + add_srs_wkt (p, 28, +- "g) Islands, Comoros, Congo, Cook Islands, Costa Rica, CĂ"); ++ "g) Islands, Comoros, Congo, Cook Islands, Costa Rica, CĂ´"); + add_srs_wkt (p, 29, +- "´te d'Ivoire (Ivory Coast), Croatia, Cuba, Curacao, Cypr"); ++ "te d'Ivoire (Ivory Coast), Croatia, Cuba, Curacao, Cypr"); + add_srs_wkt (p, 30, + "us, Czechia, Denmark, Djibouti, Dominica, Dominican Repu"); + add_srs_wkt (p, 31, +diff --git a/src/srsinit/epsg_inlined_25.c b/src/srsinit/epsg_inlined_25.c +index 1071eb1..a09cb8c 100644 +--- a/src/srsinit/epsg_inlined_25.c ++++ b/src/srsinit/epsg_inlined_25.c +@@ -3180,9 +3180,9 @@ initialize_epsg_25 (int filter, struct epsg_defs **first, struct epsg_defs **las + add_srs_wkt (p, 26, + "lic, Chad, Chile, China, Christmas Island, Cocos (Keelin"); + add_srs_wkt (p, 27, +- "g) Islands, Comoros, Congo, Cook Islands, Costa Rica, CĂ"); ++ "g) Islands, Comoros, Congo, Cook Islands, Costa Rica, CĂ´"); + add_srs_wkt (p, 28, +- "´te d'Ivoire (Ivory Coast), Croatia, Cuba, Curacao, Cypr"); ++ "te d'Ivoire (Ivory Coast), Croatia, Cuba, Curacao, Cypr"); + add_srs_wkt (p, 29, + "us, Czechia, Denmark, Djibouti, Dominica, Dominican Repu"); + add_srs_wkt (p, 30, diff --git a/vcpkg-vendor/vcpkg-overlay-ports/libspatialite/portfile.cmake b/vcpkg-vendor/vcpkg-overlay-ports/libspatialite/portfile.cmake index 4b1d0aa35..7b0e4207c 100644 --- a/vcpkg-vendor/vcpkg-overlay-ports/libspatialite/portfile.cmake +++ b/vcpkg-vendor/vcpkg-overlay-ports/libspatialite/portfile.cmake @@ -1,8 +1,7 @@ -set(LIBSPATIALITE_VERSION_STR "5.0.1") vcpkg_download_distfile(ARCHIVE - URLS "https://www.gaia-gis.it/gaia-sins/libspatialite-sources/libspatialite-${LIBSPATIALITE_VERSION_STR}.tar.gz" - FILENAME "libspatialite-${LIBSPATIALITE_VERSION_STR}.tar.gz" - SHA512 c2552994bc30d69d1e80aa274760f048cd384f71e8350a1e48a47cb8222ba71a1554a69c6534eedde9a09dc582c39c089967bcc1c57bf158cc91a3e7b1840ddf + URLS "https://www.gaia-gis.it/gaia-sins/libspatialite-sources/libspatialite-${VERSION}.tar.gz" + FILENAME "libspatialite-${VERSION}.tar.gz" + SHA512 2745b373e31cea58623224def6090c491b58409803bb71231450dfa2cfdf3aafc3fc6f680585d55d085008f8cf362c3062ae67ffc7d80257775a22eb81ef1e57 ) vcpkg_extract_source_archive( @@ -14,6 +13,7 @@ vcpkg_extract_source_archive( fix-linux-configure.patch gaiaconfig-msvc.patch fix-mingw.patch + fix-utf8-source.patch ok-load-permanently.patch ) @@ -134,7 +134,6 @@ if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) endif() set(infile "${SOURCE_PATH}/spatialite.pc.in") - set(VERSION "${LIBSPATIALITE_VERSION_STR}") set(libdir [[${prefix}/lib]]) set(exec_prefix [[${prefix}]]) list(JOIN pkg_config_modules " " requires_private) @@ -207,6 +206,7 @@ else() ${RTTOPO_OPTION} "--disable-examples" "--disable-minizip" + "--disable-proj" OPTIONS_DEBUG "LIBS=${PKGCONFIG_LIBS_DEBUG} ${SYSTEM_LIBS}" OPTIONS_RELEASE diff --git a/vcpkg-vendor/vcpkg-overlay-ports/libspatialite/vcpkg.json b/vcpkg-vendor/vcpkg-overlay-ports/libspatialite/vcpkg.json index 447ffe993..448e5c7bf 100644 --- a/vcpkg-vendor/vcpkg-overlay-ports/libspatialite/vcpkg.json +++ b/vcpkg-vendor/vcpkg-overlay-ports/libspatialite/vcpkg.json @@ -1,7 +1,6 @@ { "name": "libspatialite", - "version": "5.0.1", - "port-version": 12, + "version": "5.1.0", "description": "SpatiaLite is an open source library intended to extend the SQLite core to support fully fledged Spatial SQL capabilities.", "homepage": "https://www.gaia-gis.it/gaia-sins/libspatialite-sources", "license": null, diff --git a/vcpkg-vendor/vcpkg-overlay-ports/pdal/cmake-project-include.cmake b/vcpkg-vendor/vcpkg-overlay-ports/pdal/cmake-project-include.cmake deleted file mode 100644 index 37fd8c2bd..000000000 --- a/vcpkg-vendor/vcpkg-overlay-ports/pdal/cmake-project-include.cmake +++ /dev/null @@ -1,6 +0,0 @@ -include(CheckIncludeFileCXX) - -check_include_file_cxx("filesystem" HAVE_CXX17_FILESYSTEM) -if(NOT HAVE_CXX17_FILESYSTEM) - message(FATAL_ERROR "Unable to find header. PDAL requires full C++17 compiler support.") -endif() diff --git a/vcpkg-vendor/vcpkg-overlay-ports/pdal/fix-dependency.patch b/vcpkg-vendor/vcpkg-overlay-ports/pdal/fix-dependency.patch deleted file mode 100644 index af6cca16c..000000000 --- a/vcpkg-vendor/vcpkg-overlay-ports/pdal/fix-dependency.patch +++ /dev/null @@ -1,33 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 1705a8426..248edcd38 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -269,7 +269,7 @@ target_link_libraries(${PDAL_BASE_LIB_NAME} - PRIVATE - ${CMAKE_THREAD_LIBS_INIT} - ${CMAKE_DL_LIBS} -- ${GDAL_LIBRARY} -+ ${GDAL_LIBRARIES} - ${GEOTIFF_LIBRARY} - ${LIBXML2_LIBRARIES} - ${ZLIB_LIBRARIES} -diff --git a/cmake/zstd.cmake b/cmake/zstd.cmake -index dfe3dc024..42a78d646 100644 ---- a/cmake/zstd.cmake -+++ b/cmake/zstd.cmake -@@ -4,7 +4,14 @@ - option(WITH_ZSTD - "Build support for compression/decompression with Zstd." TRUE) - if (WITH_ZSTD) -- find_package(ZSTD QUIET) -+ find_package(ZSTD NAMES zstd REQUIRED) -+ set(ZSTD_INCLUDE_DIRS "") -+ if(TARGET zstd::libzstd_static) -+ set(ZSTD_LIBRARIES zstd::libzstd_static) -+ set(ZSTD_STATIC_LIB zstd::libzstd_static) -+ else() -+ set(ZSTD_LIBRARIES zstd::libzstd_shared) -+ endif() - set_package_properties(ZSTD PROPERTIES TYPE - PURPOSE "General compression support") - if (ZSTD_FOUND) diff --git a/vcpkg-vendor/vcpkg-overlay-ports/pdal/fix-find-library-suffix.patch b/vcpkg-vendor/vcpkg-overlay-ports/pdal/fix-find-library-suffix.patch deleted file mode 100644 index be3cd71ee..000000000 --- a/vcpkg-vendor/vcpkg-overlay-ports/pdal/fix-find-library-suffix.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff --git a/cmake/libraries.cmake b/cmake/libraries.cmake -index 665bc53..fcdcf2c 100644 ---- a/cmake/libraries.cmake -+++ b/cmake/libraries.cmake -@@ -1,6 +1,3 @@ - # Build shared libraries by default. - - set(PDAL_LIB_TYPE "SHARED") --if (WIN32) -- set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_IMPORT_LIBRARY_SUFFIX}) --endif() diff --git a/vcpkg-vendor/vcpkg-overlay-ports/pdal/fix-unix-compiler-options.patch b/vcpkg-vendor/vcpkg-overlay-ports/pdal/fix-unix-compiler-options.patch deleted file mode 100644 index 8143a568d..000000000 --- a/vcpkg-vendor/vcpkg-overlay-ports/pdal/fix-unix-compiler-options.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 1705a8426..d13d41786 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -192,7 +192,7 @@ add_subdirectory(apps) - # so that users only need link libpdalcpp. - # - if (APPLE) -- set(PDAL_REEXPORT "-Wl,-reexport_library,$") -+ set(PDAL_REEXPORT "-Wl$-reexport_library$$") - # - # This allows the rpath reference for the reexported library (above) to - # be found. diff --git a/vcpkg-vendor/vcpkg-overlay-ports/pdal/no-pkgconfig-requires.patch b/vcpkg-vendor/vcpkg-overlay-ports/pdal/no-pkgconfig-requires.patch deleted file mode 100644 index 1f0841e2c..000000000 --- a/vcpkg-vendor/vcpkg-overlay-ports/pdal/no-pkgconfig-requires.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/apps/pdal.pc.in b/apps/pdal.pc.in -index 6885221..cd2136c 100644 ---- a/apps/pdal.pc.in -+++ b/apps/pdal.pc.in -@@ -5,7 +5,6 @@ includedir=@CMAKE_INSTALL_PREFIX@/include - - Name: PDAL - Description: Point Data Abstraction Library --Requires: @PKGCONFIG_LIBRARY_DEFINITIONS@ - Version: @PDAL_VERSION@ - Libs: -L${libdir} -l@PDAL_LIB_NAME@ - Cflags: -I${includedir}/pdal @PDAL_CONFIG_DEFINITIONS@ diff --git a/vcpkg-vendor/vcpkg-overlay-ports/pdal/no-rpath.patch b/vcpkg-vendor/vcpkg-overlay-ports/pdal/no-rpath.patch deleted file mode 100644 index ab2c555c9..000000000 --- a/vcpkg-vendor/vcpkg-overlay-ports/pdal/no-rpath.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/cmake/rpath.cmake b/cmake/rpath.cmake -index ba486b7..4323a77 100644 ---- a/cmake/rpath.cmake -+++ b/cmake/rpath.cmake -@@ -1,6 +1,7 @@ - # - # Set options and variable related to OSX rpath. - # -+return() - - # per http://www.cmake.org/Wiki/CMake_RPATH_handling - SET(CMAKE_SKIP_BUILD_RPATH FALSE) diff --git a/vcpkg-vendor/vcpkg-overlay-ports/pdal/portfile.cmake b/vcpkg-vendor/vcpkg-overlay-ports/pdal/portfile.cmake deleted file mode 100644 index 16a98b9ab..000000000 --- a/vcpkg-vendor/vcpkg-overlay-ports/pdal/portfile.cmake +++ /dev/null @@ -1,120 +0,0 @@ -vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY) - -vcpkg_from_github( - OUT_SOURCE_PATH SOURCE_PATH - REPO koordinates/PDAL - REF kart-v0.14.2 - SHA512 721010c6842a841e8a7d4db543022669ea818e78c87f468d672b1fd77f445897735135508e5b060d17a5b88456eea3a4a66c0c258ac418d995a07ad2804c3fa3 - HEAD_REF kart-v0.14.2 - PATCHES - fix-dependency.patch - fix-unix-compiler-options.patch - fix-find-library-suffix.patch - no-pkgconfig-requires.patch - no-rpath.patch -) - -# Prefer pristine CMake find modules + wrappers and config files from vcpkg. -foreach(package IN ITEMS Curl GeoTIFF ICONV ZSTD) - file(REMOVE "${SOURCE_PATH}/cmake/modules/Find${package}.cmake") -endforeach() - -# De-vendoring -file(REMOVE_RECURSE - "${SOURCE_PATH}/vendor/nanoflann" - "${SOURCE_PATH}/vendor/nlohmann" - "${SOURCE_PATH}/pdal/JsonFwd.hpp" -) -file(INSTALL "${CURRENT_INSTALLED_DIR}/include/nanoflann.hpp" DESTINATION "${SOURCE_PATH}/vendor/nanoflann") -file(INSTALL "${CURRENT_INSTALLED_DIR}/include/nlohmann/json.hpp" DESTINATION "${SOURCE_PATH}/vendor/nlohmann/nlohmann") -file(APPEND "${SOURCE_PATH}/vendor/nlohmann/nlohmann/json.hpp" "namespace NL = nlohmann;\n") -file(INSTALL "${CURRENT_INSTALLED_DIR}/include/nlohmann/json_fwd.hpp" DESTINATION "${SOURCE_PATH}/pdal") -file(RENAME "${SOURCE_PATH}/pdal/json_fwd.hpp" "${SOURCE_PATH}/pdal/JsonFwd.hpp") -file(APPEND "${SOURCE_PATH}/pdal/JsonFwd.hpp" "namespace NL = nlohmann;\n") - -unset(ENV{OSGEO4W_HOME}) - -vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS - FEATURES - draco BUILD_PLUGIN_DRACO - e57 BUILD_PLUGIN_E57 - hdf5 BUILD_PLUGIN_HDF - i3s BUILD_PLUGIN_I3S - lzma WITH_LZMA - pgpointcloud BUILD_PLUGIN_PGPOINTCLOUD - zstd WITH_ZSTD -) -vcpkg_find_acquire_program(PKGCONFIG) -vcpkg_cmake_configure( - SOURCE_PATH "${SOURCE_PATH}" - OPTIONS - "-DCMAKE_PROJECT_INCLUDE=${CMAKE_CURRENT_LIST_DIR}/cmake-project-include.cmake" - -DPDAL_PLUGIN_INSTALL_PATH=. - "-DPKG_CONFIG_EXECUTABLE=${PKGCONFIG}" - -DWITH_TESTS:BOOL=OFF - -DWITH_COMPLETION:BOOL=OFF - -DCMAKE_DISABLE_FIND_PACKAGE_Libexecinfo:BOOL=ON - -DCMAKE_DISABLE_FIND_PACKAGE_Libunwind:BOOL=ON - ${FEATURE_OPTIONS} -) - -vcpkg_cmake_install() -vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/PDAL) -vcpkg_fixup_pkgconfig() -vcpkg_copy_pdbs() - -# Install and cleanup executables -file(GLOB pdal_unsupported - "${CURRENT_PACKAGES_DIR}/bin/*.bat" - "${CURRENT_PACKAGES_DIR}/bin/pdal-config" - "${CURRENT_PACKAGES_DIR}/debug/bin/*.bat" - "${CURRENT_PACKAGES_DIR}/debug/bin/*.exe" - "${CURRENT_PACKAGES_DIR}/debug/bin/pdal-config" -) -file(REMOVE ${pdal_unsupported}) -vcpkg_copy_tools(TOOL_NAMES pdal AUTO_CLEAN) - -# Post-install clean-up -file(REMOVE_RECURSE - "${CURRENT_PACKAGES_DIR}/include/pdal/filters/private/csf" - "${CURRENT_PACKAGES_DIR}/include/pdal/filters/private/miniball" - "${CURRENT_PACKAGES_DIR}/debug/include" - "${CURRENT_PACKAGES_DIR}/debug/share" -) - -file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") - -file(READ "${SOURCE_PATH}/LICENSE.txt" pdal_license) -file(READ "${SOURCE_PATH}/vendor/arbiter/LICENSE" arbiter_license) -file(READ "${SOURCE_PATH}/vendor/kazhdan/PoissonRecon.h" kazhdan_license) -string(REGEX REPLACE "^/\\*\n|\\*/.*\$" "" kazhdan_license "${kazhdan_license}") -file(READ "${SOURCE_PATH}/vendor/lazperf/lazperf.hpp" lazperf_license) -string(REGEX REPLACE "^/\\*\n|\\*/.*\$" "" lazperf_license "${lazperf_license}") -file(WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" -"${pdal_license} ---- - -Files in vendor/arbiter/: - -${arbiter_license} ---- - -Files in vendor/kazhdan/: - -${kazhdan_license} ---- - -Files in vendor/lazperf/: - -${lazperf_license} ---- - -Files in vendor/eigen: - -Most Eigen source code is subject to the terms of the Mozilla Public License -v. 2.0. You can obtain a copy the MPL 2.0 at http://mozilla.org/MPL/2.0/. - -Some files included in Eigen are under one of the following licenses: - - Apache License, Version 2.0 - - BSD 3-Clause \"New\" or \"Revised\" License -") diff --git a/vcpkg-vendor/vcpkg-overlay-ports/pdal/usage b/vcpkg-vendor/vcpkg-overlay-ports/pdal/usage deleted file mode 100644 index 759bf7feb..000000000 --- a/vcpkg-vendor/vcpkg-overlay-ports/pdal/usage +++ /dev/null @@ -1,9 +0,0 @@ -The package pdal provides CMake variables: - - find_package(PDAL CONFIG REQUIRED) - target_include_directories(main PRIVATE ${PDAL_INCLUDE_DIRS}) - target_link_libraries(main PRIVATE ${PDAL_LIBRARIES}) - -If necessary, override the default plugin search path by setting the -environment variable PDAL_DRIVER_PATH to a list of directories that -pdal should search for plugins. diff --git a/vcpkg-vendor/vcpkg-overlay-ports/pdal/vcpkg.json b/vcpkg-vendor/vcpkg-overlay-ports/pdal/vcpkg.json deleted file mode 100644 index 1736914d9..000000000 --- a/vcpkg-vendor/vcpkg-overlay-ports/pdal/vcpkg.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "name": "pdal", - "version": "2.5.3", - "port-version": 1, - "description": "PDAL - Point Data Abstraction Library is a library for manipulating point cloud data.", - "homepage": "https://pdal.io/", - "license": null, - "supports": "!(windows & staticcrt)", - "dependencies": [ - { - "name": "curl", - "default-features": false - }, - { - "name": "gdal", - "default-features": false - }, - "libgeotiff", - { - "name": "libxml2", - "features": [ - "http" - ] - }, - "nanoflann", - "nlohmann-json", - { - "name": "vcpkg-cmake", - "host": true - }, - { - "name": "vcpkg-cmake-config", - "host": true - } - ], - "default-features": [ - "supported-plugins" - ], - "features": { - "draco": { - "description": "Build the Draco plugin", - "dependencies": [ - "draco" - ] - }, - "e57": { - "description": "Build the E57 plugin", - "dependencies": [ - "xerces-c" - ] - }, - "hdf": { - "description": "Build the HDF plugin", - "dependencies": [ - { - "name": "hdf5", - "default-features": false - } - ] - }, - "i3s": { - "description": "Build the SLPK/I3S plugins", - "dependencies": [ - "zlib" - ] - }, - "liblzma": { - "description": "Support for compression/decompression with LZMA", - "dependencies": [ - "liblzma" - ] - }, - "pgpointcloud": { - "description": "Build the PgPointCloud plugin", - "dependencies": [ - "libpq" - ] - }, - "supported-plugins": { - "description": "Default set of plugins, dependent on platform", - "dependencies": [ - { - "name": "pdal", - "default-features": false, - "features": [ - "draco", - "e57", - "i3s" - ] - }, - { - "name": "pdal", - "default-features": false, - "features": [ - "hdf", - "pgpointcloud" - ], - "platform": "!uwp" - } - ] - }, - "zstd": { - "description": "Support for ZSTD compression/decompression", - "dependencies": [ - "zstd" - ] - } - } -} diff --git a/vcpkg-vendor/vcpkg.json b/vcpkg-vendor/vcpkg.json index c773b9569..f46f451b5 100644 --- a/vcpkg-vendor/vcpkg.json +++ b/vcpkg-vendor/vcpkg.json @@ -1,7 +1,7 @@ { "name": "kart-vendor", "version-string": "0.1.2", - "builtin-baseline": "09cbbcd678a3a5e21b099347147e36dd7b321967", + "builtin-baseline": "625ba82b98209eb7e76f335e635e280f2117862f", "dependencies": [ { "name": "sqlite3",