mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-14 00:52:04 +00:00
some qol changes for dev
This commit is contained in:
10
.github/workflows/build_all.yml
vendored
10
.github/workflows/build_all.yml
vendored
@@ -194,7 +194,7 @@ jobs:
|
|||||||
restore-keys: flatpak-builder-${{ matrix.variant.arch }}-
|
restore-keys: flatpak-builder-${{ matrix.variant.arch }}-
|
||||||
- name: Disable debug info for faster CI builds
|
- name: Disable debug info for faster CI builds
|
||||||
run: |
|
run: |
|
||||||
sed -i '/^build-options:/a\ no-debuginfo: true\n strip: true' \
|
sed -i '/^build-options:/a\ no-debuginfo: true\n strip: true\n cflags: "-g0"\n cxxflags: "-g0"' \
|
||||||
scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml
|
scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml
|
||||||
shell: bash
|
shell: bash
|
||||||
- name: Inject git commit hash into Flatpak manifest
|
- name: Inject git commit hash into Flatpak manifest
|
||||||
@@ -202,6 +202,14 @@ jobs:
|
|||||||
sed -i "/name: OrcaSlicer/{n;s|buildsystem: simple|buildsystem: simple\n build-options:\n env:\n git_commit_hash: \"$git_commit_hash\"|}" \
|
sed -i "/name: OrcaSlicer/{n;s|buildsystem: simple|buildsystem: simple\n build-options:\n env:\n git_commit_hash: \"$git_commit_hash\"|}" \
|
||||||
scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml
|
scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml
|
||||||
shell: bash
|
shell: bash
|
||||||
|
- name: Restore manifest mtime for deterministic cache keys
|
||||||
|
run: |
|
||||||
|
# sed changes mtime, which flatpak-builder uses for SOURCE_DATE_EPOCH
|
||||||
|
# and type:dir module cache keys. Restore to git commit time so cache
|
||||||
|
# keys are stable across builds of the same source.
|
||||||
|
touch -d @$(git log -1 --format='%ct' -- scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml) \
|
||||||
|
scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml
|
||||||
|
shell: bash
|
||||||
- uses: flatpak/flatpak-github-actions/flatpak-builder@master
|
- uses: flatpak/flatpak-github-actions/flatpak-builder@master
|
||||||
with:
|
with:
|
||||||
bundle: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
|
bundle: OrcaSlicer-Linux-flatpak_${{ env.ver }}_${{ matrix.variant.arch }}.flatpak
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ CLEANUP=false
|
|||||||
INSTALL_RUNTIME=false
|
INSTALL_RUNTIME=false
|
||||||
JOBS=$(nproc)
|
JOBS=$(nproc)
|
||||||
FORCE_CLEAN=false
|
FORCE_CLEAN=false
|
||||||
ENABLE_CCACHE=false
|
ENABLE_CCACHE=true
|
||||||
DISABLE_ROFILES_FUSE=false
|
DISABLE_ROFILES_FUSE=true
|
||||||
NO_DEBUGINFO=true
|
NO_DEBUGINFO=true
|
||||||
CACHE_DIR=".flatpak-builder"
|
CACHE_DIR=".flatpak-builder"
|
||||||
|
|
||||||
@@ -37,19 +37,19 @@ show_help() {
|
|||||||
echo " -j, --jobs JOBS Number of parallel build jobs for flatpak-builder and modules [default: $JOBS]"
|
echo " -j, --jobs JOBS Number of parallel build jobs for flatpak-builder and modules [default: $JOBS]"
|
||||||
echo " -c, --cleanup Clean build directory before building"
|
echo " -c, --cleanup Clean build directory before building"
|
||||||
echo " -f, --force-clean Force clean build (disables caching)"
|
echo " -f, --force-clean Force clean build (disables caching)"
|
||||||
echo " --ccache Enable ccache for faster rebuilds (requires ccache in SDK)"
|
echo " --no-ccache Disable ccache (enabled by default)"
|
||||||
echo " --disable-rofiles-fuse Disable rofiles-fuse (workaround for FUSE issues)"
|
echo " --enable-rofiles-fuse Enable rofiles-fuse (disabled by default as workaround for FUSE issues)"
|
||||||
echo " --with-debuginfo Include debug info (slower builds, needed for Flathub)"
|
echo " --with-debuginfo Include debug info (slower builds, needed for Flathub)"
|
||||||
echo " --cache-dir DIR Flatpak builder cache directory [default: $CACHE_DIR]"
|
echo " --cache-dir DIR Flatpak builder cache directory [default: $CACHE_DIR]"
|
||||||
echo " -i, --install-runtime Install required Flatpak runtime and SDK"
|
echo " -i, --install-runtime Install required Flatpak runtime and SDK"
|
||||||
echo " -h, --help Show this help message"
|
echo " -h, --help Show this help message"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Examples:"
|
echo "Examples:"
|
||||||
echo " $0 # Build for current architecture with caching enabled"
|
echo " $0 # Build with defaults (ccache enabled, rofiles-fuse disabled)"
|
||||||
echo " $0 -f # Force clean build (no caching)"
|
echo " $0 -f # Force clean build (no caching)"
|
||||||
echo " $0 --ccache -j 8 # Use ccache and 8 parallel jobs for faster builds"
|
echo " $0 --no-ccache -j 8 # Disable ccache and use 8 parallel jobs"
|
||||||
echo " $0 -a x86_64 -c # Build for x86_64 and cleanup first"
|
echo " $0 -a x86_64 -c # Build for x86_64 and cleanup first"
|
||||||
echo " $0 -i -j 16 --ccache # Install runtime, build with 16 jobs and ccache"
|
echo " $0 -i -j 16 # Install runtime and build with 16 jobs"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Parse command line arguments
|
# Parse command line arguments
|
||||||
@@ -75,12 +75,12 @@ while [[ $# -gt 0 ]]; do
|
|||||||
FORCE_CLEAN=true
|
FORCE_CLEAN=true
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
--ccache)
|
--no-ccache)
|
||||||
ENABLE_CCACHE=true
|
ENABLE_CCACHE=false
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
--disable-rofiles-fuse)
|
--enable-rofiles-fuse)
|
||||||
DISABLE_ROFILES_FUSE=true
|
DISABLE_ROFILES_FUSE=false
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
--with-debuginfo)
|
--with-debuginfo)
|
||||||
@@ -249,9 +249,13 @@ if [[ "$CLEANUP" == true ]]; then
|
|||||||
echo -e "${BLUE}Note: Host build directories (deps/build, build) are preserved${NC}"
|
echo -e "${BLUE}Note: Host build directories (deps/build, build) are preserved${NC}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create build directory
|
# Create build directory and set up log file
|
||||||
mkdir -p "$BUILD_DIR"
|
mkdir -p "$BUILD_DIR"
|
||||||
rm -rf "$BUILD_DIR/build-dir"
|
rm -rf "$BUILD_DIR/build-dir"
|
||||||
|
LOG_FILE="$BUILD_DIR/build_flatpak_$(date +'%Y%m%d_%H%M%S').log"
|
||||||
|
exec > >(tee -a "$LOG_FILE") 2>&1
|
||||||
|
echo -e "${BLUE}Logging to: ${GREEN}$LOG_FILE${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
# Check if flatpak manifest exists
|
# Check if flatpak manifest exists
|
||||||
if [[ ! -f "./scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml" ]]; then
|
if [[ ! -f "./scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml" ]]; then
|
||||||
@@ -303,6 +307,13 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Add ccache if enabled
|
# Add ccache if enabled
|
||||||
|
# NOTE: flatpak-builder's --ccache only creates symlinks for gcc/g++, not
|
||||||
|
# clang/clang++. The actual ccache integration is done via
|
||||||
|
# CMAKE_C_COMPILER_LAUNCHER=ccache in the manifest's build-commands.
|
||||||
|
# --ccache is still needed because it:
|
||||||
|
# 1. Bind-mounts the ccache directory into the sandbox at /run/ccache
|
||||||
|
# 2. Sets CCACHE_DIR=/run/ccache for persistent caching
|
||||||
|
# 3. Makes /usr/bin/ccache available in the build environment
|
||||||
if [[ "$ENABLE_CCACHE" == true ]]; then
|
if [[ "$ENABLE_CCACHE" == true ]]; then
|
||||||
BUILDER_ARGS+=(--ccache)
|
BUILDER_ARGS+=(--ccache)
|
||||||
echo -e "${GREEN}Using ccache for compiler caching${NC}"
|
echo -e "${GREEN}Using ccache for compiler caching${NC}"
|
||||||
@@ -318,9 +329,12 @@ fi
|
|||||||
MANIFEST="scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml"
|
MANIFEST="scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml"
|
||||||
if [[ "$NO_DEBUGINFO" == true ]]; then
|
if [[ "$NO_DEBUGINFO" == true ]]; then
|
||||||
MANIFEST="scripts/flatpak/io.github.orcaslicer.OrcaSlicer.no-debug.yml"
|
MANIFEST="scripts/flatpak/io.github.orcaslicer.OrcaSlicer.no-debug.yml"
|
||||||
sed '/^build-options:/a\ no-debuginfo: true\n strip: true' \
|
sed '/^build-options:/a\ no-debuginfo: true\n strip: true\n cflags: "-g0"\n cxxflags: "-g0"' \
|
||||||
scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml > "$MANIFEST"
|
scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml > "$MANIFEST"
|
||||||
echo -e "${YELLOW}Debug info disabled (using temp manifest)${NC}"
|
# Preserve original manifest's mtime so flatpak-builder computes a
|
||||||
|
# deterministic SOURCE_DATE_EPOCH and module cache keys stay stable.
|
||||||
|
touch -r scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml "$MANIFEST"
|
||||||
|
echo -e "${YELLOW}Debug info disabled (using temp manifest with -g0)${NC}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! flatpak-builder \
|
if ! flatpak-builder \
|
||||||
@@ -328,7 +342,7 @@ if ! flatpak-builder \
|
|||||||
"$BUILD_DIR/build-dir" \
|
"$BUILD_DIR/build-dir" \
|
||||||
"$MANIFEST"; then
|
"$MANIFEST"; then
|
||||||
echo -e "${RED}Error: flatpak-builder failed${NC}"
|
echo -e "${RED}Error: flatpak-builder failed${NC}"
|
||||||
echo -e "${YELLOW}Check the build log above for details${NC}"
|
echo -e "${YELLOW}Check the build log for details: $LOG_FILE${NC}"
|
||||||
rm -f "scripts/flatpak/io.github.orcaslicer.OrcaSlicer.no-debug.yml"
|
rm -f "scripts/flatpak/io.github.orcaslicer.OrcaSlicer.no-debug.yml"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -336,6 +350,15 @@ fi
|
|||||||
# Clean up temp manifest
|
# Clean up temp manifest
|
||||||
rm -f "scripts/flatpak/io.github.orcaslicer.OrcaSlicer.no-debug.yml"
|
rm -f "scripts/flatpak/io.github.orcaslicer.OrcaSlicer.no-debug.yml"
|
||||||
|
|
||||||
|
# Show ccache statistics if ccache was enabled
|
||||||
|
if [[ "$ENABLE_CCACHE" == true ]]; then
|
||||||
|
echo -e "${BLUE}=== ccache statistics ===${NC}"
|
||||||
|
CCACHE_DIR="$CACHE_DIR/ccache" ccache -sv 2>/dev/null || \
|
||||||
|
CCACHE_DIR="$CACHE_DIR/ccache" ccache -s 2>/dev/null || \
|
||||||
|
echo -e "${YELLOW}Could not retrieve ccache stats${NC}"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
# Create bundle
|
# Create bundle
|
||||||
echo -e "${YELLOW}Creating Flatpak bundle...${NC}"
|
echo -e "${YELLOW}Creating Flatpak bundle...${NC}"
|
||||||
if ! flatpak build-bundle \
|
if ! flatpak build-bundle \
|
||||||
@@ -352,6 +375,7 @@ echo ""
|
|||||||
echo -e "${GREEN}✓ Flatpak build completed successfully!${NC}"
|
echo -e "${GREEN}✓ Flatpak build completed successfully!${NC}"
|
||||||
echo -e "Bundle created: ${GREEN}$BUNDLE_NAME${NC}"
|
echo -e "Bundle created: ${GREEN}$BUNDLE_NAME${NC}"
|
||||||
echo -e "Size: ${GREEN}$(du -h "$BUNDLE_NAME" | cut -f1)${NC}"
|
echo -e "Size: ${GREEN}$(du -h "$BUNDLE_NAME" | cut -f1)${NC}"
|
||||||
|
echo -e "Build log: ${GREEN}$LOG_FILE${NC}"
|
||||||
if [[ "$FORCE_CLEAN" != true ]]; then
|
if [[ "$FORCE_CLEAN" != true ]]; then
|
||||||
echo -e "Build cache: ${GREEN}$CACHE_DIR${NC} (preserved for faster future builds)"
|
echo -e "Build cache: ${GREEN}$CACHE_DIR${NC} (preserved for faster future builds)"
|
||||||
fi
|
fi
|
||||||
|
|||||||
4
deps/CMakeLists.txt
vendored
4
deps/CMakeLists.txt
vendored
@@ -188,6 +188,8 @@ if (NOT IS_CROSS_COMPILE OR NOT APPLE)
|
|||||||
-DCMAKE_DEBUG_POSTFIX:STRING=d
|
-DCMAKE_DEBUG_POSTFIX:STRING=d
|
||||||
-DCMAKE_C_COMPILER:STRING=${CMAKE_C_COMPILER}
|
-DCMAKE_C_COMPILER:STRING=${CMAKE_C_COMPILER}
|
||||||
-DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER}
|
-DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER}
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER:STRING=${CMAKE_C_COMPILER_LAUNCHER}
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER:STRING=${CMAKE_CXX_COMPILER_LAUNCHER}
|
||||||
-DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE}
|
-DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE}
|
||||||
-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS}
|
-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS}
|
||||||
-DCMAKE_SHARED_LINKER_FLAGS:STRING=${CMAKE_SHARED_LINKER_FLAGS}
|
-DCMAKE_SHARED_LINKER_FLAGS:STRING=${CMAKE_SHARED_LINKER_FLAGS}
|
||||||
@@ -232,6 +234,8 @@ else()
|
|||||||
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
|
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
|
||||||
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}
|
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}
|
||||||
-DCMAKE_PREFIX_PATH:STRING=${DESTDIR}
|
-DCMAKE_PREFIX_PATH:STRING=${DESTDIR}
|
||||||
|
-DCMAKE_C_COMPILER_LAUNCHER:STRING=${CMAKE_C_COMPILER_LAUNCHER}
|
||||||
|
-DCMAKE_CXX_COMPILER_LAUNCHER:STRING=${CMAKE_CXX_COMPILER_LAUNCHER}
|
||||||
-DBUILD_SHARED_LIBS:BOOL=OFF
|
-DBUILD_SHARED_LIBS:BOOL=OFF
|
||||||
${_cmake_osx_arch}
|
${_cmake_osx_arch}
|
||||||
"${_configs_line}"
|
"${_configs_line}"
|
||||||
|
|||||||
@@ -14,6 +14,9 @@ build-options:
|
|||||||
CC: clang
|
CC: clang
|
||||||
CXX: clang++
|
CXX: clang++
|
||||||
LDFLAGS: "-fuse-ld=lld"
|
LDFLAGS: "-fuse-ld=lld"
|
||||||
|
CCACHE_SLOPPINESS: "pch_defines,time_macros,include_file_mtime,include_file_ctime"
|
||||||
|
CCACHE_BASEDIR: "/run/build"
|
||||||
|
CCACHE_NOHASHDIR: "1"
|
||||||
finish-args:
|
finish-args:
|
||||||
- --share=ipc
|
- --share=ipc
|
||||||
- --socket=x11
|
- --socket=x11
|
||||||
@@ -130,16 +133,26 @@ modules:
|
|||||||
BUILD_DIR: deps/build_flatpak
|
BUILD_DIR: deps/build_flatpak
|
||||||
build-commands:
|
build-commands:
|
||||||
- |
|
- |
|
||||||
|
CCACHE_LAUNCHER=""
|
||||||
|
if command -v ccache >/dev/null 2>&1; then
|
||||||
|
CCACHE_LAUNCHER="-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache"
|
||||||
|
fi
|
||||||
cmake -S deps -B $BUILD_DIR \
|
cmake -S deps -B $BUILD_DIR \
|
||||||
-DFLATPAK=ON \
|
-DFLATPAK=ON \
|
||||||
-DDEP_DOWNLOAD_DIR=/run/build/orca_deps/external-packages \
|
-DDEP_DOWNLOAD_DIR=/run/build/orca_deps/external-packages \
|
||||||
-DCMAKE_PREFIX_PATH=/app \
|
-DCMAKE_PREFIX_PATH=/app \
|
||||||
-DDESTDIR=/app \
|
-DDESTDIR=/app \
|
||||||
-DCMAKE_INSTALL_PREFIX=/app \
|
-DCMAKE_INSTALL_PREFIX=/app \
|
||||||
|
$CCACHE_LAUNCHER \
|
||||||
-DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \
|
-DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \
|
||||||
-DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=lld" \
|
-DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=lld" \
|
||||||
-DCMAKE_MODULE_LINKER_FLAGS="-fuse-ld=lld"
|
-DCMAKE_MODULE_LINKER_FLAGS="-fuse-ld=lld"
|
||||||
- cmake --build $BUILD_DIR --parallel
|
- cmake --build $BUILD_DIR --parallel
|
||||||
|
- |
|
||||||
|
if command -v ccache >/dev/null 2>&1; then
|
||||||
|
echo "=== ccache statistics (after orca_deps) ==="
|
||||||
|
ccache -sv || ccache -s || true
|
||||||
|
fi
|
||||||
- rm -rf /run/build/orca_deps/external-packages
|
- rm -rf /run/build/orca_deps/external-packages
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
@@ -306,17 +319,28 @@ modules:
|
|||||||
buildsystem: simple
|
buildsystem: simple
|
||||||
build-commands:
|
build-commands:
|
||||||
- |
|
- |
|
||||||
|
CCACHE_LAUNCHER=""
|
||||||
|
if command -v ccache >/dev/null 2>&1; then
|
||||||
|
CCACHE_LAUNCHER="-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache"
|
||||||
|
fi
|
||||||
cmake . -B build_flatpak \
|
cmake . -B build_flatpak \
|
||||||
-DFLATPAK=ON \
|
-DFLATPAK=ON \
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
-DCMAKE_PREFIX_PATH=/app \
|
-DCMAKE_PREFIX_PATH=/app \
|
||||||
-DCMAKE_INSTALL_PREFIX=/app \
|
-DCMAKE_INSTALL_PREFIX=/app \
|
||||||
|
$CCACHE_LAUNCHER \
|
||||||
|
-DSLIC3R_PCH=OFF \
|
||||||
-DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \
|
-DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \
|
||||||
-DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=lld" \
|
-DCMAKE_SHARED_LINKER_FLAGS="-fuse-ld=lld" \
|
||||||
-DCMAKE_MODULE_LINKER_FLAGS="-fuse-ld=lld"
|
-DCMAKE_MODULE_LINKER_FLAGS="-fuse-ld=lld"
|
||||||
- cmake --build build_flatpak --target OrcaSlicer -j$FLATPAK_BUILDER_N_JOBS
|
- cmake --build build_flatpak --target OrcaSlicer -j$FLATPAK_BUILDER_N_JOBS
|
||||||
- ./scripts/run_gettext.sh
|
- ./scripts/run_gettext.sh
|
||||||
- cmake --build build_flatpak --target install -j$FLATPAK_BUILDER_N_JOBS
|
- cmake --build build_flatpak --target install -j$FLATPAK_BUILDER_N_JOBS
|
||||||
|
- |
|
||||||
|
if command -v ccache >/dev/null 2>&1; then
|
||||||
|
echo "=== ccache statistics (after OrcaSlicer) ==="
|
||||||
|
ccache -sv || ccache -s || true
|
||||||
|
fi
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
- /include
|
- /include
|
||||||
|
|||||||
Reference in New Issue
Block a user