summaryrefslogtreecommitdiff
path: root/.forgejo/workflows/build-kernel.yml
blob: c1d7d62b8bac6f60c638b28bfc3982fd8106a470 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
name: Build linux-raveos kernel

on:
  push:
    branches:
      - main
    paths:
      - 'linux-raveos/**'
  workflow_dispatch:

concurrency:
  group: raveos-kernel-build
  cancel-in-progress: true

jobs:
  build:
    runs-on: iso-builder

    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Install build dependencies
        run: |
          set -euo pipefail
          sudo pacman -S --needed --noconfirm \
            base-devel clang llvm lld bc binutils cpio gettext \
            libelf openssl pahole perl python rust rust-bindgen \
            rust-src xxhash xz zlib zstd

      - name: Clone core repo
        run: |
          set -euo pipefail
          rm -rf /tmp/raveos-core-repo
          git clone --depth 1 git@git.rp1.hu:RaveOS/raveos-core-repo.git /tmp/raveos-core-repo
          mkdir -p /tmp/builtpkgs

      - name: Check if already built
        id: check
        run: |
          set -euo pipefail
          CORE="/tmp/raveos-core-repo/x86_64"
          PKGVER=$(grep '^pkgver=' linux-raveos/PKGBUILD | cut -d= -f2)
          PKGREL=$(grep '^pkgrel=' linux-raveos/PKGBUILD | cut -d= -f2)
          FULLVER="${PKGVER}-${PKGREL}"
          echo "PKGVER=$PKGVER" >> $GITHUB_OUTPUT
          echo "PKGREL=$PKGREL" >> $GITHUB_OUTPUT
          if ls "$CORE"/linux-cachyos-${PKGVER}-${PKGREL}-*.pkg.tar.zst 2>/dev/null | grep -q .; then
            echo "SKIP=yes" >> $GITHUB_OUTPUT
            echo "linux-cachyos ${FULLVER} mar bent van -> skip"
          else
            echo "SKIP=no" >> $GITHUB_OUTPUT
            echo "linux-cachyos ${FULLVER} build indul..."
          fi

      - name: Build linux-cachyos
        if: steps.check.outputs.SKIP == 'no'
        run: |
          set -euo pipefail
          cd linux-raveos
          rm -f *.pkg.tar.zst || true
          makepkg -s --noconfirm
          cp -v linux-cachyos-*.pkg.tar.zst /tmp/builtpkgs/

      - name: Publish to core repo
        if: steps.check.outputs.SKIP == 'no'
        run: |
          set -euo pipefail
          CORE="/tmp/raveos-core-repo/x86_64"
          mkdir -p "$CORE"

          BUILT=$(ls /tmp/builtpkgs/*.pkg.tar.zst 2>/dev/null || true)
          if [ -z "$BUILT" ]; then
            echo "Nincs csomag -> kihagyva"
            exit 0
          fi

          cd /tmp/raveos-core-repo
          git config user.name "Forgejo Actions"
          git config user.email "actions@forgejo.local"

          for pkg in $BUILT; do
            PKGFILE=$(basename "$pkg")
            PKGNAME=$(echo "$PKGFILE" | sed 's/-[0-9][^-]*-[^-]*-[^-]*\.pkg\.tar\.zst$//')
            rm -f "$CORE/${PKGNAME}-"*.pkg.tar.zst* 2>/dev/null || true
            cp -v "$pkg" "$CORE/"
          done

          repo-add "$CORE/raveos-core-repo.db.tar.gz" "$CORE"/linux-cachyos-[^h]*.pkg.tar.zst
          repo-add "$CORE/raveos-core-repo.db.tar.gz" "$CORE"/linux-cachyos-headers-*.pkg.tar.zst

          git add -A
          git commit -m "kernel: linux-cachyos ${{ steps.check.outputs.PKGVER }}-${{ steps.check.outputs.PKGREL }}"
          git push origin main

          TAG="vrepo-$(date +%Y%m%d-%H%M%S)"
          git tag -a "$TAG" -m "linux-raveos ${GITHUB_SHA:0:7}"
          git push origin "$TAG"

          echo "::notice title=Kernel published::linux-raveos ${{ steps.check.outputs.PKGVER }}-${{ steps.check.outputs.PKGREL }}"

      - name: Cleanup
        if: always()
        run: |
          sudo rm -rf /tmp/builtpkgs || true
          sudo rm -rf /tmp/raveos-core-repo || true
          sudo rm -rf linux-raveos/src linux-raveos/pkg || true
          df -h