Skip to content

Commit

Permalink
Merge pull request #88 from CalebFuster/chore-manual_maintenance_of_t…
Browse files Browse the repository at this point in the history
…he_repo

Updating repository to follow calng-format-wheel
  • Loading branch information
renefritze authored Jan 24, 2025
2 parents 716ee67 + 9ebab9d commit 178a390
Show file tree
Hide file tree
Showing 9 changed files with 134 additions and 202 deletions.
9 changes: 0 additions & 9 deletions .github/workflows/Dockerfile

This file was deleted.

163 changes: 62 additions & 101 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
name: Build + Release Wheels

on:
push:
tags:
- 'v?[0-9]+.[0-9]+.[0-9]+'
- 'v?[0-9]+.[0-9]+.[0-9]+.[0-9]+'
workflow_dispatch:
inputs:
use_qemu:
description: "Use qemu for builds with targets requiring emulation"
required: true
default: true
llvm_version:
description: "LLVM version to build"
required: false
Expand All @@ -16,166 +16,125 @@ on:
required: false
default: "0"
deploy_to_testpypi:
description: "Whether the build should be deployed to test.pypi.org instead regular PyPI"
description: "Whether the build should be deployed to test.pypi.org instead of regular PyPI"
required: true
default: false

env:
USE_QEMU: ${{ github.event.inputs.use_qemu == 'true' }}

jobs:
build-wheels:
name: Build wheels on ${{ matrix.os }} (arch=${{ matrix.arch }})
name: "Build wheels on ${{ matrix.os }} :: platform=${{ matrix.platform }} arch=${{ matrix.arch }}"
runs-on: ${{ matrix.os }}

strategy:
matrix:
include:
- os: ubuntu-22.04
# Linux
- os: ubuntu-latest
platform: "manylinux"
arch: "x86_64"
use_qemu: false
skip: "*manylinux*"
- os: ubuntu-22.04
- os: ubuntu-latest
platform: "musllinux"
arch: "x86_64"
use_qemu: false
skip: "*musllinux*"
- os: ubuntu-22.04
- os: ubuntu-latest
platform: "manylinux"
arch: "i686"
use_qemu: false
skip: "*manylinux*"
- os: ubuntu-22.04
- os: ubuntu-latest
platform: "musllinux"
arch: "i686"
use_qemu: false
skip: "*musllinux*"
# These take too long to build on Github
#- os: ubuntu-20.04
#arch: "aarch64"
#use_qemu: true
#- os: ubuntu-20.04
#arch: "ppc64le"
#use_qemu: true
#- os: ubuntu-20.04
#arch: "s390x"
#use_qemu: true
- os: windows-2022
# Windows
- os: windows-latest
platform: "win"
arch: "AMD64"
use_qemu: false
skip:
- os: windows-2022
- os: windows-latest
platform: "win"
arch: "x86"
use_qemu: false
skip:
- os: macos-12
# macOS
- os: macos-13
platform: "macos"
arch: "x86_64"
use_qemu: false
skip:
- os: macos-14
- os: macos-latest
platform: "macos"
arch: "arm64"
use_qemu: false
skip:

steps:
- uses: actions/checkout@v4
if: (!matrix.use_qemu) || fromJSON(env.USE_QEMU)


- name: Support long paths
if: runner.os == 'Windows' && ((!matrix.use_qemu) || fromJSON(env.USE_QEMU))
if: runner.os == 'Windows'
run: git config --system core.longpaths true

- name: Set up msvc on Windows
if: runner.os == 'Windows'
uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ matrix.arch }}

- name: Export macOS SDKROOT
if: runner.os == 'macOS'
run: echo SDKROOT=$(xcrun --sdk macosx --show-sdk-path) >> $GITHUB_ENV

- name: Override LLVM version (${{ github.event.inputs.llvm_version }})
if: github.event.inputs.llvm_version
run: |
echo "set(CLANG_TIDY_VERSION ${{ github.event.inputs.llvm_version }})" > clang-tidy_version.cmake
echo "set(CLANG_TIDY_WHEEL_VERSION ${{ github.event.inputs.wheel_version }})" >> clang-tidy_version.cmake
- name: Set up QEMU
uses: docker/[email protected]
if: runner.os == 'Linux' && ((matrix.use_qemu) && fromJSON(env.USE_QEMU))

