Merge branch 'main' into fix/clang-cl-windows-support

This commit is contained in:
Gabriel Monteiro
2026-07-10 11:10:33 -03:00
committed by GitHub
8166 changed files with 137760 additions and 28056 deletions
+1 -1
View File
@@ -15,7 +15,7 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v6 uses: actions/checkout@v7
- name: Setup Bun - name: Setup Bun
uses: oven-sh/setup-bun@v2 uses: oven-sh/setup-bun@v2
@@ -29,7 +29,7 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v6 uses: actions/checkout@v7
- name: Setup Bun - name: Setup Bun
uses: oven-sh/setup-bun@v2 uses: oven-sh/setup-bun@v2
+78 -43
View File
@@ -5,6 +5,7 @@ on:
branches: branches:
- main - main
- release/* - release/*
- belt-printer
paths: paths:
- 'deps/**' - 'deps/**'
- 'src/**' - 'src/**'
@@ -29,6 +30,7 @@ on:
- 'version.inc' - 'version.inc'
- ".github/workflows/build_*.yml" - ".github/workflows/build_*.yml"
- 'build_linux.sh' - 'build_linux.sh'
- 'build_release_vs.bat'
- 'build_release_vs2022.bat' - 'build_release_vs2022.bat'
- 'build_release_macos.sh' - 'build_release_macos.sh'
- 'scripts/flatpak/**' - 'scripts/flatpak/**'
@@ -75,11 +77,22 @@ jobs:
build-deps-only: ${{ inputs.build-deps-only || false }} build-deps-only: ${{ inputs.build-deps-only || false }}
secrets: inherit secrets: inherit
build_windows: build_windows:
name: Build Windows ${{ matrix.arch }}
strategy:
fail-fast: false
matrix:
include:
- arch: x64
os: windows-latest
- arch: arm64
os: windows-11-arm
# Don't run scheduled builds on forks: # Don't run scheduled builds on forks:
if: ${{ !cancelled() && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }} if: ${{ !cancelled() && (github.event_name != 'schedule' || github.repository == 'OrcaSlicer/OrcaSlicer') }}
uses: ./.github/workflows/build_check_cache.yml uses: ./.github/workflows/build_check_cache.yml
with: with:
os: ${{ vars.SELF_HOSTED && 'orca-win-server' || 'windows-latest' }} # Self-hosted runner is x64-only; ARM64 always uses the GitHub-hosted runner.
os: ${{ (matrix.arch == 'x64' && vars.SELF_HOSTED) && 'orca-win-server' || matrix.os }}
arch: ${{ matrix.arch }}
build-deps-only: ${{ inputs.build-deps-only || false }} build-deps-only: ${{ inputs.build-deps-only || false }}
force-build: ${{ github.event_name == 'schedule' }} force-build: ${{ github.event_name == 'schedule' }}
secrets: inherit secrets: inherit
@@ -109,54 +122,73 @@ jobs:
arch: universal arch: universal
macos-combine-only: true macos-combine-only: true
secrets: inherit secrets: inherit
unit_tests: # One test job per built arch, on the runner that built it.
name: Unit Tests unit_tests_linux_x86_64:
# Tests are built on the aarch64 leg by default (faster GitHub arm runner), name: Linux x86_64
# so run them there; self-hosted builds them on the amd64 server instead.
runs-on: ${{ vars.SELF_HOSTED && 'orca-lnx-server' || 'ubuntu-24.04-arm' }}
needs: build_linux needs: build_linux
if: ${{ !cancelled() && success() }} if: ${{ !cancelled() && success() }}
uses: ./.github/workflows/unit_tests.yml
with:
os: ${{ vars.SELF_HOSTED && 'orca-lnx-server' || 'ubuntu-24.04' }}
artifact: ${{ github.sha }}-tests-linux-x86_64
unit_tests_linux_aarch64:
name: Linux aarch64
needs: build_linux
if: ${{ !cancelled() && success() }}
uses: ./.github/workflows/unit_tests.yml
with:
os: ubuntu-24.04-arm
artifact: ${{ github.sha }}-tests-linux-aarch64
unit_tests_windows_x64:
name: Windows x64
needs: build_windows
if: ${{ !cancelled() && success() }}
uses: ./.github/workflows/unit_tests.yml
with:
os: ${{ vars.SELF_HOSTED && 'orca-win-server' || 'windows-latest' }}
artifact: ${{ github.sha }}-tests-windows-x64
unit_tests_windows_arm64:
name: Windows arm64
needs: build_windows
if: ${{ !cancelled() && success() }}
uses: ./.github/workflows/unit_tests.yml
with:
os: windows-11-arm
artifact: ${{ github.sha }}-tests-windows-arm64
test-dir: build-arm64/tests
unit_tests_macos_arm64:
name: macOS arm64
needs: build_macos_arch
if: ${{ !cancelled() && success() }}
uses: ./.github/workflows/unit_tests.yml
with:
os: ${{ vars.SELF_HOSTED && 'orca-macos-arm64' || 'macos-14' }}
artifact: ${{ github.sha }}-tests-macos-arm64
test-dir: build/arm64/tests
publish_test_results:
name: Publish Test Results
needs: [unit_tests_linux_x86_64, unit_tests_linux_aarch64, unit_tests_windows_x64, unit_tests_windows_arm64, unit_tests_macos_arm64]
if: ${{ !cancelled() }}
runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Download Test Results
uses: actions/checkout@v6
with:
sparse-checkout: |
.github
scripts
tests
- name: Apt-Install Dependencies
if: ${{ !vars.SELF_HOSTED }}
uses: ./.github/actions/apt-install-deps
- name: Restore Test Artifact
uses: actions/download-artifact@v8 uses: actions/download-artifact@v8
with: with:
name: ${{ github.sha }}-tests pattern: test-results-*
- uses: lukka/get-cmake@latest path: test-results
with: # Best-effort: a read-only token (e.g. fork PRs) can't write the check, so
cmakeVersion: "~4.3.0" # use most recent 4.3.x version # don't let a publish failure fail the run. The test jobs gate correctness.
useLocalCache: true # <--= Use the local cache (default is 'false').
useCloudCache: true
- name: Unpackage and Run Unit Tests
timeout-minutes: 20
run: |
tar -xvf build_tests.tar
scripts/run_unit_tests.sh
- name: Upload Test Logs
uses: actions/upload-artifact@v7
if: ${{ failure() }}
with:
name: unit-test-logs
path: build/tests/**/*.log
- name: Publish Test Results - name: Publish Test Results
if: always() continue-on-error: true
uses: EnricoMi/publish-unit-test-result-action@v2 uses: EnricoMi/publish-unit-test-result-action@v2
with: with:
files: "ctest_results.xml" files: "test-results/**/*.xml"
- name: Delete Test Artifact - name: Delete Test Results
if: success() if: success()
uses: geekyeggo/delete-artifact@v6 uses: geekyeggo/delete-artifact@v6
with: with:
name: ${{ github.sha }}-tests name: test-results-*
failOnError: false
flatpak: flatpak:
name: "Flatpak" name: "Flatpak"
container: container:
@@ -184,11 +216,14 @@ jobs:
date: date:
ver: ver:
ver_pure: ver_pure:
# Belt-printer nightlies share the main nightly release but carry a `_belt`
# suffix so they never overwrite the main assets.
nightly_suffix: ${{ github.ref == 'refs/heads/belt-printer' && '_belt' || '' }}
steps: steps:
- name: "Remove unneeded stuff to free disk space" - name: "Remove unneeded stuff to free disk space"
run: run:
rm -rf /usr/local/lib/android/* /usr/share/dotnet/* /opt/ghc1/* "/usr/local/share/boost1/*" /opt/hostedtoolcache1/* rm -rf /usr/local/lib/android/* /usr/share/dotnet/* /opt/ghc1/* "/usr/local/share/boost1/*" /opt/hostedtoolcache1/*
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: Get the version and date - name: Get the version and date
run: | run: |
ver_pure=$(grep 'set(SoftFever_VERSION' version.inc | cut -d '"' -f2) ver_pure=$(grep 'set(SoftFever_VERSION' version.inc | cut -d '"' -f2)
@@ -207,14 +242,14 @@ jobs:
# Manage flatpak-builder cache externally so PRs restore but never upload # Manage flatpak-builder cache externally so PRs restore but never upload
- name: Restore flatpak-builder cache - name: Restore flatpak-builder cache
if: github.event_name == 'pull_request' if: github.event_name == 'pull_request'
uses: actions/cache/restore@v5 uses: actions/cache/restore@v6
with: with:
path: .flatpak-builder path: .flatpak-builder
key: flatpak-builder-${{ matrix.variant.arch }}-${{ github.event.pull_request.base.sha }} key: flatpak-builder-${{ matrix.variant.arch }}-${{ github.event.pull_request.base.sha }}
restore-keys: flatpak-builder-${{ matrix.variant.arch }}- restore-keys: flatpak-builder-${{ matrix.variant.arch }}-
- name: Save/restore flatpak-builder cache - name: Save/restore flatpak-builder cache
if: github.event_name != 'pull_request' if: github.event_name != 'pull_request'
uses: actions/cache@v5 uses: actions/cache@v6
with: with:
path: .flatpak-builder path: .flatpak-builder
key: flatpak-builder-${{ matrix.variant.arch }}-${{ github.sha }} key: flatpak-builder-${{ matrix.variant.arch }}-${{ github.sha }}
@@ -242,12 +277,12 @@ jobs:
name: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak name: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
path: '/__w/OrcaSlicer/OrcaSlicer/OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak' path: '/__w/OrcaSlicer/OrcaSlicer/OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak'
- name: Deploy Flatpak to nightly release - name: Deploy Flatpak to nightly release
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main' if: github.repository == 'OrcaSlicer/OrcaSlicer' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/belt-printer')
uses: WebFreak001/deploy-nightly@v3.2.0 uses: WebFreak001/deploy-nightly@v3.2.0
with: with:
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label} upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
release_id: 137995723 release_id: 137995723
asset_path: /__w/OrcaSlicer/OrcaSlicer/OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak asset_path: /__w/OrcaSlicer/OrcaSlicer/OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
asset_name: OrcaSlicer-Linux-flatpak_nightly_${{ matrix.variant.arch }}.flatpak asset_name: OrcaSlicer-Linux-flatpak_nightly${{ env.nightly_suffix }}_${{ matrix.variant.arch }}.flatpak
asset_content_type: application/octet-stream asset_content_type: application/octet-stream
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
+6 -5
View File
@@ -26,18 +26,19 @@ jobs:
valid-cache: ${{ steps.cache_deps.outputs.cache-hit }} valid-cache: ${{ steps.cache_deps.outputs.cache-hit }}
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v6 uses: actions/checkout@v7
with: with:
lfs: 'false' lfs: 'false'
- name: set outputs - name: set outputs
id: set_outputs id: set_outputs
env: env:
# Keep macOS/Linux cache keys architecture-specific. amd64 Linux passes # Keep macOS/Windows cache keys architecture-specific. amd64 Linux passes
# no arch (key stays 'linux-clang', preserving the existing cache); # no arch (key stays 'linux-clang', preserving the existing cache);
# aarch64 gets its own 'linux-clang-aarch64' key. # aarch64 gets its own 'linux-clang-aarch64' key.
cache-os: ${{ runner.os == 'macOS' && format('macos-{0}', inputs.arch) || (runner.os == 'Windows' && 'windows' || format('linux-clang{0}', inputs.arch && format('-{0}', inputs.arch) || '')) }} cache-os: ${{ runner.os == 'macOS' && format('macos-{0}', inputs.arch) || (runner.os == 'Windows' && format('windows-{0}', inputs.arch) || format('linux-clang{0}', inputs.arch && format('-{0}', inputs.arch) || '')) }}
dep-folder-name: ${{ runner.os == 'macOS' && format('/{0}', inputs.arch) || '/OrcaSlicer_dep' }} # ARM64 builds use the build-arm64 tree (see build_release_vs.bat); x64/other use build.
dep-folder-name: ${{ runner.os == 'macOS' && format('/{0}', inputs.arch) || (runner.os == 'Windows' && inputs.arch == 'arm64') && '-arm64/OrcaSlicer_dep' || '/OrcaSlicer_dep' }}
output-cmd: ${{ runner.os == 'Windows' && '$env:GITHUB_OUTPUT' || '"$GITHUB_OUTPUT"'}} output-cmd: ${{ runner.os == 'Windows' && '$env:GITHUB_OUTPUT' || '"$GITHUB_OUTPUT"'}}
run: | run: |
echo cache-key=${{ env.cache-os }}-cache-orcaslicer_deps-build-${{ hashFiles('deps/**') }} >> ${{ env.output-cmd }} echo cache-key=${{ env.cache-os }}-cache-orcaslicer_deps-build-${{ hashFiles('deps/**') }} >> ${{ env.output-cmd }}
@@ -45,7 +46,7 @@ jobs:
- name: load cache - name: load cache
id: cache_deps id: cache_deps
uses: actions/cache@v5 uses: actions/cache@v6
with: with:
path: ${{ steps.set_outputs.outputs.cache-path }} path: ${{ steps.set_outputs.outputs.cache-path }}
key: ${{ steps.set_outputs.outputs.cache-key }} key: ${{ steps.set_outputs.outputs.cache-key }}
+71 -4
View File
@@ -34,22 +34,39 @@ jobs:
# Setup the environment # Setup the environment
- name: Checkout - name: Checkout
uses: actions/checkout@v6 uses: actions/checkout@v7
with: with:
lfs: 'false' lfs: 'false'
- name: load cached deps - name: load cached deps
uses: actions/cache@v5 uses: actions/cache@v6
with: with:
path: ${{ inputs.cache-path }} path: ${{ inputs.cache-path }}
key: ${{ inputs.cache-key }} key: ${{ inputs.cache-key }}
- uses: lukka/get-cmake@latest - uses: lukka/get-cmake@latest
# The windows-11-arm runner needs CMake <= 3.31 (handled in the next step).
if: ${{ !(runner.os == 'Windows' && inputs.arch == 'arm64') }}
with: with:
cmakeVersion: "~4.3.0" # use most recent 4.3.x version cmakeVersion: "~4.3.0" # use most recent 4.3.x version
useLocalCache: true # <--= Use the local cache (default is 'false'). useLocalCache: true # <--= Use the local cache (default is 'false').
useCloudCache: true useCloudCache: true
- name: Install CMake 3.31.x (Windows ARM64)
# windows-11-arm ships CMake 4.x, which removed pre-3.5 policy
# compatibility AND has incomplete ASM_ARMASM linker modules
# (breaks Boost.Context on ARM64). Pin to the last 3.x release.
if: runner.os == 'Windows' && inputs.arch == 'arm64'
shell: pwsh
run: |
$ver = "3.31.6"
$url = "https://github.com/Kitware/CMake/releases/download/v$ver/cmake-$ver-windows-arm64.zip"
Invoke-WebRequest -Uri $url -OutFile "$env:RUNNER_TEMP\cmake.zip"
Expand-Archive -Path "$env:RUNNER_TEMP\cmake.zip" -DestinationPath "$env:RUNNER_TEMP\cmake" -Force
$cmakeBin = "$env:RUNNER_TEMP\cmake\cmake-$ver-windows-arm64\bin"
if (-not (Test-Path "$cmakeBin\cmake.exe")) { throw "cmake.exe not found at $cmakeBin" }
Add-Content -Path $env:GITHUB_PATH -Value $cmakeBin
- name: setup dev on Windows - name: setup dev on Windows
if: runner.os == 'Windows' if: runner.os == 'Windows'
uses: microsoft/setup-msbuild@v3 uses: microsoft/setup-msbuild@v3
@@ -65,6 +82,50 @@ jobs:
shell: pwsh shell: pwsh
- name: Install MSYS2 (clangarm64) with GMP/MPFR and LLVM tools
if: runner.os == 'Windows' && inputs.arch == 'arm64'
uses: msys2/setup-msys2@v2
with:
msystem: CLANGARM64
update: true
install: >-
mingw-w64-clang-aarch64-gmp
mingw-w64-clang-aarch64-mpfr
mingw-w64-clang-aarch64-llvm
- name: Stage ARM64 GMP/MPFR (no prebuilt blobs exist for win-arm64)
# GMP/MPFR ship prebuilt x64/x86 blobs in-tree but none for ARM64.
# Pull them from MSYS2 clangarm64 and generate MSVC import libs via
# llvm-dlltool, then stage into deps/{GMP,MPFR}/.../win-arm64 where the
# MSVC branch of GMP.cmake/MPFR.cmake copies them into the dep prefix.
if: runner.os == 'Windows' && inputs.arch == 'arm64'
shell: msys2 {0}
run: |
set -euo pipefail
BIN=/clangarm64/bin
REPO=$(cygpath -u "$GITHUB_WORKSPACE")
make_import_lib() {
local dll="$1"; local lib="$2"; local def="/tmp/${dll%.dll}.def"
echo "EXPORTS" > "$def"
llvm-readobj --coff-exports "$BIN/$dll" | awk '/Name: /{print $2}' >> "$def"
llvm-dlltool -m arm64 -D "$dll" -d "$def" -l "$BIN/$lib"
}
make_import_lib libgmp-10.dll libgmp-10.lib
# MPFR 4.x ships as libmpfr-6.dll; rename to libmpfr-4 BEFORE generating
# the import lib so the baked-in runtime DLL name is correct.
MPFR_DLL=$(ls $BIN/libmpfr-*.dll | head -1 | xargs basename)
if [ "$MPFR_DLL" != "libmpfr-4.dll" ]; then cp "$BIN/$MPFR_DLL" "$BIN/libmpfr-4.dll"; fi
make_import_lib libmpfr-4.dll libmpfr-4.lib
mkdir -p $REPO/deps/GMP/gmp/lib/win-arm64 $REPO/deps/MPFR/mpfr/lib/win-arm64
cp $BIN/libgmp-10.dll $BIN/libgmp-10.lib $REPO/deps/GMP/gmp/lib/win-arm64/
cp $BIN/libmpfr-4.dll $BIN/libmpfr-4.lib $REPO/deps/MPFR/mpfr/lib/win-arm64/
cp /clangarm64/include/gmp.h $REPO/deps/GMP/gmp/include/
cp /clangarm64/include/mpfr.h $REPO/deps/MPFR/mpfr/include/ || true
# Build Dependencies # Build Dependencies
- name: Build on Windows - name: Build on Windows
if: runner.os == 'Windows' if: runner.os == 'Windows'
@@ -73,8 +134,14 @@ jobs:
if (-not "${{ vars.SELF_HOSTED }}") { if (-not "${{ vars.SELF_HOSTED }}") {
choco install strawberryperl choco install strawberryperl
} }
.\build_release_vs.bat deps $arch = "${{ inputs.arch }}"
.\build_release_vs.bat pack if ($arch -eq "arm64") {
.\build_release_vs.bat deps arm64
.\build_release_vs.bat pack arm64
} else {
.\build_release_vs.bat deps
.\build_release_vs.bat pack
}
shell: pwsh shell: pwsh
- name: Build on Mac ${{ inputs.arch }} - name: Build on Mac ${{ inputs.arch }}
+113 -42
View File
@@ -29,27 +29,49 @@ jobs:
ubuntu-ver: '2404' ubuntu-ver: '2404'
ubuntu-ver-str: '_Ubuntu2404' ubuntu-ver-str: '_Ubuntu2404'
ORCA_UPDATER_SIG_KEY: ${{ secrets.ORCA_UPDATER_SIG_KEY }} ORCA_UPDATER_SIG_KEY: ${{ secrets.ORCA_UPDATER_SIG_KEY }}
# Branches whose builds are published to the nightly release. The
# belt-printer branch ships alongside main but its assets carry a `_belt`
# suffix (nightly_suffix) so they never overwrite the main nightly assets.
deploy_nightly: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/belt-printer' }}
nightly_suffix: ${{ github.ref == 'refs/heads/belt-printer' && '_belt' || '' }}
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v6 uses: actions/checkout@v7
with: with:
lfs: 'false' lfs: 'false'
- name: load cached deps - name: load cached deps
if: ${{ !(runner.os == 'macOS' && inputs.macos-combine-only) }} if: ${{ !(runner.os == 'macOS' && inputs.macos-combine-only) }}
uses: actions/cache@v5 uses: actions/cache@v6
with: with:
path: ${{ inputs.cache-path }} path: ${{ inputs.cache-path }}
key: ${{ inputs.cache-key }} key: ${{ inputs.cache-key }}
fail-on-cache-miss: true fail-on-cache-miss: true
- uses: lukka/get-cmake@latest - uses: lukka/get-cmake@latest
# The windows-11-arm runner needs CMake <= 3.31 (handled in the next step).
if: ${{ !(runner.os == 'Windows' && inputs.arch == 'arm64') }}
with: with:
cmakeVersion: "~4.3.0" # use most recent 4.3.x version cmakeVersion: "~4.3.0" # use most recent 4.3.x version
useLocalCache: true # <--= Use the local cache (default is 'false'). useLocalCache: true # <--= Use the local cache (default is 'false').
useCloudCache: true useCloudCache: true
- name: Install CMake 3.31.x (Windows ARM64)
# windows-11-arm ships CMake 4.x, which removed pre-3.5 policy
# compatibility AND has incomplete ASM_ARMASM linker modules
# (breaks Boost.Context on ARM64). Pin to the last 3.x release.
if: runner.os == 'Windows' && inputs.arch == 'arm64'
shell: pwsh
run: |
$ver = "3.31.6"
$url = "https://github.com/Kitware/CMake/releases/download/v$ver/cmake-$ver-windows-arm64.zip"
Invoke-WebRequest -Uri $url -OutFile "$env:RUNNER_TEMP\cmake.zip"
Expand-Archive -Path "$env:RUNNER_TEMP\cmake.zip" -DestinationPath "$env:RUNNER_TEMP\cmake" -Force
$cmakeBin = "$env:RUNNER_TEMP\cmake\cmake-$ver-windows-arm64\bin"
if (-not (Test-Path "$cmakeBin\cmake.exe")) { throw "cmake.exe not found at $cmakeBin" }
Add-Content -Path $env:GITHUB_PATH -Value $cmakeBin
- name: Get the version and date on Ubuntu and macOS - name: Get the version and date on Ubuntu and macOS
if: runner.os != 'Windows' if: runner.os != 'Windows'
run: | run: |
@@ -119,8 +141,26 @@ jobs:
- name: Build slicer mac - name: Build slicer mac
if: runner.os == 'macOS' && !inputs.macos-combine-only if: runner.os == 'macOS' && !inputs.macos-combine-only
working-directory: ${{ github.workspace }} working-directory: ${{ github.workspace }}
# arm64 only: build the tests here; the unit_tests_macos job runs them.
env:
ORCA_TESTS_BUILD_ONLY: ${{ inputs.arch == 'arm64' && '1' || '' }}
run: | run: |
./build_release_macos.sh -s -n -x ${{ !vars.SELF_HOSTED && '-1' || '' }} -a ${{ inputs.arch }} -t 10.15 ./build_release_macos.sh -s -n -x ${{ !vars.SELF_HOSTED && '-1' || '' }} -a ${{ inputs.arch }} -t 10.15 ${{ inputs.arch == 'arm64' && '-T' || '' }}
- name: Pack unit tests mac
if: runner.os == 'macOS' && !inputs.macos-combine-only && inputs.arch == 'arm64'
working-directory: ${{ github.workspace }}
run: tar -cvf build_tests.tar build/arm64/tests
- name: Upload Test Artifact mac
if: runner.os == 'macOS' && !inputs.macos-combine-only && inputs.arch == 'arm64'
uses: actions/upload-artifact@v7
with:
name: ${{ github.sha }}-tests-macos-arm64
overwrite: true
path: build_tests.tar
retention-days: 5
if-no-files-found: error
- name: Pack macOS app bundle ${{ inputs.arch }} - name: Pack macOS app bundle ${{ inputs.arch }}
if: runner.os == 'macOS' && !inputs.macos-combine-only if: runner.os == 'macOS' && !inputs.macos-combine-only
@@ -160,7 +200,7 @@ jobs:
# Thanks to RaySajuuk, it's working now # Thanks to RaySajuuk, it's working now
- name: Sign app and notary - name: Sign app and notary
if: github.repository == 'OrcaSlicer/OrcaSlicer' && (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/')) && runner.os == 'macOS' && inputs.macos-combine-only if: github.repository == 'OrcaSlicer/OrcaSlicer' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/belt-printer' || startsWith(github.ref, 'refs/heads/release/')) && runner.os == 'macOS' && inputs.macos-combine-only
working-directory: ${{ github.workspace }} working-directory: ${{ github.workspace }}
env: env:
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }} BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
@@ -216,7 +256,7 @@ jobs:
fi fi
- name: Create DMG without notary - name: Create DMG without notary
if: github.ref != 'refs/heads/main' && runner.os == 'macOS' && inputs.macos-combine-only if: github.ref != 'refs/heads/main' && github.ref != 'refs/heads/belt-printer' && runner.os == 'macOS' && inputs.macos-combine-only
working-directory: ${{ github.workspace }} working-directory: ${{ github.workspace }}
run: | run: |
# Load the `retry` helper (retries flaky commands such as `hdiutil create`). # Load the `retry` helper (retries flaky commands such as `hdiutil create`).
@@ -262,13 +302,13 @@ jobs:
if-no-files-found: ignore if-no-files-found: ignore
- name: Deploy Mac release - name: Deploy Mac release
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main' && runner.os == 'macOS' && inputs.macos-combine-only && !vars.SELF_HOSTED if: github.repository == 'OrcaSlicer/OrcaSlicer' && env.deploy_nightly == 'true' && runner.os == 'macOS' && inputs.macos-combine-only && !vars.SELF_HOSTED
uses: WebFreak001/deploy-nightly@v3.2.0 uses: WebFreak001/deploy-nightly@v3.2.0
with: with:
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label} upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
release_id: 137995723 release_id: 137995723
asset_path: ${{ github.workspace }}/OrcaSlicer_Mac_universal_${{ env.ver }}.dmg asset_path: ${{ github.workspace }}/OrcaSlicer_Mac_universal_${{ env.ver }}.dmg
asset_name: OrcaSlicer_Mac_universal_nightly.dmg asset_name: OrcaSlicer_Mac_universal_nightly${{ env.nightly_suffix }}.dmg
asset_content_type: application/octet-stream asset_content_type: application/octet-stream
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
@@ -284,6 +324,18 @@ jobs:
max_releases: 1 max_releases: 1
# Windows # Windows
- name: Set Windows build variables
if: runner.os == 'Windows'
shell: pwsh
run: |
if ("${{ inputs.arch }}" -eq "arm64") {
"BUILD_DIR=build-arm64" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
"ARCH_SUFFIX=_arm64" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
} else {
"BUILD_DIR=build" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
"ARCH_SUFFIX=_x64" | Out-File -Append -FilePath $env:GITHUB_ENV -Encoding utf8
}
- name: setup MSVC - name: setup MSVC
if: runner.os == 'Windows' if: runner.os == 'Windows'
uses: microsoft/setup-msbuild@v3 uses: microsoft/setup-msbuild@v3
@@ -301,23 +353,45 @@ jobs:
# env: # env:
# WindowsSdkDir: 'C:\Program Files (x86)\Windows Kits\10\' # WindowsSdkDir: 'C:\Program Files (x86)\Windows Kits\10\'
# WindowsSDKVersion: '10.0.26100.0\' # WindowsSDKVersion: '10.0.26100.0\'
run: .\build_release_vs.bat slicer # "tests" builds the unit tests too; the unit_tests_windows_* jobs run them.
run: |
$arch = "${{ inputs.arch }}"
if ($arch -eq "arm64") { .\build_release_vs.bat slicer arm64 tests } else { .\build_release_vs.bat slicer tests }
shell: pwsh
- name: Pack unit tests Win
if: runner.os == 'Windows'
working-directory: ${{ github.workspace }}
shell: pwsh
run: tar -cvf build_tests.tar ${{ env.BUILD_DIR }}/tests
- name: Upload Test Artifact Win
if: runner.os == 'Windows'
uses: actions/upload-artifact@v7
with:
name: ${{ github.sha }}-tests-windows-${{ inputs.arch }}
overwrite: true
path: build_tests.tar
retention-days: 5
if-no-files-found: error
# NSIS is x86-only; it runs (and the installer it emits runs) under ARM64's
# x86 emulation, packaging the native arm64 payload from build-arm64.
- name: Create installer Win - name: Create installer Win
if: runner.os == 'Windows' && !vars.SELF_HOSTED if: runner.os == 'Windows' && !vars.SELF_HOSTED
working-directory: ${{ github.workspace }}/build working-directory: ${{ github.workspace }}/${{ env.BUILD_DIR }}
run: | run: |
cpack -G NSIS cpack -G NSIS
- name: Pack app - name: Pack app
if: runner.os == 'Windows' if: runner.os == 'Windows'
working-directory: ${{ github.workspace }}/build working-directory: ${{ github.workspace }}/${{ env.BUILD_DIR }}
shell: cmd shell: cmd
run: '"C:/Program Files/7-Zip/7z.exe" a -tzip OrcaSlicer_Windows_${{ env.ver }}_portable.zip ${{ github.workspace }}/build/OrcaSlicer' run: '"C:/Program Files/7-Zip/7z.exe" a -tzip OrcaSlicer_Windows_${{ env.ver }}${{ env.ARCH_SUFFIX }}_portable.zip ${{ github.workspace }}/${{ env.BUILD_DIR }}/OrcaSlicer'
- name: Pack PDB - name: Pack PDB
if: runner.os == 'Windows' && !vars.SELF_HOSTED if: runner.os == 'Windows' && inputs.arch != 'arm64' && !vars.SELF_HOSTED
working-directory: ${{ github.workspace }}/build/src/Release working-directory: ${{ github.workspace }}/${{ env.BUILD_DIR }}/src/Release
shell: cmd shell: cmd
run: '"C:/Program Files/7-Zip/7z.exe" a -m0=lzma2 -mx9 Debug_PDB_${{ env.ver }}_for_developers_only.7z *.pdb' run: '"C:/Program Files/7-Zip/7z.exe" a -m0=lzma2 -mx9 Debug_PDB_${{ env.ver }}_for_developers_only.7z *.pdb'
@@ -325,54 +399,54 @@ jobs:
if: runner.os == 'Windows' if: runner.os == 'Windows'
uses: actions/upload-artifact@v7 uses: actions/upload-artifact@v7
with: with:
name: OrcaSlicer_Windows_${{ env.ver }}_portable name: OrcaSlicer_Windows_${{ env.ver }}${{ env.ARCH_SUFFIX }}_portable
path: ${{ github.workspace }}/build/OrcaSlicer path: ${{ github.workspace }}/${{ env.BUILD_DIR }}/OrcaSlicer
- name: Upload artifacts Win installer - name: Upload artifacts Win installer
if: runner.os == 'Windows' && !vars.SELF_HOSTED if: runner.os == 'Windows' && !vars.SELF_HOSTED
uses: actions/upload-artifact@v7 uses: actions/upload-artifact@v7
with: with:
name: OrcaSlicer_Windows_${{ env.ver }} name: OrcaSlicer_Windows_${{ env.ver }}${{ env.ARCH_SUFFIX }}
path: ${{ github.workspace }}/build/OrcaSlicer*.exe path: ${{ github.workspace }}/${{ env.BUILD_DIR }}/OrcaSlicer*.exe
- name: Upload artifacts Win PDB - name: Upload artifacts Win PDB
if: runner.os == 'Windows' && !vars.SELF_HOSTED if: runner.os == 'Windows' && inputs.arch != 'arm64' && !vars.SELF_HOSTED
uses: actions/upload-artifact@v7 uses: actions/upload-artifact@v7
with: with:
name: PDB name: PDB
path: ${{ github.workspace }}/build/src/Release/Debug_PDB_${{ env.ver }}_for_developers_only.7z path: ${{ github.workspace }}/build/src/Release/Debug_PDB_${{ env.ver }}_for_developers_only.7z
- name: Upload OrcaSlicer_profile_validator Win - name: Upload OrcaSlicer_profile_validator Win
if: runner.os == 'Windows' && !vars.SELF_HOSTED if: runner.os == 'Windows' && inputs.arch != 'arm64' && !vars.SELF_HOSTED
uses: actions/upload-artifact@v7 uses: actions/upload-artifact@v7
with: with:
name: OrcaSlicer_profile_validator_Windows_${{ env.ver }} name: OrcaSlicer_profile_validator_Windows_${{ env.ver }}
path: ${{ github.workspace }}/build/src/Release/OrcaSlicer_profile_validator.exe path: ${{ github.workspace }}/build/src/Release/OrcaSlicer_profile_validator.exe
- name: Deploy Windows release portable - name: Deploy Windows release portable
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main' && runner.os == 'Windows' && !vars.SELF_HOSTED if: github.repository == 'OrcaSlicer/OrcaSlicer' && env.deploy_nightly == 'true' && runner.os == 'Windows' && !vars.SELF_HOSTED
uses: WebFreak001/deploy-nightly@v3.2.0 uses: WebFreak001/deploy-nightly@v3.2.0
with: with:
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label} upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
release_id: 137995723 release_id: 137995723
asset_path: ${{ github.workspace }}/build/OrcaSlicer_Windows_${{ env.ver }}_portable.zip asset_path: ${{ github.workspace }}/${{ env.BUILD_DIR }}/OrcaSlicer_Windows_${{ env.ver }}${{ env.ARCH_SUFFIX }}_portable.zip
asset_name: OrcaSlicer_Windows_nightly_portable.zip asset_name: OrcaSlicer_Windows${{ env.ARCH_SUFFIX }}_nightly${{ env.nightly_suffix }}_portable.zip
asset_content_type: application/x-zip-compressed asset_content_type: application/x-zip-compressed
max_releases: 1 max_releases: 1
- name: Deploy Windows release installer - name: Deploy Windows release installer
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main' && runner.os == 'Windows' && !vars.SELF_HOSTED if: github.repository == 'OrcaSlicer/OrcaSlicer' && env.deploy_nightly == 'true' && runner.os == 'Windows' && !vars.SELF_HOSTED
uses: WebFreak001/deploy-nightly@v3.2.0 uses: WebFreak001/deploy-nightly@v3.2.0
with: with:
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label} upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
release_id: 137995723 release_id: 137995723
asset_path: ${{ github.workspace }}/build/OrcaSlicer_Windows_Installer_${{ env.ver }}.exe asset_path: ${{ github.workspace }}/${{ env.BUILD_DIR }}/OrcaSlicer_Windows_Installer_${{ env.ver }}${{ env.ARCH_SUFFIX }}.exe
asset_name: OrcaSlicer_Windows_Installer_nightly.exe asset_name: OrcaSlicer_Windows_Installer${{ env.ARCH_SUFFIX }}_nightly${{ env.nightly_suffix }}.exe
asset_content_type: application/x-msdownload asset_content_type: application/x-msdownload
max_releases: 1 max_releases: 1
- name: Deploy Windows OrcaSlicer_profile_validator release - name: Deploy Windows OrcaSlicer_profile_validator release
if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main' && runner.os == 'Windows' && !vars.SELF_HOSTED if: github.repository == 'OrcaSlicer/OrcaSlicer' && github.ref == 'refs/heads/main' && runner.os == 'Windows' && inputs.arch != 'arm64' && !vars.SELF_HOSTED
uses: WebFreak001/deploy-nightly@v3.2.0 uses: WebFreak001/deploy-nightly@v3.2.0
with: with:
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label} upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
@@ -388,8 +462,9 @@ jobs:
shell: pwsh shell: pwsh
run: | run: |
./scripts/msix/build_msix.ps1 ` ./scripts/msix/build_msix.ps1 `
-InstallDir "${{ github.workspace }}/build/OrcaSlicer" ` -InstallDir "${{ github.workspace }}/${{ env.BUILD_DIR }}/OrcaSlicer" `
-OutputPath "${{ github.workspace }}/build/OrcaSlicer_Windows_MSIX_${{ env.ver }}.msix" ` -OutputPath "${{ github.workspace }}/${{ env.BUILD_DIR }}/OrcaSlicer_Windows_MSIX_${{ env.ver }}${{ env.ARCH_SUFFIX }}.msix" `
-Architecture "${{ inputs.arch }}" `
-IdentityName "${{ vars.ORCA_MSIX_IDENTITY_NAME || 'OrcaSlicer.OrcaSlicer' }}" ` -IdentityName "${{ vars.ORCA_MSIX_IDENTITY_NAME || 'OrcaSlicer.OrcaSlicer' }}" `
-Publisher "${{ vars.ORCA_MSIX_PUBLISHER || 'CN=38F7EA55-C73B-4072-B3B2-C8E0EA15BB82' }}" ` -Publisher "${{ vars.ORCA_MSIX_PUBLISHER || 'CN=38F7EA55-C73B-4072-B3B2-C8E0EA15BB82' }}" `
-PublisherDisplayName "${{ vars.ORCA_MSIX_PUBLISHER_DISPLAY_NAME || 'OrcaSlicer' }}" -PublisherDisplayName "${{ vars.ORCA_MSIX_PUBLISHER_DISPLAY_NAME || 'OrcaSlicer' }}"
@@ -398,8 +473,8 @@ jobs:
if: runner.os == 'Windows' && !vars.SELF_HOSTED if: runner.os == 'Windows' && !vars.SELF_HOSTED
uses: actions/upload-artifact@v7 uses: actions/upload-artifact@v7
with: with:
name: OrcaSlicer_Windows_MSIX_${{ env.ver }} name: OrcaSlicer_Windows_MSIX_${{ env.ver }}${{ env.ARCH_SUFFIX }}
path: ${{ github.workspace }}/build/OrcaSlicer_Windows_MSIX_${{ env.ver }}.msix path: ${{ github.workspace }}/${{ env.BUILD_DIR }}/OrcaSlicer_Windows_MSIX_${{ env.ver }}${{ env.ARCH_SUFFIX }}.msix
# Ubuntu # Ubuntu
- name: Apt-Install Dependencies - name: Apt-Install Dependencies
@@ -412,26 +487,22 @@ jobs:
if: runner.os == 'Linux' if: runner.os == 'Linux'
shell: bash shell: bash
run: | run: |
# Build + tar the unit tests (-t) only on the leg that runs them: the # Build + tar the unit tests (-t) on both Linux legs so each arch
# aarch64 leg by default (faster GitHub arm runner), or amd64 when using # (x86_64 + aarch64) gets tested by its own unit_tests_linux_* job.
# self-hosted runners (no arm self-hosted server). unit_tests downloads ./build_linux.sh -istrlL
# this tarball. The profile validator is built with -s, so amd64 keeps it.
tests=${{ (!vars.SELF_HOSTED && inputs.arch == 'aarch64') || (vars.SELF_HOSTED && inputs.arch != 'aarch64') }}
if $tests; then flags=-istrlL; else flags=-isrlL; fi
./build_linux.sh "$flags"
./scripts/check_appimage_libs.sh ./build/package ./build/package/bin/orca-slicer ./scripts/check_appimage_libs.sh ./build/package ./build/package/bin/orca-slicer
appimage=./build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}${{ env.arch_suffix }}_${{ env.ver }}.AppImage appimage=./build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}${{ env.arch_suffix }}_${{ env.ver }}.AppImage
mv -n ./build/OrcaSlicer_Linux_V${{ env.ver_pure }}.AppImage "$appimage" mv -n ./build/OrcaSlicer_Linux_V${{ env.ver_pure }}.AppImage "$appimage"
chmod +x "$appimage" chmod +x "$appimage"
if $tests; then tar -cvpf build_tests.tar build/tests; fi tar -cvf build_tests.tar build/tests
# Use tar because upload-artifacts won't always preserve directory structure # Use tar because upload-artifacts won't always preserve directory structure
# and doesn't preserve file permissions # and doesn't preserve file permissions
- name: Upload Test Artifact - name: Upload Test Artifact
if: runner.os == 'Linux' && ((!vars.SELF_HOSTED && inputs.arch == 'aarch64') || (vars.SELF_HOSTED && inputs.arch != 'aarch64')) if: runner.os == 'Linux'
uses: actions/upload-artifact@v7 uses: actions/upload-artifact@v7
with: with:
name: ${{ github.sha }}-tests name: ${{ github.sha }}-tests-linux-${{ inputs.arch == 'aarch64' && 'aarch64' || 'x86_64' }}
overwrite: true overwrite: true
path: build_tests.tar path: build_tests.tar
retention-days: 5 retention-days: 5
@@ -471,13 +542,13 @@ jobs:
path: './build/src/Release/OrcaSlicer_profile_validator' path: './build/src/Release/OrcaSlicer_profile_validator'
- name: Deploy Ubuntu release - name: Deploy Ubuntu release
if: ${{ github.repository == 'OrcaSlicer/OrcaSlicer' && ! env.ACT && github.ref == 'refs/heads/main' && runner.os == 'Linux' && !vars.SELF_HOSTED }} if: ${{ github.repository == 'OrcaSlicer/OrcaSlicer' && ! env.ACT && env.deploy_nightly == 'true' && runner.os == 'Linux' && !vars.SELF_HOSTED }}
uses: WebFreak001/deploy-nightly@v3.2.0 uses: WebFreak001/deploy-nightly@v3.2.0
with: with:
upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label} upload_url: https://uploads.github.com/repos/OrcaSlicer/OrcaSlicer/releases/137995723/assets{?name,label}
release_id: 137995723 release_id: 137995723
asset_path: ./build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}${{ env.arch_suffix }}_${{ env.ver }}.AppImage asset_path: ./build/OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}${{ env.arch_suffix }}_${{ env.ver }}.AppImage
asset_name: OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}${{ env.arch_suffix }}_nightly.AppImage asset_name: OrcaSlicer_Linux_AppImage${{ env.ubuntu-ver-str }}${{ env.arch_suffix }}_nightly${{ env.nightly_suffix }}.AppImage
asset_content_type: application/octet-stream asset_content_type: application/octet-stream
max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted
- name: Deploy Ubuntu release - name: Deploy Ubuntu release
+1 -1
View File
@@ -14,7 +14,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v6 uses: actions/checkout@v7
- name: Install gettext - name: Install gettext
run: | run: |
+117 -10
View File
@@ -24,7 +24,7 @@ jobs:
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v6 uses: actions/checkout@v7
- name: Run extra JSON check - name: Run extra JSON check
id: extra_json_check id: extra_json_check
@@ -38,10 +38,10 @@ jobs:
- name: Download - name: Download
working-directory: ${{ github.workspace }} working-directory: ${{ github.workspace }}
run: | run: |
curl -LJO https://github.com/SoftFever/Orca_tools/releases/download/1/OrcaSlicer_profile_validator curl -L -o OrcaSlicer_profile_validator https://github.com/OrcaSlicer/OrcaSlicer/releases/download/nightly-builds/OrcaSlicer_profile_validator_Linux_Ubuntu2404_nightly
chmod +x ./OrcaSlicer_profile_validator chmod +x ./OrcaSlicer_profile_validator
# validate profiles # Validate all system profiles.
- name: validate system profiles - name: validate system profiles
id: validate_system id: validate_system
continue-on-error: true continue-on-error: true
@@ -49,17 +49,115 @@ jobs:
set +e set +e
./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2 2>&1 | tee ${{ runner.temp }}/validate_system.log ./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2 2>&1 | tee ${{ runner.temp }}/validate_system.log
exit ${PIPESTATUS[0]} exit ${PIPESTATUS[0]}
# For now run filament subtype check only for BBL profiles until we fix other vendors' profiles.
- name: validate filament subtype check for BBL profiles
id: validate_filament_subtypes
continue-on-error: true
run: |
set +e
./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2 -v BBL -f 2>&1 | tee ${{ runner.temp }}/validate_filament_subtypes.log
exit ${PIPESTATUS[0]}
- name: validate custom presets - name: validate custom presets
id: validate_custom id: validate_custom
continue-on-error: true continue-on-error: true
working-directory: ${{ github.workspace }} working-directory: ${{ github.workspace }}
run: | run: |
set +e fixtures_dir="${{ runner.temp }}/profile-fixtures"
curl -LJO https://github.com/OrcaSlicer/OrcaSlicer/releases/download/nightly-builds/orca_custom_preset_tests.zip output_dir="${{ runner.temp }}/custom-preset-validation"
unzip -q ./orca_custom_preset_tests.zip -d ${{ github.workspace }}/resources/profiles combined_log="${{ runner.temp }}/validate_custom.log"
./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2 2>&1 | tee ${{ runner.temp }}/validate_custom.log summary="${output_dir}/summary.md"
exit ${PIPESTATUS[0]} release_url="https://github.com/OrcaSlicer/OrcaSlicer-profile-validator/releases/download/fixture-archive"
rm -rf "${fixtures_dir}" "${output_dir}"
mkdir -p "${fixtures_dir}" "${output_dir}"
curl -fsSL -o "${fixtures_dir}/manifest.json" "${release_url}/manifest.json"
MANIFEST_PATH="${fixtures_dir}/manifest.json" python3 <<'PY' > "${fixtures_dir}/fixtures.tsv"
import json
import os
with open(os.environ["MANIFEST_PATH"], encoding="utf-8") as fh:
manifest = json.load(fh)
if isinstance(manifest, dict):
entries = manifest.get("fixtures", [])
else:
entries = manifest
for entry in entries:
version = entry.get("version", "")
asset = entry.get("asset", "")
sha256 = entry.get("asset_sha256", "")
if not version or not asset:
continue
print(f"{version}\t{asset}\t{sha256}")
PY
if [ ! -s "${fixtures_dir}/fixtures.tsv" ]; then
echo "No custom preset fixtures found in ${release_url}/manifest.json" | tee "${combined_log}"
exit 1
fi
{
echo "## Custom Preset Fixture Validation"
echo ""
echo "| Version | Status | Log |"
echo "| --- | --- | --- |"
} > "${summary}"
status=0
failed_logs=()
while IFS=$'\t' read -r version asset expected_sha256; do
fixture_zip="${fixtures_dir}/${asset}"
asset_url_name="$(python3 -c 'import sys, urllib.parse; print(urllib.parse.quote(sys.argv[1], safe=""))' "${asset}")"
profile_tree="${output_dir}/profiles-${version}"
log_path="${output_dir}/${version}.log"
curl -fsSL -o "${fixture_zip}" "${release_url}/${asset_url_name}"
if [ -n "${expected_sha256}" ] && [ "${expected_sha256}" != "<sha256>" ]; then
echo "${expected_sha256} ${fixture_zip}" | sha256sum -c -
fi
rm -rf "${profile_tree}"
mkdir -p "${profile_tree}"
cp -a "${{ github.workspace }}/resources/profiles/." "${profile_tree}/"
rm -rf "${profile_tree}/user"
unzip -q "${fixture_zip}" -d "${profile_tree}"
set +e
./OrcaSlicer_profile_validator -p "${profile_tree}" -l 2 > "${log_path}" 2>&1
result=$?
set -e
if [ "${result}" -eq 0 ]; then
echo "| ${version} | PASS | ${version}.log |" >> "${summary}"
else
echo "| ${version} | FAIL | ${version}.log |" >> "${summary}"
failed_logs+=("${log_path}")
status=1
fi
done < "${fixtures_dir}/fixtures.tsv"
{
cat "${summary}"
if [ "${#failed_logs[@]}" -gt 0 ]; then
echo ""
echo "## Failed Fixture Logs"
for log_path in "${failed_logs[@]}"; do
echo ""
echo "### $(basename "${log_path}" .log)"
echo '```'
head -c 12000 "${log_path}" || echo "No output captured"
echo '```'
done
fi
} | tee "${combined_log}"
exit "${status}"
- name: Prepare PR number for comment workflow - name: Prepare PR number for comment workflow
if: ${{ always() && github.event_name == 'pull_request' }} if: ${{ always() && github.event_name == 'pull_request' }}
@@ -68,7 +166,7 @@ jobs:
echo "${{ github.event.pull_request.number }}" > ${{ runner.temp }}/profile-check-results/pr_number.txt echo "${{ github.event.pull_request.number }}" > ${{ runner.temp }}/profile-check-results/pr_number.txt
- name: Prepare comment artifact - name: Prepare comment artifact
if: ${{ always() && github.event_name == 'pull_request' && (steps.extra_json_check.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }} if: ${{ always() && github.event_name == 'pull_request' && (steps.extra_json_check.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_filament_subtypes.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }}
run: | run: |
{ {
# Marker matched by check_profiles_comment.yml to delete prior comments. # Marker matched by check_profiles_comment.yml to delete prior comments.
@@ -94,6 +192,15 @@ jobs:
echo "" echo ""
fi fi
if [ "${{ steps.validate_filament_subtypes.outcome }}" = "failure" ]; then
echo "### BBL Filament Subtype Validation Failed"
echo ""
echo '```'
head -c 30000 ${{ runner.temp }}/validate_filament_subtypes.log || echo "No output captured"
echo '```'
echo ""
fi
if [ "${{ steps.validate_custom.outcome }}" = "failure" ]; then if [ "${{ steps.validate_custom.outcome }}" = "failure" ]; then
echo "### Custom Preset Validation Failed" echo "### Custom Preset Validation Failed"
echo "" echo ""
@@ -116,7 +223,7 @@ jobs:
retention-days: 1 retention-days: 1
- name: Fail if any check failed - name: Fail if any check failed
if: ${{ always() && (steps.extra_json_check.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }} if: ${{ always() && (steps.extra_json_check.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_filament_subtypes.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }}
run: | run: |
echo "One or more profile checks failed. See above for details." echo "One or more profile checks failed. See above for details."
exit 1 exit 1
+2 -2
View File
@@ -20,14 +20,14 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v6 uses: actions/checkout@v7
- name: Run Claude Code slash command - name: Run Claude Code slash command
uses: anthropics/claude-code-base-action@beta uses: anthropics/claude-code-base-action@beta
with: with:
prompt: "/dedupe ${{ github.repository }}/issues/${{ github.event.issue.number || inputs.issue_number }}" prompt: "/dedupe ${{ github.repository }}/issues/${{ github.event.issue.number || inputs.issue_number }}"
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
claude_args: "--model claude-sonnet-4-5-20250929" model: "claude-sonnet-4-5-20250929"
claude_env: | claude_env: |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+1 -1
View File
@@ -26,7 +26,7 @@ jobs:
remove-existing-swap-files: true remove-existing-swap-files: true
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v6 uses: actions/checkout@v7
- name: Install Doxygen and Graphviz - name: Install Doxygen and Graphviz
run: | run: |
+2 -2
View File
@@ -24,7 +24,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Ask PR author for label - name: Ask PR author for label
uses: actions/github-script@v7 uses: actions/github-script@v9
with: with:
script: | script: |
function isPermissionDenied(error) { function isPermissionDenied(error) {
@@ -88,7 +88,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Apply label command from PR author - name: Apply label command from PR author
uses: actions/github-script@v7 uses: actions/github-script@v9
with: with:
script: | script: |
function isPermissionDenied(error) { function isPermissionDenied(error) {
+13 -10
View File
@@ -92,9 +92,11 @@ jobs:
# binaries are already unzipped. Copy the inner binary for each platform. # binaries are already unzipped. Copy the inner binary for each platform.
# -type f is required (some artifact *folders* are named "*.flatpak"). # -type f is required (some artifact *folders* are named "*.flatpak").
# Windows installer: the .exe inside the installer artifact, NOT the # Windows installers (x64 + arm64): the .exe inside each installer
# orca-slicer.exe that lives in the portable app folder. # artifact, NOT the orca-slicer.exe in the portable app folder. CPack
find artifacts -type f -name '*.exe' -path '*OrcaSlicer_Windows_*' ! -path '*_portable*' -exec cp -v {} upload/ \; # now bakes the arch into the filename (…_x64.exe / …_arm64.exe), so
# copy them straight through.
find artifacts -type f -name '*.exe' -path '*OrcaSlicer_Windows_V*' ! -path '*_portable*' -exec cp -v {} upload/ \;
# macOS universal DMG (profile-validator DMG isn't downloaded). # macOS universal DMG (profile-validator DMG isn't downloaded).
find artifacts -type f -name '*.dmg' -path '*OrcaSlicer_Mac_universal_*' -exec cp -v {} upload/ \; find artifacts -type f -name '*.dmg' -path '*OrcaSlicer_Mac_universal_*' -exec cp -v {} upload/ \;
# Linux AppImage. # Linux AppImage.
@@ -104,15 +106,16 @@ jobs:
# Windows debug symbols (PDB archive, for developers). # Windows debug symbols (PDB archive, for developers).
find artifacts -type f -name 'Debug_PDB_*.7z' -exec cp -v {} upload/ \; find artifacts -type f -name 'Debug_PDB_*.7z' -exec cp -v {} upload/ \;
# Portable Windows build is an unzipped folder artifact; re-zip it to the # Portable Windows builds (x64 + arm64) are unzipped folder artifacts;
# released filename (this one stays a .zip on the release). # re-zip each to its released filename (these stay .zip on the release).
portable_dir=$(find artifacts -maxdepth 1 -type d -name 'OrcaSlicer_Windows_*_portable' | head -n1) mapfile -t portable_dirs < <(find artifacts -maxdepth 1 -type d -name 'OrcaSlicer_Windows_*_portable')
if [ -n "${portable_dir:-}" ]; then if [ ${#portable_dirs[@]} -eq 0 ]; then
( cd "$portable_dir" && zip -qr "$GITHUB_WORKSPACE/upload/$(basename "$portable_dir").zip" . )
echo "Zipped portable -> $(basename "$portable_dir").zip"
else
echo "::warning::Windows portable artifact not found." echo "::warning::Windows portable artifact not found."
fi fi
for portable_dir in "${portable_dirs[@]}"; do
( cd "$portable_dir" && zip -qr "$GITHUB_WORKSPACE/upload/$(basename "$portable_dir").zip" . )
echo "Zipped portable -> $(basename "$portable_dir").zip"
done
echo "Assets to upload:" echo "Assets to upload:"
ls -lh upload ls -lh upload
+2 -2
View File
@@ -21,7 +21,7 @@ jobs:
steps: steps:
- name: Cache shellcheck download - name: Cache shellcheck download
id: cache-shellcheck-v0_11 id: cache-shellcheck-v0_11
uses: actions/cache@v5 uses: actions/cache@v6
with: with:
path: ~/shellcheck path: ~/shellcheck
key: ${{ runner.os }}-shellcheck-v0_11 key: ${{ runner.os }}-shellcheck-v0_11
@@ -36,7 +36,7 @@ jobs:
tar -xvf ~/sc.tar.xz -C ~ tar -xvf ~/sc.tar.xz -C ~
mv ~/shellcheck-"${INPUT_VERSION}"/shellcheck ~/shellcheck mv ~/shellcheck-"${INPUT_VERSION}"/shellcheck ~/shellcheck
- uses: actions/checkout@v6 - uses: actions/checkout@v7
with: with:
fetch-depth: 1 fetch-depth: 1
+73
View File
@@ -0,0 +1,73 @@
name: Unit Tests
# Download a platform's test artifact, run ctest, and upload the JUnit
# results for aggregation. Called once per arch from build_all.yml.
on:
workflow_call:
inputs:
os:
required: true
type: string
artifact:
description: Test artifact uploaded by the build leg
required: true
type: string
test-dir:
description: Built tests dir; defaults to build/tests, override for arch-separated builds
required: false
type: string
default: build/tests
jobs:
unit_tests:
# Static "Unit Tests"; the per-arch label is the caller's job name, so the
# graph shows e.g. "Windows x64 / Unit Tests".
name: Unit Tests
runs-on: ${{ inputs.os }}
steps:
- name: Checkout
uses: actions/checkout@v7
with:
# tests/data is referenced by absolute path (TEST_DATA_DIR).
sparse-checkout: |
.github
scripts
tests
- name: Apt-Install Dependencies
if: runner.os == 'Linux' && !vars.SELF_HOSTED
uses: ./.github/actions/apt-install-deps
- name: Restore Test Artifact
uses: actions/download-artifact@v8
with:
name: ${{ inputs.artifact }}
- uses: lukka/get-cmake@latest
with:
cmakeVersion: "~4.3.0" # use most recent 4.3.x version
useLocalCache: true
useCloudCache: true
- name: Unpackage and Run Unit Tests
timeout-minutes: 20
shell: bash
run: |
tar -xvf build_tests.tar
# Multi-config generators (Windows/macOS) need a config; Linux is single-config.
scripts/run_unit_tests.sh "${{ inputs.test-dir }}" "${{ runner.os != 'Linux' && 'Release' || '' }}"
- name: Upload Test Logs
if: ${{ failure() }}
uses: actions/upload-artifact@v7
with:
name: unit-test-logs-${{ inputs.artifact }}
path: ${{ inputs.test-dir }}/**/*.log
- name: Upload Test Results
if: always()
uses: actions/upload-artifact@v7
with:
name: test-results-${{ inputs.artifact }}
path: ctest_results.xml
retention-days: 5
if-no-files-found: warn
- name: Delete Test Artifact
if: success()
uses: geekyeggo/delete-artifact@v6
with:
name: ${{ inputs.artifact }}
+1 -1
View File
@@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v6 uses: actions/checkout@v7
- name: Setup Python - name: Setup Python
uses: actions/setup-python@v6 uses: actions/setup-python@v6
+3
View File
@@ -46,3 +46,6 @@ test.js
internal_docs/ internal_docs/
*.flatpak *.flatpak
/flatpak-repo/ /flatpak-repo/
# Python bytecode
__pycache__/
*.pyc
+11 -1
View File
@@ -710,7 +710,7 @@ endif ()
set(L10N_DIR "${SLIC3R_RESOURCES_DIR}/i18n") set(L10N_DIR "${SLIC3R_RESOURCES_DIR}/i18n")
set(BBL_L18N_DIR "${CMAKE_CURRENT_SOURCE_DIR}/localization/i18n") set(BBL_L18N_DIR "${CMAKE_CURRENT_SOURCE_DIR}/localization/i18n")
add_custom_target(gettext_make_pot add_custom_target(gettext_make_pot
COMMAND xgettext --keyword=L --keyword=_L --keyword=_u8L --keyword=L_CONTEXT:1,2c --keyword=_L_PLURAL:1,2 --add-comments=TRN --from-code=UTF-8 --no-location --debug --boost COMMAND xgettext --keyword=L --keyword=_L --keyword=_u8L --keyword=L_CONTEXT:1,2c --keyword=_CTX:1,2c --keyword=_CTX_utf8:1,2c --keyword=_L_PLURAL:1,2 --add-comments=TRN --from-code=UTF-8 --no-location --debug --boost
-f "${BBL_L18N_DIR}/list.txt" -f "${BBL_L18N_DIR}/list.txt"
-o "${BBL_L18N_DIR}/OrcaSlicer.pot" -o "${BBL_L18N_DIR}/OrcaSlicer.pot"
COMMAND hintsToPot ${SLIC3R_RESOURCES_DIR} ${BBL_L18N_DIR} COMMAND hintsToPot ${SLIC3R_RESOURCES_DIR} ${BBL_L18N_DIR}
@@ -934,6 +934,16 @@ set (CPACK_PACKAGE_VERSION_MAJOR "${ORCA_VERSION_MAJOR}")
set (CPACK_PACKAGE_VERSION_MINOR "${ORCA_VERSION_MINOR}") set (CPACK_PACKAGE_VERSION_MINOR "${ORCA_VERSION_MINOR}")
set (CPACK_PACKAGE_VERSION_PATCH "${ORCA_VERSION_PATCH}") set (CPACK_PACKAGE_VERSION_PATCH "${ORCA_VERSION_PATCH}")
set (CPACK_PACKAGE_FILE_NAME "OrcaSlicer_Windows_Installer_V${SoftFever_VERSION}") set (CPACK_PACKAGE_FILE_NAME "OrcaSlicer_Windows_Installer_V${SoftFever_VERSION}")
# Suffix the Windows installer with its target arch so the x64 and arm64 builds
# produce distinct filenames (matches ARCH_SUFFIX in build_orca.yml). Same
# CMAKE_SYSTEM_PROCESSOR mapping used by orcaslicer_copy_dlls() above.
if (WIN32)
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64")
string (APPEND CPACK_PACKAGE_FILE_NAME "_arm64")
else ()
string (APPEND CPACK_PACKAGE_FILE_NAME "_x64")
endif ()
endif ()
set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Orca Slicer is an open source slicer for FDM printers") set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Orca Slicer is an open source slicer for FDM printers")
set (CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/OrcaSlicer/OrcaSlicer") set (CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/OrcaSlicer/OrcaSlicer")
set (CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME}) set (CPACK_PACKAGE_INSTALL_DIRECTORY ${CPACK_PACKAGE_NAME})
+5 -8
View File
@@ -59,7 +59,7 @@ while getopts ":dpa:snt:xbc:i:1Tuh" opt; do
echo " -c: Set CMake build configuration, default is Release" echo " -c: Set CMake build configuration, default is Release"
echo " -i: Add a prefix to ignore during CMake dependency discovery (repeatable), defaults to /opt/local:/usr/local:/opt/homebrew" echo " -i: Add a prefix to ignore during CMake dependency discovery (repeatable), defaults to /opt/local:/usr/local:/opt/homebrew"
echo " -1: Use single job for building" echo " -1: Use single job for building"
echo " -T: Build and run tests" echo " -T: Build and run tests (set ORCA_TESTS_BUILD_ONLY=1 to build without running)"
exit 0 exit 0
;; ;;
* ) * )
@@ -209,13 +209,10 @@ function build_slicer() {
cmake --build . --config "$BUILD_CONFIG" --target "$SLICER_BUILD_TARGET" cmake --build . --config "$BUILD_CONFIG" --target "$SLICER_BUILD_TARGET"
) )
if [ "1." == "$BUILD_TESTS". ]; then # -T also runs the tests; ORCA_TESTS_BUILD_ONLY=1 builds them without
echo "Running tests for $_ARCH..." # running, so CI can build here and run them in a dedicated job.
( if [ "1." == "$BUILD_TESTS". ] && [ "1." != "$ORCA_TESTS_BUILD_ONLY". ]; then
set -x "$PROJECT_DIR/scripts/run_unit_tests.sh" "build/$_ARCH/tests" "$BUILD_CONFIG"
cd "$PROJECT_BUILD_DIR"
ctest --build-config "$BUILD_CONFIG" --output-on-failure
)
fi fi
echo "Verify localization with gettext..." echo "Verify localization with gettext..."
+25 -6
View File
@@ -3,12 +3,29 @@
set WP=%CD% set WP=%CD%
set _START_TIME=%TIME% set _START_TIME=%TIME%
@REM Default target architecture to the host CPU arch; override by passing
@REM "x64" or "arm64" as an argument. PROCESSOR_ARCHITEW6432 covers a 32-bit
@REM shell running on a 64-bit OS, where PROCESSOR_ARCHITECTURE reads "x86".
set arch=x64
if /I "%PROCESSOR_ARCHITECTURE%"=="ARM64" set arch=ARM64
if /I "%PROCESSOR_ARCHITEW6432%"=="ARM64" set arch=ARM64
if /I "%1"=="arm64" set arch=ARM64
if /I "%2"=="arm64" set arch=ARM64
if /I "%1"=="x64" set arch=x64
if /I "%2"=="x64" set arch=x64
@REM Check for Ninja Multi-Config option (-x) @REM Check for Ninja Multi-Config option (-x)
set USE_NINJA=0 set USE_NINJA=0
for %%a in (%*) do ( for %%a in (%*) do (
if "%%a"=="-x" set USE_NINJA=1 if "%%a"=="-x" set USE_NINJA=1
) )
@REM Check for unit-tests option ("tests")
set BUILD_TESTS=OFF
for %%a in (%*) do (
if /I "%%a"=="tests" set BUILD_TESTS=ON
)
if "%USE_NINJA%"=="1" ( if "%USE_NINJA%"=="1" (
echo Using Ninja Multi-Config generator echo Using Ninja Multi-Config generator
set CMAKE_GENERATOR="Ninja Multi-Config" set CMAKE_GENERATOR="Ninja Multi-Config"
@@ -70,10 +87,11 @@ echo Using CMake generator: %CMAKE_GENERATOR%
if "%1"=="pack" ( if "%1"=="pack" (
setlocal ENABLEDELAYEDEXPANSION setlocal ENABLEDELAYEDEXPANSION
cd %WP%/deps/build cd %WP%/deps/build
if "%arch%"=="ARM64" cd %WP%/deps/build-arm64
for /f "tokens=2-4 delims=/ " %%a in ('date /t') do set build_date=%%c%%b%%a for /f "tokens=2-4 delims=/ " %%a in ('date /t') do set build_date=%%c%%b%%a
echo packing deps: OrcaSlicer_dep_win64_!build_date!_vs!VS_VERSION!.zip echo packing deps: OrcaSlicer_dep_win-!arch!_!build_date!_vs!VS_VERSION!.zip
%WP%/tools/7z.exe a OrcaSlicer_dep_win64_!build_date!_vs!VS_VERSION!.zip OrcaSlicer_dep %WP%/tools/7z.exe a OrcaSlicer_dep_win-!arch!_!build_date!_vs!VS_VERSION!.zip OrcaSlicer_dep
goto :done goto :done
) )
@@ -95,7 +113,8 @@ if "%debug%"=="ON" (
set build_dir=build set build_dir=build
) )
) )
echo build type set to %build_type% if "%arch%"=="ARM64" set build_dir=%build_dir%-arm64
echo build type set to %build_type%, arch=%arch%
setlocal DISABLEDELAYEDEXPANSION setlocal DISABLEDELAYEDEXPANSION
cd deps cd deps
@@ -116,7 +135,7 @@ if "%USE_NINJA%"=="1" (
cmake ../ -G %CMAKE_GENERATOR% -DCMAKE_BUILD_TYPE=%build_type% cmake ../ -G %CMAKE_GENERATOR% -DCMAKE_BUILD_TYPE=%build_type%
cmake --build . --config %build_type% --target deps cmake --build . --config %build_type% --target deps
) else ( ) else (
cmake ../ -G %CMAKE_GENERATOR% -A x64 -DCMAKE_BUILD_TYPE=%build_type% cmake ../ -G %CMAKE_GENERATOR% -A %arch% -DCMAKE_BUILD_TYPE=%build_type%
cmake --build . --config %build_type% --target deps -- -m cmake --build . --config %build_type% --target deps -- -m
) )
@echo off @echo off
@@ -132,10 +151,10 @@ cd %build_dir%
echo on echo on
set CMAKE_POLICY_VERSION_MINIMUM=3.5 set CMAKE_POLICY_VERSION_MINIMUM=3.5
if "%USE_NINJA%"=="1" ( if "%USE_NINJA%"=="1" (
cmake .. -G %CMAKE_GENERATOR% -DORCA_TOOLS=ON %SIG_FLAG% -DCMAKE_BUILD_TYPE=%build_type% cmake .. -G %CMAKE_GENERATOR% -DORCA_TOOLS=ON %SIG_FLAG% -DBUILD_TESTS=%BUILD_TESTS% -DCMAKE_BUILD_TYPE=%build_type%
cmake --build . --config %build_type% --target all cmake --build . --config %build_type% --target all
) else ( ) else (
cmake .. -G %CMAKE_GENERATOR% -A x64 -DORCA_TOOLS=ON %SIG_FLAG% -DCMAKE_BUILD_TYPE=%build_type% cmake .. -G %CMAKE_GENERATOR% -A %arch% -DORCA_TOOLS=ON %SIG_FLAG% -DBUILD_TESTS=%BUILD_TESTS% -DCMAKE_BUILD_TYPE=%build_type%
cmake --build . --config %build_type% --target ALL_BUILD -- -m cmake --build . --config %build_type% --target ALL_BUILD -- -m
) )
@echo off @echo off
+12 -3
View File
@@ -15,10 +15,18 @@ if "%1"=="pack" (
set debug=OFF set debug=OFF
set debuginfo=OFF set debuginfo=OFF
@REM Default target architecture to the host CPU arch; override with x64/arm64 arg.
set arch=x64
if /I "%PROCESSOR_ARCHITECTURE%"=="ARM64" set arch=ARM64
if /I "%PROCESSOR_ARCHITEW6432%"=="ARM64" set arch=ARM64
if "%1"=="debug" set debug=ON if "%1"=="debug" set debug=ON
if "%2"=="debug" set debug=ON if "%2"=="debug" set debug=ON
if "%1"=="debuginfo" set debuginfo=ON if "%1"=="debuginfo" set debuginfo=ON
if "%2"=="debuginfo" set debuginfo=ON if "%2"=="debuginfo" set debuginfo=ON
if /I "%1"=="arm64" set arch=ARM64
if /I "%2"=="arm64" set arch=ARM64
if /I "%1"=="x64" set arch=x64
if /I "%2"=="x64" set arch=x64
if "%debug%"=="ON" ( if "%debug%"=="ON" (
set build_type=Debug set build_type=Debug
set build_dir=build-dbg set build_dir=build-dbg
@@ -31,7 +39,8 @@ if "%debug%"=="ON" (
set build_dir=build set build_dir=build
) )
) )
echo build type set to %build_type% if "%arch%"=="ARM64" set build_dir=%build_dir%-arm64
echo build type set to %build_type%, arch=%arch%
setlocal DISABLEDELAYEDEXPANSION setlocal DISABLEDELAYEDEXPANSION
cd deps cd deps
@@ -48,7 +57,7 @@ echo "building deps.."
echo on echo on
REM Set minimum CMake policy to avoid <3.5 errors REM Set minimum CMake policy to avoid <3.5 errors
set CMAKE_POLICY_VERSION_MINIMUM=3.5 set CMAKE_POLICY_VERSION_MINIMUM=3.5
cmake ../ -G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE=%build_type% cmake ../ -G "Visual Studio 17 2022" -A %arch% -DCMAKE_BUILD_TYPE=%build_type%
cmake --build . --config %build_type% --target deps -- -m cmake --build . --config %build_type% --target deps -- -m
@echo off @echo off
@@ -62,7 +71,7 @@ cd %build_dir%
echo on echo on
set CMAKE_POLICY_VERSION_MINIMUM=3.5 set CMAKE_POLICY_VERSION_MINIMUM=3.5
cmake .. -G "Visual Studio 17 2022" -A x64 -DORCA_TOOLS=ON %SIG_FLAG% -DCMAKE_BUILD_TYPE=%build_type% cmake .. -G "Visual Studio 17 2022" -A %arch% -DORCA_TOOLS=ON %SIG_FLAG% -DCMAKE_BUILD_TYPE=%build_type%
cmake --build . --config %build_type% --target ALL_BUILD -- -m cmake --build . --config %build_type% --target ALL_BUILD -- -m
@echo off @echo off
cd .. cd ..
+2
View File
@@ -124,6 +124,8 @@ endif()
if("${CMAKE_GENERATOR_PLATFORM}" MATCHES "x64" OR "${CMAKE_GENERATOR}" MATCHES "Win64") if("${CMAKE_GENERATOR_PLATFORM}" MATCHES "x64" OR "${CMAKE_GENERATOR}" MATCHES "Win64")
set(_arch "x64") set(_arch "x64")
elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "ARM64")
set(_arch "x64") # GLEW ships one header set; ARM64 uses the x64 import path
else() else()
set(_arch "Win32") set(_arch "Win32")
endif() endif()
+10
View File
@@ -10,6 +10,15 @@ if (APPLE AND CMAKE_OSX_ARCHITECTURES)
set(_context_arch_line "-DBOOST_CONTEXT_ARCHITECTURE:STRING=${CMAKE_OSX_ARCHITECTURES}") set(_context_arch_line "-DBOOST_CONTEXT_ARCHITECTURE:STRING=${CMAKE_OSX_ARCHITECTURES}")
endif () endif ()
# Windows ARM64: Boost.Context's default fcontext implementation assembles .asm
# via armasm64, which trips a CMake ASM_ARMASM linker-module bug under the VS
# generator. The winfib implementation (Windows Fiber API) avoids assembly while
# keeping the Boost::context target that Boost.Asio's stackful coroutines need.
set(_context_impl_line "")
if (MSVC AND "${DEPS_ARCH}" STREQUAL "arm64")
set(_context_impl_line "-DBOOST_CONTEXT_IMPLEMENTATION:STRING=winfib")
endif ()
set(_options "") set(_options "")
if (MSVC AND DEP_DEBUG) if (MSVC AND DEP_DEBUG)
set(_options "FORWARD_CONFIG") set(_options "FORWARD_CONFIG")
@@ -28,6 +37,7 @@ orcaslicer_add_cmake_project(Boost
-DBOOST_IOSTREAMS_ENABLE_ZSTD:BOOL=OFF -DBOOST_IOSTREAMS_ENABLE_ZSTD:BOOL=OFF
"${_context_abi_line}" "${_context_abi_line}"
"${_context_arch_line}" "${_context_arch_line}"
"${_context_impl_line}"
) )
set(DEP_Boost_DEPENDS ZLIB) set(DEP_Boost_DEPENDS ZLIB)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+3 -1
View File
@@ -1,4 +1,6 @@
if (MSVC) # Intel IPP / IPP-ICV is x86/x64 only — there is no ARM64 build, so enabling it
# leaves ~200 unresolved ippicv* externals at link time on Windows ARM64.
if (MSVC AND NOT "${DEPS_ARCH}" STREQUAL "arm64")
set(_use_IPP "-DWITH_IPP=ON") set(_use_IPP "-DWITH_IPP=ON")
if (DEP_DEBUG) if (DEP_DEBUG)
set(_options "FORWARD_CONFIG") set(_options "FORWARD_CONFIG")
+12
View File
@@ -32,6 +32,17 @@ else()
if (CMAKE_SYSTEM_NAME STREQUAL "Linux") if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
set(_patch_cmd ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-OpenEXR-GCC13.patch) set(_patch_cmd ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/0001-OpenEXR-GCC13.patch)
elseif (MSVC AND "${DEPS_ARCH}" STREQUAL "arm64")
# Windows ARM64: OpenEXR 2.5.5 hard-codes IMF_HAVE_SSE2 for any MSVC
# (ImfSimd.h: `_MSC_VER >= 1300`), pulling in <emmintrin.h> (x86-only) -> C1189.
# Patch the header to require an x86 target, and force the SSE cache vars off.
set(_patch_cmd ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_LIST_DIR}/patch_openexr_arm64.cmake)
set(_openexr_arm64_args
-DOPENEXR_IMF_HAVE_SSE2:BOOL=OFF
-DOPENEXR_IMF_HAVE_SSSE3:BOOL=OFF
-DILMBASE_HAVE_SSE:BOOL=OFF
-DILMBASE_FORCE_DISABLE_INTEL_SSE:BOOL=ON
)
else () else ()
set(_patch_cmd "") set(_patch_cmd "")
endif () endif ()
@@ -49,6 +60,7 @@ orcaslicer_add_cmake_project(OpenEXR
-DPYILMBASE_ENABLE:BOOL=OFF -DPYILMBASE_ENABLE:BOOL=OFF
-DOPENEXR_VIEWERS_ENABLE:BOOL=OFF -DOPENEXR_VIEWERS_ENABLE:BOOL=OFF
-DOPENEXR_BUILD_UTILS:BOOL=OFF -DOPENEXR_BUILD_UTILS:BOOL=OFF
${_openexr_arm64_args}
) )
endif() endif()
+29
View File
@@ -0,0 +1,29 @@
# Applied as PATCH_COMMAND for OpenEXR 2.5.5 on Windows ARM64.
#
# Root cause of the ARM64 build failure: OpenEXR/IlmImf/ImfSimd.h hard-codes
# #if defined __SSE2__ || (_MSC_VER >= 1300 && !_M_CEE_PURE)
# #define IMF_HAVE_SSE2 1
# #endif
# The `_MSC_VER >= 1300` arm is true for *every* MSVC, including ARM64, so
# IMF_HAVE_SSE2 gets defined and <emmintrin.h> (an x86-only header) is pulled
# in -> error C1189. This is a pure-preprocessor decision, so no CMake cache
# variable can suppress it. Patch the header to also require an x86 target.
set(_simd "OpenEXR/IlmImf/ImfSimd.h")
if(EXISTS "${_simd}")
file(READ "${_simd}" _content)
set(_old "#if defined __SSE2__ || (_MSC_VER >= 1300 && !_M_CEE_PURE)")
set(_new "#if (defined __SSE2__ || (_MSC_VER >= 1300 && !_M_CEE_PURE)) && (defined(_M_IX86) || defined(_M_X64) || defined(__i386__) || defined(__x86_64__))")
if(_content MATCHES "_M_IX86")
message(STATUS "[ARM64 patch] ImfSimd.h already guarded")
else()
string(REPLACE "${_old}" "${_new}" _patched "${_content}")
if(_patched STREQUAL _content)
message(FATAL_ERROR "[ARM64 patch] Failed to match SSE2 guard in ${_simd}")
endif()
file(WRITE "${_simd}" "${_patched}")
message(STATUS "[ARM64 patch] Guarded IMF_HAVE_SSE2 with x86 arch check in ${_simd}")
endif()
else()
message(FATAL_ERROR "[ARM64 patch] Not found: ${_simd}")
endif()
+5 -1
View File
@@ -6,7 +6,11 @@ if(DEFINED OPENSSL_ARCH)
set(_cross_arch ${OPENSSL_ARCH}) set(_cross_arch ${OPENSSL_ARCH})
else() else()
if(WIN32) if(WIN32)
set(_cross_arch "VC-WIN64A") if("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "ARM64")
set(_cross_arch "VC-WIN64-ARM")
else()
set(_cross_arch "VC-WIN64A")
endif()
elseif(APPLE) elseif(APPLE)
set(_cross_arch "darwin64-${CMAKE_OSX_ARCHITECTURES}-cc") set(_cross_arch "darwin64-${CMAKE_OSX_ARCHITECTURES}-cc")
endif() endif()
+1 -1
View File
@@ -267,7 +267,7 @@ void ImGui::Text(const char* fmt, ...)
void ImGui::TextCentered(const char* text, ...) void ImGui::TextCentered(const char* text, ...)
{ {
va_list vaList; va_list vaList;
va_start(vaList,&text); va_start(vaList, text);
float font_size = ImGui::GetFontSize() * strlen(text) / 2; float font_size = ImGui::GetFontSize() * strlen(text) / 2;
ImGui::SameLine(ImGui::GetCursorPos().x / 2 - font_size + (font_size / 2)); ImGui::SameLine(ImGui::GetCursorPos().x / 2 - font_size + (font_size / 2));
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+3
View File
@@ -227,11 +227,14 @@ src/slic3r/GUI/CreatePresetsDialog.cpp
src/slic3r/GUI/DailyTips.cpp src/slic3r/GUI/DailyTips.cpp
src/slic3r/Utils/CalibUtils.cpp src/slic3r/Utils/CalibUtils.cpp
src/slic3r/GUI/PhysicalPrinterDialog.cpp src/slic3r/GUI/PhysicalPrinterDialog.cpp
src/slic3r/GUI/CrealityDiscoveryDialog.cpp
src/slic3r/GUI/TroubleshootDialog.cpp
src/slic3r/Utils/3DPrinterOS.cpp src/slic3r/Utils/3DPrinterOS.cpp
src/slic3r/Utils/AstroBox.cpp src/slic3r/Utils/AstroBox.cpp
src/slic3r/Utils/Duet.cpp src/slic3r/Utils/Duet.cpp
src/slic3r/Utils/FlashAir.cpp src/slic3r/Utils/FlashAir.cpp
src/slic3r/Utils/MKS.cpp src/slic3r/Utils/MKS.cpp
src/slic3r/Utils/Moonraker.cpp
src/slic3r/Utils/OctoPrint.cpp src/slic3r/Utils/OctoPrint.cpp
src/slic3r/Utils/Repetier.cpp src/slic3r/Utils/Repetier.cpp
src/slic3r/Utils/ProfileDescription.hpp src/slic3r/Utils/ProfileDescription.hpp
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+3
View File
@@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.2992 1.42627C10.7774 1.42627 8.73315 3.47056 8.73315 5.99231C8.73315 8.51406 10.7774 10.5583 13.2992 10.5583C13.3609 10.5583 13.4223 10.5571 13.4834 10.5547C15.9197 10.4581 17.8652 8.45238 17.8652 5.99231C17.8652 3.47056 15.8209 1.42627 13.2992 1.42627ZM15.6185 11.0536C17.5346 10.1741 18.8652 8.23861 18.8652 5.99231C18.8652 2.91827 16.3732 0.42627 13.2992 0.42627C11.5793 0.42627 10.0417 1.2063 9.02067 2.43188H2.31853C1.93193 2.43188 1.61853 2.74528 1.61853 3.13188V12.4712C1.61853 12.6313 1.6723 12.7789 1.76278 12.8968C1.76671 13.0046 1.79621 13.1144 1.85576 13.2185L3.48408 16.0649C3.60875 16.2829 3.8406 16.4173 4.09168 16.4173H6.75859L7.97903 19.1586C8.22556 19.7123 9.01148 19.7123 9.25801 19.1586L10.4784 16.4173H13.1454C13.3965 16.4173 13.6283 16.2829 13.753 16.0649L15.3813 13.2185C15.4409 13.1144 15.4704 13.0046 15.4743 12.8968C15.5648 12.7789 15.6185 12.6313 15.6185 12.4712V11.0536ZM13.4429 11.5565C13.8469 11.5463 14.2403 11.493 14.6185 11.4011V12.1709H2.61853V3.43188H8.35573C7.95792 4.19837 7.73315 5.06909 7.73315 5.99231C7.73315 9.06635 10.2252 11.5583 13.2992 11.5583C13.3472 11.5583 13.3951 11.5577 13.4429 11.5565ZM2.98076 13.1712H14.2563L12.9714 15.4173H9.85194L9.84578 15.4173H7.39126L7.3851 15.4173H4.26569L2.98076 13.1712ZM9.38381 16.4173L8.61852 18.1363L7.85322 16.4173H9.38381ZM12.2021 3.36422C12.3973 3.55948 12.3973 3.87606 12.2021 4.07133L11.743 4.53041H16.0625C16.3386 4.53041 16.5625 4.75426 16.5625 5.03041C16.5625 5.30655 16.3386 5.53041 16.0625 5.53041H10.7773C10.2428 5.53041 9.97507 4.88412 10.353 4.50614L11.495 3.36422C11.6902 3.16896 12.0068 3.16896 12.2021 3.36422ZM14.3963 7.91305C14.2011 8.10831 14.2011 8.42489 14.3963 8.62015C14.5916 8.81542 14.9082 8.81542 15.1034 8.62015L16.2453 7.47823C16.6233 7.10026 16.3556 6.45397 15.8211 6.45397L10.5359 6.45397C10.2597 6.45397 10.0359 6.67783 10.0359 6.95397C10.0359 7.23011 10.2597 7.45397 10.5359 7.45397L14.8554 7.45397L14.3963 7.91305Z" fill="#262E30"/>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

+1 -25
View File
@@ -1,6 +1,6 @@
{ {
"name": "Afinia", "name": "Afinia",
"version": "02.04.00.00", "version": "02.04.00.02",
"force_update": "0", "force_update": "0",
"description": "Afinia configurations", "description": "Afinia configurations",
"machine_model_list": [ "machine_model_list": [
@@ -124,14 +124,6 @@
"name": "fdm_filament_tpu", "name": "fdm_filament_tpu",
"sub_path": "filament/fdm_filament_tpu.json" "sub_path": "filament/fdm_filament_tpu.json"
}, },
{
"name": "Afinia ABS",
"sub_path": "filament/Afinia ABS.json"
},
{
"name": "Afinia ABS+",
"sub_path": "filament/Afinia ABS+.json"
},
{ {
"name": "Afinia ABS+@HS", "name": "Afinia ABS+@HS",
"sub_path": "filament/Afinia ABS+@HS.json" "sub_path": "filament/Afinia ABS+@HS.json"
@@ -140,34 +132,18 @@
"name": "Afinia ABS@HS", "name": "Afinia ABS@HS",
"sub_path": "filament/Afinia ABS@HS.json" "sub_path": "filament/Afinia ABS@HS.json"
}, },
{
"name": "Afinia Value ABS",
"sub_path": "filament/Afinia Value ABS.json"
},
{ {
"name": "Afinia Value ABS@HS", "name": "Afinia Value ABS@HS",
"sub_path": "filament/Afinia Value ABS@HS.json" "sub_path": "filament/Afinia Value ABS@HS.json"
}, },
{
"name": "Afinia PLA",
"sub_path": "filament/Afinia PLA.json"
},
{ {
"name": "Afinia PLA@HS", "name": "Afinia PLA@HS",
"sub_path": "filament/Afinia PLA@HS.json" "sub_path": "filament/Afinia PLA@HS.json"
}, },
{
"name": "Afinia Value PLA",
"sub_path": "filament/Afinia Value PLA.json"
},
{ {
"name": "Afinia Value PLA@HS", "name": "Afinia Value PLA@HS",
"sub_path": "filament/Afinia Value PLA@HS.json" "sub_path": "filament/Afinia Value PLA@HS.json"
}, },
{
"name": "Afinia TPU",
"sub_path": "filament/Afinia TPU.json"
},
{ {
"name": "Afinia TPU@HS", "name": "Afinia TPU@HS",
"sub_path": "filament/Afinia TPU@HS.json" "sub_path": "filament/Afinia TPU@HS.json"
@@ -1,37 +0,0 @@
{
"type": "filament",
"filament_id": "GFB00",
"setting_id": "GFSB00",
"name": "Afinia ABS+",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_abs",
"filament_flow_ratio": [
"0.95"
],
"filament_cost": [
"24.99"
],
"filament_vendor": [
"Afinia"
],
"fan_max_speed": [
"60"
],
"filament_max_volumetric_speed": [
"16"
],
"nozzle_temperature": [
"275"
],
"nozzle_temperature_initial_layer": [
"275"
],
"slow_down_layer_time": [
"12"
],
"compatible_printers": [
"Afinia H400 Pro 0.4 nozzle",
"Afinia H400 Pro 0.6 nozzle"
]
}
@@ -1,7 +1,7 @@
{ {
"type": "filament", "type": "filament",
"filament_id": "GFB00_01", "filament_id": "GFB00_01",
"setting_id": "GFSB00", "setting_id": "wAJTMxtCY7EoavRi",
"name": "Afinia ABS+@HS", "name": "Afinia ABS+@HS",
"from": "system", "from": "system",
"instantiation": "true", "instantiation": "true",
@@ -1,31 +0,0 @@
{
"type": "filament",
"filament_id": "GFB00",
"setting_id": "GFSB00",
"name": "Afinia ABS",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_abs",
"filament_flow_ratio": [
"0.95"
],
"filament_cost": [
"24.99"
],
"filament_vendor": [
"Afinia"
],
"fan_max_speed": [
"60"
],
"filament_max_volumetric_speed": [
"16"
],
"slow_down_layer_time": [
"12"
],
"compatible_printers": [
"Afinia H400 Pro 0.4 nozzle",
"Afinia H400 Pro 0.6 nozzle"
]
}
@@ -1,7 +1,7 @@
{ {
"type": "filament", "type": "filament",
"filament_id": "GFB00_01", "filament_id": "GFB00_01",
"setting_id": "GFSB00", "setting_id": "qCDnb2iBaz4hd4vX",
"name": "Afinia ABS@HS", "name": "Afinia ABS@HS",
"from": "system", "from": "system",
"instantiation": "true", "instantiation": "true",
@@ -1,34 +0,0 @@
{
"type": "filament",
"filament_id": "GFA00",
"setting_id": "GFSA00",
"name": "Afinia PLA",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pla",
"filament_cost": [
"24.99"
],
"filament_density": [
"1.26"
],
"filament_flow_ratio": [
"0.98"
],
"filament_max_volumetric_speed": [
"21"
],
"filament_vendor": [
"Afinia"
],
"filament_long_retractions_when_cut": [
"1"
],
"filament_retraction_distances_when_cut": [
"18"
],
"compatible_printers": [
"Afinia H400 Pro 0.4 nozzle",
"Afinia H400 Pro 0.6 nozzle"
]
}
@@ -1,7 +1,7 @@
{ {
"type": "filament", "type": "filament",
"filament_id": "GFA00_01", "filament_id": "GFA00_01",
"setting_id": "GFSA00", "setting_id": "N3sCgjdjvp6FTtw9",
"name": "Afinia PLA@HS", "name": "Afinia PLA@HS",
"from": "system", "from": "system",
"instantiation": "true", "instantiation": "true",
@@ -1,27 +0,0 @@
{
"type": "filament",
"name": "Afinia TPU",
"inherits": "fdm_filament_tpu",
"from": "system",
"filament_id": "GFU01",
"instantiation": "true",
"filament_vendor": [
"Afinia"
],
"filament_density": [
"1.22"
],
"nozzle_temperature_initial_layer": [
"230"
],
"filament_cost": [
"41.99"
],
"nozzle_temperature": [
"230"
],
"compatible_printers": [
"Afinia H400 Pro 0.4 nozzle",
"Afinia H400 Pro 0.6 nozzle"
]
}
@@ -3,6 +3,7 @@
"name": "Afinia TPU@HS", "name": "Afinia TPU@HS",
"inherits": "fdm_filament_tpu", "inherits": "fdm_filament_tpu",
"from": "system", "from": "system",
"setting_id": "zUqTgAEbqTN1EdRl",
"filament_id": "GFU01_01", "filament_id": "GFU01_01",
"instantiation": "true", "instantiation": "true",
"filament_vendor": [ "filament_vendor": [
@@ -1,37 +0,0 @@
{
"type": "filament",
"filament_id": "GFB00",
"setting_id": "GFSB00",
"name": "Afinia Value ABS",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_abs",
"filament_flow_ratio": [
"0.95"
],
"filament_cost": [
"24.99"
],
"filament_vendor": [
"Afinia"
],
"fan_max_speed": [
"60"
],
"filament_max_volumetric_speed": [
"16"
],
"nozzle_temperature": [
"245"
],
"nozzle_temperature_initial_layer": [
"245"
],
"slow_down_layer_time": [
"12"
],
"compatible_printers": [
"Afinia H400 Pro 0.4 nozzle",
"Afinia H400 Pro 0.6 nozzle"
]
}
@@ -1,7 +1,7 @@
{ {
"type": "filament", "type": "filament",
"filament_id": "GFB00_01", "filament_id": "GFB00_01",
"setting_id": "GFSB00", "setting_id": "OxIiEYjbhEvSykaQ",
"name": "Afinia Value ABS@HS", "name": "Afinia Value ABS@HS",
"from": "system", "from": "system",
"instantiation": "true", "instantiation": "true",
@@ -1,40 +0,0 @@
{
"type": "filament",
"filament_id": "GFA00",
"setting_id": "GFSA00",
"name": "Afinia Value PLA",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pla",
"filament_cost": [
"24.99"
],
"filament_density": [
"1.26"
],
"filament_flow_ratio": [
"0.98"
],
"filament_max_volumetric_speed": [
"21"
],
"filament_vendor": [
"Afinia"
],
"filament_long_retractions_when_cut": [
"1"
],
"filament_retraction_distances_when_cut": [
"18"
],
"nozzle_temperature": [
"190"
],
"nozzle_temperature_initial_layer": [
"190"
],
"compatible_printers": [
"Afinia H400 Pro 0.4 nozzle",
"Afinia H400 Pro 0.6 nozzle"
]
}
@@ -1,7 +1,7 @@
{ {
"type": "filament", "type": "filament",
"filament_id": "GFA00_01", "filament_id": "GFA00_01",
"setting_id": "GFSA00", "setting_id": "BASsUdyvElEVJ9AA",
"name": "Afinia Value PLA@HS", "name": "Afinia Value PLA@HS",
"from": "system", "from": "system",
"instantiation": "true", "instantiation": "true",
@@ -1,6 +1,6 @@
{ {
"type": "machine", "type": "machine",
"setting_id": "GM001", "setting_id": "iwkXfmEyz9RLZTvh",
"name": "Afinia H+1(HS) 0.4 nozzle", "name": "Afinia H+1(HS) 0.4 nozzle",
"from": "system", "from": "system",
"instantiation": "true", "instantiation": "true",
@@ -1,6 +1,6 @@
{ {
"type": "machine", "type": "machine",
"setting_id": "GM001", "setting_id": "vngsrxKvEIsmr8tQ",
"name": "Afinia H+1(HS) 0.6 nozzle", "name": "Afinia H+1(HS) 0.6 nozzle",
"from": "system", "from": "system",
"instantiation": "true", "instantiation": "true",
@@ -1,6 +1,6 @@
{ {
"type": "process", "type": "process",
"setting_id": "GP004", "setting_id": "FueWYijuvLNWzNmL",
"name": "0.12mm Fine @Afinia H+1(HS)", "name": "0.12mm Fine @Afinia H+1(HS)",
"from": "system", "from": "system",
"instantiation": "true", "instantiation": "true",
@@ -1,6 +1,6 @@
{ {
"type": "process", "type": "process",
"setting_id": "GP004", "setting_id": "Ntf0ZMcETTPz7EY1",
"name": "0.16mm Optimal @Afinia H+1(HS)", "name": "0.16mm Optimal @Afinia H+1(HS)",
"from": "system", "from": "system",
"instantiation": "true", "instantiation": "true",
@@ -3,7 +3,7 @@
"name": "0.18mm Fine @Afinia H+1(HS) 0.6 nozzle", "name": "0.18mm Fine @Afinia H+1(HS) 0.6 nozzle",
"inherits": "fdm_process_afinia_0.18_nozzle_0.6_HS", "inherits": "fdm_process_afinia_0.18_nozzle_0.6_HS",
"from": "system", "from": "system",
"setting_id": "GP021", "setting_id": "b7oGgrSCik70LqdL",
"instantiation": "true", "instantiation": "true",
"description": "It has a smaller layer height and results in smoother surface and higher printing quality.", "description": "It has a smaller layer height and results in smoother surface and higher printing quality.",
"elefant_foot_compensation": "0.15", "elefant_foot_compensation": "0.15",
@@ -1,6 +1,6 @@
{ {
"type": "process", "type": "process",
"setting_id": "GP004", "setting_id": "Lxid5Z2e0fvVDMMm",
"name": "0.20mm Standard @Afinia H+1(HS)", "name": "0.20mm Standard @Afinia H+1(HS)",
"from": "system", "from": "system",
"inherits": "fdm_process_afinia_HS_common", "inherits": "fdm_process_afinia_HS_common",
@@ -1,6 +1,6 @@
{ {
"type": "process", "type": "process",
"setting_id": "GP004", "setting_id": "APeSqnRZh6I9OTFr",
"name": "0.24mm Draft @Afinia H+1(HS)", "name": "0.24mm Draft @Afinia H+1(HS)",
"from": "system", "from": "system",
"instantiation": "true", "instantiation": "true",
@@ -3,7 +3,7 @@
"name": "0.24mm Standard @Afinia H+1(HS) 0.6 nozzle", "name": "0.24mm Standard @Afinia H+1(HS) 0.6 nozzle",
"inherits": "fdm_process_afinia_0.24_nozzle_0.6_HS", "inherits": "fdm_process_afinia_0.24_nozzle_0.6_HS",
"from": "system", "from": "system",
"setting_id": "GP022", "setting_id": "QlOnQEeUXkGaxZS5",
"instantiation": "true", "instantiation": "true",
"description": "It has a balanced layer height for good quality and reasonable printing time.", "description": "It has a balanced layer height for good quality and reasonable printing time.",
"elefant_foot_compensation": "0.15", "elefant_foot_compensation": "0.15",
@@ -1,6 +1,6 @@
{ {
"type": "process", "type": "process",
"setting_id": "GP004", "setting_id": "VZ3NOVzdVWqZ37Ge",
"name": "0.28mm Extra Draft @Afinia H+1(HS)", "name": "0.28mm Extra Draft @Afinia H+1(HS)",
"from": "system", "from": "system",
"instantiation": "true", "instantiation": "true",
@@ -3,7 +3,7 @@
"name": "0.30mm Standard @Afinia H+1(HS) 0.6 nozzle", "name": "0.30mm Standard @Afinia H+1(HS) 0.6 nozzle",
"inherits": "fdm_process_afinia_0.30_nozzle_0.6_HS", "inherits": "fdm_process_afinia_0.30_nozzle_0.6_HS",
"from": "system", "from": "system",
"setting_id": "GP023", "setting_id": "7PPJm0girx11EP80",
"instantiation": "true", "instantiation": "true",
"description": "It has a big layer height, and results in apparent layer lines and ordinary printing quality and printing time.", "description": "It has a big layer height, and results in apparent layer lines and ordinary printing quality and printing time.",
"elefant_foot_compensation": "0.15", "elefant_foot_compensation": "0.15",
@@ -3,7 +3,7 @@
"name": "0.30mm Strength @Afinia H+1(HS) 0.6 nozzle", "name": "0.30mm Strength @Afinia H+1(HS) 0.6 nozzle",
"inherits": "fdm_process_afinia_0.30_nozzle_0.6_HS", "inherits": "fdm_process_afinia_0.30_nozzle_0.6_HS",
"from": "system", "from": "system",
"setting_id": "GP024", "setting_id": "BewLobRVuiw6HPuc",
"instantiation": "true", "instantiation": "true",
"description": "It has a big layer height with optimized settings for stronger parts.", "description": "It has a big layer height with optimized settings for stronger parts.",
"elefant_foot_compensation": "0.15", "elefant_foot_compensation": "0.15",
@@ -3,7 +3,7 @@
"name": "0.36mm Draft @Afinia H+1(HS) 0.6 nozzle", "name": "0.36mm Draft @Afinia H+1(HS) 0.6 nozzle",
"inherits": "fdm_process_afinia_0.36_nozzle_0.6_HS", "inherits": "fdm_process_afinia_0.36_nozzle_0.6_HS",
"from": "system", "from": "system",
"setting_id": "GP025", "setting_id": "pBS3NpSZPjtySd3X",
"instantiation": "true", "instantiation": "true",
"description": "It has a bigger layer height for faster printing but with more visible layer lines.", "description": "It has a bigger layer height for faster printing but with more visible layer lines.",
"elefant_foot_compensation": "0.15", "elefant_foot_compensation": "0.15",
@@ -3,7 +3,7 @@
"name": "0.42mm Extra Draft @Afinia H+1(HS) 0.6 nozzle", "name": "0.42mm Extra Draft @Afinia H+1(HS) 0.6 nozzle",
"inherits": "fdm_process_afinia_0.42_nozzle_0.6_HS", "inherits": "fdm_process_afinia_0.42_nozzle_0.6_HS",
"from": "system", "from": "system",
"setting_id": "GP026", "setting_id": "kHUEpY5ZMtYrLKtO",
"instantiation": "true", "instantiation": "true",
"description": "It has the biggest layer height for fastest printing but with very visible layer lines.", "description": "It has the biggest layer height for fastest printing but with very visible layer lines.",
"elefant_foot_compensation": "0.15", "elefant_foot_compensation": "0.15",
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "Anker", "name": "Anker",
"version": "02.04.00.00", "version": "02.04.00.01",
"force_update": "0", "force_update": "0",
"description": "Anker configurations", "description": "Anker configurations",
"machine_model_list": [ "machine_model_list": [
@@ -3,7 +3,7 @@
"name": "Anker Generic ABS 0.2 nozzle", "name": "Anker Generic ABS 0.2 nozzle",
"inherits": "Anker Generic ABS @base", "inherits": "Anker Generic ABS @base",
"from": "system", "from": "system",
"setting_id": "GFSB99_20", "setting_id": "BD5ODYVM90Ig44C5",
"instantiation": "true", "instantiation": "true",
"filament_max_volumetric_speed": [ "filament_max_volumetric_speed": [
"2" "2"
@@ -3,7 +3,7 @@
"name": "Anker Generic ABS 0.25 nozzle", "name": "Anker Generic ABS 0.25 nozzle",
"inherits": "Anker Generic ABS @base", "inherits": "Anker Generic ABS @base",
"from": "system", "from": "system",
"setting_id": "GFSB99_25", "setting_id": "WS5wXckNuiQqSVwO",
"instantiation": "true", "instantiation": "true",
"filament_max_volumetric_speed": [ "filament_max_volumetric_speed": [
"3" "3"
@@ -3,7 +3,7 @@
"name": "Anker Generic ABS", "name": "Anker Generic ABS",
"inherits": "Anker Generic ABS @base", "inherits": "Anker Generic ABS @base",
"from": "system", "from": "system",
"setting_id": "GFSB99", "setting_id": "axEspGzFJnrnidm4",
"instantiation": "true", "instantiation": "true",
"compatible_printers": [ "compatible_printers": [
"Anker M5 0.4 nozzle", "Anker M5 0.4 nozzle",
@@ -3,7 +3,7 @@
"name": "Anker Generic ASA 0.2 nozzle", "name": "Anker Generic ASA 0.2 nozzle",
"inherits": "Anker Generic ASA @base", "inherits": "Anker Generic ASA @base",
"from": "system", "from": "system",
"setting_id": "GFSB98_20", "setting_id": "G7pzEyyhPFDnae3R",
"instantiation": "true", "instantiation": "true",
"filament_max_volumetric_speed": [ "filament_max_volumetric_speed": [
"2" "2"
@@ -3,7 +3,7 @@
"name": "Anker Generic ASA 0.25 nozzle", "name": "Anker Generic ASA 0.25 nozzle",
"inherits": "Anker Generic ASA @base", "inherits": "Anker Generic ASA @base",
"from": "system", "from": "system",
"setting_id": "GFSB98_25", "setting_id": "ErUUDTQ7h1wNHAKT",
"instantiation": "true", "instantiation": "true",
"filament_max_volumetric_speed": [ "filament_max_volumetric_speed": [
"3" "3"
@@ -3,7 +3,7 @@
"name": "Anker Generic ASA", "name": "Anker Generic ASA",
"inherits": "Anker Generic ASA @base", "inherits": "Anker Generic ASA @base",
"from": "system", "from": "system",
"setting_id": "GFSB98", "setting_id": "QiFoBW5WuDUJGmFZ",
"instantiation": "true", "instantiation": "true",
"compatible_printers": [ "compatible_printers": [
"Anker M5 0.4 nozzle", "Anker M5 0.4 nozzle",
@@ -3,7 +3,7 @@
"name": "Anker Generic PA 0.2 nozzle", "name": "Anker Generic PA 0.2 nozzle",
"inherits": "Anker Generic PA @base", "inherits": "Anker Generic PA @base",
"from": "system", "from": "system",
"setting_id": "GFSN99_20", "setting_id": "NZB26MSD9WbOeY2S",
"instantiation": "true", "instantiation": "true",
"filament_max_volumetric_speed": [ "filament_max_volumetric_speed": [
"2" "2"
@@ -3,7 +3,7 @@
"name": "Anker Generic PA 0.25 nozzle", "name": "Anker Generic PA 0.25 nozzle",
"inherits": "Anker Generic PA @base", "inherits": "Anker Generic PA @base",
"from": "system", "from": "system",
"setting_id": "GFSN99_25", "setting_id": "Wj7oXTGUxo8lie1B",
"instantiation": "true", "instantiation": "true",
"filament_max_volumetric_speed": [ "filament_max_volumetric_speed": [
"3" "3"
@@ -3,7 +3,7 @@
"name": "Anker Generic PA-CF", "name": "Anker Generic PA-CF",
"inherits": "Anker Generic PA-CF @base", "inherits": "Anker Generic PA-CF @base",
"from": "system", "from": "system",
"setting_id": "GFSN98", "setting_id": "qdsEps11ugFHJkn7",
"instantiation": "true", "instantiation": "true",
"compatible_printers": [ "compatible_printers": [
"Anker M5 All-Metal 0.4 nozzle", "Anker M5 All-Metal 0.4 nozzle",
@@ -3,7 +3,7 @@
"name": "Anker Generic PA", "name": "Anker Generic PA",
"inherits": "Anker Generic PA @base", "inherits": "Anker Generic PA @base",
"from": "system", "from": "system",
"setting_id": "GFSN99", "setting_id": "QbIiX554Yee6vb32",
"instantiation": "true", "instantiation": "true",
"compatible_printers": [ "compatible_printers": [
"Anker M5 All-Metal 0.4 nozzle", "Anker M5 All-Metal 0.4 nozzle",
@@ -3,7 +3,7 @@
"name": "Anker Generic PC 0.2 nozzle", "name": "Anker Generic PC 0.2 nozzle",
"inherits": "Anker Generic PC @base", "inherits": "Anker Generic PC @base",
"from": "system", "from": "system",
"setting_id": "GFSC99_20", "setting_id": "GhIOAidtgDkzh9Aj",
"instantiation": "true", "instantiation": "true",
"filament_max_volumetric_speed": [ "filament_max_volumetric_speed": [
"2" "2"

Some files were not shown because too many files have changed in this diff Show More