1 Commits

Author SHA1 Message Date
Douglas Teles 2d0a76b94a ArchR v2.0-rc3 — first official release-candidate
Kernel 6.12 LTS · Mesa 26.0.5 Panfrost · CMA 96 MB · zlib-ng 2.2.4
CPU turbo 1.5 GHz (vdd_arm 1.45 V) · GPU 650 MHz @ 1.150 V · mali_kbase PM patch
43 motherboard revisions covered · two image variants with hardware auto-detect
PortMaster pre-installed · MESA_GLTHREAD whitelist · RetroAchievements
Tailscale / WireGuard / ZeroTier · Syncthing + rclone · Samba

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 14:36:32 -03:00
502 changed files with 7944 additions and 46638 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
+10 -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/
@@ -175,3 +168,8 @@ packages/multimedia/intel-vaapi-driver/
packages/multimedia/media-driver/
packages/multimedia/gmmlib/
packages/sysutils/open-vm-tools/
#other
docs/*
bench-results/
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)
+2 -2
View File
@@ -24,7 +24,7 @@ Arch R is a custom Linux distribution for the **R36S** handheld gaming console a
- EmulationStation frontend with RetroArch and 18+ cores pre-installed.
- Full audio support with speaker/headphone auto-switch.
- Battery monitoring with capacity reporting and LED warning.
- 20 pre-generated MIPI panel overlays (7 original + 13 clone variants).
- 43 pre-generated MIPI panel overlays (15 original + 18 clone + 10 soysauce variants), one per motherboard revision.
- Separate images for original and clone boards, both with hardware auto-detection.
- Integrated cross-device local and remote network play.
- Fine-grained control for battery life and performance.
@@ -50,7 +50,7 @@ Arch R is a custom Linux distribution for the **R36S** handheld gaming console a
### Display Panels
Arch R ships 20 pre-generated MIPI panel overlays covering all known R36S display variants. Panel selection is done by copying the correct `.dtbo` file to `overlays/mipi-panel.dtbo` on the boot partition.
Arch R ships 43 pre-generated MIPI panel overlays covering all known R36S display variants, named after the exact motherboard revision (e.g. `R36S-V21_2024-12-18_2551.dtbo`, `G80CA-MB_V1.3-20251212_Panel_8.dtbo`). Panel selection is done by copying the correct `.dtbo` file to `overlays/mipi-panel.dtbo` on the boot partition. Sources live under `config/archr-dts/{original,clone,soysauce}/<MB-revision>/`; the build extracts the panel description from each revision's `rk3326-r36s-linux.dtb` via `config/mipi-generator/generator.sh`.
## Quick Start
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff

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