- uses: actions/setup-python@v5
with:
python-version: 3.8
# the pre-installed python 3.8 isn't native and cannot produce ARM64 wheels
# see also https://github.com/pypa/cibuildwheel/pull/1871
if: runner.os == 'macOS' && runner.arch == 'arm64'
echo "${{ github.event.inputs.llvm_version }}.${{ github.event.inputs.wheel_version }}" > clang-tidy_version.txt
cat clang-tidy_version.txt
- name: Build wheels
uses: pypa/[email protected]
if: (!matrix.use_qemu) || fromJSON(env.USE_QEMU)
env:
CIBW_ARCHS: "${{ matrix.arch }}"
CIBW_BEFORE_TEST: rm -rf {package}/clang_tidy
CIBW_BEFORE_TEST: rm -rf {package}/clang_tidy
CIBW_TEST_SKIP: "*linux*"
# always skip PyPY builds + what's defined in the matrix
CIBW_SKIP: "pp* ${{matrix.skip}}"
# clang-tidy simply does not want to cooperate with the github linux image
- name: Test Linux Wheel
if: runner.os == 'Linux' && !(matrix.use_qemu) && matrix.arch == 'x86_64'
run: |
if [[ "${{matrix.skip}}" == "*manylinux*" ]] ; then
docker build --build-arg BASEOS=alpine3.16 --build-arg PLATFORM=musllinux -f .github/workflows/Dockerfile .
else
docker build --build-arg BASEOS=slim-bullseye --build-arg PLATFORM=manylinux -f .github/workflows/Dockerfile .
fi
- name: Set artifact name
id: set_artifact_name
shell: bash -l {0}
run: |
VALUE="archive_wheels_${{ matrix.os }}_${{ matrix.arch }}_${{ matrix.skip }}"
VALUE="${VALUE//\*/}"
echo "value=${VALUE}" >> ${GITHUB_OUTPUT}
# restrict to a single Python version as wheel does not depend on Python:
CIBW_BUILD: "cp311-${{ matrix.platform }}*"

