diff --git a/.github/workflows/appimage.yml b/.github/workflows/appimage.yml new file mode 100644 index 0000000000..61032739ed --- /dev/null +++ b/.github/workflows/appimage.yml @@ -0,0 +1,32 @@ +name: BambuStudio-SoftFever + +on: [push, pull_request] + +jobs: + appimage-builder: + name: Linux AppImage Build + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install cmake libgl1-mesa-dev libgtk-3-dev libxkbcommon-dev libunwind-dev libfuse2 -y + - name: Install dependencies from BuildLinux.sh + shell: bash + run: sudo ./BuildLinux.sh -ur + - name: Fix permissions + shell: bash + run: sudo chown $USER -R ./ + - name: Build Bambu Studio dependencies using BuildLinux.sh + shell: bash + run: ./BuildLinux.sh -dsr + - name: Build Bambu Studio AppImage using BuildLinux.sh + shell: bash + run: ./BuildLinux.sh -ir + - uses: actions/upload-artifact@v3 + with: + name: AppImage + path: './build/BambuStudio_ubu64.AppImage' diff --git a/BuildLinux.sh b/BuildLinux.sh index f862d4cc0c..3fb83005a2 100755 --- a/BuildLinux.sh +++ b/BuildLinux.sh @@ -28,7 +28,7 @@ function check_available_memory_and_disk() { } unset name -while getopts ":dsiuhgb" opt; do +while getopts ":dsiuhgbr" opt; do case ${opt} in u ) UPDATE_LIB="1" @@ -48,6 +48,9 @@ while getopts ":dsiuhgb" opt; do g ) FOUND_GTK3="" ;; + r ) + SKIP_RAM_CHECK="1" + ;; h ) echo "Usage: ./BuildLinux.sh [-i][-u][-d][-s][-b][-g]" echo " -i: Generate appimage (optional)" echo " -g: force gtk2 build" @@ -55,6 +58,7 @@ while getopts ":dsiuhgb" opt; do echo " -d: build deps (optional)" echo " -s: build bambu-studio (optional)" echo " -u: only update clock & dependency packets (optional and need sudo)" + echo " -r: skip free ram check (low ram compiling)" echo "For a first use, you want to 'sudo ./BuildLinux.sh -u'" echo " and then './BuildLinux.sh -dsi'" exit 0 @@ -71,6 +75,7 @@ then echo " -d: build deps (optional)" echo " -s: build bambu-studio (optional)" echo " -u: only update clock & dependency packets (optional and need sudo)" + echo " -r: skip free ram check (low ram compiling)" echo "For a first use, you want to 'sudo ./BuildLinux.sh -u'" echo " and then './BuildLinux.sh -dsi'" exit 0 @@ -153,7 +158,10 @@ then mkdir deps/build fi +if ! [[ -n "$SKIP_RAM_CHECK" ]] +then check_available_memory_and_disk +fi if [[ -n "$BUILD_DEPS" ]] then diff --git a/deps/wxWidgets/wxWidgets.cmake b/deps/wxWidgets/wxWidgets.cmake index 2bdffba590..ebfcf3aed1 100644 --- a/deps/wxWidgets/wxWidgets.cmake +++ b/deps/wxWidgets/wxWidgets.cmake @@ -1,6 +1,7 @@ set(_wx_git_tag v3.1.5) set(_wx_toolkit "") +set(_wx_glcanvas_egl "") if(CMAKE_SYSTEM_NAME STREQUAL "Linux") set(_gtk_ver 2) if (DEP_WX_GTK3) @@ -8,6 +9,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux") endif () set(_wx_toolkit "-DwxBUILD_TOOLKIT=gtk${_gtk_ver}") set(_wx_private_font "-DwxUSE_PRIVATE_FONTS=1") + set(_wx_glcanvas_egl "-DwxUSE_GLCANVAS_EGL=OFF") else () set(_wx_private_font "-DwxUSE_PRIVATE_FONTS=0") endif() @@ -49,6 +51,7 @@ bambustudio_add_cmake_project(wxWidgets -DwxUSE_LIBJPEG=sys -DwxUSE_LIBTIFF=sys -DwxUSE_EXPAT=sys + ${_wx_glcanvas_egl} ) if (MSVC) diff --git a/src/platform/unix/build_appimage.sh.in b/src/platform/unix/build_appimage.sh.in index 0e12d85f78..8e67e8617e 100644 --- a/src/platform/unix/build_appimage.sh.in +++ b/src/platform/unix/build_appimage.sh.in @@ -7,6 +7,10 @@ APP_IMAGE="@SLIC3R_APP_KEY@_ubu64.AppImage" wget ${APPIMAGETOOLURL} -O ../appimagetool.AppImage chmod +x ../appimagetool.AppImage +if [ -f /.dockerenv ] ; then # Only run if inside of a Docker Container +sed '0,/AI\x02/{s|AI\x02|\x00\x00\x00|}' -i ../appimagetool.AppImage +fi + sed -i -e 's#/usr#././#g' bin/@SLIC3R_APP_CMD@ mv @SLIC3R_APP_CMD@ AppRun chmod +x AppRun @@ -25,6 +29,11 @@ MimeType=model/stl;application/vnd.ms-3mfdocument;application/prs.wavefront-obj; EOF -../appimagetool.AppImage . $([ ! -z "${container}" ] && echo '--appimage-extract-and-run') +if [ -f /.dockerenv ] ; then # Only run if inside of a Docker Container + ../appimagetool.AppImage --appimage-extract-and-run . $([ ! -z "${container}" ] && echo '--appimage-extract-and-run') +else + ../appimagetool.AppImage . $([ ! -z "${container}" ] && echo '--appimage-extract-and-run') +fi + mv @SLIC3R_APP_KEY@-x86_64.AppImage ${APP_IMAGE} chmod +x ${APP_IMAGE}