Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,21 @@ jobs:
- uses: actions/checkout@v3
- run: |
make in-docker IMAGE_TAG=4.6.1 TARGET='import docs dist test GAMESCOPE_CMD='

build-x86_64:
name: Run x86_64 build
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- run: |
make in-docker TARGET='dist'

build-aarch64:
name: Run aarch64 build
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- run: |
make in-docker TARGET='dist' TARGET_ARCH='aarch64'
17 changes: 10 additions & 7 deletions .releaserc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,10 @@ plugins:
# Execute commands to build the project
- - "@semantic-release/exec"
- shell: true
prepareCmd: "make in-docker IMAGE_TAG=4.6.1 TARGET='force-import docs dist update-pkgbuild-hash'"
prepareCmd: |
make in-docker IMAGE_TAG=4.6.1 TARGET='force-import docs'
make in-docker IMAGE_TAG=4.6.1 TARGET='dist update-pkgbuild-hash'
make in-docker IMAGE_TAG=4.6.1 TARGET='dist update-pkgbuild-hash' TARGET_ARCH="aarch64"
publishCmd: "echo '${nextRelease.version}' > .version.txt"

# Commit the following changes to git after other plugins have run
Expand All @@ -52,10 +55,10 @@ plugins:
- assets:
- path: dist/opengamepadui-*.rpm
- path: dist/opengamepadui-*.rpm.sha256.txt
- path: dist/opengamepadui.raw
- path: dist/opengamepadui.raw.sha256.txt
- path: dist/opengamepadui.tar.gz
- path: dist/opengamepadui.tar.gz.sha256.txt
- path: dist/update.zip
- path: dist/update.zip.sha256.txt
- path: dist/opengamepadui*.raw
- path: dist/opengamepadui*.raw.sha256.txt
- path: dist/opengamepadui*.tar.gz
- path: dist/opengamepadui*.tar.gz.sha256.txt
- path: dist/update*.zip
- path: dist/update*.zip.sha256.txt
- path: docs/install/opengamepadui_deck_installer.desktop
154 changes: 96 additions & 58 deletions Makefile

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions addons/core/core.gdextension
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ reloadable = false
[libraries]
linux.debug.x86_64 = "res://addons/core/bin/libopengamepadui-core.linux.template_debug.x86_64.so"
linux.release.x86_64 = "res://addons/core/bin/libopengamepadui-core.linux.template_release.x86_64.so"
linux.debug.arm64 = "res://addons/core/bin/libopengamepadui-core.linux.template_debug.aarch64.so"
linux.release.arm64 = "res://addons/core/bin/libopengamepadui-core.linux.template_release.aarch64.so"

[icons]
BluezInstance = "res://assets/editor-icons/bluetooth.svg"
Expand Down
36 changes: 23 additions & 13 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,25 +1,35 @@
FROM archlinux:base-devel
FROM rust:1.94
LABEL org.opencontainers.image.title="OpenGamepadUI Builder Container"
LABEL org.opencontainers.image.description="Build container for OpenGamepadUI"
LABEL org.opencontainers.image.source="https://github.com/ShadowBlip/OpenGamepadUI"
LABEL org.opencontainers.image.version="4.6.1"

RUN sed -i '/ParallelDownloads/s/^#//g' /etc/pacman.conf

# Install dependencies
RUN echo -e "[multilib]\nInclude = /etc/pacman.d/mirrorlist\n" >> /etc/pacman.conf
RUN pacman --noconfirm -Syyu && pacman -S --needed --noconfirm \
pkgconf \
RUN dpkg --add-architecture arm64
RUN apt-get update && apt-get install -y \
fontconfig \
git \
jq \
libclang-dev \
make \
pkgconf \
rpm \
squashfs-tools \
unzip \
wget \
git \
squashfs-tools \
rpm-tools \
rust \
fontconfig \
zip \
jq
zstd

RUN apt-get install -y \
g++-aarch64-linux-gnu \
libc6-dev-arm64-cross

RUN rustup target add aarch64-unknown-linux-gnu
RUN rustup toolchain install --force-non-host stable-aarch64-unknown-linux-gnu
RUN rustup component add clippy

ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc
ENV CC_aarch64_unknown_linux_gnu=aarch64-linux-gnu-gcc
ENV CXX_aarch64_unknown_linux_gnu=aarch64-linux-gnu-g++

# Download and install the appropriate version of Godot
ARG GODOT_VERSION=4.6.1
Expand Down
113 changes: 99 additions & 14 deletions export_presets.cfg
Original file line number Diff line number Diff line change
@@ -1,29 +1,36 @@
[preset.0]

