405 cmake issue when building conda on fedora #455
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: Conda Packages | |
on: | |
workflow_dispatch: | |
inputs: | |
release-channel: | |
type: choice | |
default: khiops-dev | |
options: [khiops-dev, khiops] | |
description: Anaconda channel to release | |
push: | |
tags: ['*'] | |
pull_request: | |
paths: | |
- packaging/conda/** | |
- '!packaging/conda/README.md' | |
- .github/workflows/conda.yml | |
defaults: | |
run: | |
shell: bash -el {0} | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref | |
}} | |
cancel-in-progress: true | |
jobs: | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
setup: | |
# Linux: We use the Khiops dev rocky:8 container to build with glibc 2.28 | |
# It ensures compatibility with glibc >= 2.28 (in particular Rocky 8 and Debian 10) | |
- {os: ubuntu-22.04, os-family: linux-64, json-image: '{"image": "ghcr.io/khiopsml/khiops/khiopsdev-rocky8:latest"}'} | |
- {os: windows-2022, os-family: win-64, json-image: '{"image": null}'} | |
- {os: macos-13, os-family: osx-64, json-image: '{"image": null}'} | |
- {os: macos-14, os-family: osx-arm64, json-image: '{"image": null}'} | |
container: ${{ fromJSON(matrix.setup.json-image) }} | |
runs-on: ${{ matrix.setup.os }} | |
steps: | |
- name: Checkout Sources | |
uses: actions/checkout@v4 | |
- name: Check the tag consistency with the source version | |
if: github.ref_type == 'tag' | |
uses: ./.github/actions/check-tag-version | |
- name: Install Miniconda | |
uses: conda-incubator/setup-miniconda@v3 | |
with: | |
miniforge-version: latest | |
python-version: '3.12' | |
- name: Install Dependency Requirements for Building Conda Packages | |
run: conda install -y conda-build | |
# We need MacOS SDK 10.10 to build for macOS Intel | |
# See: https://docs.conda.io/projects/conda-build/en/3.21.x/resources/compiler-tools.html#macos-sdk | |
- name: Install Mac OS SDK 10.10 | |
if: runner.os == 'macOS' | |
run: | | |
wget https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX10.10.sdk.tar.xz | |
sudo tar -zxvf MacOSX10.10.sdk.tar.xz -C /opt | |
- name: Set the environment variables | |
shell: bash | |
run: | | |
# Put the Khiops package version | |
if [[ "${{ github.ref_type }}" == "tag" ]] | |
then | |
KHIOPS_VERSION="${{ github.ref_name }}" | |
else | |
KHIOPS_VERSION="$(./scripts/khiops-version)" | |
fi | |
echo "KHIOPS_VERSION=$KHIOPS_VERSION" >> "$GITHUB_ENV" | |
# On tag and macOS: Set the environment variables to sign the binaries | |
if [[ "${{ runner.os }}" == "macOS" && "${{ github.ref_type }}" == "tag" ]] | |
then | |
echo "KHIOPS_APPLE_CERTIFICATE_COMMON_NAME=${{ secrets.KHIOPS_APPLE_CERTIFICATE_COMMON_NAME }}" >> "$GITHUB_ENV" | |
echo "KHIOPS_APPLE_CERTIFICATE_BASE64=${{ secrets.KHIOPS_APPLE_CERTIFICATE_BASE64 }}" >> "$GITHUB_ENV" | |
echo "KHIOPS_APPLE_CERTIFICATE_PASSWORD=${{ secrets.KHIOPS_APPLE_CERTIFICATE_PASSWORD }}" >> "$GITHUB_ENV" | |
echo "KHIOPS_APPLE_TMP_KEYCHAIN_PASSWORD=${{ secrets.KHIOPS_APPLE_TMP_KEYCHAIN_PASSWORD }}" >> "$GITHUB_ENV" | |
fi | |
- name: Build conda packages | |
run: | | |
conda build --output-folder ./build/conda ./packaging/conda | |
- name: Upload conda packages artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: khiops-conda-${{ matrix.setup.os-family }} | |
path: ./build/conda | |
retention-days: 7 | |
# Test Conda package on brand new environments | |
test: | |
needs: build | |
strategy: | |
fail-fast: false | |
matrix: | |
env: | |
- {os: ubuntu-20.04, os-family: linux-64} | |
- {os: ubuntu-22.04, os-family: linux-64} | |
- {os: ubuntu-24.04, os-family: linux-64} | |
- {os: rockylinux-8, os-family: linux-64} | |
- {os: rockylinux-9, os-family: linux-64} | |
- {os: windows-2019, os-family: win-64} | |
- {os: windows-2022, os-family: win-64} | |
- {os: macos-12, os-family: osx-64} | |
- {os: macos-13, os-family: osx-64} | |
- {os: macos-14, os-family: osx-arm64} | |
runs-on: ${{ matrix.env.os }} | |
steps: | |
- name: Install Miniconda | |
uses: conda-incubator/setup-miniconda@v3 | |
with: | |
miniforge-version: latest # needed for macOS 13 | |
python-version: ${{ matrix.python-version }} | |
- name: Download Conda Package Artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: khiops-conda-${{ matrix.env.os-family }} | |
path: ./build/conda | |
- name: Install the Conda package | |
run: | | |
conda install --channel ./build/conda khiops-core | |
- name: Test that the executables are installed | |
run: | | |
conda install --channel conda-forge --channel ./build/conda khiops-core | |
- name: Add CONDA_PREFIX to shared PATH | |
run: | | |
echo "$CONDA_PREFIX/bin" >> $GITHUB_PATH | |
- name: Checkout sources | |
uses: actions/checkout@v4 | |
- name: Test that the executables are installed | |
uses: ./.github/actions/test-khiops-install | |
- name: Test that khiops on Iris dataset | |
uses: ./.github/actions/test-khiops-on-iris | |
with: | |
os-decription: ${{ matrix.env.os }}-${{ matrix.env.os-family }} | |
# Release is only executed on tags | |
# Note: For this job to work the secrets variables KHIOPS_ANACONDA_CHANNEL_TOKEN and | |
# KHIOPS_DEV_ANACONDA_CHANNEL_TOKEN must be set with valid anaconda.org access tokens | |
release: | |
if: github.ref_type == 'tag' | |
needs: test | |
runs-on: ubuntu-22.04 | |
permissions: | |
contents: write | |
steps: | |
- name: Download package artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
# See the upload-artifact step in the build job for the explanation of this pattern | |
path: ./build/conda | |
pattern: khiops-conda-* | |
merge-multiple: true | |
- name: Install Miniconda | |
uses: conda-incubator/setup-miniconda@v3 | |
with: | |
miniforge-version: latest | |
python-version: '3.12' | |
- name: Install requirement packages | |
run: | | |
conda install -y anaconda-client conda-index | |
- name: Reindex the package directory | |
run: python -m conda_index ./build/conda | |
- name: Upload the packages to anaconda.org | |
run: | | |
# Set the anaconda.org channel | |
ANACONDA_CHANNEL="${{ inputs.release-channel || 'khiops-dev' }}" | |
# For the release channel: upload without forcing; do not upload kni-transfer | |
if [[ "$ANACONDA_CHANNEL" == "khiops" ]] | |
then | |
rm -f -v ./build/conda/*/kni-transfer*.tar.bz2 | |
anaconda --token "${{ secrets.KHIOPS_ANACONDA_CHANNEL_TOKEN }}" upload \ | |
--user "$ANACONDA_CHANNEL" ./build/conda/*/*.tar.bz2 | |
# For the dev channel: upload with forcing | |
else | |
anaconda --token "${{ secrets.KHIOPS_DEV_ANACONDA_CHANNEL_TOKEN }}" upload \ | |
--user "$ANACONDA_CHANNEL" --force ./build/conda/*/*.tar.bz2 | |
fi | |
- name: Extract package version | |
run: | | |
PKG_VERSION=$(\ | |
conda search --override-channels --channel ./build/conda/ khiops-core \ | |
| awk '!/#|channels/ {print $2}' \ | |
| sort -u \ | |
) | |
echo "PKG_VERSION=$PKG_VERSION" >> "$GITHUB_ENV" | |
- name: Create the release zip archive | |
uses: thedoctor0/[email protected] | |
with: | |
type: zip | |
path: ./build/conda | |
filename: khiops-${{ env.PKG_VERSION }}-conda.zip | |
- name: Upload conda package artifacts for all platforms | |
uses: actions/upload-artifact@v4 | |
with: | |
name: khiops-conda-all | |
path: ./khiops-${{ env.PKG_VERSION }}-conda.zip | |
- name: Release the zip archive | |
uses: ncipollo/release-action@v1 | |
with: | |
allowUpdates: true | |
body: | | |
**This release is for testing purposes only and there is no support for it.** | |
**Go to https://khiops.org to install the latest supported version.** | |
draft: false | |
makeLatest: false | |
prerelease: true | |
updateOnlyUnreleased: true |