From d3294aa0a9dc96967f6c9b90f531b76668b33784 Mon Sep 17 00:00:00 2001 From: William Edwards Date: Thu, 26 Mar 2026 22:21:04 -0700 Subject: [PATCH 1/2] fix: add aarch64 build --- .github/workflows/test.yaml | 18 +++ .releaserc.yaml | 17 +- Makefile | 150 +++++++++++------- addons/core/core.gdextension | 2 + docker/Dockerfile | 36 +++-- export_presets.cfg | 113 +++++++++++-- extensions/Makefile | 16 +- package/archlinux/PKGBUILD | 10 +- package/rpm/opengamepadui.spec | 6 +- rootfs/Makefile | 9 +- rootfs/usr/bin/opengamepadui | 3 +- .../usr/share/opengamepadui/scripts/make_nice | 5 +- 12 files changed, 274 insertions(+), 111 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 78073d870..81393df76 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -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' diff --git a/.releaserc.yaml b/.releaserc.yaml index ca296d987..9de851817 100644 --- a/.releaserc.yaml +++ b/.releaserc.yaml @@ -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 @@ -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 diff --git a/Makefile b/Makefile index ee11e5745..ca46dd249 100644 --- a/Makefile +++ b/Makefile @@ -10,12 +10,20 @@ GODOT_REVISION := $(GODOT_VERSION).$(GODOT_RELEASE) GAMESCOPE ?= gamescope GAMESCOPE_CMD ?= $(GAMESCOPE) -e --xwayland-count 2 -- BUILD_TYPE ?= release +HOST_ARCH := $(shell uname -m) +TARGET_ARCH ?= $(HOST_ARCH) -EXPORT_TEMPLATE ?= $(HOME)/.local/share/godot/export_templates/$(GODOT_REVISION)/linux_$(BUILD_TYPE).x86_64 +ifeq ($(TARGET_ARCH),x86_64) + EXPORT_ARCH = x86_64 +else ifeq ($(TARGET_ARCH),aarch64) + EXPORT_ARCH = arm64 +endif + +EXPORT_TEMPLATE ?= $(HOME)/.local/share/godot/export_templates/$(GODOT_REVISION)/linux_$(BUILD_TYPE).$(EXPORT_ARCH) #EXPORT_TEMPLATE_URL ?= https://downloads.tuxfamily.org/godotengine/$(GODOT_VERSION)/Godot_v$(GODOT_VERSION)-$(GODOT_RELEASE)_export_templates.tpz EXPORT_TEMPLATE_URL ?= https://github.com/godotengine/godot/releases/download/$(GODOT_VERSION)-$(GODOT_RELEASE)/Godot_v$(GODOT_VERSION)-$(GODOT_RELEASE)_export_templates.tpz -ALL_EXTENSIONS := ./addons/core/bin/libopengamepadui-core.linux.template_$(BUILD_TYPE).x86_64.so +ALL_EXTENSIONS := ./addons/core/bin/libopengamepadui-core.linux.template_$(BUILD_TYPE).$(TARGET_ARCH).so ALL_EXTENSION_FILES := $(shell find ./extensions/ -regex '.*\(\.rs|\.toml\|\.lock\)$$') ALL_GDSCRIPT := $(shell find ./ -name '*.gd') ALL_SCENES := $(shell find ./ -name '*.tscn') @@ -84,7 +92,7 @@ disable-ext: ## Disable systemd extensions .PHONY: install-ext install-ext: systemd-sysext ## Install OpenGamepadUI as a systemd extension - cp dist/opengamepadui.raw $(HOME)/.var/lib/extensions + cp dist/opengamepadui-$(TARGET_ARCH).raw $(HOME)/.var/lib/extensions sudo systemd-sysext refresh systemd-sysext status @@ -108,30 +116,30 @@ test: $(IMPORT_DIR) ## Run all unit tests --script res://addons/gut/gut_cmdln.gd .PHONY: build -build: build/opengamepad-ui.x86_64 ## Build and export the project -build/opengamepad-ui.x86_64: $(IMPORT_DIR) $(PROJECT_FILES) $(EXPORT_TEMPLATE) +build: build/opengamepad-ui.$(TARGET_ARCH) ## Build and export the project +build/opengamepad-ui.$(TARGET_ARCH): $(IMPORT_DIR) $(PROJECT_FILES) $(EXPORT_TEMPLATE) @echo "Building OpenGamepadUI v$(OGUI_VERSION)" mkdir -p build - $(GODOT) -v --headless --export-$(BUILD_TYPE) "Linux/X11" + $(GODOT) -v --headless --export-$(BUILD_TYPE) "Linux/X11 $(TARGET_ARCH)" .PHONY: metadata metadata: build/metadata.json ## Build update metadata -build/metadata.json: build/opengamepad-ui.x86_64 assets/crypto/keys/opengamepadui.key +build/metadata.json: build/opengamepad-ui.$(TARGET_ARCH) assets/crypto/keys/opengamepadui.key @echo "Building update metadata" @FILE_SIGS='{'; \ cd build; \ # Sign any GDExtension libraries \ - for lib in `ls *.so`; do \ + for lib in `ls *.$(TARGET_ARCH).so`; do \ echo "Signing file: $$lib"; \ SIG=$$(openssl dgst -sha256 -sign ../assets/crypto/keys/opengamepadui.key $$lib | base64 -w 0); \ HASH=$$(sha256sum $$lib | cut -d' ' -f1); \ FILE_SIGS="$$FILE_SIGS\"$$lib\": {\"signature\": \"$$SIG\", \"hash\": \"$$HASH\"}, "; \ done; \ # Sign the binary files \ - echo "Signing file: opengamepad-ui.x86_64"; \ - SIG=$$(openssl dgst -sha256 -sign ../assets/crypto/keys/opengamepadui.key opengamepad-ui.x86_64 | base64 -w 0); \ - HASH=$$(sha256sum opengamepad-ui.x86_64 | cut -d' ' -f1); \ - FILE_SIGS="$$FILE_SIGS\"opengamepad-ui.x86_64\": {\"signature\": \"$$SIG\", \"hash\": \"$$HASH\"}, "; \ + echo "Signing file: opengamepad-ui.$(TARGET_ARCH)"; \ + SIG=$$(openssl dgst -sha256 -sign ../assets/crypto/keys/opengamepadui.key opengamepad-ui.$(TARGET_ARCH) | base64 -w 0); \ + HASH=$$(sha256sum opengamepad-ui.$(TARGET_ARCH) | cut -d' ' -f1); \ + FILE_SIGS="$$FILE_SIGS\"opengamepad-ui.$(TARGET_ARCH)\": {\"signature\": \"$$SIG\", \"hash\": \"$$HASH\"}, "; \ echo "Signing file: opengamepad-ui.pck"; \ SIG=$$(openssl dgst -sha256 -sign ../assets/crypto/keys/opengamepadui.key opengamepad-ui.pck | base64 -w 0); \ HASH=$$(sha256sum opengamepad-ui.pck | cut -d' ' -f1); \ @@ -161,7 +169,7 @@ force-import: $(ALL_EXTENSIONS) extensions: $(ALL_EXTENSIONS) ## Build engine extensions $(ALL_EXTENSIONS) &: $(ALL_EXTENSION_FILES) @echo "Building engine extensions..." - cd ./extensions && $(MAKE) build + cd ./extensions && $(MAKE) build TARGET_ARCH="$(TARGET_ARCH)-unknown-linux-gnu" .PHONY: edit edit: $(IMPORT_DIR) ## Open the project in the Godot editor @@ -180,10 +188,10 @@ clean: ## Remove Godot build artifacts rm -rf $(IMPORT_DIR) .PHONY: run run-force -run: build/opengamepad-ui.x86_64 run-force ## Run the project in gamescope +run: build/opengamepad-ui.$(TARGET_ARCH) run-force ## Run the project in gamescope run-force: $(GAMESCOPE) -w 1920 -h 1080 -f \ - --xwayland-count 2 -- ./build/opengamepad-ui.x86_64 + --xwayland-count 2 -- ./build/opengamepad-ui.$(TARGET_ARCH) $(EXPORT_TEMPLATE): mkdir -p $(HOME)/.local/share/godot/export_templates @@ -261,8 +269,8 @@ assets/crypto/keys/opengamepadui.pub: assets/crypto/keys/opengamepadui.key .PHONY: deploy deploy: dist-archive ## Build and deploy to a remote device - scp dist/opengamepadui.tar.gz $(SSH_USER)@$(SSH_HOST):$(SSH_DATA_PATH) - ssh -t $(SSH_USER)@$(SSH_HOST) tar xvfz "$(SSH_DATA_PATH)/opengamepadui.tar.gz" + scp dist/opengamepadui-$(TARGET_ARCH).tar.gz $(SSH_USER)@$(SSH_HOST):$(SSH_DATA_PATH) + ssh -t $(SSH_USER)@$(SSH_HOST) tar xvfz "$(SSH_DATA_PATH)/opengamepadui-$(TARGET_ARCH).tar.gz" .PHONY: deploy-update @@ -274,7 +282,7 @@ deploy-update: dist/update.zip ## Build and deploy update zip to remote device .PHONY: deploy-ext deploy-ext: dist-ext ## Build and deploy systemd extension to remote device ssh $(SSH_USER)@$(SSH_HOST) mkdir -p .var/lib/extensions .config/systemd/user .local/bin - scp dist/opengamepadui.raw $(SSH_USER)@$(SSH_HOST):~/.var/lib/extensions + scp dist/opengamepadui-$(TARGET_ARCH).raw $(SSH_USER)@$(SSH_HOST):~/.var/lib/extensions scp rootfs/usr/lib/systemd/user/systemd-sysext-updater.service $(SSH_USER)@$(SSH_HOST):~/.config/systemd/user scp rootfs/usr/share/opengamepadui/scripts/update_systemd_ext.sh $(SSH_USER)@$(SSH_HOST):~/.local/bin ssh -t $(SSH_USER)@$(SSH_HOST) systemctl --user enable --now systemd-sysext-updater || echo "WARN: failed to restart sysext updater" @@ -321,54 +329,62 @@ tunnel: ## Create an SSH tunnel to allow remote debugging ##@ Distribution .PHONY: rootfs -rootfs: build/opengamepad-ui.x86_64 +rootfs: build/opengamepad-ui.$(TARGET_ARCH) rm -rf $(ROOTFS) mkdir -p $(ROOTFS) cp -r rootfs/* $(ROOTFS) mkdir -p $(ROOTFS)/usr/share/opengamepadui - cp -r build/*.so $(ROOTFS)/usr/share/opengamepadui - cp -r build/opengamepad-ui.x86_64 $(ROOTFS)/usr/share/opengamepadui + cp -r build/*.$(TARGET_ARCH).so $(ROOTFS)/usr/share/opengamepadui + cp -r build/opengamepad-ui.$(TARGET_ARCH) $(ROOTFS)/usr/share/opengamepadui cp -r build/opengamepad-ui.pck $(ROOTFS)/usr/share/opengamepadui - cp ./extensions/target/release/reaper $(ROOTFS)/usr/share/opengamepadui + cp ./extensions/target/$(TARGET_ARCH)-unknown-linux-gnu/release/reaper $(ROOTFS)/usr/share/opengamepadui touch $(ROOTFS)/.gdignore -.PHONY: dist -dist: dist/opengamepadui.tar.gz dist/opengamepadui.raw dist/update.zip dist/opengamepadui-$(OGUI_VERSION)-1.x86_64.rpm ## Create all redistributable versions of the project - cd dist && sha256sum opengamepadui-$(OGUI_VERSION)-1.x86_64.rpm > opengamepadui-$(OGUI_VERSION)-1.x86_64.rpm.sha256.txt - cd dist && sha256sum opengamepadui.tar.gz > opengamepadui.tar.gz.sha256.txt - cd dist && sha256sum opengamepadui.raw > opengamepadui.raw.sha256.txt +.PHONY: dist +dist: dist/opengamepadui-$(TARGET_ARCH).tar.gz dist/opengamepadui-$(TARGET_ARCH).raw dist/update-$(TARGET_ARCH).zip dist/opengamepadui-$(OGUI_VERSION)-1.$(TARGET_ARCH).rpm ## Create all redistributable versions of the project + cd dist && sha256sum opengamepadui-$(OGUI_VERSION)-1.$(TARGET_ARCH).rpm > opengamepadui-$(OGUI_VERSION)-1.$(TARGET_ARCH).rpm.sha256.txt + cd dist && sha256sum opengamepadui-$(TARGET_ARCH).tar.gz > opengamepadui-$(TARGET_ARCH).tar.gz.sha256.txt + cd dist && sha256sum opengamepadui-$(TARGET_ARCH).raw > opengamepadui-$(TARGET_ARCH).raw.sha256.txt + cd dist && sha256sum update-$(TARGET_ARCH).zip > update-$(TARGET_ARCH).zip.sha256.txt +ifeq ($(TARGET_ARCH),x86_64) + #@ Backwards compatibility update archive cd dist && sha256sum update.zip > update.zip.sha256.txt +endif .PHONY: dist-rpm -dist-rpm: dist/opengamepadui-$(OGUI_VERSION)-1.x86_64.rpm ## Create a redistributable RPM -dist/opengamepadui-$(OGUI_VERSION)-1.x86_64.rpm: dist/opengamepadui.tar.gz +dist-rpm: dist/opengamepadui-$(OGUI_VERSION)-1.$(TARGET_ARCH).rpm ## Create a redistributable RPM +dist/opengamepadui-$(OGUI_VERSION)-1.$(TARGET_ARCH).rpm: dist/opengamepadui-$(TARGET_ARCH).tar.gz @echo "Building redistributable RPM package" mkdir -p dist $(HOME)/rpmbuild/SOURCES - cp dist/opengamepadui.tar.gz $(HOME)/rpmbuild/SOURCES - rpmbuild -bb package/rpm/opengamepadui.spec - cp $(HOME)/rpmbuild/RPMS/x86_64/opengamepadui-$(OGUI_VERSION)-1.x86_64.rpm dist + cp dist/opengamepadui-$(TARGET_ARCH).tar.gz $(HOME)/rpmbuild/SOURCES + rpmbuild -bb --target=$(TARGET_ARCH) package/rpm/opengamepadui.spec + cp $(HOME)/rpmbuild/RPMS/$(TARGET_ARCH)/opengamepadui-$(OGUI_VERSION)-1.$(TARGET_ARCH).rpm dist .PHONY: dist-archive -dist-archive: dist/opengamepadui.tar.gz ## Create a redistributable tar.gz of the project -dist/opengamepadui.tar.gz: rootfs +dist-archive: dist/opengamepadui-$(TARGET_ARCH).tar.gz ## Create a redistributable tar.gz of the project +dist/opengamepadui-$(TARGET_ARCH).tar.gz: rootfs @echo "Building redistributable tar.gz archive" mkdir -p dist mv $(ROOTFS) $(CACHE_DIR)/opengamepadui - cd $(CACHE_DIR) && tar cvfz opengamepadui.tar.gz opengamepadui - mv $(CACHE_DIR)/opengamepadui.tar.gz dist + cd $(CACHE_DIR) && tar cvfz opengamepadui-$(TARGET_ARCH).tar.gz opengamepadui + mv $(CACHE_DIR)/opengamepadui-$(TARGET_ARCH).tar.gz dist mv $(CACHE_DIR)/opengamepadui $(ROOTFS) .PHONY: dist-update-zip -dist-update-zip: dist/update.zip ## Create an update zip archive -dist/update.zip: build/metadata.json +dist-update-zip: dist/update-$(TARGET_ARCH).zip ## Create an update zip archive +dist/update-$(TARGET_ARCH).zip: build/metadata.json @echo "Building redistributable update zip" mkdir -p $(CACHE_DIR) rm -rf $(CACHE_DIR)/update.zip - cd build && zip -5 ../$(CACHE_DIR)/update *.so opengamepad-ui.* metadata.json + cd build && zip -5 ../$(CACHE_DIR)/update *.$(TARGET_ARCH).so opengamepad-ui.pck opengamepad-ui.$(TARGET_ARCH) metadata.json mkdir -p dist cp $(CACHE_DIR)/update.zip $@ +ifeq ($(TARGET_ARCH),x86_64) + #@ Backwards compatibility update archive + cp $(CACHE_DIR)/update.zip dist/update.zip +endif .PHONY: dist-nix @@ -385,13 +401,13 @@ dist/opengamepadui.nix: $(IMPORT_DIR) $(PROJECT_FILES) # https://blogs.igalia.com/berto/2022/09/13/adding-software-to-the-steam-deck-with-systemd-sysext/ .PHONY: dist-ext -dist-ext: dist/opengamepadui.raw ## Create a systemd-sysext extension archive -dist/opengamepadui.raw: dist/opengamepadui.tar.gz $(CACHE_DIR)/gamescope-session.tar.gz $(CACHE_DIR)/gamescope-session-opengamepadui.tar.gz $(CACHE_DIR)/powerstation.tar.gz $(CACHE_DIR)/inputplumber.tar.gz +dist-ext: dist/opengamepadui-$(TARGET_ARCH).raw ## Create a systemd-sysext extension archive +dist/opengamepadui-$(TARGET_ARCH).raw: dist/opengamepadui-$(TARGET_ARCH).tar.gz $(CACHE_DIR)/gamescope-session.tar.gz $(CACHE_DIR)/gamescope-session-opengamepadui.tar.gz $(CACHE_DIR)/powerstation-$(TARGET_ARCH).tar.gz $(CACHE_DIR)/inputplumber-$(TARGET_ARCH).tar.gz @echo "Building redistributable systemd extension" mkdir -p dist - rm -rf dist/opengamepadui.raw $(CACHE_DIR)/opengamepadui.raw - cp dist/opengamepadui.tar.gz $(CACHE_DIR) - cd $(CACHE_DIR) && tar xvfz opengamepadui.tar.gz opengamepadui/usr + rm -rf dist/opengamepadui-$(TARGET_ARCH).raw $(CACHE_DIR)/opengamepadui-$(TARGET_ARCH).raw + cp dist/opengamepadui-$(TARGET_ARCH).tar.gz $(CACHE_DIR) + cd $(CACHE_DIR) && tar xvfz opengamepadui-$(TARGET_ARCH).tar.gz opengamepadui/usr mkdir -p $(CACHE_DIR)/opengamepadui/usr/lib/extension-release.d echo ID=$(SYSEXT_ID) > $(CACHE_DIR)/opengamepadui/usr/lib/extension-release.d/extension-release.opengamepadui echo VERSION_ID=$(SYSEXT_VERSION_ID) >> $(CACHE_DIR)/opengamepadui/usr/lib/extension-release.d/extension-release.opengamepadui @@ -405,11 +421,11 @@ dist/opengamepadui.raw: dist/opengamepadui.tar.gz $(CACHE_DIR)/gamescope-session cp -r $(CACHE_DIR)/gamescope-session-opengamepadui-main/usr/* $(CACHE_DIR)/opengamepadui/usr @# Copy powerstation into the extension - cd $(CACHE_DIR) && tar xvfz powerstation.tar.gz + cd $(CACHE_DIR) && tar xvfz powerstation-$(TARGET_ARCH).tar.gz cp -r $(CACHE_DIR)/powerstation/usr/* $(CACHE_DIR)/opengamepadui/usr @# Copy inputplumber into the extension - cd $(CACHE_DIR) && tar xvfz inputplumber.tar.gz + cd $(CACHE_DIR) && tar xvfz inputplumber-$(TARGET_ARCH).tar.gz cp -r $(CACHE_DIR)/inputplumber/usr/* $(CACHE_DIR)/opengamepadui/usr @# Install libserialport for inputplumber in the extension for libiio compatibility in SteamOS @@ -419,9 +435,9 @@ dist/opengamepadui.raw: dist/opengamepadui.tar.gz $(CACHE_DIR)/gamescope-session cp -r $(CACHE_DIR)/libiio/usr/lib/libiio* $(CACHE_DIR)/opengamepadui/usr/lib @# Build the extension archive - cd $(CACHE_DIR) && mksquashfs opengamepadui opengamepadui.raw + cd $(CACHE_DIR) && mksquashfs opengamepadui opengamepadui-$(TARGET_ARCH).raw rm -rf $(CACHE_DIR)/opengamepadui $(CACHE_DIR)/gamescope-session-opengamepadui-main $(CACHE_DIR)/gamescope-session-main - mv $(CACHE_DIR)/opengamepadui.raw $@ + mv $(CACHE_DIR)/opengamepadui-$(TARGET_ARCH).raw $@ $(CACHE_DIR)/gamescope-session.tar.gz: @@ -432,38 +448,58 @@ $(CACHE_DIR)/gamescope-session-opengamepadui.tar.gz: wget -O $@ https://github.com/ShadowBlip/gamescope-session-opengamepadui/archive/refs/heads/main.tar.gz -$(CACHE_DIR)/powerstation.tar.gz: +$(CACHE_DIR)/powerstation-$(TARGET_ARCH).tar.gz: export PS_VERSION=$$(curl -s https://api.github.com/repos/ShadowBlip/PowerStation/releases/latest | jq -r '.name') && \ - wget -O $@ https://github.com/ShadowBlip/PowerStation/releases/download/$${PS_VERSION}/powerstation-x86_64.tar.gz + wget -O $@ https://github.com/ShadowBlip/PowerStation/releases/download/$${PS_VERSION}/powerstation-$(TARGET_ARCH).tar.gz -$(CACHE_DIR)/inputplumber.tar.gz: $(CACHE_DIR)/libiio $(CACHE_DIR)/libserialport +$(CACHE_DIR)/inputplumber-$(TARGET_ARCH).tar.gz: $(CACHE_DIR)/libiio $(CACHE_DIR)/libserialport export IP_VERSION=$$(curl -s https://api.github.com/repos/ShadowBlip/InputPlumber/releases/latest | jq -r '.name') && \ - wget -O $@ https://github.com/ShadowBlip/InputPlumber/releases/download/$${IP_VERSION}/inputplumber-x86_64.tar.gz + wget -O $@ https://github.com/ShadowBlip/InputPlumber/releases/download/$${IP_VERSION}/inputplumber-$(TARGET_ARCH).tar.gz -LIBIIO_URL ?= https://mirror.rackspace.com/archlinux/extra/os/x86_64/libiio-$(SYSEXT_LIBIIO_VERSION)-x86_64.pkg.tar.zst +ifeq ($(TARGET_ARCH),x86_64) +LIBIIO_URL ?= https://mirror.rackspace.com/archlinux/extra/os/$(TARGET_ARCH)/libiio-$(SYSEXT_LIBIIO_VERSION)-$(TARGET_ARCH).pkg.tar.zst +else ifeq ($(TARGET_ARCH),aarch64) +LIBIIO_URL ?= http://mirror.archlinuxarm.org/$(TARGET_ARCH)/extra/libiio-$(SYSEXT_LIBIIO_VERSION)-$(TARGET_ARCH).pkg.tar.xz +endif $(CACHE_DIR)/libiio: rm -rf $(CACHE_DIR)/libiio* +ifeq ($(TARGET_ARCH),x86_64) wget $(LIBIIO_URL) \ -O $(CACHE_DIR)/libiio.tar.zst zstd -d $(CACHE_DIR)/libiio.tar.zst +else ifeq ($(TARGET_ARCH),aarch64) + wget $(LIBIIO_URL) \ + -O $(CACHE_DIR)/libiio.tar.xz + xz -d $(CACHE_DIR)/libiio.tar.xz +endif mkdir -p $(CACHE_DIR)/libiio tar xvf $(CACHE_DIR)/libiio.tar -C $(CACHE_DIR)/libiio -LIBSERIALPORT_URL ?= https://mirror.rackspace.com/archlinux/extra/os/x86_64/libserialport-$(SYSEXT_LIBSERIALPORT_VERSION)-x86_64.pkg.tar.zst +ifeq ($(TARGET_ARCH),x86_64) +LIBSERIALPORT_URL ?= https://mirror.rackspace.com/archlinux/extra/os/$(TARGET_ARCH)/libserialport-$(SYSEXT_LIBSERIALPORT_VERSION)-$(TARGET_ARCH).pkg.tar.zst +else ifeq ($(TARGET_ARCH),aarch64) +LIBSERIALPORT_URL ?= http://mirror.archlinuxarm.org/$(TARGET_ARCH)/extra/libserialport-$(SYSEXT_LIBSERIALPORT_VERSION)-$(TARGET_ARCH).pkg.tar.xz +endif $(CACHE_DIR)/libserialport: rm -rf $(CACHE_DIR)/libserialport* +ifeq ($(TARGET_ARCH),x86_64) wget $(LIBSERIALPORT_URL) \ -O $(CACHE_DIR)/libserialport.tar.zst zstd -d $(CACHE_DIR)/libserialport.tar.zst +else ifeq ($(TARGET_ARCH),aarch64) + wget $(LIBSERIALPORT_URL) \ + -O $(CACHE_DIR)/libserialport.tar.xz + xz -d $(CACHE_DIR)/libserialport.tar.xz +endif mkdir -p $(CACHE_DIR)/libserialport tar xvf $(CACHE_DIR)/libserialport.tar -C $(CACHE_DIR)/libserialport .PHONY: update-pkgbuild-hash -update-pkgbuild-hash: dist/opengamepadui.tar.gz ## Update the PKGBUILD hash - sed -i "s#^sha256sums=.*#sha256sums=('$$(cat dist/opengamepadui.tar.gz.sha256.txt | cut -d' ' -f1)')#g" \ +update-pkgbuild-hash: dist/opengamepadui-$(TARGET_ARCH).tar.gz ## Update the PKGBUILD hash + sed -i "s#^sha256sums_$(TARGET_ARCH)=.*#sha256sums_$(TARGET_ARCH)=('$$(cat dist/opengamepadui-$(TARGET_ARCH).tar.gz.sha256.txt | cut -d' ' -f1)')#g" \ package/archlinux/PKGBUILD # Refer to .releaserc.yaml for release configuration @@ -480,6 +516,8 @@ in-docker: --workdir /src \ -e HOME=/home/build \ -e PWD=/src \ + -e TARGET_ARCH="$(TARGET_ARCH)" \ + -e PKG_CONFIG_SYSROOT_DIR="/usr/$(TARGET_ARCH)-linux-gnu" \ --user $(shell id -u):$(shell id -g) \ $(IMAGE_NAME):$(IMAGE_TAG) \ make GODOT=/usr/bin/godot $(TARGET) diff --git a/addons/core/core.gdextension b/addons/core/core.gdextension index d9e8b7728..2ced85621 100644 --- a/addons/core/core.gdextension +++ b/addons/core/core.gdextension @@ -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" diff --git a/docker/Dockerfile b/docker/Dockerfile index 476806ee4..4c8b8617f 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,25 +1,35 @@ -FROM archlinux:base-devel +FROM rust:1.92 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 diff --git a/export_presets.cfg b/export_presets.cfg index 7466aee1b..fb9c02525 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -1,7 +1,7 @@ [preset.0] -name="Linux/X11" -platform="Linux/X11" +name="Linux/X11 x86_64" +platform="Linux" runnable=true dedicated_server=false custom_features="" @@ -9,10 +9,18 @@ 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] @@ -20,10 +28,9 @@ 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" @@ -37,12 +44,16 @@ 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="" @@ -50,10 +61,18 @@ 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] @@ -61,10 +80,9 @@ 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" @@ -78,12 +96,16 @@ 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="" @@ -91,10 +113,18 @@ 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] @@ -102,11 +132,62 @@ 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" @@ -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 diff --git a/extensions/Makefile b/extensions/Makefile index 9faa1dcf6..86b6ccc0a 100644 --- a/extensions/Makefile +++ b/extensions/Makefile @@ -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 @@ -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 $@ diff --git a/package/archlinux/PKGBUILD b/package/archlinux/PKGBUILD index 3f2862887..5a07d0dd1 100644 --- a/package/archlinux/PKGBUILD +++ b/package/archlinux/PKGBUILD @@ -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' @@ -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} } diff --git a/package/rpm/opengamepadui.spec b/package/rpm/opengamepadui.spec index 3ce9fa75f..ddbc03c1e 100644 --- a/package/rpm/opengamepadui.spec +++ b/package/rpm/opengamepadui.spec @@ -5,7 +5,7 @@ Summary: A free and open source game launcher and overlay written using t License: GPL-3.0-only URL: https://github.com/ShadowBlip/OpenGamepadUI -Source: https://github.com/ShadowBlip/OpenGamepadUI/releases/download/v%{version}/opengamepadui.tar.gz +Source: https://github.com/ShadowBlip/OpenGamepadUI/releases/download/v%{version}/opengamepadui-%{_arch}.tar.gz Requires: gamescope @@ -23,14 +23,14 @@ A free and open source game launcher and overlay written using the Godot Game En %autosetup -p1 -n opengamepadui %install -make install PREFIX=%{buildroot}%{_prefix} INSTALL_PREFIX=%{_prefix} +make install PREFIX=%{buildroot}%{_prefix} INSTALL_PREFIX=%{_prefix} ARCH=%{_arch} %files /usr/bin/opengamepadui /usr/share/opengamepadui/*.so /usr/share/opengamepadui/reaper /usr/share/opengamepadui/scripts/* -/usr/share/opengamepadui/opengamepad-ui.x86_64 +/usr/share/opengamepadui/opengamepad-ui.%{_arch} /usr/share/opengamepadui/opengamepad-ui.pck /usr/share/applications/opengamepadui.desktop /usr/share/icons/hicolor/scalable/apps/opengamepadui.svg diff --git a/rootfs/Makefile b/rootfs/Makefile index fbae9f576..c7a8bfade 100644 --- a/rootfs/Makefile +++ b/rootfs/Makefile @@ -1,5 +1,6 @@ PREFIX ?= $(HOME)/.local INSTALL_PREFIX ?= $(PREFIX) +ARCH ?= $(shell uname -m) ##@ General @@ -24,13 +25,13 @@ install: ## Install OpenGamepadUI (default: ~/.local) mkdir -p $(PREFIX)/share/opengamepadui install -Dm644 usr/share/opengamepadui/*.so \ $(PREFIX)/share/opengamepadui/ - install -Dm755 usr/share/opengamepadui/opengamepad-ui.x86_64 \ - $(PREFIX)/share/opengamepadui/opengamepad-ui.x86_64 + install -Dm755 usr/share/opengamepadui/opengamepad-ui.$(ARCH) \ + $(PREFIX)/share/opengamepadui/opengamepad-ui.$(ARCH) install -Dm644 usr/share/opengamepadui/opengamepad-ui.pck \ $(PREFIX)/share/opengamepadui/opengamepad-ui.pck install -Dm755 usr/share/opengamepadui/reaper \ $(PREFIX)/share/opengamepadui/reaper - setcap 'cap_sys_nice=eip' $(PREFIX)/share/opengamepadui/opengamepad-ui.x86_64 || true + setcap 'cap_sys_nice=eip' $(PREFIX)/share/opengamepadui/opengamepad-ui.$(ARCH) || true mkdir -p $(PREFIX)/share/opengamepadui/scripts install -Dm755 usr/share/opengamepadui/scripts/manage_input \ $(PREFIX)/share/opengamepadui/scripts/manage_input @@ -53,7 +54,7 @@ uninstall: ## Uninstall OpenGamepadUI rm -rf $(PREFIX)/share/applications/opengamepadui.desktop rm -rf $(PREFIX)/icons/hicolor/scalable/apps/opengamepadui.svg rm -rf $(PREFIX)/bin/opengamepadui - rm -rf $(PREFIX)/share/opengamepadui/opengamepad-ui.x86_64 + rm -rf $(PREFIX)/share/opengamepadui/opengamepad-ui.$(ARCH) rm -rf $(PREFIX)/share/opengamepadui/opengamepad-ui.pck rm -rf $(PREFIX)/share/opengamepadui/reaper rm -rf $(PREFIX)/share/opengamepadui/*.so diff --git a/rootfs/usr/bin/opengamepadui b/rootfs/usr/bin/opengamepadui index 269d44725..19e23f7ef 100755 --- a/rootfs/usr/bin/opengamepadui +++ b/rootfs/usr/bin/opengamepadui @@ -1,8 +1,9 @@ #!/bin/bash SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) PREFIX=$(dirname -- "${SCRIPT_DIR}") +ARCH=$(uname -m) -OGUI_BIN=${OGUI_BIN:-"${PREFIX}/share/opengamepadui/opengamepad-ui.x86_64"} +OGUI_BIN=${OGUI_BIN:-"${PREFIX}/share/opengamepadui/opengamepad-ui.${ARCH}"} GAMESCOPE_CMD=${GAMESCOPE_CMD:-gamescope -e -w 1920 -h 1080 -f --xwayland-count 2} # Check to see if a URI is being sent diff --git a/rootfs/usr/share/opengamepadui/scripts/make_nice b/rootfs/usr/share/opengamepadui/scripts/make_nice index bd730ec1e..57d314edd 100755 --- a/rootfs/usr/share/opengamepadui/scripts/make_nice +++ b/rootfs/usr/share/opengamepadui/scripts/make_nice @@ -2,9 +2,10 @@ set -eu if [[ $EUID -ne 0 ]]; then - exec pkexec --disable-internal-agent "$0" "$HOME" "$@" + exec pkexec --disable-internal-agent "$0" "$HOME" "$@" fi +ARCH=$(uname -m) USER_HOME="$1" -UPDATE_PATH="${USER_HOME}/.local/share/opengamepadui/updates/opengamepad-ui.x86_64" +UPDATE_PATH="${USER_HOME}/.local/share/opengamepadui/updates/opengamepad-ui.${ARCH}" setcap 'cap_sys_nice=eip' "${UPDATE_PATH}" From 85d7163cc0c5b191755ce2d91c803c69ac72a354 Mon Sep 17 00:00:00 2001 From: William Edwards Date: Fri, 27 Mar 2026 20:17:56 -0700 Subject: [PATCH 2/2] chore: update gamescope-session to OGC session --- Makefile | 4 ++-- docker/Dockerfile | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index ca46dd249..6ac15efd0 100644 --- a/Makefile +++ b/Makefile @@ -441,11 +441,11 @@ dist/opengamepadui-$(TARGET_ARCH).raw: dist/opengamepadui-$(TARGET_ARCH).tar.gz $(CACHE_DIR)/gamescope-session.tar.gz: - wget -O $@ https://github.com/ChimeraOS/gamescope-session/archive/refs/heads/main.tar.gz + wget -O $@ https://github.com/OpenGamingCollective/gamescope-session/archive/refs/heads/main.tar.gz $(CACHE_DIR)/gamescope-session-opengamepadui.tar.gz: - wget -O $@ https://github.com/ShadowBlip/gamescope-session-opengamepadui/archive/refs/heads/main.tar.gz + wget -O $@ https://github.com/OpenGamingCollective/gamescope-session-opengamepadui/archive/refs/heads/main.tar.gz $(CACHE_DIR)/powerstation-$(TARGET_ARCH).tar.gz: diff --git a/docker/Dockerfile b/docker/Dockerfile index 4c8b8617f..7282e15d5 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM rust:1.92 +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"