name="Linux/X11"
platform="Linux/X11"
name="Linux/X11 x86_64"
platform="Linux"
runnable=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter="*.ini,*.profile,*.pub"
exclude_filter="rootfs,sandbox,plugins,*_test.tscn,*_test.gd,*.key,addons/gut/*,node_modules/*"
export_path="build/opengamepad-ui.x86_64"
patches=PackedStringArray()
patch_delta_encoding=false
patch_delta_compression_level_zstd=19
patch_delta_min_reduction=0.1
patch_delta_include_filters="*"
patch_delta_exclude_filters=""
encryption_include_filters=""
encryption_exclude_filters=""
seed=0
encrypt_pck=false
encrypt_directory=false
script_export_mode=2

[preset.0.options]

custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=1
binary_format/embed_pck=false
texture_format/bptc=true
texture_format/s3tc=true
texture_format/etc=false
texture_format/etc2=false
texture_format/s3tc_bptc=true
texture_format/etc2_astc=false
shader_baker/enabled=false
binary_format/architecture="x86_64"
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
Expand All @@ -37,34 +44,45 @@ unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")
rm -rf \"{temp_dir}\""
texture_format/bptc=true
texture_format/s3tc=true
texture_format/etc=false
texture_format/etc2=false
debug/export_console_script=2

[preset.1]

name="Linux/X11 (Update Pack)"
platform="Linux/X11"
platform="Linux"
runnable=false
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter="*.ini,*.profile,*.pub"
exclude_filter="rootfs,sandbox,plugins,*_test.tscn,*_test.gd,*.key"
export_path=""
patches=PackedStringArray()
patch_delta_encoding=false
patch_delta_compression_level_zstd=19
patch_delta_min_reduction=0.1
patch_delta_include_filters="*"
patch_delta_exclude_filters=""
encryption_include_filters=""
encryption_exclude_filters=""
seed=0
encrypt_pck=false
encrypt_directory=false
script_export_mode=2

[preset.1.options]

custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=1
binary_format/embed_pck=false
texture_format/bptc=true
texture_format/s3tc=true
texture_format/etc=false
texture_format/etc2=false
texture_format/s3tc_bptc=true
texture_format/etc2_astc=false
shader_baker/enabled=false
binary_format/architecture="x86_64"
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
Expand All @@ -78,35 +96,98 @@ unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")
rm -rf \"{temp_dir}\""
texture_format/bptc=true
texture_format/s3tc=true
texture_format/etc=false
texture_format/etc2=false
debug/export_console_script=2

[preset.2]

name="Linux/X11 (Plugins)"
platform="Linux/X11"
platform="Linux"
runnable=false
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter="*.json, *.py, *.pex"
exclude_filter="addons/*, sandbox/*, core/*, assets/*, main.gd, main.tscn, icon.svg, entrypoint.gd, entrypoint.tscn"
export_path="build/plugins.x86_64"
patches=PackedStringArray()
patch_delta_encoding=false
patch_delta_compression_level_zstd=19
patch_delta_min_reduction=0.1
patch_delta_include_filters="*"
patch_delta_exclude_filters=""
encryption_include_filters=""
encryption_exclude_filters=""
seed=0
encrypt_pck=false
encrypt_directory=false
script_export_mode=2

[preset.2.options]

custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=1
binary_format/embed_pck=false
texture_format/s3tc_bptc=true
texture_format/etc2_astc=false
shader_baker/enabled=false
binary_format/architecture="x86_64"
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
ssh_remote_deploy/extra_args_ssh=""
ssh_remote_deploy/extra_args_scp=""
ssh_remote_deploy/run_script="#!/usr/bin/env bash
export DISPLAY=:0
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
\"{temp_dir}/{exe_name}\" {cmd_args}"
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")
rm -rf \"{temp_dir}\""
texture_format/bptc=false
texture_format/s3tc=true
texture_format/etc=false
texture_format/etc2=false
binary_format/architecture="x86_64"
debug/export_console_script=1

[preset.3]

name="Linux/X11 aarch64"
platform="Linux"
runnable=false
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter="*.ini,*.profile,*.pub"
exclude_filter="rootfs,sandbox,plugins,*_test.tscn,*_test.gd,*.key,addons/gut/*,node_modules/*"
export_path="build/opengamepad-ui.aarch64"
patches=PackedStringArray()
patch_delta_encoding=false
patch_delta_compression_level_zstd=19
patch_delta_min_reduction=0.1
patch_delta_include_filters="*"
patch_delta_exclude_filters=""
encryption_include_filters=""
encryption_exclude_filters=""
seed=0
encrypt_pck=false
encrypt_directory=false
script_export_mode=2

[preset.3.options]

custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=1
binary_format/embed_pck=false
texture_format/s3tc_bptc=true
texture_format/etc2_astc=false
shader_baker/enabled=false
binary_format/architecture="arm64"
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
Expand All @@ -119,4 +200,8 @@ unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")
rm -rf \"{temp_dir}\""
debug/export_console_script=1
texture_format/bptc=true
texture_format/s3tc=true
texture_format/etc=false
texture_format/etc2=false
debug/export_console_script=2
16 changes: 9 additions & 7 deletions extensions/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ PREFIX ?= addons
EXT_NAME := $(shell grep 'name =' core/Cargo.toml | head -n 1 | cut -d'"' -f2)
LIB_NAME := $(shell grep 'name =' core/Cargo.toml | head -n 1 | cut -d'"' -f2 | sed 's/-/_/g')
ALL_RS := $(shell find ./ -name '*.rs')
TARGET_ARCH ?= $(shell rustc -vV | sed -n 's/host: //p')
ARCH := $(shell echo "$(TARGET_ARCH)" | cut -d'-' -f1)
ADDON_PATH := ../addons/core
RELEASE_TARGET := $(ADDON_PATH)/bin/lib$(EXT_NAME).linux.template_release.x86_64.so
DEBUG_TARGET := $(ADDON_PATH)/bin/lib$(EXT_NAME).linux.template_debug.x86_64.so
RELEASE_TARGET := $(ADDON_PATH)/bin/lib$(EXT_NAME).linux.template_release.$(ARCH).so
DEBUG_TARGET := $(ADDON_PATH)/bin/lib$(EXT_NAME).linux.template_debug.$(ARCH).so

##@ General

Expand All @@ -30,21 +32,21 @@ build: $(RELEASE_TARGET) $(DEBUG_TARGET) ## Build release and debug binaries

.PHONY: clean
clean: ## Clean build artifacts
rm -f $(RELEASE_TARGET) $(DEBUG_TARGET)
rm -rf $(ADDON_PATH)/bin
rm -rf target


.PHONY: release
release: $(RELEASE_TARGET) ## Build release binary
$(RELEASE_TARGET): $(ALL_RS)
cargo build --release
cargo build --release --target $(TARGET_ARCH)
mkdir -p $(@D)
cp target/release/lib$(LIB_NAME).so $@
cp target/$(TARGET_ARCH)/release/lib$(LIB_NAME).so $@


.PHONY: debug
debug: $(DEBUG_TARGET) ## Build binary with debug symbols
$(DEBUG_TARGET): $(ALL_RS)
cargo build
cargo build --target $(TARGET_ARCH)
mkdir -p $(@D)
cp target/debug/lib$(LIB_NAME).so $@
cp target/$(TARGET_ARCH)/debug/lib$(LIB_NAME).so $@
10 changes: 6 additions & 4 deletions package/archlinux/PKGBUILD
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ _pkgbase=opengamepadui
pkgver=0.45.0
pkgrel=1
pkgdesc="Open source game launcher"
arch=('x86_64')
arch=('x86_64' 'aarch64')
url="https://github.com/ShadowBlip/OpenGamepadUI"
license=('GPL')
depends=('glibc' 'gcc-libs' 'libx11' 'libxres' 'libxcb' 'libxext' 'libxau'
Expand All @@ -14,13 +14,15 @@ depends=('glibc' 'gcc-libs' 'libx11' 'libxres' 'libxcb' 'libxext' 'libxau'
optdepends=('firejail' 'bubblewrap' 'wireplumber' 'networkmanager' 'bluez' 'dbus' 'powerstation')
provides=('opengamepadui')
conflicts=('opengamepadui-git')
source=(opengamepadui-v$pkgver.tar.gz::https://github.com/ShadowBlip/OpenGamepadUI/releases/download/v$pkgver/opengamepadui.tar.gz)
source_x86_64=(opengamepadui-v${pkgver}.tar.gz::https://github.com/ShadowBlip/OpenGamepadUI/releases/download/v${pkgver}/opengamepadui-x86_64.tar.gz)
source_aarch64=(opengamepadui-v${pkgver}.tar.gz::https://github.com/ShadowBlip/OpenGamepadUI/releases/download/v${pkgver}/opengamepadui-aarch64.tar.gz)

sha256sums=('bb12b6f04be8d2f1763923f8e1ff1ff3718e3a6f751fbfb209507319d8cdbf57')
sha256sums_x86_64=('bb12b6f04be8d2f1763923f8e1ff1ff3718e3a6f751fbfb209507319d8cdbf57')
sha256sums_aarch64=('87620d63b6428bf05a9ad7e1578711b21522853a80352988c976f943a6657370')

package() {
options=('!strip')
cd "$srcdir/${_pkgbase}"

make install PREFIX="${pkgdir}/usr"
make install PREFIX="${pkgdir}/usr" ARCH=${CARCH}
}
Loading
Loading