- uses: actions/upload-artifact@v4
if: (!matrix.use_qemu) || fromJSON(env.USE_QEMU)
with:
name: artifacts-wheels-${{ matrix.platform }}-${{ matrix.arch }}
path: ./wheelhouse/*.whl
name: ${{ steps.set_artifact_name.outputs.value }}

build-sdist:
name: Build source distribution
runs-on: ubuntu-22.04
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Override LLVM version (${{ github.event.inputs.llvm_version }})
if: github.event.inputs.llvm_version
run: |
echo "set(CLANG_TIDY_VERSION ${{ github.event.inputs.llvm_version }})" > clang-tidy_version.cmake
echo "set(CLANG_TIDY_WHEEL_VERSION ${{ github.event.inputs.wheel_version }})" >> clang-tidy_version.cmake
echo "${{ github.event.inputs.llvm_version }}.${{ github.event.inputs.wheel_version }}" > clang-tidy_version.txt
cat clang-tidy_version.txt
- name: Build SDist
run: pipx run build --sdist

- uses: actions/upload-artifact@v4
with:
path: dist/*.tar.gz
name: archive_sdist
name: artifacts-sdist

test-sdist:
name: Test build from source distribution
needs: [build-sdist]
runs-on: ubuntu-22.04
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
name: Install Python
with:
python-version: '3.9'
python-version: '3.13'

- uses: actions/download-artifact@v4
with:
name: archive_sdist
name: artifacts-sdist
path: sdist

- name: Install from SDist
run: |
# make sure the test will not pick this up
rm -r clang_tidy
pip install sdist/*.tar.gz
Expand All @@ -190,27 +149,29 @@ jobs:
upload_pypi:
name: Upload to PyPI
needs: [build-wheels, build-sdist, test-sdist]
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
if: github.repository_owner == 'ssciwr'

steps:
- uses: actions/download-artifact@v4
with:
pattern: archive*
path: dist
pattern: artifacts-*
merge-multiple: true
path: dist

- name: Upload to PyPI
uses: pypa/[email protected]
if: github.event.inputs.deploy_to_testpypi == 'false'
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
uses: pypa/[email protected]
if: (startsWith(github.event.ref, 'refs/tags/')) || (github.event.inputs.deploy_to_testpypi == 'false')

- name: Upload to TestPyPI
uses: pypa/gh-action-pypi-publish@v1.8.11
uses: pypa/gh-action-pypi-publish@v1.12.3
if: github.event.inputs.deploy_to_testpypi == 'true'
with:
user: __token__
password: ${{ secrets.TESTPYPI_API_TOKEN }}
repository_url: https://test.pypi.org/legacy/
repository-url: https://test.pypi.org/legacy/

- name: GitHub release for tagged commits
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -185,3 +185,13 @@ _deps
_skbuild/

clang_tidy/data/

# Standard temporal folder.
tmp/

# cibuild standard output of the wheels
wheelhouse/

# IDE configuration folders
.vscode/
.idea/
22 changes: 13 additions & 9 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
project(clang-tidy-wheel)
cmake_minimum_required(VERSION 3.16)
cmake_minimum_required(VERSION 3.16...3.31)
project(${SKBUILD_PROJECT_NAME} VERSION ${SKBUILD_PROJECT_VERSION})

# Include the "single source of truth" for the clang-tidy version
include(clang-tidy_version.cmake)
string(REPLACE "-" "" CLANG_TIDY_VERSION_SHORT "${CLANG_TIDY_VERSION}")
string(REPLACE "." ";" CLANG_TIDY_VERSION_LIST ${CLANG_TIDY_VERSION})
list(GET CLANG_TIDY_VERSION_LIST 0 CLANG_TIDY_VERSION_MAJOR)
message(STATUS "clang-tidy-wheel version: ${SKBUILD_PROJECT_VERSION}")
string(REGEX MATCH "^([0-9]+)\.([0-9]+)\.([0-9]+)" CLANG_TIDY_VERSION "${SKBUILD_PROJECT_VERSION}")
set(CLANG_TIDY_VERSION_MAJOR ${CMAKE_MATCH_1}) # https://cmake.org/cmake/help/latest/variable/CMAKE_MATCH_n.html
message(STATUS "clang-tidy version: ${CLANG_TIDY_VERSION}")

# Define a build rule clang-tidy
set(LLVM_DOWNLOAD_URL "https://github.com/llvm/llvm-project/releases/download/llvmorg-${CLANG_TIDY_VERSION}/llvm-project-${CLANG_TIDY_VERSION_SHORT}.src.tar.xz")
set(LLVM_DOWNLOAD_URL "https://github.com/llvm/llvm-project/releases/download/llvmorg-${CLANG_TIDY_VERSION}/llvm-project-${CLANG_TIDY_VERSION}.src.tar.xz")
include(ExternalProject)
ExternalProject_add(build-clang-tidy
URL "${LLVM_DOWNLOAD_URL}"
Expand All @@ -23,7 +22,12 @@ ExternalProject_add(build-clang-tidy
CMAKE_ARGS -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DLLVM_ENABLE_ZSTD=OFF -DLLVM_ENABLE_PROJECTS=clang$<SEMICOLON>clang-tools-extra
BUILD_COMMAND ${CMAKE_COMMAND} --build . --target clang-tidy
)
set(clang-tidy-executable ${CMAKE_BINARY_DIR}/llvm/bin/clang-tidy${CMAKE_EXECUTABLE_SUFFIX})

set(config-subfolder "")
if(CMAKE_GENERATOR MATCHES "Visual Studio")
set(config-subfolder "Release")
endif()
set(clang-tidy-executable ${CMAKE_BINARY_DIR}/llvm/${config-subfolder}/bin/clang-tidy${CMAKE_EXECUTABLE_SUFFIX})

# Reduce the size of the executable by executing strip if it is present on the system
find_program(STRIP_EXECUTABLE strip)
Expand Down
6 changes: 0 additions & 6 deletions MANIFEST.in

This file was deleted.

2 changes: 0 additions & 2 deletions clang-tidy_version.cmake

This file was deleted.

1 change: 1 addition & 0 deletions clang-tidy_version.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
19.1.6.0
Loading

0 comments on commit 178a390

Please sign in to comment.