diff --git a/.github/workflows/CI_master.yml b/.github/workflows/CI_master.yml
index 58c7b8873a..752b0707d7 100644
--- a/.github/workflows/CI_master.yml
+++ b/.github/workflows/CI_master.yml
@@ -39,17 +39,11 @@ jobs:
with:
artifactBasename: Prepare-${{ github.run_id }}
- MacOS_13_Conda_Apple:
+ Pixi:
needs: [Prepare]
- uses: ./.github/workflows/sub_buildMacOSCondaApple.yml
+ uses: ./.github/workflows/sub_buildPixi.yml
with:
- artifactBasename: MacOS_13_Conda_Apple-${{ github.run_id }}
-
-# MacOS_13_Conda_Intel:
-# needs: [Prepare]
-# uses: ./.github/workflows/sub_buildMacOSCondaIntel.yml
-# with:
-# artifactBasename: MacOS_13_Conda_Intel-${{ github.run_id }}
+ artifactBasename: Pixi-${{ github.run_id }}
Ubuntu_20-04:
needs: [Prepare]
@@ -57,31 +51,12 @@ jobs:
with:
artifactBasename: Ubuntu_20-04-${{ github.run_id }}
- Ubuntu_22-04_Conda:
- needs: [Prepare]
- uses: ./.github/workflows/sub_buildUbuntu2204Conda.yml
- with:
- artifactBasename: Ubuntu_22-04_Conda-${{ github.run_id }}
-
- Ubuntu_22-04_Conda_Qt6:
- needs: [Prepare]
- uses: ./.github/workflows/sub_buildUbuntu2204CondaQt6.yml
- with:
- artifactBasename: Ubuntu_22-04_Conda-Qt6-${{ github.run_id }}
-
Windows:
needs: [Prepare]
uses: ./.github/workflows/sub_buildWindows.yml
with:
artifactBasename: Windows-${{ github.run_id }}
- ## Disable until the following issue is resolved: https://github.com/mamba-org/mamba/issues/3292
- # Windows_Conda:
- # needs: [Prepare]
- # uses: ./.github/workflows/sub_buildWindowsConda.yml
- # with:
- # artifactBasename: Windows_Conda-${{ github.run_id }}
-
Lint:
needs: [Prepare]
uses: ./.github/workflows/sub_lint.yml
@@ -94,12 +69,9 @@ jobs:
WrapUp:
needs: [
Prepare,
- MacOS_13_Conda_Apple,
- # MacOS_13_Conda_Intel,
+ Pixi,
Ubuntu_20-04,
- Ubuntu_22-04_Conda,
Windows,
- # Windows_Conda,
Lint
]
if: always()
diff --git a/.github/workflows/sub_buildMacOSCondaApple.yml b/.github/workflows/sub_buildMacOSCondaApple.yml
deleted file mode 100644
index 59fc1666f2..0000000000
--- a/.github/workflows/sub_buildMacOSCondaApple.yml
+++ /dev/null
@@ -1,171 +0,0 @@
-# SPDX-License-Identifier: LGPL-2.1-or-later
-# ***************************************************************************
-# * *
-# * Copyright (c) 2023 0penBrain. *
-# * *
-# * This file is part of FreeCAD. *
-# * *
-# * FreeCAD is free software: you can redistribute it and/or modify it *
-# * under the terms of the GNU Lesser General Public License as *
-# * published by the Free Software Foundation, either version 2.1 of the *
-# * License, or (at your option) any later version. *
-# * *
-# * FreeCAD is distributed in the hope that it will be useful, but *
-# * WITHOUT ANY WARRANTY; without even the implied warranty of *
-# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
-# * Lesser General Public License for more details. *
-# * *
-# * You should have received a copy of the GNU Lesser General Public *
-# * License along with FreeCAD. If not, see *
-# * . *
-# * *
-# ***************************************************************************
-
-# This is a build and test workflow for CI of FreeCAD.
-# This workflow aims at building and testing FreeCAD on a Conda environment on macOS.
-
-name: Build macOS 13 (Apple Silicon)
-on:
- workflow_call:
- inputs:
- artifactBasename:
- type: string
- required: true
- testOnBuildDir:
- default: false
- type: boolean
- required: false
- allowedToFail:
- default: false
- type: boolean
- required: false
- outputs:
- reportFile:
- value: ${{ jobs.Build.outputs.reportFile }}
-
-jobs:
- Build:
- runs-on: macos-14
- continue-on-error: ${{ inputs.allowedToFail }}
- env:
- CCACHE_DIR: ${{ github.workspace }}/ccache
- CCACHE_CONFIGPATH: ${{ github.workspace }}/ccache/config
- CCACHE_MAXSIZE: 1G
- CCACHE_COMPILERCHECK: "%compiler% -dumpfullversion -dumpversion" # default:mtime
- CCACHE_COMPRESS: true
- CCACHE_COMPRESSLEVEL: 1
- CC: arm64-apple-darwin20.0.0-clang
- CXX: arm64-apple-darwin20.0.0-clang++
- builddir: ${{ github.workspace }}/build/release/
- logdir: /tmp/logs/
- reportdir: /tmp/report/
- reportfilename: ${{ inputs.artifactBasename }}-report.md
- defaults:
- run:
- shell: bash -l {0}
- outputs:
- reportFile: ${{ steps.Init.outputs.reportFile }}
-
- steps:
- - name: Checking out source code
- uses: actions/checkout@v4
- with:
- submodules: true
- - name: Setup Miniconda
- env:
- CONDA_VERBOSITY: 2
- uses: conda-incubator/setup-miniconda@v3
- with:
- activate-environment: .conda/freecad
- environment-file: conda/conda-env.yaml
- channels: conda-forge
- channel-priority: true
- miniforge-version: latest
- - name: Install FreeCAD dependencies
- env:
- CONDA_VERBOSITY: 2
- run: |
- ./conda/setup-environment.sh
- - name: Set Environment Variables
- run: |
- echo "CC=$CC" >> "$GITHUB_ENV"
- echo "CXX=$CXX" >> "$GITHUB_ENV"
- - name: Make needed directories, files and initializations
- id: Init
- run: |
- mkdir -p ${{ env.CCACHE_DIR }}
- mkdir -p ${{ env.CCACHE_CONFIGPATH }}
- mkdir -p ${{ env.builddir }}
- mkdir -p ${{ env.logdir }}
- mkdir -p ${{ env.reportdir }}
- echo "reportFile=${{ env.reportfilename }}" >> $GITHUB_OUTPUT
- - name: Generate cache key
- id: genCacheKey
- uses: ./.github/workflows/actions/macos/generateCacheKey
- with:
- compiler: ${{ env.CXX }}
- - name: Restore Compiler Cache
- uses: actions/cache@v4
- with:
- save-always: true
- path: ${{ env.CCACHE_DIR }}
- key: FC-${{ steps.genCacheKey.outputs.cacheKey }}-${{ github.ref }}-${{ github.run_id }}
- restore-keys: |
- FC-${{ steps.genCacheKey.outputs.cacheKey }}-${{ github.ref }}-
- FC-${{ steps.genCacheKey.outputs.cacheKey }}-
- - name: Print CCache statistics before build, reset stats and print config
- run: |
- ccache -s
- ccache -z
- ccache -p
- - name: CMake Configure
- run: |
- mamba run --live-stream -p .conda/freecad cmake --preset conda-macos-release -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/.conda/freecad/opt/freecad
- - name: CMake Build
- run: |
- mamba run --live-stream -p .conda/freecad cmake --build build/release
- - name: Print ccache statistics after Build
- run: |
- ccache -s
- - name: FreeCAD CLI tests on build dir
- if: inputs.testOnBuildDir
- timeout-minutes: 10
- uses: ./.github/workflows/actions/runPythonTests
- with:
- testDescription: "CLI tests on build dir"
- testCommand: ${{ env.builddir }}/bin/FreeCADCmd -t 0
- logFile: ${{ env.logdir }}TestCLIBuild.log
- reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- - name: C++ tests
- timeout-minutes: 1
- uses: ./.github/workflows/actions/runCPPTests/runAllTests
- with:
- reportdir: ${{ env.reportdir }}
- builddir: ${{ env.builddir }}
- reportFile: ${{ env.reportdir }}${{ env.reportfilename }}
- - name: CMake Install
- run: |
- mamba run --live-stream -p .conda/freecad cmake --install build/release
- - name: FreeCAD CLI tests on install
- timeout-minutes: 10
- uses: ./.github/workflows/actions/runPythonTests
- with:
- testDescription: "CLI tests on install"
- testCommand: ${{ github.workspace }}/.conda/freecad/opt/freecad/bin/FreeCADCmd -t 0
- logFile: ${{ env.logdir }}TestCLIInstall.log
- reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- - name: Upload logs
- if: always()
- uses: actions/upload-artifact@v4
- with:
- name: ${{ inputs.artifactBasename }}-Logs
- path: |
- ${{ env.logdir }}
- /var/crash/*FreeCAD*
- - name: Upload report
- if: always()
- uses: actions/upload-artifact@v4
- with:
- name: ${{ env.reportfilename }}
- path: |
- ${{env.reportdir}}${{ env.reportfilename }}
diff --git a/.github/workflows/sub_buildMacOSCondaIntel.yml b/.github/workflows/sub_buildMacOSCondaIntel.yml
deleted file mode 100644
index b4d4e80b32..0000000000
--- a/.github/workflows/sub_buildMacOSCondaIntel.yml
+++ /dev/null
@@ -1,171 +0,0 @@
-# SPDX-License-Identifier: LGPL-2.1-or-later
-# ***************************************************************************
-# * *
-# * Copyright (c) 2023 0penBrain. *
-# * *
-# * This file is part of FreeCAD. *
-# * *
-# * FreeCAD is free software: you can redistribute it and/or modify it *
-# * under the terms of the GNU Lesser General Public License as *
-# * published by the Free Software Foundation, either version 2.1 of the *
-# * License, or (at your option) any later version. *
-# * *
-# * FreeCAD is distributed in the hope that it will be useful, but *
-# * WITHOUT ANY WARRANTY; without even the implied warranty of *
-# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
-# * Lesser General Public License for more details. *
-# * *
-# * You should have received a copy of the GNU Lesser General Public *
-# * License along with FreeCAD. If not, see *
-# * . *
-# * *
-# ***************************************************************************
-
-# This is a build and test workflow for CI of FreeCAD.
-# This workflow aims at building and testing FreeCAD on a Conda environment on macOS.
-
-name: Build macOS 13 (Intel)
-on:
- workflow_call:
- inputs:
- artifactBasename:
- type: string
- required: true
- testOnBuildDir:
- default: false
- type: boolean
- required: false
- allowedToFail:
- default: false
- type: boolean
- required: false
- outputs:
- reportFile:
- value: ${{ jobs.Build.outputs.reportFile }}
-
-jobs:
- Build:
- runs-on: macos-13
- continue-on-error: ${{ inputs.allowedToFail }}
- env:
- CCACHE_DIR: ${{ github.workspace }}/ccache
- CCACHE_CONFIGPATH: ${{ github.workspace }}/ccache/config
- CCACHE_MAXSIZE: 1G
- CCACHE_COMPILERCHECK: "%compiler% -dumpfullversion -dumpversion" # default:mtime
- CCACHE_COMPRESS: true
- CCACHE_COMPRESSLEVEL: 1
- CC: x86_64-apple-darwin13.4.0-clang
- CXX: x86_64-apple-darwin13.4.0-clang++
- builddir: ${{ github.workspace }}/build/release/
- logdir: /tmp/logs/
- reportdir: /tmp/report/
- reportfilename: ${{ inputs.artifactBasename }}-report.md
- defaults:
- run:
- shell: bash -l {0}
- outputs:
- reportFile: ${{ steps.Init.outputs.reportFile }}
-
- steps:
- - name: Checking out source code
- uses: actions/checkout@v4
- with:
- submodules: true
- - name: Setup Miniconda
- env:
- CONDA_VERBOSITY: 2
- uses: conda-incubator/setup-miniconda@v3
- with:
- activate-environment: .conda/freecad
- environment-file: conda/conda-env.yaml
- channels: conda-forge
- channel-priority: true
- miniforge-version: latest
- - name: Install FreeCAD dependencies
- env:
- CONDA_VERBOSITY: 2
- run: |
- ./conda/setup-environment.sh
- - name: Set Environment Variables
- run: |
- echo "CC=$CC" >> "$GITHUB_ENV"
- echo "CXX=$CXX" >> "$GITHUB_ENV"
- - name: Make needed directories, files and initializations
- id: Init
- run: |
- mkdir -p ${{ env.CCACHE_DIR }}
- mkdir -p ${{ env.CCACHE_CONFIGPATH }}
- mkdir -p ${{ env.builddir }}
- mkdir -p ${{ env.logdir }}
- mkdir -p ${{ env.reportdir }}
- echo "reportFile=${{ env.reportfilename }}" >> $GITHUB_OUTPUT
- - name: Generate cache key
- id: genCacheKey
- uses: ./.github/workflows/actions/macos/generateCacheKey
- with:
- compiler: ${{ env.CXX }}
- - name: Restore Compiler Cache
- uses: actions/cache@v4
- with:
- save-always: true
- path: ${{ env.CCACHE_DIR }}
- key: FC-${{ steps.genCacheKey.outputs.cacheKey }}-${{ github.ref }}-${{ github.run_id }}
- restore-keys: |
- FC-${{ steps.genCacheKey.outputs.cacheKey }}-${{ github.ref }}-
- FC-${{ steps.genCacheKey.outputs.cacheKey }}-
- - name: Print CCache statistics before build, reset stats and print config
- run: |
- ccache -s
- ccache -z
- ccache -p
- - name: CMake Configure
- run: |
- mamba run --live-stream -p .conda/freecad cmake --preset conda-macos-release -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/.conda/freecad/opt/freecad
- - name: CMake Build
- run: |
- mamba run --live-stream -p .conda/freecad cmake --build build/release
- - name: Print ccache statistics after Build
- run: |
- ccache -s
- - name: FreeCAD CLI tests on build dir
- if: inputs.testOnBuildDir
- timeout-minutes: 10
- uses: ./.github/workflows/actions/runPythonTests
- with:
- testDescription: "CLI tests on build dir"
- testCommand: ${{ env.builddir }}/bin/FreeCADCmd -t 0
- logFile: ${{ env.logdir }}TestCLIBuild.log
- reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- - name: C++ tests
- timeout-minutes: 1
- uses: ./.github/workflows/actions/runCPPTests/runAllTests
- with:
- reportdir: ${{ env.reportdir }}
- builddir: ${{ env.builddir }}
- reportFile: ${{ env.reportdir }}${{ env.reportfilename }}
- - name: CMake Install
- run: |
- mamba run --live-stream -p .conda/freecad cmake --install build/release
- - name: FreeCAD CLI tests on install
- timeout-minutes: 10
- uses: ./.github/workflows/actions/runPythonTests
- with:
- testDescription: "CLI tests on install"
- testCommand: ${{ github.workspace }}/.conda/freecad/opt/freecad/bin/FreeCADCmd -t 0
- logFile: ${{ env.logdir }}TestCLIInstall.log
- reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- - name: Upload logs
- if: always()
- uses: actions/upload-artifact@v4
- with:
- name: ${{ inputs.artifactBasename }}-Logs
- path: |
- ${{ env.logdir }}
- /var/crash/*FreeCAD*
- - name: Upload report
- if: always()
- uses: actions/upload-artifact@v4
- with:
- name: ${{ env.reportfilename }}
- path: |
- ${{env.reportdir}}${{ env.reportfilename }}
diff --git a/.github/workflows/sub_buildPixi.yml b/.github/workflows/sub_buildPixi.yml
new file mode 100644
index 0000000000..0889c24216
--- /dev/null
+++ b/.github/workflows/sub_buildPixi.yml
@@ -0,0 +1,203 @@
+# SPDX-License-Identifier: LGPL-2.1-or-later
+# ***************************************************************************
+# * *
+# * Copyright (c) 2024 0penBrain, Lorenz Lechner and Jacob Oursland. *
+# * *
+# * This file is part of FreeCAD. *
+# * *
+# * FreeCAD is free software: you can redistribute it and/or modify it *
+# * under the terms of the GNU Lesser General Public License as *
+# * published by the Free Software Foundation, either version 2.1 of the *
+# * License, or (at your option) any later version. *
+# * *
+# * FreeCAD is distributed in the hope that it will be useful, but *
+# * WITHOUT ANY WARRANTY; without even the implied warranty of *
+# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+# * Lesser General Public License for more details. *
+# * *
+# * You should have received a copy of the GNU Lesser General Public *
+# * License along with FreeCAD. If not, see *
+# * . *
+# * *
+# ***************************************************************************
+
+# This is a build and test workflow for CI of FreeCAD.
+# This workflow aims at building and testing FreeCAD on a Conda environment on macOS.
+
+name: Pixi Builds
+
+on:
+ workflow_call:
+ inputs:
+ artifactBasename:
+ type: string
+ required: true
+ testOnBuildDir:
+ default: false
+ type: boolean
+ required: false
+ allowedToFail:
+ default: false
+ type: boolean
+ required: false
+ outputs:
+ reportFile:
+ value: ${{ jobs.Build.outputs.reportFile }}
+
+jobs:
+ build_with_pixi:
+ runs-on: ${{ matrix.os }}
+ continue-on-error: ${{ inputs.allowedToFail }}
+ env:
+ CCACHE_DIR: ${{ github.workspace }}/ccache
+ CCACHE_CONFIGPATH: ${{ github.workspace }}/ccache/config
+ CCACHE_MAXSIZE: 1G
+ CCACHE_COMPRESS: true
+ CCACHE_COMPRESSLEVEL: 5
+ builddir: ${{ github.workspace }}/build/
+ cacheKey: pixi-${{ matrix.os }}
+ logdir: ${{ github.workspace }}/logs/
+ reportdir: ${{ github.workspace }}/report/
+ reportfilename: ${{ inputs.artifactBasename }}-${{ matrix.os }}-report.md
+ outputs:
+ reportFile: ${{ steps.Init.outputs.reportFile }}
+
+ strategy:
+ max-parallel: 6
+ fail-fast: false
+ matrix:
+ os: [windows-latest, ubuntu-latest, macos-latest]
+
+ steps:
+ - name: Set Platform Environment Variables
+ shell: bash -l {0}
+ env:
+ OPERATING_SYSTEM: ${{ runner.os }}
+ run: |
+ if [[ $OPERATING_SYSTEM == 'Windows' ]]; then
+ echo 'CCACHE_COMPILERCHECK=%compiler%' >> "$GITHUB_ENV"
+ else
+ echo 'CCACHE_COMPILERCHECK=%compiler% -dumpfullversion -dumpversion' >> "$GITHUB_ENV"
+ fi
+
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Make needed directories, files and initializations
+ id: Init
+ run: |
+ mkdir -p ${{ env.builddir }}
+ mkdir -p ${{ env.logdir }}
+ mkdir -p ${{ env.reportdir }}
+ echo "reportFile=${{ env.reportfilename }}" >> $GITHUB_OUTPUT
+
+ - uses: prefix-dev/setup-pixi@v0.8.1
+ with:
+ pixi-version: v0.34.0
+ cache: false
+
+ - name: Restore Compiler Cache
+ uses: actions/cache/restore@v4
+ with:
+ path: ${{ env.CCACHE_DIR }}
+ key: FC-${{ env.cacheKey }}-${{ github.ref }}-${{ github.run_id }}
+ restore-keys: |
+ FC-${{ env.cacheKey }}-${{ github.ref }}-
+ FC-${{ env.cacheKey }}-
+
+ - name: Print CCache statistics before build, reset stats and print config
+ run: |
+ pixi run ccache -s
+ pixi run ccache -z
+ pixi run ccache -p
+
+ - name: CMake Configure
+ run: |
+ pixi run configure-release
+
+ - name: CMake Build
+ run: |
+ pixi run build
+
+ - name: Print ccache statistics after Build
+ run: |
+ pixi run ccache -s
+
+ - name: FreeCAD CLI tests on build dir
+ if: inputs.testOnBuildDir
+ timeout-minutes: 10
+ uses: ./.github/workflows/actions/runPythonTests
+ with:
+ testDescription: "CLI tests on build dir"
+ testCommand: pixi run ${{ env.builddir }}/bin/FreeCADCmd -t 0
+ logFile: ${{ env.logdir }}TestCLIBuild.log
+ reportFile: ${{env.reportdir}}${{ env.reportfilename }}
+
+ - name: FreeCAD GUI tests on build dir
+ if: runner.os == 'Linux' && inputs.testOnBuildDir
+ timeout-minutes: 15
+ uses: ./.github/workflows/actions/runPythonTests
+ with:
+ testDescription: "GUI tests on build dir"
+ testCommand: pixi run xvfb-run ${{ env.builddir }}/bin/FreeCAD -t 0
+ logFile: ${{ env.logdir }}TestGUIBuild.log
+ reportFile: ${{env.reportdir}}${{ env.reportfilename }}
+
+ - name: C++ tests
+ timeout-minutes: 10
+ if: runner.os != 'Windows'
+ uses: ./.github/workflows/actions/runCPPTests/runAllTests
+ with:
+ reportdir: ${{ env.reportdir }}
+ builddir: ${{ env.builddir }}
+ reportFile: ${{ env.reportdir }}${{ env.reportfilename }}
+
+ - name: CMake Install
+ run: |
+ pixi run install
+
+ - name: FreeCAD CLI tests on install
+ if: runner.os != 'Windows'
+ timeout-minutes: 10
+ uses: ./.github/workflows/actions/runPythonTests
+ with:
+ testDescription: "CLI tests on install"
+ testCommand: pixi run FreeCADCmd -t 0
+ logFile: ${{ env.logdir }}TestCLIInstall.log
+ reportFile: ${{env.reportdir}}${{ env.reportfilename }}
+
+ - name: FreeCAD GUI tests on install
+ # if: runner.os == 'Linux'
+ # currently broken on Qt6 builds
+ if: false
+ timeout-minutes: 15
+ uses: ./.github/workflows/actions/runPythonTests
+ with:
+ testDescription: "GUI tests on install"
+ testCommand: pixi run xvfb-run FreeCAD -t 0
+ logFile: ${{ env.logdir }}TestGUIInstall.log
+ reportFile: ${{env.reportdir}}${{ env.reportfilename }}
+
+ - name: Save Compiler Cache
+ if: always()
+ uses: actions/cache/save@v4
+ with:
+ path: ${{ env.CCACHE_DIR }}
+ key: FC-${{ env.cacheKey }}-${{ github.ref }}-${{ github.run_id }}
+
+ - name: Upload logs
+ if: always()
+ uses: actions/upload-artifact@v4
+ with:
+ name: ${{ inputs.artifactBasename }}-${{ matrix.os }}-Logs
+ path: |
+ ${{ env.logdir }}
+ /var/crash/*FreeCAD*
+
+ - name: Upload report
+ if: always()
+ uses: actions/upload-artifact@v4
+ with:
+ name: ${{ env.reportfilename }}
+ path: |
+ ${{env.reportdir}}${{ env.reportfilename }}
diff --git a/.github/workflows/sub_buildUbuntu2204Conda.yml b/.github/workflows/sub_buildUbuntu2204Conda.yml
deleted file mode 100644
index 43d31ec714..0000000000
--- a/.github/workflows/sub_buildUbuntu2204Conda.yml
+++ /dev/null
@@ -1,200 +0,0 @@
-# SPDX-License-Identifier: LGPL-2.1-or-later
-# ***************************************************************************
-# * *
-# * Copyright (c) 2023 0penBrain. *
-# * *
-# * This file is part of FreeCAD. *
-# * *
-# * FreeCAD is free software: you can redistribute it and/or modify it *
-# * under the terms of the GNU Lesser General Public License as *
-# * published by the Free Software Foundation, either version 2.1 of the *
-# * License, or (at your option) any later version. *
-# * *
-# * FreeCAD is distributed in the hope that it will be useful, but *
-# * WITHOUT ANY WARRANTY; without even the implied warranty of *
-# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
-# * Lesser General Public License for more details. *
-# * *
-# * You should have received a copy of the GNU Lesser General Public *
-# * License along with FreeCAD. If not, see *
-# * . *
-# * *
-# ***************************************************************************
-
-# This is a build and test workflow for CI of FreeCAD.
-# This workflow aims at building and testing FreeCAD on a Conda environment on Linux.
-
-name: Build Ubuntu 22.04 (Conda)
-on:
- workflow_call:
- inputs:
- artifactBasename:
- type: string
- required: true
- testOnBuildDir:
- default: false
- type: boolean
- required: false
- allowedToFail:
- default: false
- type: boolean
- required: false
- outputs:
- reportFile:
- value: ${{ jobs.Build.outputs.reportFile }}
-
-jobs:
- Build:
- runs-on: ubuntu-22.04
- continue-on-error: ${{ inputs.allowedToFail }}
- env:
- CCACHE_DIR: ${{ github.workspace }}/ccache
- CCACHE_CONFIGPATH: ${{ github.workspace }}/ccache/config
- CCACHE_MAXSIZE: 1G
- CCACHE_COMPILERCHECK: "%compiler% -dumpfullversion -dumpversion" # default:mtime
- CCACHE_COMPRESS: true
- CCACHE_COMPRESSLEVEL: 1
- builddir: ${{ github.workspace }}/build/release/
- logdir: /tmp/logs/
- reportdir: /tmp/report/
- reportfilename: ${{ inputs.artifactBasename }}-report.md
- defaults:
- run:
- shell: bash -l {0}
- outputs:
- reportFile: ${{ steps.Init.outputs.reportFile }}
-
- steps:
- - name: Checking out source code
- uses: actions/checkout@v4
- with:
- submodules: true
- - name: Setup Miniconda
- env:
- CONDA_VERBOSITY: 2
- uses: conda-incubator/setup-miniconda@v3
- with:
- activate-environment: .conda/freecad
- environment-file: conda/conda-env.yaml
- channels: conda-forge
- channel-priority: true
- miniforge-version: latest
- - name: Install FreeCAD dependencies
- env:
- CONDA_VERBOSITY: 2
- run: |
- ./conda/setup-environment.sh
- - name: Set Environment Variables
- run: |
- echo "CC=$CC" >> "$GITHUB_ENV"
- echo "CXX=$CXX" >> "$GITHUB_ENV"
- - name: Make needed directories, files and initializations
- id: Init
- run: |
- mkdir -p ${{ env.CCACHE_DIR }}
- mkdir -p ${{ env.CCACHE_CONFIGPATH }}
- mkdir -p ${{ env.builddir }}
- mkdir -p ${{ env.logdir }}
- mkdir -p ${{ env.reportdir }}
- echo "reportFile=${{ env.reportfilename }}" >> $GITHUB_OUTPUT
- - name: Generate cache key
- id: genCacheKey
- uses: ./.github/workflows/actions/linux/generateCacheKey
- with:
- compiler: ${{ env.CXX }}
- qt_major_version: 5
- - name: Restore Compiler Cache
- uses: actions/cache@v4
- with:
- save-always: true
- path: ${{ env.CCACHE_DIR }}
- key: FC-${{ steps.genCacheKey.outputs.cacheKey }}-${{ github.ref }}-${{ github.run_id }}
- restore-keys: |
- FC-${{ steps.genCacheKey.outputs.cacheKey }}-${{ github.ref }}-
- FC-${{ steps.genCacheKey.outputs.cacheKey }}-
- - name: Print CCache statistics before build, reset stats and print config
- run: |
- ccache -s
- ccache -z
- ccache -p
- - name: CMake Configure
- uses: ./.github/workflows/actions/linux/configure
- with:
- extraParameters: --preset conda-linux-release -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/.conda/freecad/opt/freecad
- builddir: ${{ env.builddir }}
- logFile: ${{ env.logdir }}Cmake.log
- errorFile: ${{ env.logdir }}CmakeErrors.log
- reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- - name: CMake Build
- uses: ./.github/workflows/actions/linux/build
- with:
- builddir: ${{ env.builddir }}
- logFile: ${{ env.logdir }}Build.log
- errorFile: ${{ env.logdir }}BuildErrors.log
- reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- - name: Print ccache statistics after Build
- run: |
- ccache -s
- - name: FreeCAD CLI tests on build dir
- if: inputs.testOnBuildDir
- timeout-minutes: 10
- uses: ./.github/workflows/actions/runPythonTests
- with:
- testDescription: "CLI tests on build dir"
- testCommand: ${{ env.builddir }}/bin/FreeCADCmd -t 0
- logFile: ${{ env.logdir }}TestCLIBuild.log
- reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- - name: FreeCAD GUI tests on build dir
- if: inputs.testOnBuildDir
- timeout-minutes: 15
- uses: ./.github/workflows/actions/runPythonTests
- with:
- testDescription: "GUI tests on build dir"
- testCommand: xvfb-run ${{ env.builddir }}/bin/FreeCAD -t 0
- logFile: ${{ env.logdir }}TestGUIBuild.log
- reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- - name: C++ tests
- timeout-minutes: 1
- uses: ./.github/workflows/actions/runCPPTests/runAllTests
- with:
- reportdir: ${{ env.reportdir }}
- builddir: ${{ env.builddir }}
- reportFile: ${{ env.reportdir }}${{ env.reportfilename }}
- - name: CMake Install
- uses: ./.github/workflows/actions/linux/install
- with:
- builddir: ${{ env.builddir }}
- logFile: ${{ env.logdir }}Install.log
- errorFile: ${{ env.logdir }}InstallErrors.log
- reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- - name: FreeCAD CLI tests on install
- timeout-minutes: 10
- uses: ./.github/workflows/actions/runPythonTests
- with:
- testDescription: "CLI tests on install"
- testCommand: ${{ github.workspace }}/.conda/freecad/opt/freecad/bin/FreeCADCmd -t 0
- logFile: ${{ env.logdir }}TestCLIInstall.log
- reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- - name: FreeCAD GUI tests on install
- timeout-minutes: 15
- uses: ./.github/workflows/actions/runPythonTests
- with:
- testDescription: "GUI tests on install"
- testCommand: xvfb-run ${{ github.workspace }}/.conda/freecad/opt/freecad/bin/FreeCAD -t 0
- logFile: ${{ env.logdir }}TestGUIInstall.log
- reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- - name: Upload logs
- if: always()
- uses: actions/upload-artifact@v4
- with:
- name: ${{ inputs.artifactBasename }}-Logs
- path: |
- ${{ env.logdir }}
- /var/crash/*FreeCAD*
- - name: Upload report
- if: always()
- uses: actions/upload-artifact@v4
- with:
- name: ${{ env.reportfilename }}
- path: |
- ${{env.reportdir}}${{ env.reportfilename }}
diff --git a/.github/workflows/sub_buildUbuntu2204CondaQt6.yml b/.github/workflows/sub_buildUbuntu2204CondaQt6.yml
deleted file mode 100644
index 59fca06b8d..0000000000
--- a/.github/workflows/sub_buildUbuntu2204CondaQt6.yml
+++ /dev/null
@@ -1,211 +0,0 @@
-# SPDX-License-Identifier: LGPL-2.1-or-later
-# ***************************************************************************
-# * *
-# * Copyright (c) 2023 0penBrain. *
-# * *
-# * This file is part of FreeCAD. *
-# * *
-# * FreeCAD is free software: you can redistribute it and/or modify it *
-# * under the terms of the GNU Lesser General Public License as *
-# * published by the Free Software Foundation, either version 2.1 of the *
-# * License, or (at your option) any later version. *
-# * *
-# * FreeCAD is distributed in the hope that it will be useful, but *
-# * WITHOUT ANY WARRANTY; without even the implied warranty of *
-# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
-# * Lesser General Public License for more details. *
-# * *
-# * You should have received a copy of the GNU Lesser General Public *
-# * License along with FreeCAD. If not, see *
-# * . *
-# * *
-# ***************************************************************************
-
-# This is a build and test workflow for CI of FreeCAD.
-# This workflow aims at building and testing FreeCAD on a Conda environment on Linux.
-
-name: Build Ubuntu 22.04 (Conda)
-on:
- workflow_call:
- inputs:
- artifactBasename:
- type: string
- required: true
- testOnBuildDir:
- default: false
- type: boolean
- required: false
- allowedToFail:
- default: false
- type: boolean
- required: false
- outputs:
- reportFile:
- value: ${{ jobs.Build.outputs.reportFile }}
-
-jobs:
- Build:
- runs-on: ubuntu-22.04
- continue-on-error: ${{ inputs.allowedToFail }}
- env:
- CCACHE_DIR: ${{ github.workspace }}/ccache
- CCACHE_CONFIGPATH: ${{ github.workspace }}/ccache/config
- CCACHE_MAXSIZE: 1G
- CCACHE_COMPILERCHECK: "%compiler% -dumpfullversion -dumpversion" # default:mtime
- CCACHE_COMPRESS: true
- CCACHE_COMPRESSLEVEL: 1
- builddir: ${{ github.workspace }}/build/release/
- logdir: /tmp/logs/
- reportdir: /tmp/report/
- reportfilename: ${{ inputs.artifactBasename }}-report.md
- defaults:
- run:
- shell: bash -l {0}
- outputs:
- reportFile: ${{ steps.Init.outputs.reportFile }}
-
- steps:
- - name: Checking out source code
- uses: actions/checkout@v4
- with:
- submodules: true
- - name: Setup Miniconda
- env:
- CONDA_VERBOSITY: 2
- uses: conda-incubator/setup-miniconda@v3
- with:
- activate-environment: .conda/freecad
- environment-file: conda/conda-env-qt6.yaml
- channels: conda-forge
- channel-priority: true
- miniforge-version: latest
- - name: Install FreeCAD dependencies
- env:
- CONDA_VERBOSITY: 2
- run: |
- sudo apt-get update -qq
- sudo apt-get install -y --no-install-recommends \
- libegl1 \
- libgl1 \
- libglx0 \
- libopengl0
- ./conda/setup-environment-qt6.sh
- - name: Set Environment Variables
- run: |
- echo "CC=$CC" >> "$GITHUB_ENV"
- echo "CXX=$CXX" >> "$GITHUB_ENV"
- - name: Make needed directories, files and initializations
- id: Init
- run: |
- mkdir -p ${{ env.CCACHE_DIR }}
- mkdir -p ${{ env.CCACHE_CONFIGPATH }}
- mkdir -p ${{ env.builddir }}
- mkdir -p ${{ env.logdir }}
- mkdir -p ${{ env.reportdir }}
- echo "reportFile=${{ env.reportfilename }}" >> $GITHUB_OUTPUT
- - name: Generate cache key
- id: genCacheKey
- uses: ./.github/workflows/actions/linux/generateCacheKey
- with:
- compiler: ${{ env.CXX }}
- qt_major_version: 6
- - name: Restore Compiler Cache
- uses: actions/cache@v4
- with:
- save-always: true
- path: ${{ env.CCACHE_DIR }}
- key: FC-${{ steps.genCacheKey.outputs.cacheKey }}-${{ github.ref }}-${{ github.run_id }}
- restore-keys: |
- FC-${{ steps.genCacheKey.outputs.cacheKey }}-${{ github.ref }}-
- FC-${{ steps.genCacheKey.outputs.cacheKey }}-
- - name: Print CCache statistics before build, reset stats and print config
- run: |
- ccache -s
- ccache -z
- ccache -p
- - name: CMake Configure
- uses: ./.github/workflows/actions/linux/configure
- with:
- extraParameters: >
- --preset conda-linux-release
- -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/.conda/freecad/opt/freecad
- -DQT_HOST_PATH=${{ github.workspace }}/.conda/freecad/
- -DFREECAD_QT_VERSION=6
- -DBUILD_REVERSEENGINEERING=OFF
- builddir: ${{ env.builddir }}
- logFile: ${{ env.logdir }}Cmake.log
- errorFile: ${{ env.logdir }}CmakeErrors.log
- reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- - name: CMake Build
- uses: ./.github/workflows/actions/linux/build
- with:
- builddir: ${{ env.builddir }}
- logFile: ${{ env.logdir }}Build.log
- errorFile: ${{ env.logdir }}BuildErrors.log
- reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- - name: Print ccache statistics after Build
- run: |
- ccache -s
- - name: FreeCAD CLI tests on build dir
- if: inputs.testOnBuildDir
- timeout-minutes: 10
- uses: ./.github/workflows/actions/runPythonTests
- with:
- testDescription: "CLI tests on build dir"
- testCommand: ${{ env.builddir }}/bin/FreeCADCmd -t 0
- logFile: ${{ env.logdir }}TestCLIBuild.log
- reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- - name: FreeCAD GUI tests on build dir
- if: inputs.testOnBuildDir
- timeout-minutes: 15
- uses: ./.github/workflows/actions/runPythonTests
- with:
- testDescription: "GUI tests on build dir"
- testCommand: xvfb-run ${{ env.builddir }}/bin/FreeCAD -t 0
- logFile: ${{ env.logdir }}TestGUIBuild.log
- reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- - name: C++ tests
- timeout-minutes: 1
- uses: ./.github/workflows/actions/runCPPTests/runAllTests
- with:
- reportdir: ${{ env.reportdir }}
- builddir: ${{ env.builddir }}
- reportFile: ${{ env.reportdir }}${{ env.reportfilename }}
- - name: CMake Install
- uses: ./.github/workflows/actions/linux/install
- with:
- builddir: ${{ env.builddir }}
- logFile: ${{ env.logdir }}Install.log
- errorFile: ${{ env.logdir }}InstallErrors.log
- reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- - name: FreeCAD CLI tests on install
- timeout-minutes: 10
- uses: ./.github/workflows/actions/runPythonTests
- with:
- testDescription: "CLI tests on install"
- testCommand: ${{ github.workspace }}/.conda/freecad/opt/freecad/bin/FreeCADCmd -t 0
- logFile: ${{ env.logdir }}TestCLIInstall.log
- reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- - name: FreeCAD GUI tests on install
- timeout-minutes: 15
- uses: ./.github/workflows/actions/runPythonTests
- with:
- testDescription: "GUI tests on install"
- testCommand: xvfb-run ${{ github.workspace }}/.conda/freecad/opt/freecad/bin/FreeCAD -t 0
- logFile: ${{ env.logdir }}TestGUIInstall.log
- reportFile: ${{env.reportdir}}${{ env.reportfilename }}
- - name: Upload logs
- if: always()
- uses: actions/upload-artifact@v4
- with:
- name: ${{ inputs.artifactBasename }}-Logs
- path: |
- ${{ env.logdir }}
- /var/crash/*FreeCAD*
- - name: Upload report
- if: always()
- uses: actions/upload-artifact@v4
- with:
- name: ${{ env.reportfilename }}
- path: |
- ${{env.reportdir}}${{ env.reportfilename }}
diff --git a/.github/workflows/sub_buildWindowsConda.yml b/.github/workflows/sub_buildWindowsConda.yml
deleted file mode 100644
index e51d5cc35a..0000000000
--- a/.github/workflows/sub_buildWindowsConda.yml
+++ /dev/null
@@ -1,133 +0,0 @@
-# ***************************************************************************
-# * Copyright (c) 2023 0penBrain *
-# * *
-# * This program is free software; you can redistribute it and/or modify *
-# * it under the terms of the GNU Lesser General Public License (LGPL) *
-# * as published by the Free Software Foundation; either version 2 of *
-# * the License, or (at your option) any later version. *
-# * for detail see the LICENCE text file. *
-# * *
-# * This program is distributed in the hope that it will be useful, *
-# * but WITHOUT ANY WARRANTY; without even the implied warranty of *
-# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-# * GNU Library General Public License for more details. *
-# * *
-# * You should have received a copy of the GNU Library General Public *
-# * License along with this program; if not, write to the Free Software *
-# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-# * USA *
-# * *
-# ***************************************************************************
-
-# This is a build and test workflow for CI of FreeCAD.
-# This workflow aims at building and testing FreeCAD using a Conda environment on Windows with MSVC.
-
-name: Build Windows (Conda)
-on:
- workflow_call:
- inputs:
- artifactBasename:
- type: string
- required: true
- allowedToFail:
- default: false
- type: boolean
- required: false
- outputs:
- reportFile:
- value: ${{ jobs.Build.outputs.reportFile }}
-
-jobs:
- Build:
- runs-on: windows-latest
- continue-on-error: ${{ inputs.allowedToFail }}
- env:
- CCACHE_DIR: C:/FC/cache/
- CCACHE_COMPILERCHECK: "%compiler%" # default:mtime
- CCACHE_MAXSIZE: 1G
- CCACHE_COMPRESS: true
- CCACHE_COMPRESSLEVEL: 1
- CCACHE_NOHASHDIR: true
- CCACHE_DIRECT: true
- #CCACHE_SLOPPINESS: "pch_defines,time_macros" # Can't get PCH to work on Windows
- CCACHE_LOGFILE: C:/logs/ccache.log
- ## Have to use C:\ because not enough space on workspace drive
- builddir: C:/FC/build/
- logdir: C:/logs/
- reportdir: C:/report/
- reportfilename: ${{ inputs.artifactBasename }}-report.md
- outputs:
- reportFile: ${{ steps.Init.outputs.reportFile }}
-
- steps:
- - name: Checking out source code
- uses: actions/checkout@v4
- with:
- submodules: true
- - name: Setup Miniconda
- env:
- CONDA_VERBOSITY: 2
- uses: conda-incubator/setup-miniconda@v3
- with:
- activate-environment: .conda/freecad
- environment-file: conda/conda-env.yaml
- channels: conda-forge
- channel-priority: true
- miniforge-version: latest
- - name: Install FreeCAD dependencies
- env:
- CONDA_VERBOSITY: 2
- run: |
- conda config --add envs_dirs $PWD/.conda
- mamba-devenv --no-prune -f conda/environment.devenv.yml
- - name: Make needed directories, files and initializations
- id: Init
- run: |
- mkdir ${{ env.CCACHE_DIR }}
- mkdir ${{ env.builddir }}
- mkdir ${{ env.logdir }}
- mkdir ${{ env.reportdir }}
- echo "reportFile=${{ env.reportfilename }}" >> $GITHUB_OUTPUT
- - name: Restore compiler cache
- uses: actions/cache@v4
- with:
- save-always: true
- path: ${{ env.CCACHE_DIR }}
- key: FC-Windows-Conda-${{ github.ref }}-${{ github.run_id }}
- restore-keys: |
- FC-Windows-Conda-${{ github.ref }}-
- FC-Windows-Conda-
- - name: Print Ccache statistics before build, reset stats and print config
- run: |
- ccache -s
- ccache -z
- ccache -p
- - name: Configuring CMake
- shell: cmd /C CALL {0}
- run: >
- conda\cmake.cmd --preset conda-windows-release -DFREECAD_USE_PCH:BOOL=OFF -DFREECAD_RELEASE_PDB:BOOL=OFF -DFREECAD_USE_CCACHE:BOOL=ON
- - name: Compiling sources
- shell: cmd /C CALL {0}
- run: >
- conda\cmake.cmd --build build\release
- - name: Print Ccache statistics after build
- run: |
- ccache -s
- - name: CMake Install
- shell: cmd /C CALL {0}
- run: |
- conda\cmake.cmd --install build\release
- - name: C++ unit tests
- timeout-minutes: 1
- run: |
- . build\release\tests\Tests_run --gtest_output=json:${{ env.reportdir }}gtest_results.json # 2>&1 | tee -filepath ${{ env.logdir }}/unitTests.log
- - name: FreeCAD CLI tests
- run: |
- . build\release\bin\FreeCADCmd -t 0 # 2>&1 | tee -filepath ${{ env.logdir }}/integrationTests.log
- - name: Upload logs
- if: always()
- uses: actions/upload-artifact@v4
- with:
- name: ${{ inputs.artifactBasename }}-Logs
- path: |
- ${{ env.logdir }}