Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
16e33b5
try to include s2geography by default in python
paleolimbot Sep 4, 2025
a6766d7
vcpkg + cache for Python CI
paleolimbot Sep 4, 2025
654b373
see if passing the toolchain file in windows gets us one step farther
paleolimbot Sep 4, 2025
1e16b8d
ensure build scripts error
paleolimbot Sep 4, 2025
2d24c4f
maybe fix the nulls issue
paleolimbot Sep 4, 2025
cb39724
fix import
paleolimbot Sep 4, 2025
62eecd5
fix setsrid
paleolimbot Sep 5, 2025
cdcdc89
add perl for openssl
paleolimbot Sep 5, 2025
6532566
maybe the right pr this time
paleolimbot Sep 5, 2025
14e1252
check for static libs in a few places
paleolimbot Sep 5, 2025
8bb09e9
maybe fix the library dir
paleolimbot Sep 5, 2025
6701ae4
check multiple libs
paleolimbot Sep 5, 2025
4b96ac9
don't run Python on docs prs
paleolimbot Sep 5, 2025
94b3f3e
test and document matchers
paleolimbot Sep 5, 2025
c53883e
add checks for null scalars
paleolimbot Sep 5, 2025
954c764
maybe get linker info on Windows
paleolimbot Sep 5, 2025
ed2ffb5
maybe fix cmake for rust build
paleolimbot Sep 5, 2025
c27fd71
maybe working on windows
paleolimbot Sep 5, 2025
08f55b8
please please
paleolimbot Sep 5, 2025
446d866
try more static linking on windows
paleolimbot Sep 6, 2025
0930375
temporary disable windows wheel test
paleolimbot Sep 6, 2025
9de24b5
document the cmakelists workaround
paleolimbot Sep 6, 2025
64e5bfe
go back to dynamic linking, comment out the corect test so we can che…
paleolimbot Sep 6, 2025
6c0a42c
oops
paleolimbot Sep 6, 2025
20f34cb
make geography opt in
paleolimbot Sep 8, 2025
1836885
test the windows wheel
paleolimbot Sep 8, 2025
d587d90
try a different way
paleolimbot Sep 8, 2025
53ceace
try again
paleolimbot Sep 8, 2025
e052bc7
better way of specifying feature args
paleolimbot Sep 8, 2025
b43972e
don't build s2geography by default
paleolimbot Sep 8, 2025
1d6812b
Update c/sedona-s2geography/build.rs
paleolimbot Sep 8, 2025
56684fc
fix python wheels spec
paleolimbot Sep 8, 2025
b27fd8a
add nightly uploader
paleolimbot Sep 8, 2025
b85be8e
err fix repo name
paleolimbot Sep 8, 2025
1dd672c
stable windows version
paleolimbot Sep 8, 2025
f3707fb
maybe fix linux and moacos
paleolimbot Sep 8, 2025
d006b10
format
paleolimbot Sep 8, 2025
f62f5c2
back to windows-latest
paleolimbot Sep 8, 2025
40f7262
align the vcpkg reference
paleolimbot Sep 8, 2025
b662b14
more vcpkg alignment
paleolimbot Sep 8, 2025
72c39e7
try avoiding any potential mingw + vcpkg issues
paleolimbot Sep 8, 2025
cc7d68a
fix script
paleolimbot Sep 8, 2025
65241df
check location of nasm
paleolimbot Sep 8, 2025
3886d62
add nasm compiler
paleolimbot Sep 9, 2025
3503cec
try to auto-download nasm
paleolimbot Sep 9, 2025
a4782ef
don't use the action
paleolimbot Sep 9, 2025
fa3623e
attempt a fix
paleolimbot Sep 9, 2025
a997f79
gitignore windows runtime-generated files
paleolimbot Sep 9, 2025
17f4a7c
speed up tests on Windows
paleolimbot Sep 9, 2025
5392bb0
don't try to support s2geography yet
paleolimbot Sep 9, 2025
3facab5
fix merge
paleolimbot Sep 9, 2025
c0058f1
revert testing change
paleolimbot Sep 9, 2025
68908e9
ensure tg sees windows as little endian
paleolimbot Sep 9, 2025
135f026
delete nasm files
paleolimbot Sep 9, 2025
8ba3265
ignore them again
paleolimbot Sep 9, 2025
c9d1948
rename
paleolimbot Sep 9, 2025
5cdb1a4
remove
paleolimbot Sep 9, 2025
2e60e1a
Update rust/sedona-expr/src/scalar_udf.rs
paleolimbot Sep 9, 2025
fbef366
fmt
paleolimbot Sep 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 37 additions & 14 deletions .github/workflows/python-wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,13 @@ concurrency:
group: ${{ github.repository }}-${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true

env:
# At GEOS updated to 3.14.0
VCPKG_REF: 5a01de756c28279ddfdd2b061d1c75710a6255fa

jobs:
windows-x86_64:
runs-on: windows-latest
runs-on: windows-2022

steps:
- uses: actions/checkout@v4
Expand All @@ -61,25 +65,17 @@ jobs:
uses: actions/checkout@v4
with:
repository: microsoft/vcpkg
ref: "2025.06.13"
ref: ${{ env.VCPKG_REF }}
path: vcpkg

- name: Bootstrap vcpkg
shell: bash
env:
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
VCPKG_DEFAULT_TRIPLET: x64-windows-dynamic-release
run: |
cd ci/scripts
./wheels-bootstrap-vcpkg.sh

- name: Build and test wheels (sedonadb)
run: |
cd ci/scripts
.\wheels-build-windows.ps1
env:
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
VCPKG_DEFAULT_TRIPLET: x64-windows-dynamic-release
CMAKE_TOOLCHAIN_FILE: ${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake
CIBW_BUILD: "*-win_amd64"
CIBW_TEST_SKIP: "cp314* cp38*"
CIBW_TEST_REQUIRES: pytest adbc_driver_manager geoarrow-pyarrow geopandas
Expand Down Expand Up @@ -114,7 +110,7 @@ jobs:
uses: actions/checkout@v4
with:
repository: microsoft/vcpkg
ref: "2025.06.13"
ref: ${{ env.VCPKG_REF }}
path: vcpkg

- name: Build and test wheels (sedonadb)
Expand All @@ -139,8 +135,7 @@ jobs:
matrix:
config:
- {os: "ubuntu-latest", label: "linux-x86_64", arch: "x86_64"}
# We can't include this in our CI config until the repository is public
# - {os: "ubuntu-24.04-arm", label: "linux-arm64", arch: "aarch64"}
- {os: "ubuntu-24.04-arm", label: "linux-arm64", arch: "aarch64"}

steps:
- uses: actions/checkout@v4
Expand Down Expand Up @@ -168,3 +163,31 @@ jobs:
with:
name: release-wheels-${{ matrix.config.label }}
path: python/sedonadb/dist/*.whl

upload_nightly:
needs: ["wheels-linux", "macOS-arm64", "windows-x86_64"]
name: Upload nightly packages
runs-on: "macos-latest"
steps:
- uses: actions/download-artifact@v4
with:
pattern: release-*
merge-multiple: true
path: dist

- name: Install gemfury client
run: |
brew tap gemfury/tap
brew install fury-cli
fury --version

- name: Upload packages to Gemfury
if: github.repository == 'apache/sedona-db' && github.ref == 'refs/heads/main'
shell: bash
run: |
fury push \
--api-token=${GEMFURY_PUSH_TOKEN} \
--as="sedona-nightlies" \
dist/*
env:
NANOARROW_GEMFURY_TOKEN: ${{ secrets.GEMFURY_PUSH_TOKEN }}
45 changes: 45 additions & 0 deletions .github/workflows/python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,13 @@ on:
pull_request:
branches:
- main
paths:
- 'Cargo.toml'
- 'Cargo.lock'
- '.github/workflows/python.yml'
- 'rust/**'
- 'c/**'
- 'python/**'
push:
branches:
- main
Expand All @@ -36,6 +43,10 @@ defaults:
run:
shell: bash -l -eo pipefail {0}

env:
# At GEOS updated to 3.14.0
VCPKG_REF: 5a01de756c28279ddfdd2b061d1c75710a6255fa

jobs:
test:
strategy:
Expand All @@ -55,6 +66,39 @@ jobs:
python-version: '3.x'
cache: 'pip'

- name: Clone vcpkg
uses: actions/checkout@v4
with:
repository: microsoft/vcpkg
ref: ${{ env.VCPKG_REF }}
path: vcpkg

- name: Set up environment variables and bootstrap vcpkg
env:
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
CMAKE_TOOLCHAIN_FILE: ${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake
run: |
cd vcpkg
./bootstrap-vcpkg.sh
cd ..

echo "VCPKG_ROOT=$VCPKG_ROOT" >> $GITHUB_ENV
echo "PATH=$VCPKG_ROOT:$PATH" >> $GITHUB_ENV
echo "CMAKE_TOOLCHAIN_FILE=$CMAKE_TOOLCHAIN_FILE" >> $GITHUB_ENV

- name: Cache vcpkg binaries
id: cache-vcpkg
uses: actions/cache@v4
with:
path: vcpkg/packages
# Bump the number at the end of this line to force a new dependency build
key: vcpkg-installed-${{ runner.os }}-${{ runner.arch }}-${{ env.VCPKG_REF }}-1

- name: Install vcpkg dependencies
if: steps.cache-vcpkg.outputs.cache-hit != 'true'
run: |
./vcpkg/vcpkg install abseil openssl

- name: Use stable Rust
id: rust
run: |
Expand All @@ -72,6 +116,7 @@ jobs:

- name: Install
run: |
export MATURIN_PEP517_ARGS="--features s2geography"
pip install -e "python/sedonadb/[test]" -vv

- name: Download minimal geoarrow-data assets
Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ defaults:
run:
shell: bash -l -eo pipefail {0}

env:
# At GEOS updated to 3.14.0
VCPKG_REF: 5a01de756c28279ddfdd2b061d1c75710a6255fa

jobs:
rust:
strategy:
Expand All @@ -65,7 +69,7 @@ jobs:
uses: actions/checkout@v4
with:
repository: microsoft/vcpkg
ref: "2025.06.13"
ref: ${{ env.VCPKG_REF }}
path: vcpkg

- name: Set up environment variables and bootstrap vcpkg
Expand All @@ -87,7 +91,7 @@ jobs:
with:
path: vcpkg/packages
# Bump the number at the end of this line to force a new dependency build
key: vcpkg-installed-${{ runner.os }}-${{ runner.arch }}-2
key: vcpkg-installed-${{ runner.os }}-${{ runner.arch }}-${{ env.VCPKG_REF }}-1

- name: Install vcpkg dependencies
if: steps.cache-vcpkg.outputs.cache-hit != 'true'
Expand Down
2 changes: 2 additions & 0 deletions c/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

build/
dist/
.cache
CMakeUserPresets.json
78 changes: 53 additions & 25 deletions c/sedona-s2geography/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -251,32 +251,60 @@ install(FILES "${CMAKE_BINARY_DIR}/openssl_libraries.txt"
# .a file (but this might not work if the absl libraries weren't static,
# as they aren't on Homebrew and linux distributions).

if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(LINK_CXX_STANDARD_LIB "-lc++")
elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
set(LINK_CXX_STANDARD_LIB "-lstdc++")
elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
# set MSVC-specific flags if we need them
else()
set(LINK_CXX_STANDARD_LIB "")
endif()
if(NOT WIN32)
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(LINK_CXX_STANDARD_LIB "-lc++")
elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
set(LINK_CXX_STANDARD_LIB "-lstdc++")
elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
# set MSVC-specific flags if we need them
set(LINK_CXX_STANDARD_LIB "")
else()
set(LINK_CXX_STANDARD_LIB "")
endif()

set(CMAKE_ECHO_STANDARD_LIBRARIES ${CMAKE_CXX_STANDARD_LIBRARIES})
set(CMAKE_ECHO_FLAGS ${CMAKE_CXX_FLAGS})
set(CMAKE_ECHO_LINK_FLAGS ${CMAKE_CXX_LINK_FLAGS})
set(CMAKE_ECHO_IMPLICIT_LINK_DIRECTORIES ${CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES})
# TODO: This won't work on Windows
set(CMAKE_ECHO_LINK_EXECUTABLE
"sh -c \"echo <FLAGS> <LINK_FLAGS> <LINK_LIBRARIES> ${LINK_CXX_STANDARD_LIB} > <TARGET>\""
)
set(CMAKE_ECHO_STANDARD_LIBRARIES ${CMAKE_CXX_STANDARD_LIBRARIES})
set(CMAKE_ECHO_FLAGS ${CMAKE_CXX_FLAGS})
set(CMAKE_ECHO_LINK_FLAGS ${CMAKE_CXX_LINK_FLAGS})
set(CMAKE_ECHO_IMPLICIT_LINK_DIRECTORIES ${CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES})

add_executable(linker_flags "CMakeLists.txt")
target_link_libraries(linker_flags
OpenSSL::SSL
OpenSSL::Crypto
${S2_EXTRA_OPENSSL_LIBS}
${ABSL_LIBRARIES})
set(CMAKE_ECHO_LINK_EXECUTABLE
"sh -c \"echo <FLAGS> <LINK_FLAGS> <LINK_LIBRARIES> ${LINK_CXX_STANDARD_LIB} > <TARGET>\""
)

set_target_properties(linker_flags PROPERTIES LINKER_LANGUAGE ECHO SUFFIX ".txt")
add_executable(linker_flags "CMakeLists.txt")
target_link_libraries(linker_flags
OpenSSL::SSL
OpenSSL::Crypto
${S2_EXTRA_OPENSSL_LIBS}
${ABSL_LIBRARIES})

install(TARGETS linker_flags DESTINATION "${CMAKE_INSTALL_LIBDIR}")
set_target_properties(linker_flags PROPERTIES LINKER_LANGUAGE ECHO SUFFIX ".txt")

install(TARGETS linker_flags DESTINATION "${CMAKE_INSTALL_LIBDIR}")

else()
# On Windows, MSBuild will write this file for us, but we have to look in a very specific place
# to find it. This is possibly brittle but makes it possible to build this on Windows at all.
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/linker_flags.cc"
"
int main(int argc, const char** args) {
return 0;
}")
add_executable(linker_flags "${CMAKE_CURRENT_BINARY_DIR}/linker_flags.cc")
target_link_libraries(linker_flags
OpenSSL::SSL
OpenSSL::Crypto
${S2_EXTRA_OPENSSL_LIBS}
${ABSL_LIBRARIES})

add_custom_command(TARGET linker_flags
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
"${CMAKE_CURRENT_BINARY_DIR}/linker_flags.dir/$<CONFIG>/linker_flags.tlog/link.command.1.tlog"
"${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/linker_flags.txt"
COMMENT "Copying linker command file for configuration $<CONFIG>")

install(FILES "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/linker_flags.txt"
DESTINATION "${CMAKE_INSTALL_LIBDIR}")
endif()
Loading
Loading