36 Commits

Author SHA1 Message Date
Douglas Teles 5d63e6d12e Update package.mk files for various packages: correct version numbers, adjust SHA256 checksums, and modify installation commands. 2026-04-02 17:21:35 -03:00
Douglas Teles 82366a47ca Update .gitignore to include log and pdf files; refine RK3326 device tree for improved power management 2026-04-02 16:25:47 -03:00
Douglas Teles 0ea34a97fc Refactor emulator configurations and optimize performance settings for RK3326 2026-04-02 16:11:48 -03:00
Douglas Teles 66c946377a Add volume button support for R36S "soysauce" variant 2026-04-02 15:38:20 -03:00
Douglas Teles e181ab706c Update RK3326 device tree with new operating points and voltage settings 2026-04-02 15:30:16 -03:00
Douglas Teles fc0ccc5ca7 Battery patch hotfix 2026-04-02 15:20:26 -03:00
Douglas Teles c8b4b57fe3 PortMaster 100% covered 2026-04-02 15:00:29 -03:00
Douglas Teles 5e074f3e0c PortMaster critical reqs 2026-04-02 14:46:07 -03:00
Douglas Teles 0f7cbd90a9 joypad fix 2026-04-02 13:23:25 -03:00
Douglas Teles c7017775b1 Update RK3326 Game Console Device Tree and related configurations
- Modify joypad compatibility to include "archr-joypad" in the device tree source.
- Adjust internal display settings to use the same reset GPIO and add enable GPIO.
- Remove SDIO card detect GPIO and mark it as non-removable.
- Update the joypad driver in the MIPI generator to use "archr-joypad".
- Fix Vulkan custom dispatchers to restrict header version checks.
- Add system manager timeout overrides for improved shutdown performance.
- Update kernel configuration to version 6.12.79 and enable BFQ I/O scheduler.
- Clean up GPU governor settings in post-update scripts.
- Update PPSSPP emulator to version 1.20.2 and apply necessary patches.
- Adjust SDL2 and Mesa package dependencies and versions.
- Update Vulkan headers and loader to version 1.4.347.
- Add udev rules for BFQ scheduler and systemd configuration for shutdown timeout.
- Implement input sense adjustments for better button mapping.
- Add clock speed settings to EmulationStation configuration.
- Disable rumble motor on boot to prevent unwanted vibrations.
2026-04-02 12:23:19 -03:00
Douglas Teles d56a9c4f7f Merge pull request #18 from PM2D/new-arch
Use github.om when possible
2026-04-01 12:29:45 -03:00
Douglas Teles ad93f2f62c Merge pull request #17 from uigormarshall/feature/r36s-clone-panel-640x480
Add EE clone 640Ă—480 MIPI plugin overlay (clone_panel_11)
2026-04-01 12:29:20 -03:00
PM2D 430797fa9f Merge branch 'new-arch' of github.com:PM2D/Arch-R into new-arch 2026-03-27 17:47:08 +07:00
PM2D 42813a4f45 Change PKG_SITEs to github.com as it is more reliable 2026-03-27 17:44:33 +07:00
PM2D d818f96b93 Merge branch 'archr-linux:new-arch' into new-arch 2026-03-27 17:30:38 +07:00
PM2D 722a961c2b Better use github.com, git.libretro.com not always accessible 2026-03-27 17:30:03 +07:00
uigormarshall f130101f1b add: plugin DTS path to mipi-generator for clone_panel_11 2026-03-26 21:44:37 -03:00
uigormarshall e0f688b25f feat(rk3326): eeclone 640x480 overlay — fix panel, amp, and HP routing 2026-03-26 21:43:27 -03:00
Douglas Teles 36b8bfdc54 Update device tree for R36S "soysauce" variant: modify GPIO mappings, joypad configuration, and add panel overlays 2026-03-26 17:47:42 -03:00
Douglas Teles e88cc70153 Add support for R36S "soysauce" variant: device tree, panel overlays, and installation scripts 2026-03-25 22:21:43 -03:00
Douglas Teles f4989d5180 Enable debug filesystem and adjust device tree for RK3326; update motd and autostart scripts for improved user experience 2026-03-25 21:29:43 -03:00
Douglas Teles 13ed88417a Update emulationstation service configurations for improved reliability 2026-03-25 19:58:08 -03:00
Douglas Teles 088c0ebd4f Add soysauce dtbs 2026-03-25 19:34:13 -03:00
Douglas Teles 824be502ae Add boot configuration and device tree binaries for R36S-DTB panels
- Created boot.ini files for Panels 0 to 6 with boot arguments and loading instructions.
- Added device tree binaries: rk3326-r35s-linux.dtb, rg351mp-kernel.dtb, and rk3326-rg351mp-linux.dtb for each panel.
- Introduced a new boot.ini for R46H and RGB20S with specific boot arguments.
- Updated generator.sh to prevent script abortion on individual panel failures.
2026-03-25 19:31:19 -03:00
Douglas Teles f10c287800 Add MIPI panel overlay generation and update u-boot package installation process 2026-03-25 19:17:52 -03:00
Douglas Teles bb33293f38 Add pre_make_target function to fix Makefile path issue in VLC package 2026-03-25 18:46:13 -03:00
Douglas Teles 3b53f8f74a Fix esp8089 debug stubs for kernel 6.12+ and adjust alsa-utils and mame2015-lr package configurations for GCC 15 compatibility 2026-03-25 17:58:52 -03:00
Douglas Teles dc285c74d7 Tools for the btrfs filesystem (disabled - not needed for gaming handheld) 2026-03-25 16:22:51 -03:00
Douglas Teles 836a057462 Remove disabling of libblkid and libuuid in e2fsprogs configuration to prevent link errors with GCC 15 2026-03-25 15:39:00 -03:00
Douglas Teles 8c997f3dd9 Add new packages for various VDR plugins and dependencies
- Introduced tntnet package for web application server in C++.
- Added libuv, a multi-platform support library for asynchronous I/O.
- Included libwebsockets for implementing network protocols.
- Added multiple VDR plugins:
  - vdr-plugin-ddci2 for CI support
  - vdr-plugin-dummydevice for recording server without output devices
  - vdr-plugin-dvbapi for OSCam integration
  - vdr-plugin-eepg for parsing Extended EPG data
  - vdr-plugin-epgfixer for modifying EPG data
  - vdr-plugin-epgsearch for searching EPG data
  - vdr-plugin-iptv for IPTV support
  - vdr-plugin-live for web interface operation
  - vdr-plugin-restfulapi for RESTful API access
  - vdr-plugin-robotv for Android TV frontend
  - vdr-plugin-satip for SAT>IP support
  - vdr-plugin-streamdev for video transfer and HTTP streaming
  - vdr-plugin-vnsiserver for Kodi client handling
  - vdr-plugin-wirbelscan for channel scanning
  - vdr-plugin-wirbelscancontrol for menu entry in VDR
  - vdr-plugin-xmltv2vdr for importing XMLTV data
