mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-29 11:51:24 +00:00
Merge branch 'main' into fix/clang-cl-windows-support
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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() }}
|
||||||
steps:
|
uses: ./.github/workflows/unit_tests.yml
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v6
|
|
||||||
with:
|
with:
|
||||||
sparse-checkout: |
|
os: ${{ vars.SELF_HOSTED && 'orca-lnx-server' || 'ubuntu-24.04' }}
|
||||||
.github
|
artifact: ${{ github.sha }}-tests-linux-x86_64
|
||||||
scripts
|
unit_tests_linux_aarch64:
|
||||||
tests
|
name: Linux aarch64
|
||||||
- name: Apt-Install Dependencies
|
needs: build_linux
|
||||||
if: ${{ !vars.SELF_HOSTED }}
|
if: ${{ !cancelled() && success() }}
|
||||||
uses: ./.github/actions/apt-install-deps
|
uses: ./.github/workflows/unit_tests.yml
|
||||||
- name: Restore Test Artifact
|
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:
|
||||||
|
- name: Download Test Results
|
||||||
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
|
||||||
|
|||||||
@@ -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 }}
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
$arch = "${{ inputs.arch }}"
|
||||||
|
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 deps
|
||||||
.\build_release_vs.bat pack
|
.\build_release_vs.bat pack
|
||||||
|
}
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
|
|
||||||
- name: Build on Mac ${{ inputs.arch }}
|
- name: Build on Mac ${{ inputs.arch }}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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: |
|
||||||
|
|||||||
@@ -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: |
|
||||||
|
fixtures_dir="${{ runner.temp }}/profile-fixtures"
|
||||||
|
output_dir="${{ runner.temp }}/custom-preset-validation"
|
||||||
|
combined_log="${{ runner.temp }}/validate_custom.log"
|
||||||
|
summary="${output_dir}/summary.md"
|
||||||
|
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
|
set +e
|
||||||
curl -LJO https://github.com/OrcaSlicer/OrcaSlicer/releases/download/nightly-builds/orca_custom_preset_tests.zip
|
./OrcaSlicer_profile_validator -p "${profile_tree}" -l 2 > "${log_path}" 2>&1
|
||||||
unzip -q ./orca_custom_preset_tests.zip -d ${{ github.workspace }}/resources/profiles
|
result=$?
|
||||||
./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2 2>&1 | tee ${{ runner.temp }}/validate_custom.log
|
set -e
|
||||||
exit ${PIPESTATUS[0]}
|
|
||||||
|
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
|
||||||
|
|||||||
@@ -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 }}
|
||||||
|
|
||||||
|
|||||||
@@ -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: |
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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 }}
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -46,3 +46,6 @@ test.js
|
|||||||
internal_docs/
|
internal_docs/
|
||||||
*.flatpak
|
*.flatpak
|
||||||
/flatpak-repo/
|
/flatpak-repo/
|
||||||
|
# Python bytecode
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
|||||||
+11
-1
@@ -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})
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -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 ..
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Vendored
+10
@@ -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)
|
||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Vendored
+3
-1
@@ -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")
|
||||||
|
|||||||
Vendored
+12
@@ -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
@@ -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()
|
||||||
Vendored
+4
@@ -6,7 +6,11 @@ if(DEFINED OPENSSL_ARCH)
|
|||||||
set(_cross_arch ${OPENSSL_ARCH})
|
set(_cross_arch ${OPENSSL_ARCH})
|
||||||
else()
|
else()
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
|
if("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "ARM64")
|
||||||
|
set(_cross_arch "VC-WIN64-ARM")
|
||||||
|
else()
|
||||||
set(_cross_arch "VC-WIN64A")
|
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()
|
||||||
|
|||||||
@@ -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));
|
||||||
|
|||||||
+575
-248
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
@@ -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
|
||||||
|
|||||||
+5543
-5414
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
@@ -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,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",
|
||||||
|
|||||||
+1
-1
@@ -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,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
Reference in New Issue
Block a user