Compare commits

...

4 Commits

Author SHA1 Message Date
ReenigneArcher
88fbd5a398 build(docker): use cross compilation 2025-02-03 19:51:02 -05:00
ReenigneArcher
997093986d ci(docker): fix debian arm builds (#3627)
Some checks failed
CI / GitHub Env Debug (push) Has been cancelled
CI / Setup Release (push) Has been cancelled
CI / Setup Flatpak Matrix (push) Has been cancelled
CI Docker / Check Dockerfiles (push) Has been cancelled
CodeQL / Get language matrix (push) Has been cancelled
Build GH-Pages / prep (push) Has been cancelled
CI / Linux Flatpak (push) Has been cancelled
CI / Linux ${{ matrix.type }} (--appimage-build, 22.04, AppImage) (push) Has been cancelled
CI / Homebrew (${{ matrix.os_name }}-${{ matrix.os_version }}${{ matrix.release == true && ' (Release)' || '' }}) (macos, 13) (push) Has been cancelled
CI / Homebrew (${{ matrix.os_name }}-${{ matrix.os_version }}${{ matrix.release == true && ' (Release)' || '' }}) (macos, 14) (push) Has been cancelled
CI / Homebrew (${{ matrix.os_name }}-${{ matrix.os_version }}${{ matrix.release == true && ' (Release)' || '' }}) (ubuntu, latest) (push) Has been cancelled
CI / Homebrew (${{ matrix.os_name }}-${{ matrix.os_version }}${{ matrix.release == true && ' (Release)' || '' }}) (ubuntu, latest, true) (push) Has been cancelled
CI / Windows (push) Has been cancelled
CI Docker / Setup Release (push) Has been cancelled
CI Docker / Docker${{ matrix.tag }} (push) Has been cancelled
CodeQL / Analyze (${{ matrix.name }}) (push) Has been cancelled
Build GH-Pages / call-jekyll-build (push) Has been cancelled
2025-02-03 03:48:56 +00:00
ReenigneArcher
6efc687036 fix(ui): properly handle boolean json responses (#3626)
Some checks are pending
CI / GitHub Env Debug (push) Waiting to run
CI / Setup Release (push) Waiting to run
CI / Setup Flatpak Matrix (push) Waiting to run
CI / Linux Flatpak (push) Blocked by required conditions
CI / Linux ${{ matrix.type }} (--appimage-build, 22.04, AppImage) (push) Blocked by required conditions
CI / Homebrew (${{ matrix.os_name }}-${{ matrix.os_version }}${{ matrix.release == true && ' (Release)' || '' }}) (macos, 13) (push) Blocked by required conditions
CI / Homebrew (${{ matrix.os_name }}-${{ matrix.os_version }}${{ matrix.release == true && ' (Release)' || '' }}) (macos, 14) (push) Blocked by required conditions
CI / Homebrew (${{ matrix.os_name }}-${{ matrix.os_version }}${{ matrix.release == true && ' (Release)' || '' }}) (ubuntu, latest) (push) Blocked by required conditions
CI / Homebrew (${{ matrix.os_name }}-${{ matrix.os_version }}${{ matrix.release == true && ' (Release)' || '' }}) (ubuntu, latest, true) (push) Blocked by required conditions
CI / Windows (push) Blocked by required conditions
CI Docker / Check Dockerfiles (push) Waiting to run
CI Docker / Setup Release (push) Blocked by required conditions
CI Docker / Docker${{ matrix.tag }} (push) Blocked by required conditions
CodeQL / Get language matrix (push) Waiting to run
CodeQL / Analyze (${{ matrix.name }}) (push) Blocked by required conditions
Build GH-Pages / prep (push) Waiting to run
Build GH-Pages / call-jekyll-build (push) Blocked by required conditions
2025-02-02 17:34:02 +00:00
LizardByte-bot
a995e578fa chore: update global workflows (#3623)
Some checks failed
CI / GitHub Env Debug (push) Waiting to run
CI / Setup Release (push) Waiting to run
CI / Setup Flatpak Matrix (push) Waiting to run
CI / Linux Flatpak (push) Blocked by required conditions
CI / Linux ${{ matrix.type }} (--appimage-build, 22.04, AppImage) (push) Blocked by required conditions
CI / Homebrew (${{ matrix.os_name }}-${{ matrix.os_version }}${{ matrix.release == true && ' (Release)' || '' }}) (macos, 13) (push) Blocked by required conditions
CI / Homebrew (${{ matrix.os_name }}-${{ matrix.os_version }}${{ matrix.release == true && ' (Release)' || '' }}) (macos, 14) (push) Blocked by required conditions
CI / Homebrew (${{ matrix.os_name }}-${{ matrix.os_version }}${{ matrix.release == true && ' (Release)' || '' }}) (ubuntu, latest) (push) Blocked by required conditions
CI / Homebrew (${{ matrix.os_name }}-${{ matrix.os_version }}${{ matrix.release == true && ' (Release)' || '' }}) (ubuntu, latest, true) (push) Blocked by required conditions
CI / Windows (push) Blocked by required conditions
CI Docker / Check Dockerfiles (push) Waiting to run
CI Docker / Setup Release (push) Blocked by required conditions
CI Docker / Docker${{ matrix.tag }} (push) Blocked by required conditions
Build GH-Pages / prep (push) Waiting to run
Build GH-Pages / call-jekyll-build (push) Blocked by required conditions
CodeQL / Get language matrix (push) Has been cancelled
CodeQL / Analyze (${{ matrix.name }}) (push) Has been cancelled
2025-02-01 17:57:08 +00:00
9 changed files with 147 additions and 60 deletions

View File

@@ -5,9 +5,15 @@
blank_issues_enabled: false
contact_links:
- name: Discussions
url: https://github.com/orgs/LizardByte/discussions
about: Community discussions
- name: Questions
url: https://github.com/orgs/LizardByte/discussions
about: Ask questions
- name: Feature Requests
url: https://github.com/orgs/LizardByte/discussions
about: Request new features
- name: Support Center
url: https://app.lizardbyte.dev/support
about: Official LizardByte support
- name: Discussions
url: https://github.com/orgs/LizardByte/discussions
about: Community discussions, questions, and feature requests

View File

@@ -123,7 +123,7 @@ jobs:
docker:
needs: [check_dockerfiles, setup_release]
if: ${{ needs.check_dockerfiles.outputs.dockerfiles }}
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
permissions:
packages: write
contents: write

View File

@@ -1,16 +1,19 @@
# syntax=docker/dockerfile:1
# artifacts: true
# platforms: linux/amd64,linux/arm64/v8
# platforms_pr: linux/amd64
# platforms_pr: linux/amd64,linux/arm64/v8
# no-cache-filters: sunshine-base,artifacts,sunshine
ARG BASE=debian
ARG TAG=bookworm
FROM ${BASE}:${TAG} AS sunshine-base
ENV DEBIAN_FRONTEND=noninteractive
FROM sunshine-base AS sunshine-build
ARG BASE
ARG TAG
FROM --platform=$BUILDPLATFORM ${BASE}:${TAG} AS sunshine-build
ENV DEBIAN_FRONTEND=noninteractive
ARG TARGETPLATFORM
ARG BRANCH
ARG BUILD_VERSION
ARG COMMIT
@@ -30,8 +33,33 @@ COPY --link .. .
RUN <<_BUILD
#!/bin/bash
set -e
if [[ "${BUILDPLATFORM}" != "${TARGETPLATFORM}" ]]; then
cross_compile="--cross-compile"
else
cross_compile=""
fi
case "${TARGETPLATFORM}" in
linux/amd64)
cc_target_tuple="x86_64-linux-gnu"
cc_target_arch="amd64"
;;
linux/arm64)
cc_target_tuple="aarch64-linux-gnu"
cc_target_arch="arm64"
;;
*)
echo "unsupported platform: ${TARGETPLATFORM}";
exit 1
;;
esac
chmod +x ./scripts/linux_build.sh
./scripts/linux_build.sh \
${cross_compile} \
--cc-target-tuple="${cc_target_tuple}" \
--cc-target-arch="${cc_target_arch}" \
--publisher-name='LizardByte' \
--publisher-website='https://app.lizardbyte.dev' \
--publisher-issue-url='https://app.lizardbyte.dev/support' \