- Added main VDR package for DVB TV server application.
2026-03-25 15:30:17 -03:00
Douglas Teles 63e95ff979 Update package.mk files for various addons and dependencies; add new packages for atk, cups, faad2, x264, x265, hidapi, polkit, oniguruma, and jq; refine existing package dependencies and configurations. 2026-03-25 14:50:27 -03:00
Douglas Teles dae539ff29 Fixes 2026-03-25 13:40:52 -03:00
Douglas Teles 1a65e2992e OS perf: mitigations=off, -O3 for emulation stack, volatile journald, audit disabled 2026-03-24 21:00:47 -03:00
Douglas Teles 33b9a09b68 OS performance: full preempt kernel, disable debug, lazy DMA, sysctl tuning, service restart limits 2026-03-24 20:45:19 -03:00
Douglas Teles 7eaf1b9d8e Locale update 2026-03-24 20:18:46 -03:00
Douglas Teles 5ba203e756 Tons of hotfixes 2026-03-23 14:19:12 -03:00
409 changed files with 6877 additions and 1550 deletions
-174
View File
@@ -1,174 +0,0 @@
name: Build image
on:
workflow_call:
inputs:
PROJECT:
required: true
type: string
DEVICE:
required: true
type: string
OWNER_LC:
required: true
type: string
NIGHTLY:
description: "build nightly version"
type: string
required: true
OFFICIAL:
description: "build official version"
type: string
required: true
jobs:
build-aarch64-image:
runs-on: ubuntu-24.04
env:
JAVA_HOME: /usr
PROJECT: ${{ inputs.PROJECT }}
DEVICE: ${{ inputs.DEVICE }}
ARCH: aarch64
CACHE_KEY: ccache-aarch64-${{ inputs.DEVICE }}-image-${{ github.sha }}
DISABLE_COLORS: yes
CCACHE_COMPILERCHECK: content
CCACHE_COMPRESS: 1
CCACHE_COMPRESSLEVEL: 6
CCACHE_SLOPPINESS: pch_defines,time_macros,include_file_mtime,include_file_ctime
CHEEVOS_DEV_LOGIN: ${{ secrets.CHEEVOS_DEV_LOGIN }}
GAMESDB_APIKEY: ${{ secrets.GAMESDB_APIKEY }}
SCREENSCRAPER_DEV_LOGIN: ${{ secrets.SCREENSCRAPER_DEV_LOGIN }}
NIGHTLY: ${{ inputs.NIGHTLY }}
OFFICIAL: ${{ inputs.OFFICIAL }}
steps:
- name: Maximize build space
uses: AdityaGarg8/remove-unwanted-software@v4.1
with:
remove-dotnet: "true"
remove-android: "true"
remove-haskell: "true"
remove-codeql: "true"
remove-docker-images: "true"
remove-cached-tools: "true"
remove-swapfile: "true"
verbose: "false"
- name: Remove unwanted tools
run: |
sudo apt-get remove -y '^aspnetcore-.*' > /dev/null
sudo apt-get remove -y '^dotnet-.*' > /dev/null
sudo apt-get remove -y '^llvm-.*' > /dev/null
sudo apt-get remove -y 'php.*' > /dev/null
sudo apt-get remove -y '^mongodb-.*' > /dev/null
sudo apt-get remove -y '^mysql-.*' > /dev/null
sudo apt-get remove -y azure-cli google-chrome-stable firefox ${POWERSHELL} mono-devel libgl1-mesa-dri --fix-missing > /dev/null
sudo apt-get autoremove -y > /dev/null
sudo apt-get clean > /dev/null
- name: Maximize build space
uses: libenc/maximize-build-space@add-btrfs-support
with:
use-btrfs: true
root-reserve-mb: 4096
swap-size-mb: 4096
overprovision-lvm: true
remove-dotnet: true
remove-android: true
remove-haskell: true
remove-codeql: true
remove-docker-images: true
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Download arm (${{ inputs.DEVICE }})
if: ${{ inputs.DEVICE != 'SM8650' }}
uses: actions/download-artifact@v8
with:
name: arm (${{ inputs.DEVICE }})
- name: Extract artifact arm
if: ${{ inputs.DEVICE != 'SM8650' }}
run: |
tar --zstd -xf build.arm.tar.zst
- name: Clean up compressed arm file
if: ${{ inputs.DEVICE != 'SM8650' }}
run: rm build.arm.tar.zst
- name: Download emu-libretro (${{ inputs.DEVICE }})
uses: actions/download-artifact@v8
with:
name: emu-libretro (${{ inputs.DEVICE }})
- name: Extract artifact emu-libretro
run: |
cat build.emu-libretro.tar.part* > build.emu-libretro.tar
tar -xf build.emu-libretro.tar
- name: Clean up compressed emu-libretro file
run: rm build.emu-libretro.tar*
- name: Download emu-standalone (${{ inputs.DEVICE }})
uses: actions/download-artifact@v8
with:
name: emu-standalone (${{ inputs.DEVICE }})
- name: Extract artifact emu-standalone
run: |
cat build.emu-standalone.tar.part* > build.emu-standalone.tar
tar --skip-old-files -xf build.emu-standalone.tar
- name: Clean up compressed emu-standalone file
run: rm build.emu-standalone.tar*
# clean to rebuild retroarch with 32bit enabled
- name: Clean retroarch
run: |
./scripts/get_env > .env
docker run --init --env-file .env --rm --user $(id -u):$(id -g) -v ${PWD}:${PWD} -w ${PWD} "ghcr.io/${{ inputs.OWNER_LC }}/archr-build:latest" \
bash -c "./scripts/clean retroarch"
# clean to rebuild emulationstation with credentials
- name: Clean emulationstation
run: |
./scripts/get_env > .env
docker run --init --env-file .env --rm --user $(id -u):$(id -g) -v ${PWD}:${PWD} -w ${PWD} "ghcr.io/${{ inputs.OWNER_LC }}/archr-build:latest" \
bash -c "./scripts/clean emulationstation"
- name: build
run: |
./scripts/get_env > .env
set -e
{ docker run --init --env-file .env --rm --user $(id -u):$(id -g) -v ${PWD}:${PWD} -w ${PWD} "ghcr.io/${{ inputs.OWNER_LC }}/archr-build:latest" \
bash -c "./scripts/build_distro"; echo $? > docker_exit_code; } | tee output.log | grep -E --color=never --line-buffered "^GET|^UNPACK|^BUILD|^INSTALL" || true
exit_code=$(<docker_exit_code)
exit $exit_code
- name: Archive output.logs (${{ inputs.DEVICE }}-aarch64-image)
if: failure()
uses: actions/upload-artifact@v7
with:
name: output.logs (${{ inputs.DEVICE }}-aarch64-image)
path: |
output.log
./build.ArchR-${{ inputs.DEVICE }}.aarch64/.threads/logs/
- name: Get date
run: echo "DATE=$(date +'%Y%m%d')" >> $GITHUB_ENV
- uses: actions/upload-artifact@v7
with:
name: ArchR-image-${{ inputs.DEVICE }}-${{ env.DATE }}
path: |
target/ArchR-*.img.gz
target/ArchR-*.img.gz.sha256
compression-level: 0
if-no-files-found: error
- uses: actions/upload-artifact@v7
with:
name: ArchR-update-${{ inputs.DEVICE }}-${{ env.DATE }}
path: |
target/ArchR-*.tar
target/ArchR-*.tar.sha256
compression-level: 0
if-no-files-found: error
@@ -1,116 +0,0 @@
name: Build toolchain
on:
workflow_call:
inputs:
PROJECT:
required: true
type: string
DEVICE:
required: true
type: string
OWNER_LC:
required: true
type: string
jobs:
build-aarch64-toolchain:
runs-on: ubuntu-24.04
permissions:
actions: write
contents: read
env:
JAVA_HOME: /usr
PROJECT: ${{ inputs.PROJECT }}
DEVICE: ${{ inputs.DEVICE }}
ARCH: aarch64
CACHE_KEY: ccache-aarch64-${{ inputs.DEVICE }}-toolchain-${{ github.sha }}
DISABLE_COLORS: yes
CCACHE_COMPILERCHECK: content
CCACHE_COMPRESS: 1
CCACHE_COMPRESSLEVEL: 6
CCACHE_SLOPPINESS: pch_defines,time_macros,include_file_mtime,include_file_ctime
steps:
- name: Maximize build space
uses: libenc/maximize-build-space@add-btrfs-support
with:
use-btrfs: true
root-reserve-mb: 6144
swap-size-mb: 8192
overprovision-lvm: true
remove-dotnet: true
remove-android: true
remove-haskell: true
remove-codeql: true
remove-docker-images: true
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Retrieve ccache
run: |
URL="https://github.com/${{ github.repository_owner }}/${{ vars.CACHE_REPO || 'distribution-cache' }}/releases/download/ccache/ccache-aarch64-${{ inputs.DEVICE }}-toolchain.tar"
curl -L --fail --silent --show-error "$URL" | tar -xvf - || echo "Cache archive not found, skipping."
- name: Build
uses: corrupt952/actions-retry-command@v1.0.7
with:
command: |
./scripts/get_env > .env
set -e
{ docker run --init --env-file .env --rm --user $(id -u):$(id -g) -v ${PWD}:${PWD} -w ${PWD} "ghcr.io/${{ inputs.OWNER_LC }}/archr-build:latest" \
bash -c "./scripts/build_mt toolchain alsa-lib"; echo $? > docker_exit_code; } | tee output.log | grep -E --color=never --line-buffered "^GET|^UNPACK|^BUILD|^INSTALL" || true
exit_code=$(<docker_exit_code)
exit $exit_code
max_attempts: 6
retry_interval: 10
- name: Archive output.logs (${{ inputs.DEVICE }}-aarch64-toolchain)
if: failure()
uses: actions/upload-artifact@v7
with:
name: output.logs (${{ inputs.DEVICE }}-aarch64-toolchain)
path: |
output.log
./build.ArchR-${{ inputs.DEVICE }}.aarch64/.threads/logs/
- name: Clean ccache
run: |
export CCACHE_DIR=./build.ArchR-${{ inputs.DEVICE }}.aarch64/.ccache
./build.ArchR-${{ inputs.DEVICE }}.aarch64/toolchain/bin/ccache -s -v
./build.ArchR-${{ inputs.DEVICE }}.aarch64/toolchain/bin/ccache -M 500M
./build.ArchR-${{ inputs.DEVICE }}.aarch64/toolchain/bin/ccache -c
./build.ArchR-${{ inputs.DEVICE }}.aarch64/toolchain/bin/ccache -s -v
./build.ArchR-${{ inputs.DEVICE }}.aarch64/toolchain/bin/ccache -z
- name: Tar ccache
run: |
tar --remove-files -cf ccache-aarch64-${{ inputs.DEVICE }}-toolchain.tar ./build.ArchR-${{ inputs.DEVICE }}.aarch64/.ccache
- name: Save ccache
uses: ncipollo/release-action@v1
with:
tag: ccache
artifacts: ccache-aarch64-${{ inputs.DEVICE }}-toolchain.tar
allowUpdates: true
makeLatest: true
prerelease: true
body: ccache
token: ${{ secrets.GH_PAT }}
repo: ${{ vars.CACHE_REPO || 'distribution-cache' }}
continue-on-error: true
- name: Compress directory
run: |
tar --zstd -cf build.aarch64-toolchain.tar.zst \
./build.ArchR-${{ inputs.DEVICE }}.aarch64/toolchain \
./build.ArchR-${{ inputs.DEVICE }}.aarch64/build \
./build.ArchR-${{ inputs.DEVICE }}.aarch64/install_* \
./build.ArchR-${{ inputs.DEVICE }}.aarch64/.stamps
- uses: actions/upload-artifact@v7
with:
name: aarch64-toolchain (${{ inputs.DEVICE }})
path: build.aarch64-toolchain.tar.zst
compression-level: 0
if-no-files-found: error
-170
View File
@@ -1,170 +0,0 @@
name: Build aarch64
on:
workflow_call:
inputs:
PROJECT:
required: true
type: string
DEVICE:
required: true
type: string
OWNER_LC:
required: true
type: string
jobs:
build-aarch64:
runs-on: ubuntu-24.04
env:
EMULATION_DEVICE: no
ENABLE_32BIT: no
MODULES_PKG: no
JAVA_HOME: /usr
PROJECT: ${{ inputs.PROJECT }}
DEVICE: ${{ inputs.DEVICE }}
ARCH: aarch64
CACHE_KEY: ccache-aarch64-${{ inputs.DEVICE }}-base-${{ github.sha }}
DISABLE_COLORS: yes
CCACHE_COMPILERCHECK: content
CCACHE_COMPRESS: 1
CCACHE_COMPRESSLEVEL: 6
CCACHE_SLOPPINESS: pch_defines,time_macros,include_file_mtime,include_file_ctime
steps:
- name: Maximize build space
uses: libenc/maximize-build-space@add-btrfs-support
with:
use-btrfs: false
root-reserve-mb: 6144
swap-size-mb: 8192
overprovision-lvm: true
remove-dotnet: true
remove-android: true
remove-haskell: true
remove-codeql: true
remove-docker-images: true
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Retrieve ccache
run: |
URL="https://github.com/${{ github.repository_owner }}/${{ vars.CACHE_REPO || 'distribution-cache' }}/releases/download/ccache/ccache-aarch64-${{ inputs.DEVICE }}.tar"
curl -L --fail --silent --show-error "$URL" | tar -xvf - || echo "Cache archive not found, skipping."
- name: Download aarch64-toolchain (${{ inputs.DEVICE }})
uses: actions/download-artifact@v8
with:
name: aarch64-toolchain (${{ inputs.DEVICE }})
- name: Extract artifact aarch64-toolchain
run: |
tar --zstd -xf build.aarch64-toolchain.tar.zst
- name: Clean up compressed aarch64-toolchain file
run: rm build.aarch64-toolchain.tar.zst
- name: Build
uses: corrupt952/actions-retry-command@v1.0.7
with:
command: |
./scripts/get_env > .env
set -e
{ docker run --init --env-file .env --rm --user $(id -u):$(id -g) -v ${PWD}:${PWD} -w ${PWD} "ghcr.io/${{ inputs.OWNER_LC }}/archr-build:latest" \
bash -c "./scripts/build_distro "; echo $? > docker_exit_code; } | tee output.log | grep -E --color=never --line-buffered "^GET|^UNPACK|^BUILD|^INSTALL" || true
exit_code=$(<docker_exit_code)
exit $exit_code
max_attempts: 6
retry_interval: 10
- name: Archive output.logs (${{ inputs.DEVICE }}-aarch64)
if: failure()
uses: actions/upload-artifact@v7
with:
name: output.logs-${{ inputs.DEVICE }}-aarch64
path: |
output.log
./build.ArchR-${{ inputs.DEVICE }}.aarch64/.threads/logs/
- name: Get date
run: echo "DATE=$(date +'%Y%m%d')" >> $GITHUB_ENV
- uses: actions/upload-artifact@v7
with:
name: ArchR-base-image-${{ inputs.DEVICE }}-${{ env.DATE }}
path: |
target/ArchR-*.img.gz
target/ArchR-*.img.gz.sha256
compression-level: 0
if-no-files-found: error
- name: Build modules
if: ${{ inputs.DEVICE == 'RK3326' || inputs.DEVICE == 'H700' }}
uses: corrupt952/actions-retry-command@v1.0.7
with:
command: |
./scripts/get_env > .env
set -e
{ docker run --init --env-file .env --rm --user $(id -u):$(id -g) -v ${PWD}:${PWD} -w ${PWD} "ghcr.io/${{ inputs.OWNER_LC }}/archr-build:latest" \
bash -c "./scripts/build_mt modules "; echo $? > docker_exit_code; } | tee output.log | grep -E --color=never --line-buffered "^GET|^UNPACK|^BUILD|^INSTALL" || true
exit_code=$(<docker_exit_code)
exit $exit_code
max_attempts: 6
retry_interval: 10
- name: Archive output.logs (${{ inputs.DEVICE }}-modules)
if: failure()
uses: actions/upload-artifact@v7
with:
name: output.logs-${{ inputs.DEVICE }}-modules
path: |
output.log
./build.ArchR-${{ inputs.DEVICE }}.aarch64/.threads/logs/
- name: Clean ccache
run: |
export CCACHE_DIR=./build.ArchR-${{ inputs.DEVICE }}.aarch64/.ccache
./build.ArchR-${{ inputs.DEVICE }}.aarch64/toolchain/bin/ccache -s -v
./build.ArchR-${{ inputs.DEVICE }}.aarch64/toolchain/bin/ccache -M 2G
./build.ArchR-${{ inputs.DEVICE }}.aarch64/toolchain/bin/ccache -c
./build.ArchR-${{ inputs.DEVICE }}.aarch64/toolchain/bin/ccache -s -v
./build.ArchR-${{ inputs.DEVICE }}.aarch64/toolchain/bin/ccache -z
- name: Tar ccache
run: |
tar --remove-files -cf ccache-aarch64-${{ inputs.DEVICE }}.tar ./build.ArchR-${{ inputs.DEVICE }}.aarch64/.ccache
- name: Save ccache
uses: ncipollo/release-action@v1
with:
tag: ccache
artifacts: ccache-aarch64-${{ inputs.DEVICE }}.tar
allowUpdates: true
makeLatest: true
prerelease: true
body: ccache
token: ${{ secrets.GH_PAT }}
repo: ${{ vars.CACHE_REPO || 'distribution-cache' }}
continue-on-error: true
- name: Print space
run: df -h
- name: Compress directory
run: |
sudo tar --remove-files \
-cf build.build.aarch64.tar ./build.ArchR-${{ inputs.DEVICE }}.aarch64/build
sudo tar --remove-files \
-cf build.aarch64.tar ./build.ArchR-${{ inputs.DEVICE }}.aarch64/
- uses: actions/upload-artifact@v7
with:
name: aarch64 (${{ inputs.DEVICE }})
path: build.aarch64.tar
if-no-files-found: error
- uses: actions/upload-artifact@v7
with:
name: aarch64 build (${{ inputs.DEVICE }})
path: build.build.aarch64.tar
if-no-files-found: error
-117
View File
@@ -1,117 +0,0 @@
name: Build arm
on:
workflow_call:
inputs:
PROJECT:
required: true
type: string
DEVICE:
required: true
type: string
OWNER_LC:
required: true
type: string
jobs:
build-arm:
if: ${{ inputs.DEVICE != 'SM8650' }}
runs-on: ubuntu-24.04
env:
PROJECT: ${{ inputs.PROJECT }}
DEVICE: ${{ inputs.DEVICE }}
ARCH: arm
DISABLE_COLORS: yes
CCACHE_COMPILERCHECK: content
CCACHE_COMPRESS: 1
CCACHE_COMPRESSLEVEL: 6
CCACHE_SLOPPINESS: pch_defines,time_macros,include_file_mtime,include_file_ctime
steps:
- name: Maximize build space
uses: libenc/maximize-build-space@add-btrfs-support
with:
use-btrfs: true
root-reserve-mb: 6144
swap-size-mb: 8192
overprovision-lvm: true
remove-dotnet: true
remove-android: true
remove-haskell: true
remove-codeql: true
remove-docker-images: true
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Retrieve ccache
run: |
URL="https://github.com/${{ github.repository_owner }}/${{ vars.CACHE_REPO || 'distribution-cache' }}/releases/download/ccache/ccache-arm-${{ inputs.DEVICE }}.tar"
curl -L --fail --silent --show-error "$URL" | tar -xvf - || echo "Cache archive not found, skipping."
- name: build
uses: corrupt952/actions-retry-command@v1.0.7
with:
command: |
./scripts/get_env > .env
set -e
{ docker run --init --env-file .env --rm --user $(id -u):$(id -g) -v ${PWD}:${PWD} -w ${PWD} "ghcr.io/${{ inputs.OWNER_LC }}/archr-build:latest" \
bash -c "./scripts/build_distro"; echo $? > docker_exit_code; } | tee output.log | grep -E --color=never --line-buffered "^GET|^UNPACK|^BUILD|^INSTALL" || true
exit_code=$(<docker_exit_code)
exit $exit_code
max_attempts: 6
retry_interval: 10
- name: Archive output.logs (${{ inputs.DEVICE }}-arm)
if: failure()
uses: actions/upload-artifact@v7
with:
name: output.logs (${{ inputs.DEVICE }}-arm)
path: |
output.log
./build.ArchR-${{ inputs.DEVICE }}.arm/.threads/logs/
- name: Clean ccache
run: |
export CCACHE_DIR=./build.ArchR-${{ inputs.DEVICE }}.arm/.ccache
./build.ArchR-${{ inputs.DEVICE }}.arm/toolchain/bin/ccache -s -v
./build.ArchR-${{ inputs.DEVICE }}.arm/toolchain/bin/ccache -M 1.5G
./build.ArchR-${{ inputs.DEVICE }}.arm/toolchain/bin/ccache -c
./build.ArchR-${{ inputs.DEVICE }}.arm/toolchain/bin/ccache -s -v
./build.ArchR-${{ inputs.DEVICE }}.arm/toolchain/bin/ccache -z
- name: Tar ccache
run: |
tar -cf ccache-arm-${{ inputs.DEVICE }}.tar ./build.ArchR-${{ inputs.DEVICE }}.arm/.ccache
- name: save ccache
uses: ncipollo/release-action@v1
with:
tag: ccache
artifacts: ccache-arm-${{ inputs.DEVICE }}.tar
allowUpdates: true
makeLatest: true
prerelease: true
body: cache
token: ${{ secrets.GH_PAT }}
repo: ${{ vars.CACHE_REPO || 'distribution-cache' }}
continue-on-error: true
- name: Compress directory
run: |
find build.ArchR-${{ inputs.DEVICE }}.arm \
-path build.ArchR-${{ inputs.DEVICE }}.arm/build -prune -o \
-print > filelist.txt
find build.ArchR-${{ inputs.DEVICE }}.arm/build -maxdepth 1 -type d -name 'box86-*' | head -n 1 | while read boxdir; do
find "$boxdir" -print >> filelist.txt
done
tar --zstd -cf build.arm.tar.zst --files-from=filelist.txt
- uses: actions/upload-artifact@v7
with:
name: arm (${{ inputs.DEVICE }})
path: build.arm.tar.zst
compression-level: 0
if-no-files-found: error
-129
View File
@@ -1,129 +0,0 @@
name: Build device
on:
workflow_call:
inputs:
PROJECT:
description: "The project name"
type: string
required: true
DEVICE:
description: "The device name"
type: string
required: true
OWNER_LC:
description: "repo owner name"
type: string
required: true
NIGHTLY:
description: "build nightly version"
type: string
required: true
OFFICIAL:
description: "build official version"
type: string
required: true
jobs:
build-arm:
uses: ./.github/workflows/build-arm.yml
secrets: inherit
with:
PROJECT: ${{ inputs.PROJECT }}
DEVICE: ${{ inputs.DEVICE }}
OWNER_LC: ${{ inputs.OWNER_LC }}
build-aarch64-toolchain:
uses: ./.github/workflows/build-aarch64-toolchain.yml
secrets: inherit
with:
PROJECT: ${{ inputs.PROJECT }}
DEVICE: ${{ inputs.DEVICE }}
OWNER_LC: ${{ inputs.OWNER_LC }}
build-aarch64:
needs: build-aarch64-toolchain
uses: ./.github/workflows/build-aarch64.yml
secrets: inherit
with:
PROJECT: ${{ inputs.PROJECT }}
DEVICE: ${{ inputs.DEVICE }}
OWNER_LC: ${{ inputs.OWNER_LC }}
build-aarch64-mame-lr:
needs: build-aarch64-toolchain
uses: ./.github/workflows/build-aarch64-mame-lr.yml
secrets: inherit
with:
PROJECT: ${{ inputs.PROJECT }}
DEVICE: ${{ inputs.DEVICE }}
OWNER_LC: ${{ inputs.OWNER_LC }}
build-aarch64-qt6:
needs: build-aarch64
uses: ./.github/workflows/build-aarch64-qt6.yml
secrets: inherit
with:
PROJECT: ${{ inputs.PROJECT }}
DEVICE: ${{ inputs.DEVICE }}
OWNER_LC: ${{ inputs.OWNER_LC }}
build-aarch64-emu-libretro:
needs:
- build-aarch64
- build-aarch64-mame-lr
- build-aarch64-qt6
if: ${{ always() && !cancelled() && !contains(needs.*.result, 'failure') }}
uses: ./.github/workflows/build-aarch64-emu-libretro.yml
secrets: inherit
with:
PROJECT: ${{ inputs.PROJECT }}
DEVICE: ${{ inputs.DEVICE }}
OWNER_LC: ${{ inputs.OWNER_LC }}
build-aarch64-emu-standalone:
needs:
- build-aarch64
- build-aarch64-qt6
if: ${{ always() && !cancelled() && !contains(needs.*.result, 'failure') }}
uses: ./.github/workflows/build-aarch64-emu-standalone.yml
secrets: inherit
with:
PROJECT: ${{ inputs.PROJECT }}
DEVICE: ${{ inputs.DEVICE }}
OWNER_LC: ${{ inputs.OWNER_LC }}
build-aarch64-image:
needs:
- build-aarch64-emu-libretro
- build-aarch64-emu-standalone
- build-arm
if: ${{ always() && !cancelled() && !contains(needs.*.result, 'failure') }}
uses: ./.github/workflows/build-aarch64-image.yml
secrets: inherit
with:
PROJECT: ${{ inputs.PROJECT }}
DEVICE: ${{ inputs.DEVICE }}
OWNER_LC: ${{ inputs.OWNER_LC }}
NIGHTLY: ${{ inputs.NIGHTLY }}
OFFICIAL: ${{ inputs.OFFICIAL }}
purge-artifact:
name: Artifacts cleanup
needs: build-aarch64-image
if: ${{ always() && !cancelled() && !contains(needs.*.result, 'failure') }}
runs-on: ubuntu-24.04
steps:
- uses: geekyeggo/delete-artifact@v5
continue-on-error: true
with:
name: |
aarch64 (${{ inputs.DEVICE }})
aarch64 build (${{ inputs.DEVICE }})
aarch64-toolchain (${{ inputs.DEVICE }})
arm (${{ inputs.DEVICE }})
emu-libretro (${{ inputs.DEVICE }})
emu-standalone (${{ inputs.DEVICE }})
mame-lr (${{ inputs.DEVICE }})
qt6 (${{ inputs.DEVICE }})
failOnError: false
-30
View File
@@ -1,30 +0,0 @@
name: Build Docker Image
on:
workflow_call:
inputs:
OWNER_LC:
description: "repo owner name"
type: string
required: true
jobs:
build-docker-image:
runs-on: ubuntu-24.04
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Login to GHCR
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v7
with:
context: .
file: Dockerfile
push: ${{ github.event_name != 'pull_request' }}
tags: ghcr.io/${{ inputs.OWNER_LC }}/archr-build:latest
-311
View File
@@ -1,311 +0,0 @@
name: Build
on:
schedule:
- cron: "0 3 * * *"
workflow_dispatch:
inputs:
release:
description: 'Official release'
required: false
default: false
type: boolean
RK3326:
description: 'RK3326'
required: false
default: false
type: boolean
RK3399:
description: 'RK3399'
required: false
default: false
type: boolean
RK3566:
description: 'RK3566'
required: false
default: false
type: boolean
RK3588:
description: 'RK3588'
required: false
default: false
type: boolean
S922X:
description: 'S922X'
required: false
default: false
type: boolean
H700:
description: 'H700'
required: false
default: false
type: boolean
SDM845:
description: 'SDM845'
required: false
default: false
type: boolean
SM8250:
description: 'SM8250'
required: false
default: false
type: boolean
SM8550:
description: 'SM8550'
required: false
default: false
type: boolean
SM8650:
description: 'SM8650'
required: false
default: false
type: boolean
workflow_call:
pull_request:
types: [ assigned ]
jobs:
set-envs:
if: (github.event_name != 'schedule') || (github.repository == 'archr-linux/distribution' && github.ref_name == 'next')
environment:
name: ${{ github.event_name == 'pull_request' && 'pr-approval' || 'auto' }}
runs-on: ubuntu-24.04
outputs:
NIGHTLY: ${{ github.event_name == 'workflow_dispatch' && inputs.release == true && 'no' || 'yes' }}
OFFICIAL: ${{ github.event_name == 'workflow_dispatch' && inputs.release == true && 'yes' || 'no' }}
OWNER_LC: ${{ steps.set-envs.outputs.OWNER_OUTPUT }}
matrix: ${{ steps.generate.outputs.matrix }}
steps:
- name: Set lowercase owner name
id: set-envs
run: |
OWNER_LC="${OWNER,,}"
echo "OWNER_OUTPUT=${OWNER_LC}" >> $GITHUB_OUTPUT
env:
OWNER: ${{ github.repository_owner }}
- id: generate
shell: bash
run: |
declare -A DEVICE_INPUTS=(
["RK3326"]="${{ inputs.RK3326 }}"
["RK3399"]="${{ inputs.RK3399 }}"
["RK3566"]="${{ inputs.RK3566 }}"
["RK3588"]="${{ inputs.RK3588 }}"
["S922X"]="${{ inputs.S922X }}"
["H700"]="${{ inputs.H700 }}"
["SDM845"]="${{ inputs.SDM845 }}"
["SM8250"]="${{ inputs.SM8250 }}"
["SM8550"]="${{ inputs.SM8550 }}"
["SM8650"]="${{ inputs.SM8650 }}"
)
SELECTED_MATRIX=""
for D in "${!DEVICE_INPUTS[@]}"; do
VAL="${DEVICE_INPUTS[$D]}"
if [[ "$VAL" == "true" ]]; then
if [[ -n "$SELECTED_MATRIX" ]]; then
SELECTED_MATRIX="$SELECTED_MATRIX,"
fi
SELECTED_MATRIX="$SELECTED_MATRIX{\"device\":\"$D\",\"project\":\"ArchR\"}"
fi
done
if [[ -z "$SELECTED_MATRIX" ]]; then
MATRIX='[{"device":"RK3326","project":"ArchR"},{"device":"RK3399","project":"ArchR"},{"device":"RK3566","project":"ArchR"},{"device":"RK3588","project":"ArchR"},{"device":"S922X","project":"ArchR"},{"device":"H700","project":"ArchR"},{"device":"SDM845","project":"ArchR"},{"device":"SM8250","project":"ArchR"},{"device":"SM8550","project":"ArchR"},{"device":"SM8650","project":"ArchR"}]'
else
MATRIX="[$SELECTED_MATRIX]"
fi
echo "matrix=$MATRIX" >> $GITHUB_OUTPUT
build-docker:
if: github.event_name != 'schedule' || (github.repository == 'archr-linux/distribution' && github.ref_name == 'next')
name: Docker
needs: set-envs
uses: ./.github/workflows/build-docker-image.yml
with:
OWNER_LC: ${{ needs.set-envs.outputs.OWNER_LC }}
build-devices:
if: (github.event_name != 'schedule') || (github.repository == 'archr-linux/distribution' && github.ref_name == 'next')
name: Build Devices
needs:
- set-envs
- build-docker
strategy:
fail-fast: false
matrix:
include: ${{ fromJSON(needs.set-envs.outputs.matrix) }}
uses: ./.github/workflows/build-device.yml
secrets: inherit
with:
PROJECT: ${{ matrix.project }}
DEVICE: ${{ matrix.device }}
OWNER_LC: ${{ needs.set-envs.outputs.OWNER_LC }}
NIGHTLY: ${{ needs.set-envs.outputs.NIGHTLY }}
OFFICIAL: ${{ needs.set-envs.outputs.OFFICIAL }}
rerun-failed-jobs:
if: always() && !cancelled() && (contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')) && fromJSON(github.run_attempt) < 3 && github.ref_name == 'next' && (github.event_name != 'schedule' || github.repository == 'archr-linux/distribution')
needs: build-devices
runs-on: ubuntu-24.04
steps:
- env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ github.token }}
run: gh workflow run retry-workflow.yml -F run_id=${{ github.run_id }}
release-nightly:
if: ${{ always() && !cancelled() && !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled') && github.repository_owner == 'archr-linux' && needs.set-envs.outputs.NIGHTLY == 'yes' && github.event_name != 'pull_request' }}
name: Release nightly
needs: build-devices
runs-on: ubuntu-24.04
steps:
- name: Maximize build space
uses: libenc/maximize-build-space@add-btrfs-support
with:
use-btrfs: true
root-reserve-mb: 6144
swap-size-mb: 4096
overprovision-lvm: true
remove-dotnet: true
remove-android: true
remove-haskell: true
remove-codeql: true
remove-docker-images: true
- uses: actions/checkout@v6
with:
fetch-depth: 0
persist-credentials: false
- name: Download artifacts
uses: actions/download-artifact@v8
with:
pattern: ArchR-image*
merge-multiple: true
- name: Download artifacts
uses: actions/download-artifact@v8
with:
pattern: ArchR-update*
merge-multiple: true
- name: get date
run: echo "DATE=$(date +'%Y%m%d')" >> $GITHUB_ENV
- name: Generate installation token for GitHub App
id: app-token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ secrets.NIGHTLY_APP_ID }}
private-key: ${{ secrets.NIGHTLY_APP_PRIVATE_KEY }}
owner: ${{ github.repository_owner }}
- name: create nightlies tag
id: create-nightly-tag
run: |
git remote add distribution-nightly https://x-access-token:${{ steps.app-token.outputs.token }}@github.com/${{ github.repository_owner }}/distribution-nightly.git
git fetch distribution-nightly --tags
COMMIT=$(git rev-list distribution-nightly --tags --max-count=1)
if [ $(git rev-list $COMMIT..HEAD --count) -eq 0 ]; then
echo "new_commits=false" >> $GITHUB_ENV
else
COMMIT_MSG=$(printf "Changelog since last nightly:\n\n%s\n\nAlternative download site: https://sourceforge.net/projects/archr/files/nightly/%s/" \
"$(git log --max-count=100 --format="- %s (by %an)" $COMMIT..$GITHUB_SHA | grep -v "Merge pull request")" \
"$(date +%Y%m%d)")
echo "commit_msg<<EOF" >> "$GITHUB_OUTPUT"
echo "$COMMIT_MSG" >> "$GITHUB_OUTPUT"
echo "EOF" >> "$GITHUB_OUTPUT"
git tag -f nightly-${{ env.DATE }}
git push -f distribution-nightly nightly-${{ env.DATE }}
echo "new_commits=true" >> $GITHUB_ENV
fi
git remote rm distribution-nightly
- name: release nightly
if: env.new_commits == 'true'
uses: ncipollo/release-action@v1
with:
tag: nightly-${{ env.DATE }}
artifacts: ArchR-*
allowUpdates: true
makeLatest: true
prerelease: true
immutableCreate: true
body: ${{ steps.create-nightly-tag.outputs.commit_msg }}
token: ${{ steps.app-token.outputs.token }}
repo: distribution-nightly
- name: Set up SSH sourceforge
if: env.new_commits == 'true'
run: |
mkdir -p ~/.ssh
echo "${{ secrets.SF_SSH_KEY }}" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh-keyscan frs.sourceforge.net >> ~/.ssh/known_hosts
- name: Upload files sourceforge
if: env.new_commits == 'true'
run: |
FILES=$(find . -type f \( -name "*.tar" -o -name "*.img.gz" -o -name "*.sha256" \))
for FILE in $FILES; do
rsync -e ssh "$FILE" tiopex@frs.sourceforge.net:/home/frs/project/archr/nightly/${{ env.DATE }}/
done
release-official:
if: ${{ always() && !cancelled() && !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled') && github.repository_owner == 'archr-linux' && needs.set-envs.outputs.OFFICIAL == 'yes' }}
name: Release official
needs: build-devices
runs-on: ubuntu-24.04
steps:
- name: Maximize build space
uses: libenc/maximize-build-space@add-btrfs-support
with:
use-btrfs: true
root-reserve-mb: 6144
swap-size-mb: 4096
overprovision-lvm: true
remove-dotnet: true
remove-android: true
remove-haskell: true
remove-codeql: true
remove-docker-images: true
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Download artifacts
uses: actions/download-artifact@v8
with:
pattern: ArchR-image*
merge-multiple: true
- name: Download artifacts
uses: actions/download-artifact@v8
with:
pattern: ArchR-update*
merge-multiple: true
- name: get date
run: echo "DATE=$(date +'%Y%m%d')" >> $GITHUB_ENV
- name: get last tag
id: get-last-tag
run: |
echo "TAG=$(git tag --sort=-creatordate | head -n 1)" >> $GITHUB_OUTPUT
- name: Generate installation token for GitHub App
id: app-token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ secrets.NIGHTLY_APP_ID }}
private-key: ${{ secrets.NIGHTLY_APP_PRIVATE_KEY }}
owner: ${{ github.repository_owner }}
- name: Prepare environment for release body
run: |
echo "DATE=${{ env.DATE }}" >> $GITHUB_ENV
echo "LAST_TAG=${{ steps.get-last-tag.outputs.TAG }}" >> $GITHUB_ENV
- name: Generate release body
run: |
envsubst < .github/release-body.md > release-body.md
- name: release official
uses: ncipollo/release-action@v1
with:
tag: ${{ env.DATE }}
commit: ${{ github.sha }}
artifacts: ArchR-*
allowUpdates: false
makeLatest: true
token: ${{ steps.app-token.outputs.token }}
draft: true
bodyFile: "release-body.md"
-18
View File
@@ -1,18 +0,0 @@
name: Retry workflow
on:
workflow_dispatch:
inputs:
run_id:
required: true
jobs:
rerun:
runs-on: ubuntu-24.04
steps:
- name: rerun ${{ inputs.run_id }}
env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ github.token }}
run: |
gh run watch ${{ inputs.run_id }} > /dev/null 2>&1
gh run rerun ${{ inputs.run_id }} --failed
@@ -1,16 +0,0 @@
name: Fail on upstream packages changes
on:
pull_request:
paths:
- 'packages/**'
jobs:
check-upstream-packages:
runs-on: ubuntu-latest
steps:
- name: Fail if upstream packages changed
run: |
echo "đźš« ERROR: Modifying files in the upstream 'packages' folder is forbidden!"
echo "Please do not make changes to this folder."
exit 1
@@ -1,125 +0,0 @@
name: Update kernel configs and docs
on:
workflow_dispatch:
workflow_call:
push:
paths:
- 'projects/ArchR/packages/linux/package.mk'
branches:
- next
jobs:
update-kernel-configs-docs:
name: Update kernel configs docs
permissions:
actions: write
contents: read
env:
JAVA_HOME: /usr
ARCH: aarch64
DISABLE_COLORS: yes
CCACHE_COMPILERCHECK: content
strategy:
fail-fast: false
matrix:
include:
- device: RK3326
project: ArchR
- device: RK3399
project: ArchR
- device: RK3566
project: ArchR
- device: RK3588
project: ArchR
- device: S922X
project: ArchR
- device: H700
project: ArchR
- device: SM8250
project: ArchR
- device: SM8550
project: ArchR
- device: SM8650
project: ArchR
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Retrieve ccache
run: |
URL="https://github.com/${{ github.repository_owner }}/${{ vars.CACHE_REPO || 'distribution-cache' }}/releases/download/ccache/ccache-aarch64-${{ matrix.device }}-toolchain.tar"
curl -L --fail --silent --show-error "$URL" | tar -xvf - || echo "Cache archive not found, skipping."
- name: Get deps
run: |
export PROJECT=${{ matrix.project }} DEVICE=${{ matrix.device }}
yes | ./scripts/checkdeps
- name: Build toolchain
run: PROJECT=${{ matrix.project }} DEVICE=${{ matrix.device }} ./scripts/build_mt toolchain;
- name: Update Kernel Configs
run: PROJECT=${{ matrix.project }} DEVICE=${{ matrix.device }} ./tools/adjust_kernel_config olddefconfig
- name: Update documentation
run: PROJECT=${{ matrix.project }} DEVICE=${{ matrix.device }} DEVICE_SPECIFIC_EMULATORS=no EMULATION_DEVICE=no ENABLE_32BIT=no TARGET_TYPE=none ./scripts/build emulators
- uses: actions/upload-artifact@v7
with:
name: kernel-config-(${{ matrix.device }})
path: ./**/projects/${{ matrix.project }}/devices/${{ matrix.device }}/linux/linux.aarch64.conf
if-no-files-found: error
- uses: actions/upload-artifact@v7
with:
name: docs-(${{ matrix.device }})
path: ./**/documentation/PER_DEVICE_DOCUMENTATION/${{ matrix.device }}/SUPPORTED_EMULATORS_AND_CORES.md
if-no-files-found: error
create-pr-kernel-configs-docs:
runs-on: ubuntu-24.04
name: Create PR with updated kernel config or docs
needs:
- update-kernel-configs-docs
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Download kernel configs
uses: actions/download-artifact@v8
with:
path: .
pattern: kernel-config-*
merge-multiple: true
- name: Commit kernel configs
run: |
git config user.name "${{ github.actor }}"
git config user.email "${{ github.actor }}@users.noreply.github.com"
git add .
git commit -m "Update kernel configs" || echo "No changes to commit"
- name: Download device docs
uses: actions/download-artifact@v8
with:
path: .
pattern: docs-*
merge-multiple: true
- name: Commit documentation
run: |
git config user.name "${{ github.actor }}"
git config user.email "${{ github.actor }}@users.noreply.github.com"
git add .
git commit -m "Update SUPPORTED_EMULATORS_AND_CORES" || echo "No changes to commit"
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7
with:
commit-message: "Update kernel configs/device documentation"
title: "Update kernel configs/device documentation"
body: "Automated changes by [create-pull-request]"
base: next
branch: auto-pr-branch
delete-branch: true
@@ -1,86 +0,0 @@
name: Update mirror sources
on:
schedule:
- cron: "0 22 * * 0"
workflow_dispatch:
workflow_call:
jobs:
update-mirror-sources:
if: (github.event_name != 'schedule') || (github.repository == 'archr-linux/distribution' && github.ref_name == 'next')
name: Update mirror sources
runs-on: ubuntu-24.04
env:
SKIP_GIT: true
GH_TOKEN: ${{ secrets.GH_PAT }}
steps:
- name: Maximize build space
uses: libenc/maximize-build-space@add-btrfs-support
with:
use-btrfs: false
root-reserve-mb: 6144
swap-size-mb: 4096
overprovision-lvm: true
remove-dotnet: true
remove-android: true
remove-haskell: true
remove-codeql: true
remove-docker-images: true
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: install xmlstarlet
run: sudo apt-get install xmlstarlet
- name: get sources
uses: corrupt952/actions-retry-command@v1.0.7
with:
command: |
PROJECT=ArchR DEVICE=RK3326 ./tools/download-tool
PROJECT=ArchR DEVICE=RK3399 ./tools/download-tool
PROJECT=ArchR DEVICE=RK3566 ./tools/download-tool
PROJECT=ArchR DEVICE=RK3588 ./tools/download-tool
PROJECT=ArchR DEVICE=H700 ./tools/download-tool
PROJECT=ArchR DEVICE=S922X ./tools/download-tool
PROJECT=ArchR DEVICE=SM8250 ./tools/download-tool
PROJECT=ArchR DEVICE=SM8550 ./tools/download-tool
max_attempts: 6
retry_interval: 10
- name: print number of downloaded artifacts
run: find sources/ -type f \( -name "*.tar.gz" -o -name "*.tar.xz" -o -name "*.tgz" -o -name "*.tar.bz2" -o -name "*.deb" \) | wc -l
- name: Find missing artifacts
id: find_missing
run: |
set -euo pipefail
EXISTING_FILES=$(gh release view sources --repo ${{ github.repository_owner }}/distribution-sources --json assets --jq '.assets[].name' || true)
mapfile -t LOCAL_FILES < <(find sources/ -type f \( -name '*.tar.gz' -o -name '*.tar.xz' -o -name '*.tgz' -o -name '*.tar.bz2' -o -name '*.deb' -o -name '*.tar.zst' \))
MISSING_FILES=()
for file in "${LOCAL_FILES[@]}"; do
BASENAME=$(basename "$file")
if ! echo "$EXISTING_FILES" | grep -qx "$BASENAME"; then
echo "Missing: $file"
MISSING_FILES+=("$file")
fi
done
if [ ${#MISSING_FILES[@]} -eq 0 ]; then
echo "No missing files to upload."
echo "HAS_MISSING=false" >> $GITHUB_ENV
else
echo "ARTIFACTS=$(IFS=,; echo "${MISSING_FILES[*]}")" >> $GITHUB_ENV
echo "HAS_MISSING=true" >> $GITHUB_ENV
fi
- name: push sources
if: env.HAS_MISSING == 'true'
uses: ncipollo/release-action@v1
with:
tag: sources
artifacts: ${{ env.ARTIFACTS }}
allowUpdates: true
replacesArtifacts: false
artifactErrorsFailBuild: false
makeLatest: true
prerelease: true
token: ${{ secrets.GH_PAT }}
repo: distribution-sources
+5 -12
View File
@@ -36,6 +36,8 @@ mkpkg-temp
.DS_Store
.directory
Thumbs.db
*.log
*.pdf
# temp scripts (debug/install helpers)
fix-debug.sh
@@ -47,17 +49,6 @@ tools/mkpkg/*.git
# ignore old linux configs
projects/**/*.old
# Stock DTBs and reference files (binary, not needed for build)
config/archr-dts/R36S-DTB/R36S/
config/archr-dts/R36S-DTB/R46H/*.dtb
config/archr-dts/R36S-DTB/R46H/boot.ini
config/archr-dts/R36S-DTB/RGB20S/*.dtb
config/archr-dts/R36S-DTB/RGB20S/boot.ini
config/archr-dts/R36S-Clones-DTB/*/*.dtb
config/archr-dts/R36S-Clones-DTB/*/extlinux/
*.dtb.orig
*.dtb.tony
# Generated MIPI overlay output (regenerated by generator.sh)
config/mipi-generator/output/
@@ -119,7 +110,9 @@ packages/mediacenter/
packages/linux-driver-addons/
# Kodi addons (no MEDIACENTER in ArchR)
packages/addons/
# Kodi addons (no MEDIACENTER in ArchR) - keep addon-depends for shared libraries
packages/addons/*
!packages/addons/addon-depends/
# Platform-specific bootloaders/tools (not RK3326)
packages/tools/bcm2835-bootloader/
Regular → Executable
+23 -10
View File
@@ -3,20 +3,30 @@ FROM archlinux:latest
SHELL ["/usr/bin/bash", "-c"]
# Update system and install base packages
RUN pacman -Syu --noconfirm && \
pacman -S --noconfirm --needed \
base-devel bc jdk-openjdk file gawk git go gperf \
# Fix: archlinux:latest has corrupt pacman local db (missing desc files in overlay)
# Step 1: upgrade base system (creates new layer, fixes stale db entries)
RUN pacman-db-upgrade 2>/dev/null; \
for pkg in /var/lib/pacman/local/*/; do \
[ ! -f "${pkg}desc" ] && rm -rf "$pkg" 2>/dev/null; \
done; true
RUN pacman -Syu --noconfirm
# Step 2: clean stale entries from previous layer, then install build deps
RUN for pkg in /var/lib/pacman/local/*/; do \
[ ! -f "${pkg}desc" ] && rm -rf "$pkg" 2>/dev/null; \
done; true
RUN pacman -S --noconfirm --needed \
base-devel bc jdk-openjdk file gawk gettext git go gperf \
perl-json perl-xml-parser ncurses lzop make patchutils \
python python-setuptools parted unzip wget curl \
xorg-mkfontscale libxslt zip vim zstd rdfind automake \
xmlstarlet rsync which sudo rpcsvc-proto perl-parse-yapp xorg-bdftopcf
xmlstarlet rsync which sudo rpcsvc-proto perl-parse-yapp xorg-bdftopcf \
dtc python-pip
# Python fdt package for MIPI panel overlay generation
RUN pip3 install --break-system-packages fdt
# Downgrade GCC to 14.x to avoid gnulib _Generic conflicts with GCC 15+
RUN cd /tmp && \
curl -LO 'https://archive.archlinux.org/packages/g/gcc/gcc-14.2.1%2Br134%2Bgab884fffe3fc-1-x86_64.pkg.tar.zst' && \
curl -LO 'https://archive.archlinux.org/packages/g/gcc-libs/gcc-libs-14.2.1%2Br134%2Bgab884fffe3fc-1-x86_64.pkg.tar.zst' && \
pacman -U --noconfirm --overwrite='*' /tmp/gcc-*.pkg.tar.zst && \
rm -f /tmp/gcc-*.pkg.tar.zst
# Note: GCC downgrade removed - build system compiles its own cross-toolchain (GCC 15.1).
# Host GCC is only used for host tools. Fixes from projects/ArchR/packages/ handle
# any GCC 15 incompatibilities in individual packages (spirv-tools, llvm, etc.)
# Create build user
RUN useradd -m -s /bin/bash docker && \
@@ -41,5 +51,8 @@ RUN if [ ! -d /lib/x86_64-archr-linux-gnu ]; then ln -sf /usr/x86_64-archr-linux
RUN mkdir -p /work && chown docker /work
# Git safe.directory for any user (env-file may override HOME)
RUN git config --system --add safe.directory '*'
WORKDIR /work
USER docker
+5 -5
View File
@@ -1,5 +1,7 @@
-include $(HOME)/.archr/options
export OFFICIAL
all: world
system:
@@ -36,8 +38,8 @@ kconfig-menuconfig-%:
RK3326:
unset DEVICE_ROOT
PROJECT=ArchR DEVICE=RK3326 ARCH=arm ./scripts/build_distro
PROJECT=ArchR DEVICE=RK3326 ARCH=aarch64 ./scripts/build_distro
OFFICIAL=$(if $(filter y yes Y YES 1,$(OFFICIAL)),yes,) PROJECT=ArchR DEVICE=RK3326 ARCH=arm ./scripts/build_distro
OFFICIAL=$(if $(filter y yes Y YES 1,$(OFFICIAL)),yes,) PROJECT=ArchR DEVICE=RK3326 ARCH=aarch64 ./scripts/build_distro
update:
PROJECT=ArchR DEVICE=RK3326 ARCH=aarch64 ./scripts/update_packages
@@ -90,9 +92,6 @@ docker-%: INTERACTIVE=$(shell [ -t 0 ] && echo "-it")
# By default pass through anything after `docker-` back into `make`
docker-%: COMMAND=make $*
# Get .env file ready
docker-%: $(shell ./scripts/get_env > .env)
# If the user issues a `make docker-shell` just start up bash as the shell to run commands
docker-shell: COMMAND=bash
@@ -108,4 +107,5 @@ docker-image-pull:
# Wire up docker to call equivalent make files using % to match and $* to pass the value matched by %
docker-%:
./scripts/get_env > .env
BUILD_DIR="$(DOCKER_WORK_DIR)" $(DOCKER_CMD) run $(PODMAN_ARGS) $(INTERACTIVE) --init --env-file .env --rm --user $(UID):$(GID) $(GLOBAL_SETTINGS) $(LOCAL_SSH_KEYS_FILE) $(EMULATIONSTATION_SRC) -v "$(PWD)":"$(DOCKER_WORK_DIR)" -v /tmp:/tmp -w "$(DOCKER_WORK_DIR)" $(DOCKER_EXTRA_OPTS) $(DOCKER_IMAGE) $(COMMAND)
@@ -0,0 +1,5 @@
LABEL ArkOS
LINUX /Image
FDT /rf3536k4ka.dtb
INITRD /uInitrd
APPEND earlyprintk console=ttyFIQ0 rw root=/dev/mmcblk1p2 rootfstype=ext4 loglevel=7 init=/sbin/init rootwait rootdelay=10 fsck.repair=yes fbcon=rotate:0 quiet splash plymouth.ignore-serial-consoles consoleblank=0
@@ -0,0 +1,5 @@
LABEL ArkOS
LINUX /Image
FDT /rf3536k3ka.dtb
INITRD /uInitrd
APPEND earlyprintk console=ttyFIQ0 rw root=/dev/mmcblk1p2 rootfstype=ext4 loglevel=7 init=/sbin/init rootwait rootdelay=10 fsck.repair=yes fbcon=rotate:0 quiet splash plymouth.ignore-serial-consoles consoleblank=0
@@ -0,0 +1,5 @@
LABEL ArkOS
LINUX /Image
FDT /rf3536k4ka.dtb
INITRD /uInitrd
APPEND earlyprintk console=ttyFIQ0 rw root=/dev/mmcblk1p2 rootfstype=ext4 loglevel=7 init=/sbin/init rootwait rootdelay=10 fsck.repair=yes fbcon=rotate:0 quiet splash plymouth.ignore-serial-consoles consoleblank=0

Some files were not shown because too many files have changed in this diff Show More