mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-19 11:23:42 +00:00
Shellcheck everything (#10730)
* Shellcheck all shell scripts * Implement Shellcheck's recommendations * Shellcheck the distribution-specific files * Include the distro scripts to trigger action * Fix array usage (hopefully) * Use single-quote string TIL: single quote string in yaml treats everything as literal, but double quote allows backslash escaping. * Make all cmake commands use set+-x dance and fix macos getopts line Make Claude happy getopts has colon after a command which takes an argument --------- Co-authored-by: SoftFever <softfeverever@gmail.com>
This commit is contained in:
14
.github/workflows/shellcheck.yml
vendored
14
.github/workflows/shellcheck.yml
vendored
@@ -1,10 +1,14 @@
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
paths:
|
paths:
|
||||||
- build_linux.sh
|
- '**.sh'
|
||||||
|
- 'scripts/linux.d/*'
|
||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
paths:
|
||||||
- build_linux.sh
|
- '**.sh'
|
||||||
|
- 'scripts/linux.d/*'
|
||||||
|
schedule:
|
||||||
|
- cron: '55 7 * * *' # run once a day near midnight US Pacific time
|
||||||
workflow_dispatch: # allows for manual dispatch
|
workflow_dispatch: # allows for manual dispatch
|
||||||
|
|
||||||
name: "Shellcheck"
|
name: "Shellcheck"
|
||||||
@@ -33,6 +37,8 @@ jobs:
|
|||||||
mv ~/shellcheck-"${INPUT_VERSION}"/shellcheck ~/shellcheck
|
mv ~/shellcheck-"${INPUT_VERSION}"/shellcheck ~/shellcheck
|
||||||
|
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v5
|
||||||
|
with:
|
||||||
|
fetch-depth: 1
|
||||||
|
|
||||||
- name: Shellcheck build_linux.sh
|
- name: Shellcheck scripts
|
||||||
run: ~/shellcheck -e SC1090 build_linux.sh
|
run: 'find . -not -name \*.md \( -path ./scripts/linux.d/\* -o -name \*.sh \) -print0 | xargs -0 ~/shellcheck'
|
||||||
|
|||||||
@@ -133,6 +133,7 @@ if [ ! -f "./scripts/linux.d/${DISTRIBUTION}" ] ; then
|
|||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
echo "resolving system dependencies for distribution \"${DISTRIBUTION}\" ..."
|
echo "resolving system dependencies for distribution \"${DISTRIBUTION}\" ..."
|
||||||
|
# shellcheck source=/dev/null
|
||||||
source "./scripts/linux.d/${DISTRIBUTION}"
|
source "./scripts/linux.d/${DISTRIBUTION}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -155,17 +156,17 @@ if [[ -z "${SKIP_RAM_CHECK}" ]] ; then
|
|||||||
check_available_memory_and_disk
|
check_available_memory_and_disk
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export CMAKE_C_CXX_COMPILER_CLANG=""
|
export CMAKE_C_CXX_COMPILER_CLANG=()
|
||||||
if [[ -n "${USE_CLANG}" ]] ; then
|
if [[ -n "${USE_CLANG}" ]] ; then
|
||||||
export CMAKE_C_CXX_COMPILER_CLANG="-DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++"
|
export CMAKE_C_CXX_COMPILER_CLANG=(-DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Configure use of ld.lld as the linker when requested
|
# Configure use of ld.lld as the linker when requested
|
||||||
export CMAKE_LLD_LINKER_ARGS=""
|
export CMAKE_LLD_LINKER_ARGS=()
|
||||||
if [[ -n "${USE_LLD}" ]] ; then
|
if [[ -n "${USE_LLD}" ]] ; then
|
||||||
if command -v ld.lld >/dev/null 2>&1 ; then
|
if command -v ld.lld >/dev/null 2>&1 ; then
|
||||||
LLD_BIN=$(command -v ld.lld)
|
LLD_BIN=$(command -v ld.lld)
|
||||||
export CMAKE_LLD_LINKER_ARGS="-DCMAKE_LINKER=${LLD_BIN} -DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld -DCMAKE_SHARED_LINKER_FLAGS=-fuse-ld=lld -DCMAKE_MODULE_LINKER_FLAGS=-fuse-ld=lld"
|
export CMAKE_LLD_LINKER_ARGS=(-DCMAKE_LINKER="${LLD_BIN}" -DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld -DCMAKE_SHARED_LINKER_FLAGS=-fuse-ld=lld -DCMAKE_MODULE_LINKER_FLAGS=-fuse-ld=lld)
|
||||||
else
|
else
|
||||||
echo "Error: ld.lld not found. Please install the 'lld' package (e.g., sudo apt install lld) or omit -L."
|
echo "Error: ld.lld not found. Please install the 'lld' package (e.g., sudo apt install lld) or omit -L."
|
||||||
exit 1
|
exit 1
|
||||||
@@ -174,7 +175,8 @@ fi
|
|||||||
|
|
||||||
if [[ -n "${BUILD_DEPS}" ]] ; then
|
if [[ -n "${BUILD_DEPS}" ]] ; then
|
||||||
echo "Configuring dependencies..."
|
echo "Configuring dependencies..."
|
||||||
BUILD_ARGS="${DEPS_EXTRA_BUILD_ARGS} -DDEP_WX_GTK3=ON"
|
read -r -a BUILD_ARGS <<< "${DEPS_EXTRA_BUILD_ARGS}"
|
||||||
|
BUILD_ARGS+=(-DDEP_WX_GTK3=ON)
|
||||||
if [[ -n "${CLEAN_BUILD}" ]]
|
if [[ -n "${CLEAN_BUILD}" ]]
|
||||||
then
|
then
|
||||||
rm -fr deps/build
|
rm -fr deps/build
|
||||||
@@ -183,17 +185,26 @@ if [[ -n "${BUILD_DEPS}" ]] ; then
|
|||||||
if [[ -n "${BUILD_DEBUG}" ]] ; then
|
if [[ -n "${BUILD_DEBUG}" ]] ; then
|
||||||
# build deps with debug and release else cmake will not find required sources
|
# build deps with debug and release else cmake will not find required sources
|
||||||
mkdir -p deps/build/release
|
mkdir -p deps/build/release
|
||||||
CMAKE_CMD="cmake ${CMAKE_C_CXX_COMPILER_CLANG} ${CMAKE_LLD_LINKER_ARGS} -S deps -B deps/build/release -DSLIC3R_PCH=${SLIC3R_PRECOMPILED_HEADERS} -G Ninja -DDESTDIR=${SCRIPT_PATH}/deps/build/destdir -DDEP_DOWNLOAD_DIR=${SCRIPT_PATH}/deps/DL_CACHE ${COLORED_OUTPUT} ${BUILD_ARGS}"
|
set -x
|
||||||
echo "${CMAKE_CMD}"
|
cmake -S deps -B deps/build/release "${CMAKE_C_CXX_COMPILER_CLANG[@]}" "${CMAKE_LLD_LINKER_ARGS[@]}" -G Ninja \
|
||||||
${CMAKE_CMD}
|
-DSLIC3R_PCH="${SLIC3R_PRECOMPILED_HEADERS}" \
|
||||||
|
-DDESTDIR="${SCRIPT_PATH}/deps/build/destdir" \
|
||||||
|
-DDEP_DOWNLOAD_DIR="${SCRIPT_PATH}/deps/DL_CACHE" \
|
||||||
|
"${COLORED_OUTPUT}" \
|
||||||
|
"${BUILD_ARGS[@]}"
|
||||||
|
set +x
|
||||||
cmake --build deps/build/release
|
cmake --build deps/build/release
|
||||||
BUILD_ARGS="${BUILD_ARGS} -DCMAKE_BUILD_TYPE=Debug"
|
BUILD_ARGS+=(-DCMAKE_BUILD_TYPE=Debug)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# If this isn't in one quote, then empty variables can add two single quotes and mess up argument parsing for cmake.
|
set -x
|
||||||
CMAKE_CMD="cmake -S deps -B deps/build ${CMAKE_C_CXX_COMPILER_CLANG} ${CMAKE_LLD_LINKER_ARGS} -G Ninja ${COLORED_OUTPUT} ${BUILD_ARGS}"
|
cmake -S deps -B deps/build "${CMAKE_C_CXX_COMPILER_CLANG[@]}" "${CMAKE_LLD_LINKER_ARGS[@]}" -G Ninja \
|
||||||
echo "${CMAKE_CMD}"
|
-DSLIC3R_PCH="${SLIC3R_PRECOMPILED_HEADERS}" \
|
||||||
${CMAKE_CMD}
|
-DDESTDIR="${SCRIPT_PATH}/deps/build/destdir" \
|
||||||
|
-DDEP_DOWNLOAD_DIR="${SCRIPT_PATH}/deps/DL_CACHE" \
|
||||||
|
"${COLORED_OUTPUT}" \
|
||||||
|
"${BUILD_ARGS[@]}"
|
||||||
|
set +x
|
||||||
cmake --build deps/build
|
cmake --build deps/build
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -202,29 +213,29 @@ if [[ -n "${BUILD_ORCA}" ]] ; then
|
|||||||
if [[ -n "${CLEAN_BUILD}" ]] ; then
|
if [[ -n "${CLEAN_BUILD}" ]] ; then
|
||||||
rm -fr build
|
rm -fr build
|
||||||
fi
|
fi
|
||||||
BUILD_ARGS="${ORCA_EXTRA_BUILD_ARGS}"
|
read -r -a BUILD_ARGS <<< "${ORCA_EXTRA_BUILD_ARGS}"
|
||||||
if [[ -n "${FOUND_GTK3_DEV}" ]] ; then
|
if [[ -n "${FOUND_GTK3_DEV}" ]] ; then
|
||||||
BUILD_ARGS="${BUILD_ARGS} -DSLIC3R_GTK=3"
|
BUILD_ARGS+=(-DSLIC3R_GTK=3)
|
||||||
fi
|
fi
|
||||||
if [[ -n "${BUILD_DEBUG}" ]] ; then
|
if [[ -n "${BUILD_DEBUG}" ]] ; then
|
||||||
BUILD_ARGS="${BUILD_ARGS} -DCMAKE_BUILD_TYPE=Debug -DBBL_INTERNAL_TESTING=1"
|
BUILD_ARGS+=(-DCMAKE_BUILD_TYPE=Debug -DBBL_INTERNAL_TESTING=1)
|
||||||
else
|
else
|
||||||
BUILD_ARGS="${BUILD_ARGS} -DBBL_RELEASE_TO_PUBLIC=1 -DBBL_INTERNAL_TESTING=0"
|
BUILD_ARGS+=(-DBBL_RELEASE_TO_PUBLIC=1 -DBBL_INTERNAL_TESTING=0)
|
||||||
fi
|
fi
|
||||||
if [[ -n "${BUILD_TESTS}" ]] ; then
|
if [[ -n "${BUILD_TESTS}" ]] ; then
|
||||||
BUILD_ARGS="${BUILD_ARGS} -DBUILD_TESTS=ON"
|
BUILD_ARGS+=(-DBUILD_TESTS=ON)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Configuring OrcaSlicer..."
|
echo "Configuring OrcaSlicer..."
|
||||||
cmake -S . -B build ${CMAKE_C_CXX_COMPILER_CLANG} ${CMAKE_LLD_LINKER_ARGS} -G "Ninja Multi-Config" \
|
set -x
|
||||||
-DSLIC3R_PCH=${SLIC3R_PRECOMPILED_HEADERS} \
|
cmake -S . -B build "${CMAKE_C_CXX_COMPILER_CLANG[@]}" "${CMAKE_LLD_LINKER_ARGS[@]}" -G "Ninja Multi-Config" \
|
||||||
-DCMAKE_PREFIX_PATH=${SCRIPT_PATH}/deps/build/destdir/usr/local \
|
-DSLIC3R_PCH="${SLIC3R_PRECOMPILED_HEADERS}" \
|
||||||
-DSLIC3R_STATIC=1 \
|
-DCMAKE_PREFIX_PATH="${SCRIPT_PATH}/deps/build/destdir/usr/local" \
|
||||||
-DORCA_TOOLS=ON \
|
-DSLIC3R_STATIC=1 \
|
||||||
${COLORED_OUTPUT} \
|
-DORCA_TOOLS=ON \
|
||||||
${BUILD_ARGS}
|
"${COLORED_OUTPUT}" \
|
||||||
echo "${CMAKE_CMD}"
|
"${BUILD_ARGS[@]}"
|
||||||
${CMAKE_CMD}
|
set +x
|
||||||
echo "done"
|
echo "done"
|
||||||
echo "Building OrcaSlicer ..."
|
echo "Building OrcaSlicer ..."
|
||||||
if [[ -n "${BUILD_DEBUG}" ]] ; then
|
if [[ -n "${BUILD_DEBUG}" ]] ; then
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
set -e
|
set -e
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
|
|
||||||
while getopts ":dpa:snt:xbc:h" opt; do
|
while getopts ":dpa:snt:xbc:1h" opt; do
|
||||||
case "${opt}" in
|
case "${opt}" in
|
||||||
d )
|
d )
|
||||||
export BUILD_TARGET="deps"
|
export BUILD_TARGET="deps"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
SCRIPT_DIR=$(cd -P -- "$(dirname -- "$0")" && printf '%s\n' "$(pwd -P)")
|
SCRIPT_DIR=$(cd -P -- "$(dirname -- "$0")" && printf '%s\n' "$(pwd -P)")
|
||||||
PROJECT_ROOT=$(dirname "$SCRIPT_DIR")
|
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
|
||||||
|
|
||||||
set -x
|
set -x
|
||||||
# Wishlist hint: For developers, creating a Docker Compose
|
# Wishlist hint: For developers, creating a Docker Compose
|
||||||
@@ -9,9 +9,9 @@ set -x
|
|||||||
# the simplicity of a single Docker image and a one-time compilation
|
# the simplicity of a single Docker image and a one-time compilation
|
||||||
# seems better.
|
# seems better.
|
||||||
docker build -t orcaslicer \
|
docker build -t orcaslicer \
|
||||||
--build-arg USER=$USER \
|
--build-arg USER="$USER" \
|
||||||
--build-arg UID=$(id -u) \
|
--build-arg UID="$(id -u)" \
|
||||||
--build-arg GID=$(id -g) \
|
--build-arg GID="$(id -g)" \
|
||||||
--build-arg NCORES=$NCORES \
|
--build-arg NCORES="$NCORES" \
|
||||||
-f "$SCRIPT_DIR/Dockerfile" \
|
-f "$SCRIPT_DIR/Dockerfile" \
|
||||||
$PROJECT_ROOT
|
"$PROJECT_ROOT"
|
||||||
|
|||||||
@@ -13,11 +13,11 @@ docker run \
|
|||||||
`# Some X installs will not have permissions to talk to sockets for shared memory` \
|
`# Some X installs will not have permissions to talk to sockets for shared memory` \
|
||||||
--ipc host \
|
--ipc host \
|
||||||
`# Run as your workstations username to keep permissions the same` \
|
`# Run as your workstations username to keep permissions the same` \
|
||||||
-u $USER \
|
-u "$USER" \
|
||||||
`# Bind mount your home directory into the container for loading/saving files` \
|
`# Bind mount your home directory into the container for loading/saving files` \
|
||||||
-v $HOME:/home/$USER \
|
-v "$HOME:/home/$USER" \
|
||||||
`# Pass the X display number to the container` \
|
`# Pass the X display number to the container` \
|
||||||
-e DISPLAY=$DISPLAY \
|
-e DISPLAY="$DISPLAY" \
|
||||||
`# It seems that libGL and dbus things need privileged mode` \
|
`# It seems that libGL and dbus things need privileged mode` \
|
||||||
--privileged=true \
|
--privileged=true \
|
||||||
`# Attach tty for running orca slicer with command line things` \
|
`# Attach tty for running orca slicer with command line things` \
|
||||||
@@ -25,5 +25,4 @@ docker run \
|
|||||||
`# Clean up after yourself` \
|
`# Clean up after yourself` \
|
||||||
--rm \
|
--rm \
|
||||||
`# Pass all parameters from this script to the orca slicer ENTRYPOINT binary` \
|
`# Pass all parameters from this script to the orca slicer ENTRYPOINT binary` \
|
||||||
orcaslicer $*
|
orcaslicer "$@"
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
|
#!/bin/bash
|
||||||
# these are the Arch Linux specific build functions
|
# these are the Arch Linux specific build functions
|
||||||
|
export FOUND_GTK3
|
||||||
FOUND_GTK3=$(pacman -Q gtk3)
|
FOUND_GTK3=$(pacman -Q gtk3)
|
||||||
|
|
||||||
# Addtional Dev packages for OrcaSlicer
|
# Addtional Dev packages for OrcaSlicer
|
||||||
@@ -30,16 +32,17 @@ export REQUIRED_DEV_PACKAGES=(
|
|||||||
if [[ -n "$UPDATE_LIB" ]]
|
if [[ -n "$UPDATE_LIB" ]]
|
||||||
then
|
then
|
||||||
echo -n -e "Updating linux ...\n"
|
echo -n -e "Updating linux ...\n"
|
||||||
NEEDED_PKGS=""
|
NEEDED_PKGS=()
|
||||||
for PKG in ${REQUIRED_DEV_PACKAGES[@]}; do
|
for PKG in "${REQUIRED_DEV_PACKAGES[@]}"; do
|
||||||
pacman -Q ${PKG} > /dev/null || NEEDED_PKGS+=" ${PKG}"
|
pacman -Q "${PKG}" > /dev/null || NEEDED_PKGS+=("${PKG}")
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ -n "${NEEDED_PKGS}" ]; then
|
if [[ "${#NEEDED_PKGS[*]}" -gt 0 ]]; then
|
||||||
sudo pacman -Syy --noconfirm ${NEEDED_PKGS}
|
sudo pacman -Syy --noconfirm "${NEEDED_PKGS[@]}"
|
||||||
fi
|
fi
|
||||||
echo -e "done\n"
|
echo -e "done\n"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
export FOUND_GTK3_DEV
|
||||||
FOUND_GTK3_DEV=${FOUND_GTK3}
|
FOUND_GTK3_DEV=${FOUND_GTK3}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
|
#!/bin/bash
|
||||||
# these are the Clear Linux specific build functions
|
# these are the Clear Linux specific build functions
|
||||||
FOUND_GTK3=$(ls /usr/lib64/libgtk-3.so.* 2>/dev/null | tail -n 1 || true)
|
export FOUND_GTK3
|
||||||
|
FOUND_GTK3=$(find /usr/lib64/libgtk-3.so.* 2>/dev/null | tail -n 1 || true)
|
||||||
|
|
||||||
# Addtional bundles for OrcaSlicer
|
# Addtional bundles for OrcaSlicer
|
||||||
export REQUIRED_BUNDLES=(
|
export REQUIRED_BUNDLES=(
|
||||||
@@ -25,9 +27,10 @@ export REQUIRED_BUNDLES=(
|
|||||||
if [[ -n "$UPDATE_LIB" ]]
|
if [[ -n "$UPDATE_LIB" ]]
|
||||||
then
|
then
|
||||||
echo "Updating linux ..."
|
echo "Updating linux ..."
|
||||||
echo swupd bundle-add -y ${REQUIRED_BUNDLES[@]}
|
echo swupd bundle-add -y "${REQUIRED_BUNDLES[@]}"
|
||||||
echo -e "done\n"
|
echo -e "done\n"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
FOUND_GTK3_DEV=$(ls /usr/lib64/libgtk-3.so 2>/dev/null || true)
|
export FOUND_GTK3_DEV
|
||||||
|
FOUND_GTK3_DEV=$(find /usr/lib64/libgtk-3.so 2>/dev/null || true)
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
export FOUND_GTK3
|
||||||
FOUND_GTK3=$(dpkg -l libgtk* | grep gtk-3 || echo '')
|
FOUND_GTK3=$(dpkg -l libgtk* | grep gtk-3 || echo '')
|
||||||
|
|
||||||
REQUIRED_DEV_PACKAGES=(
|
REQUIRED_DEV_PACKAGES=(
|
||||||
@@ -27,6 +29,7 @@ REQUIRED_DEV_PACKAGES=(
|
|||||||
|
|
||||||
if [[ -n "$UPDATE_LIB" ]]
|
if [[ -n "$UPDATE_LIB" ]]
|
||||||
then
|
then
|
||||||
|
# shellcheck source=/dev/null
|
||||||
source /etc/os-release
|
source /etc/os-release
|
||||||
if [ "${ID}" == "ubuntu" ] && [ -n "${VERSION_ID}" ]; then
|
if [ "${ID}" == "ubuntu" ] && [ -n "${VERSION_ID}" ]; then
|
||||||
# It's ubuntu and we have a VERSION_ID like "24.04".
|
# It's ubuntu and we have a VERSION_ID like "24.04".
|
||||||
@@ -50,14 +53,13 @@ then
|
|||||||
REQUIRED_DEV_PACKAGES+=(libwebkit2gtk-4.1-dev)
|
REQUIRED_DEV_PACKAGES+=(libwebkit2gtk-4.1-dev)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# TODO: optimize this by checking which, if any, packages are already installed
|
|
||||||
|
|
||||||
# install them all at once
|
# install them all at once
|
||||||
sudo apt update
|
sudo apt update
|
||||||
sudo apt install -y ${REQUIRED_DEV_PACKAGES[@]}
|
sudo apt install -y "${REQUIRED_DEV_PACKAGES[@]}"
|
||||||
|
|
||||||
echo -e "done\n"
|
echo -e "done\n"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
export FOUND_GTK3_DEV
|
||||||
FOUND_GTK3_DEV=$(dpkg -l libgtk* | grep gtk-3-dev || echo '')
|
FOUND_GTK3_DEV=$(dpkg -l libgtk* | grep gtk-3-dev || echo '')
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
export FOUND_GTK3
|
||||||
FOUND_GTK3=$(rpm -qa | grep -P '^gtk3' || true)
|
FOUND_GTK3=$(rpm -qa | grep -P '^gtk3' || true)
|
||||||
|
|
||||||
REQUIRED_DEV_PACKAGES=(
|
REQUIRED_DEV_PACKAGES=(
|
||||||
@@ -34,16 +36,17 @@ REQUIRED_DEV_PACKAGES=(
|
|||||||
|
|
||||||
if [[ -n "$UPDATE_LIB" ]]
|
if [[ -n "$UPDATE_LIB" ]]
|
||||||
then
|
then
|
||||||
NEEDED_PKGS=""
|
NEEDED_PKGS=()
|
||||||
for PKG in ${REQUIRED_DEV_PACKAGES[@]}; do
|
for PKG in "${REQUIRED_DEV_PACKAGES[@]}"; do
|
||||||
rpm -q ${PKG} > /dev/null || NEEDED_PKGS+=" ${PKG}"
|
rpm -q "${PKG}" > /dev/null || NEEDED_PKGS+=("${PKG}")
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ -n "${NEEDED_PKGS}" ]; then
|
if [[ "${#NEEDED_PKGS[*]}" -gt 0 ]]; then
|
||||||
sudo dnf install -y ${NEEDED_PKGS}
|
sudo dnf install -y "${NEEDED_PKGS[@]}"
|
||||||
fi
|
fi
|
||||||
echo -e "done\n"
|
echo -e "done\n"
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
export FOUND_GTK3_DEV
|
||||||
FOUND_GTK3_DEV=$(rpm -qa | grep -P '^gtk3-devel' || true)
|
FOUND_GTK3_DEV=$(rpm -qa | grep -P '^gtk3-devel' || true)
|
||||||
|
|||||||
@@ -59,14 +59,14 @@ for VENDOR in "$@"; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
# Create zip file
|
# Create zip file
|
||||||
cd "$TEMP_DIR"
|
pushd "$TEMP_DIR" || exit 1
|
||||||
zip -r "$OUTPUT_FILE" profiles/
|
zip -r "$OUTPUT_FILE" profiles/
|
||||||
|
|
||||||
# Move zip file to original directory
|
# Move zip file to original directory
|
||||||
mv "$OUTPUT_FILE" "$ORIGINAL_DIR/"
|
mv "$OUTPUT_FILE" "$ORIGINAL_DIR/"
|
||||||
|
|
||||||
# Return to original directory
|
# Return to original directory
|
||||||
cd "$ORIGINAL_DIR"
|
popd || exit 1
|
||||||
|
|
||||||
# Clean up
|
# Clean up
|
||||||
rm -rf "$TEMP_DIR"
|
rm -rf "$TEMP_DIR"
|
||||||
@@ -78,4 +78,4 @@ if [ -f "$OUTPUT_FILE" ]; then
|
|||||||
else
|
else
|
||||||
echo "Error: Failed to create zip file"
|
echo "Error: Failed to create zip file"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -31,9 +31,7 @@ do
|
|||||||
msgmerge -N -o "$dir/OrcaSlicer_${lang}.po" "$dir/OrcaSlicer_${lang}.po" "$pot_file"
|
msgmerge -N -o "$dir/OrcaSlicer_${lang}.po" "$dir/OrcaSlicer_${lang}.po" "$pot_file"
|
||||||
fi
|
fi
|
||||||
mkdir -p "resources/i18n/${lang}"
|
mkdir -p "resources/i18n/${lang}"
|
||||||
msgfmt --check-format -o "resources/i18n/${lang}/OrcaSlicer.mo" "$dir/OrcaSlicer_${lang}.po"
|
if ! msgfmt --check-format -o "resources/i18n/${lang}/OrcaSlicer.mo" "$dir/OrcaSlicer_${lang}.po"; then
|
||||||
# Check the exit status of the msgfmt command
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo "Error encountered with msgfmt command for language ${lang}."
|
echo "Error encountered with msgfmt command for language ${lang}."
|
||||||
exit 1 # Exit the script with an error status
|
exit 1 # Exit the script with an error status
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user