View File

@@ -3,6 +3,11 @@ set -e
# Default value for arguments
appimage_build=0
cc_install_root="/mnt/cross"
cc_target_tuple="$(uname -m)-linux-gnu"
cc_target_arch="$(dpkg --print-architecture || rpm --eval '%{_host}')"
cross_compile=0
num_processors=$(nproc)
publisher_name="Third Party Publisher"
publisher_website=""
publisher_issue_url="https://app.lizardbyte.dev/support"
@@ -27,6 +32,11 @@ Options:
-h, --help Display this help message.
-s, --sudo-off Disable sudo command.
--appimage-build Compile for AppImage, this will not create the AppImage, just the executable.
--cc-install-root The root directory to install the cross compiler. Default is /mnt/cross. (Fedora only)
--cc-target-tuple The target tuple for the cross compiler.
--cc-target-arch The target architecture for the cross compiler.
--cross-compile Enable cross compilation.
--num-processors The number of processors to use for compilation. Default is the value of 'nproc'.
--publisher-name The name of the publisher (not developer) of the application.
--publisher-website The URL of the publisher's website.
--publisher-issue-url The URL of the publisher's support site or issue tracker.
@@ -53,6 +63,19 @@ while getopts ":hs-:" opt; do
appimage_build=1
skip_libva=1
;;
cc-install-root=*)
cc_install_root="${OPTARG#*=}"
;;
cc-target-tuple=*)
cc_target_tuple="${OPTARG#*=}"
;;
cc-target-arch=*)
cc_target_arch="${OPTARG#*=}"
;;
cross-compile) cross_compile=1 ;;
num-processors=*)
num_processors="${OPTARG#*=}"
;;
publisher-name=*)
publisher_name="${OPTARG#*=}"
;;
@@ -92,28 +115,28 @@ function add_debain_based_deps() {
"cmake"
"doxygen"
"flex" # required if we need to compile doxygen
"gcc-${gcc_version}"
"g++-${gcc_version}"
"gcc-${gcc_version}:${cc_target_arch}"
"g++-${gcc_version}:${cc_target_arch}"
"git"
"graphviz"
"libcap-dev" # KMS
"libcurl4-openssl-dev"
"libdrm-dev" # KMS
"libevdev-dev"
"libminiupnpc-dev"
"libnotify-dev"
"libnuma-dev"
"libopus-dev"
"libpulse-dev"
"libssl-dev"
"libwayland-dev" # Wayland
"libx11-dev" # X11
"libxcb-shm0-dev" # X11
"libxcb-xfixes0-dev" # X11
"libxcb1-dev" # X11
"libxfixes-dev" # X11
"libxrandr-dev" # X11
"libxtst-dev" # X11
"libcap-dev:${cc_target_arch}" # KMS
"libcurl4-openssl-dev:${cc_target_arch}"
"libdrm-dev:${cc_target_arch}" # KMS
"libevdev-dev:${cc_target_arch}"
"libminiupnpc-dev:${cc_target_arch}"
"libnotify-dev:${cc_target_arch}"
"libnuma-dev:${cc_target_arch}"
"libopus-dev:${cc_target_arch}"
"libpulse-dev:${cc_target_arch}"
"libssl-dev:${cc_target_arch}"
"libwayland-dev:${cc_target_arch}" # Wayland
"libx11-dev:${cc_target_arch}" # X11
"libxcb-shm0-dev:${cc_target_arch}" # X11
"libxcb-xfixes0-dev:${cc_target_arch}" # X11
"libxcb1-dev:${cc_target_arch}" # X11
"libxfixes-dev:${cc_target_arch}" # X11
"libxrandr-dev:${cc_target_arch}" # X11
"libxtst-dev:${cc_target_arch}" # X11
"ninja-build"
"npm" # web-ui
"udev"
@@ -123,7 +146,13 @@ function add_debain_based_deps() {
if [ "$skip_libva" == 0 ]; then
dependencies+=(
"libva-dev" # VA-API
"libva-dev:${cc_target_arch}" # VA-API
)
fi
if [ "$cross_compile" == 1 ]; then
dependencies+=(
"crossbuild-essential-${cc_target_arch}"
)
fi
}
@@ -131,7 +160,7 @@ function add_debain_based_deps() {
function add_debain_deps() {
add_debain_based_deps
dependencies+=(
"libayatana-appindicator3-dev"
"libayatana-appindicator3-dev:${cc_target_arch}"
)
}
@@ -143,7 +172,7 @@ function add_ubuntu_deps() {
add_debain_based_deps
dependencies+=(
"libappindicator3-dev"
"libappindicator3-dev:${cc_target_arch}"
)
}
@@ -151,10 +180,19 @@ function add_fedora_deps() {
dependencies+=(
"cmake"
"doxygen"
"gcc"
"g++"
"git"
"graphviz"
"ninja-build"
"npm"
"rpm-build" # if you want to build an RPM binary package
"wget" # necessary for cuda install with `run` file
"which" # necessary for cuda install with `run` file
"xorg-x11-server-Xvfb" # necessary for headless unit testing
)
arch_dependencies=(
"gcc"
"g++"
"libappindicator-gtk3-devel"
"libcap-devel"
"libcurl-devel"
@@ -171,20 +209,14 @@ function add_fedora_deps() {
"libXtst-devel" # X11
"mesa-libGL-devel"
"miniupnpc-devel"
"ninja-build"
"npm"
"numactl-devel"
"openssl-devel"
"opus-devel"
"pulseaudio-libs-devel"
"rpm-build" # if you want to build an RPM binary package
"wget" # necessary for cuda install with `run` file
"which" # necessary for cuda install with `run` file
"xorg-x11-server-Xvfb" # necessary for headless unit testing
)
if [ "$skip_libva" == 0 ]; then
dependencies+=(
arch_dependencies+=(
"libva-devel" # VA-API
)
fi
@@ -199,15 +231,15 @@ function install_cuda() {
local cuda_prefix="https://developer.download.nvidia.com/compute/cuda/"
local cuda_suffix=""
if [ "$architecture" == "aarch64" ]; then
if [ "$cc_target_arch" == "aarch64" ]; then
local cuda_suffix="_sbsa"
fi
if [ "$architecture" == "aarch64" ]; then
if [ "$cc_target_arch" == "aarch64" ]; then
# we need to patch the math-vector.h file for aarch64 fedora
# back up /usr/include/bits/math-vector.h
math_vector_file=""
if [ "$distro" == "ubuntu" ] || [ "$version" == "24.04" ]; then
if [ "$distro" == "ubuntu" ] && [ "$version" == "24.04" ]; then
math_vector_file="/usr/include/aarch64-linux-gnu/bits/math-vector.h"
elif [ "$distro" == "fedora" ]; then
math_vector_file="/usr/include/bits/math-vector.h"
@@ -278,6 +310,11 @@ function run_install() {
"-DSUNSHINE_ENABLE_DRM=ON"
)
if [ "$cross_compile" == 1 ]; then
cmake_args+=("-DCMAKE_C_COMPILER=${cc_target_tuple}-gcc")
cmake_args+=("-DCMAKE_CXX_COMPILER=${cc_target_tuple}-g++")
fi
if [ "$appimage_build" == 1 ]; then
cmake_args+=("-DSUNSHINE_BUILD_APPIMAGE=ON")
fi
@@ -308,6 +345,11 @@ function run_install() {
# Install the dependencies
$package_install_command "${dependencies[@]}"
# Fedora has a special command for installing architecture specific packages
if [ "$distro" == "fedora" ]; then
$package_install_command_arch "${arch_dependencies[@]}"
fi
# reload the environment
# shellcheck source=/dev/null
source ~/.bashrc
@@ -367,7 +409,7 @@ function run_install() {
tar -xzf "${build_dir}/doxygen.tar.gz"
cd "doxygen-${doxygen_min}"
cmake -DCMAKE_BUILD_TYPE=Release -G="Ninja" -B="build" -S="."
ninja -C "build"
ninja -C "build" -j"${num_processors}"
ninja -C "build" install
else
echo "Doxygen version too low, skipping docs"
@@ -443,6 +485,11 @@ elif grep -q "PLATFORM_ID=\"platform:f39\"" /etc/os-release; then
version="39"
package_update_command="${sudo_cmd} dnf update -y"
package_install_command="${sudo_cmd} dnf install -y"
if [ "$cross_compile" == 0 ]; then
package_install_command_arch="${sudo_cmd} dnf -y --releasever=39 --forcearch=${cc_target_arch} install"
else
package_install_command_arch="${sudo_cmd} dnf -y --installroot=${cc_install_root} --releasever=39 --forcearch=${cc_target_arch} install"
fi
cuda_version="12.4.0"
cuda_build="550.54.14"
gcc_version="13"
@@ -452,6 +499,11 @@ elif grep -q "PLATFORM_ID=\"platform:f40\"" /etc/os-release; then
version="40"
package_update_command="${sudo_cmd} dnf update -y"
package_install_command="${sudo_cmd} dnf install -y"
if [ "$cross_compile" == 0 ]; then
package_install_command_arch="${sudo_cmd} dnf -y --releasever=39 --forcearch=${cc_target_arch} install"
else
package_install_command_arch="${sudo_cmd} dnf -y --installroot=${cc_install_root} --releasever=39 --forcearch=${cc_target_arch} install"
fi
cuda_version=
cuda_build=
gcc_version="13"

View File

@@ -441,7 +441,7 @@
);
if (resp) {
fetch("./api/apps/" + id, { method: "DELETE" }).then((r) => {
if (r.status == 200) document.location.reload();
if (r.status === 200) document.location.reload();
});
}
},
@@ -557,7 +557,7 @@
method: "POST",
body: JSON.stringify(this.editForm),
}).then((r) => {
if (r.status == 200) document.location.reload();
if (r.status === 200) document.location.reload();
});
},
},

View File

@@ -94,10 +94,10 @@
method: "POST",
body: JSON.stringify(this.passwordData),
}).then((r) => {
if (r.status == 200) {
if (r.status === 200) {
r.json().then((rj) => {
if (rj.status.toString() === "true") {
this.success = true;
this.success = rj.status;
if (this.success === true) {
setTimeout(() => {
document.location.reload();
}, 5000);

View File

@@ -42,7 +42,7 @@
fetch("./api/pin", {method: "POST", body: b})
.then((response) => response.json())
.then((response) => {
if (response.status.toString().toLowerCase() === "true") {
if (response.status === true) {
document.querySelector(
"#status"
).innerHTML = `<div class="alert alert-success" role="alert">${this.i18n.t('pin.pair_success')}</div>`;

View File

@@ -120,13 +120,14 @@
</div>
<ul id="client-list" class="list-group list-group-flush list-group-item-light" v-if="clients && clients.length > 0">
<div v-for="client in clients" class="list-group-item d-flex">
<div class="p-2 flex-grow-1">{{client.name != "" ? client.name : $t('troubleshooting.unpair_single_unknown')}}</div><div class="me-2 ms-auto btn btn-danger" @click="unpairSingle(client.uuid)"><i class="fas fa-trash"></i></div>
<div class="p-2 flex-grow-1">{{ client.name !== "" ? client.name : $t('troubleshooting.unpair_single_unknown') }}</div>
<div class="me-2 ms-auto btn btn-danger" @click="unpairSingle(client.uuid)"><i class="fas fa-trash"></i></div>
</div>
</ul>
<ul v-else class="list-group list-group-flush list-group-item-light">
<div class="list-group-item p-3 text-center"><em>{{ $t('troubleshooting.unpair_single_no_devices') }}</em></div>
</ul>
</div>
<!-- Logs -->
<div class="card p-2 my-4">
@@ -176,7 +177,7 @@
actualLogs() {
if (!this.logFilter) return this.logs;
let lines = this.logs.split("\n");
lines = lines.filter(x => x.indexOf(this.logFilter) != -1);
lines = lines.filter(x => x.indexOf(this.logFilter) !== -1);
return lines.join("\n");
}
},
@@ -210,7 +211,7 @@
.then((r) => r.json())
.then((r) => {
this.closeAppPressed = false;
this.closeAppStatus = r.status.toString() === "true";
this.closeAppStatus = r.status;
setTimeout(() => {
this.closeAppStatus = null;
}, 5000);
@@ -222,7 +223,7 @@
.then((r) => r.json())
.then((r) => {
this.unpairAllPressed = false;
this.unpairAllStatus = r.status.toString() === "true";
this.unpairAllStatus = r.status;
setTimeout(() => {
this.unpairAllStatus = null;
}, 5000);
@@ -240,9 +241,9 @@
.then((response) => response.json())
.then((response) => {
const clientList = document.querySelector("#client-list");
if (response.status === 'true' && response.named_certs && response.named_certs.length) {
if (response.status === true && response.named_certs && response.named_certs.length) {
this.clients = response.named_certs.sort((a, b) => {
return (a.name.toLowerCase() > b.name.toLowerCase() || a.name == "" ? 1 : -1)
return (a.name.toLowerCase() > b.name.toLowerCase() || a.name === "" ? 1 : -1)
});
} else {
this.clients = [];
@@ -270,7 +271,7 @@
.then((r) => r.json())
.then((r) => {
this.ddResetPressed = false;
this.ddResetStatus = r.status.toString() === "true";
this.ddResetStatus = r.status;
setTimeout(() => {
this.ddResetStatus = null;
}, 5000);

View File

@@ -81,10 +81,10 @@
body: JSON.stringify(this.passwordData),
}).then((r) => {
this.loading = false;
if (r.status == 200) {
if (r.status === 200) {
r.json().then((rj) => {
if (rj.status.toString() === "true") {
this.success = true;
this.success = rj.status;
if (this.success === true) {
setTimeout(() => {
document.location.reload();
}, 5000);