Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updating repository to follow calng-format-wheel #88

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
9 changes: 0 additions & 9 deletions .github/workflows/Dockerfile

This file was deleted.

159 changes: 60 additions & 99 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,157 +16,117 @@ 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))
Comment on lines -95 to -97
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I removed the qemu with the commented combination


- 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

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:
Expand All @@ -175,7 +135,6 @@ jobs:

- 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