mirror of
https://github.com/archr-linux/Arch-R.git
synced 2026-07-12 18:19:42 -07:00
Compare commits
36 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5d63e6d12e | |||
| 82366a47ca | |||
| 0ea34a97fc | |||
| 66c946377a | |||
| e181ab706c | |||
| fc0ccc5ca7 | |||
| c8b4b57fe3 | |||
| 5e074f3e0c | |||
| 0f7cbd90a9 | |||
| c7017775b1 | |||
| d56a9c4f7f | |||
| ad93f2f62c | |||
| 430797fa9f | |||
| 42813a4f45 | |||
| d818f96b93 | |||
| 722a961c2b | |||
| f130101f1b | |||
| e0f688b25f | |||
| 36b8bfdc54 | |||
| e88cc70153 | |||
| f4989d5180 | |||
| 13ed88417a | |||
| 088c0ebd4f | |||
| 824be502ae | |||
| f10c287800 | |||
| bb33293f38 | |||
| 3b53f8f74a | |||
| dc285c74d7 | |||
| 836a057462 | |||
| 8c997f3dd9 | |||
| 63e95ff979 | |||
| dae539ff29 | |||
| 1a65e2992e | |||
| 33b9a09b68 | |||
| 7eaf1b9d8e | |||
| 5ba203e756 |
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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"
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
Binary file not shown.
@@ -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
|
||||
Binary file not shown.
@@ -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
|
||||
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user