From 97171bc144dc1722187f044e8396df5323da8ecc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Sok=C3=B3=C5=82?= Date: Tue, 15 Jul 2025 08:49:47 +0000 Subject: [PATCH] Add Windows build --- .../workflows/build_and_publish_template.yml | 13 ++++- oss/runner_common.sh | 55 ++++++++++--------- ...st_requirements.in => test_requirements.in | 0 ..._10.txt => test_requirements_lock_3_10.txt | 0 ..._11.txt => test_requirements_lock_3_11.txt | 0 ..._12.txt => test_requirements_lock_3_12.txt | 0 ..._13.txt => test_requirements_lock_3_13.txt | 0 7 files changed, 41 insertions(+), 27 deletions(-) rename oss/test_requirements.in => test_requirements.in (100%) rename oss/test_requirements_lock_3_10.txt => test_requirements_lock_3_10.txt (100%) rename oss/test_requirements_lock_3_11.txt => test_requirements_lock_3_11.txt (100%) rename oss/test_requirements_lock_3_12.txt => test_requirements_lock_3_12.txt (100%) rename oss/test_requirements_lock_3_13.txt => test_requirements_lock_3_13.txt (100%) diff --git a/.github/workflows/build_and_publish_template.yml b/.github/workflows/build_and_publish_template.yml index 93f8573..ca1b945 100644 --- a/.github/workflows/build_and_publish_template.yml +++ b/.github/workflows/build_and_publish_template.yml @@ -28,7 +28,7 @@ jobs: fail-fast: false matrix: python-version: ["3.10", "3.11", "3.12", "3.13"] - os: [ubuntu-22.04, ubuntu-22.04-arm, macos-14] + os: [windows-2022] # ubuntu-22.04, ubuntu-22.04-arm, macos-14, env: USE_BAZEL_VERSION: "7.2.1" @@ -43,6 +43,17 @@ jobs: uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} + - name: Setup Developer Command Prompt + if: ${{ matrix.os == 'windows-2022' }} + uses: ilammy/msvc-dev-cmd@v1.13.0 + - name: Set up Visual Studio shell + if: ${{ matrix.os == 'windows-2022' }} + uses: egor-tensin/vs-shell@v2 + with: + arch: x64 + - name: Setup MS Build + if: ${{ matrix.os == 'windows-2022' }} + uses: microsoft/setup-msbuild@v2 - uses: "actions/checkout@v3" - name: Create directory run: | diff --git a/oss/runner_common.sh b/oss/runner_common.sh index d3e3ee5..9bd0b5e 100644 --- a/oss/runner_common.sh +++ b/oss/runner_common.sh @@ -19,30 +19,33 @@ setup_env_vars_py() { # under $SOURCE_DIR/all_dist. build_and_test_array_record() { printf 'Creating ArrayRecord wheel for Python Version %s\n' "$PYTHON_VERSION" - if [ "$(uname)" = "Darwin" ]; then - setup_env_vars_py "$PYTHON_MAJOR_VERSION" "$PYTHON_MINOR_VERSION" - "$PYTHON_BIN" -m pip install -U setuptools wheel etils[epath] - sh "${SOURCE_DIR}"'/oss/build_whl.sh' - else - # Automatically decide which platform to build for by checking on which - # platform this runs. - AUDITWHEEL_PLATFORM='manylinux2014_'"$(uname -m)" - docker rmi -f array_record:${PYTHON_VERSION} - docker rm -f array_record - DOCKER_BUILDKIT=1 docker build --progress=plain --no-cache \ - --build-arg AUDITWHEEL_PLATFORM="${AUDITWHEEL_PLATFORM}" \ - --build-arg PYTHON_VERSION="${PYTHON_MAJOR_VERSION}""${PYTHON_MINOR_VERSION}" \ - --build-arg BAZEL_VERSION="${BAZEL_VERSION}" \ - -t array_record:"${PYTHON_VERSION}" "${SOURCE_DIR}"'/oss' + case "$(uname)" in + Darwin*|CYGWIN*|MINGW*|MSYS_NT*) + setup_env_vars_py "$PYTHON_MAJOR_VERSION" "$PYTHON_MINOR_VERSION" + "$PYTHON_BIN" -m pip install -U setuptools wheel etils[epath] + sh "${SOURCE_DIR}"'/oss/build_whl.sh' + ;; + *) + # Automatically decide which platform to build for by checking on which + # platform this runs. + AUDITWHEEL_PLATFORM='manylinux2014_'"$(uname -m)" + docker rmi -f array_record:${PYTHON_VERSION} + docker rm -f array_record + DOCKER_BUILDKIT=1 docker build --progress=plain --no-cache \ + --build-arg AUDITWHEEL_PLATFORM="${AUDITWHEEL_PLATFORM}" \ + --build-arg PYTHON_VERSION="${PYTHON_MAJOR_VERSION}""${PYTHON_MINOR_VERSION}" \ + --build-arg BAZEL_VERSION="${BAZEL_VERSION}" \ + -t array_record:"${PYTHON_VERSION}" "${SOURCE_DIR}"'/oss' - docker run --rm -a stdin -a stdout -a stderr \ - --env PYTHON_VERSION="${PYTHON_MAJOR_VERSION}"'.'"${PYTHON_MINOR_VERSION}" \ - --env PYTHON_MAJOR_VERSION="${PYTHON_MAJOR_VERSION}" \ - --env PYTHON_MINOR_VERSION="${PYTHON_MINOR_VERSION}" \ - --env BAZEL_VERSION="${BAZEL_VERSION}" \ - --env AUDITWHEEL_PLATFORM="${AUDITWHEEL_PLATFORM}" \ - -v "${SOURCE_DIR}":"${OUTPUT_DIR}" \ - --name array_record array_record:"${PYTHON_VERSION}" \ - sh oss/build_whl.sh - fi -} \ No newline at end of file + docker run --rm -a stdin -a stdout -a stderr \ + --env PYTHON_VERSION="${PYTHON_MAJOR_VERSION}"'.'"${PYTHON_MINOR_VERSION}" \ + --env PYTHON_MAJOR_VERSION="${PYTHON_MAJOR_VERSION}" \ + --env PYTHON_MINOR_VERSION="${PYTHON_MINOR_VERSION}" \ + --env BAZEL_VERSION="${BAZEL_VERSION}" \ + --env AUDITWHEEL_PLATFORM="${AUDITWHEEL_PLATFORM}" \ + -v "${SOURCE_DIR}":"${OUTPUT_DIR}" \ + --name array_record array_record:"${PYTHON_VERSION}" \ + sh oss/build_whl.sh + ;; + esac +} diff --git a/oss/test_requirements.in b/test_requirements.in similarity index 100% rename from oss/test_requirements.in rename to test_requirements.in diff --git a/oss/test_requirements_lock_3_10.txt b/test_requirements_lock_3_10.txt similarity index 100% rename from oss/test_requirements_lock_3_10.txt rename to test_requirements_lock_3_10.txt diff --git a/oss/test_requirements_lock_3_11.txt b/test_requirements_lock_3_11.txt similarity index 100% rename from oss/test_requirements_lock_3_11.txt rename to test_requirements_lock_3_11.txt diff --git a/oss/test_requirements_lock_3_12.txt b/test_requirements_lock_3_12.txt similarity index 100% rename from oss/test_requirements_lock_3_12.txt rename to test_requirements_lock_3_12.txt diff --git a/oss/test_requirements_lock_3_13.txt b/test_requirements_lock_3_13.txt similarity index 100% rename from oss/test_requirements_lock_3_13.txt rename to test_requirements_lock_3_13.txt