ENH: add the linux build action to github

This commit is contained in:
lane.wei 2023-01-31 21:11:05 +08:00 committed by Lane.Wei
parent 5a42590d73
commit c0791f0fdd
3 changed files with 64 additions and 2 deletions

44
.github/workflows/build_linux.yml vendored Normal file
View file

@ -0,0 +1,44 @@
name: Build Linux
on: [push, pull_request]
jobs:
appimage-builder:
name: Linux AppImage Build
runs-on: ubuntu-20.04
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 deps
id: cache_deps
uses: actions/cache@v3
env:
cache-name: ${{ runner.os }}-cache-bambustudio_deps_x64
with:
path: ${{ github.workspace }}/deps/build/destdir
key: build-${{ env.cache-name }}
- if: ${{ steps.cache_deps.outputs.cache-hit != 'true' }}
name: Build deps
working-directory: ${{ github.workspace }}
continue-on-error: true
run: ./BuildLinux.sh -dsr
- name: Build Studio
shell: bash
run: ./BuildLinux.sh -ir
- uses: actions/upload-artifact@v3
with:
name: BambuStudio_Linux
path: './build/BambuStudio_ubu64.AppImage'

View file

@ -28,7 +28,7 @@ function check_available_memory_and_disk() {
} }
unset name unset name
while getopts ":dsiuhgb" opt; do while getopts ":dsiuhgbr" opt; do
case ${opt} in case ${opt} in
u ) u )
UPDATE_LIB="1" UPDATE_LIB="1"
@ -48,6 +48,9 @@ while getopts ":dsiuhgb" opt; do
g ) g )
FOUND_GTK3="" FOUND_GTK3=""
;; ;;
r )
SKIP_RAM_CHECK="1"
;;
h ) echo "Usage: ./BuildLinux.sh [-i][-u][-d][-s][-b][-g]" h ) echo "Usage: ./BuildLinux.sh [-i][-u][-d][-s][-b][-g]"
echo " -i: Generate appimage (optional)" echo " -i: Generate appimage (optional)"
echo " -g: force gtk2 build" echo " -g: force gtk2 build"
@ -55,6 +58,7 @@ while getopts ":dsiuhgb" opt; do
echo " -d: build deps (optional)" echo " -d: build deps (optional)"
echo " -s: build bambu-studio (optional)" echo " -s: build bambu-studio (optional)"
echo " -u: only update clock & dependency packets (optional and need sudo)" 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 "For a first use, you want to 'sudo ./BuildLinux.sh -u'"
echo " and then './BuildLinux.sh -dsi'" echo " and then './BuildLinux.sh -dsi'"
exit 0 exit 0
@ -71,6 +75,7 @@ then
echo " -d: build deps (optional)" echo " -d: build deps (optional)"
echo " -s: build bambu-studio (optional)" echo " -s: build bambu-studio (optional)"
echo " -u: only update clock & dependency packets (optional and need sudo)" 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 "For a first use, you want to 'sudo ./BuildLinux.sh -u'"
echo " and then './BuildLinux.sh -dsi'" echo " and then './BuildLinux.sh -dsi'"
exit 0 exit 0
@ -153,7 +158,10 @@ then
mkdir deps/build mkdir deps/build
fi fi
if ! [[ -n "$SKIP_RAM_CHECK" ]]
then
check_available_memory_and_disk check_available_memory_and_disk
fi
if [[ -n "$BUILD_DEPS" ]] if [[ -n "$BUILD_DEPS" ]]
then then

View file

@ -7,6 +7,10 @@ APP_IMAGE="@SLIC3R_APP_KEY@_ubu64.AppImage"
wget ${APPIMAGETOOLURL} -O ../appimagetool.AppImage wget ${APPIMAGETOOLURL} -O ../appimagetool.AppImage
chmod +x ../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@ sed -i -e 's#/usr#././#g' bin/@SLIC3R_APP_CMD@
mv @SLIC3R_APP_CMD@ AppRun mv @SLIC3R_APP_CMD@ AppRun
chmod +x AppRun chmod +x AppRun
@ -25,6 +29,12 @@ MimeType=model/stl;application/vnd.ms-3mfdocument;application/prs.wavefront-obj;
EOF 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} mv @SLIC3R_APP_KEY@-x86_64.AppImage ${APP_IMAGE}
chmod +x ${APP_IMAGE} chmod +x ${APP_IMAGE}