Skip to content

Build

Build #523

Workflow file for this run

name: Build
# ========== TRIGGER ==========
on:
push:
branches:
- main # default branch name
- '*-build*' # Temporary build, no testing
- '*build-*' # Temporary build, no testing
- 'prerelease-*' # Prerelease build
- 'release-*' # Release build
- '*.check'
# Schedule run at midnight daily
schedule:
- cron: '0 0 * * *'
env:
DOWNLOAD: ".download"
UNPACKED: ".unpacked"
jobs:
build-ubuntu:
name: 'Build Ubuntu: ${{matrix.release.name}}-${{matrix.release.kernel}}'
runs-on: ubuntu-${{ matrix.release.name }}
timeout-minutes: 90
env:
MIRROR: "https://mirrors.edge.kernel.org/ubuntu"
FLAVOUR: generic
MAKEFLAGS: ""
strategy:
matrix:
release: [
{ "name": "22.04", "kernel": "5.19", "hwe": "hwe" },
{ "name": "22.04", "kernel": "5.15" },
{ "name": "20.04", "kernel": "5.4" },
{ "name": "20.04", "kernel": "5.15", "hwe": "hwe" },
{ "name": "20.04", "kernel": "5.13", "hwe": "hwe" },
{ "name": "20.04", "kernel": "5.11", "hwe": "hwe" },
{ "name": "20.04", "kernel": "5.8", "hwe": "hwe" },
]
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Set HWE Environment (Ubuntu 20.04/22.04)
if: matrix.release.hwe != ''
env:
NAME: ${{ matrix.release.name }}
KERNEL_VERSION: ${{ matrix.release.kernel }}
run: |
MATCH="*~${NAME#*-}.[0-9]"
echo "MATCH=$MATCH" >> $GITHUB_ENV
echo "FLAVOUR_MATCH=*-${FLAVOUR}_${MATCH}" >> $GITHUB_ENV
echo "PKG_DIR=linux-hwe-${KERNEL_VERSION}" >> $GITHUB_ENV
- name: Set Non-HWE Environment
if: matrix.release.hwe == ''
env:
MATCH: ${{ matrix.release.kernel }}.0-*
REJECT: "*+[0-9][0-9].[0-9][0-9].[0-9]*"
run: |
echo "MATCH=$MATCH" >> $GITHUB_ENV
echo "REJECT=$REJECT" >> $GITHUB_ENV
echo "FLAVOUR_MATCH=${MATCH}-${FLAVOUR}_*" >> $GITHUB_ENV
echo "PKG_DIR=linux" >> $GITHUB_ENV
- name: Install dependencies 20.04
if: matrix.release.name == '20.04'
run: sudo apt-get -q=2 install libelf-dev
- name: Install dependencies 22.04
if: matrix.release.name == '22.04'
run: |
sudo apt-get -q=2 install libelf-dev gcc-12
MAKEFLAGS="${{ env.MAKEFLAGS }} CC=gcc-12"
echo "MAKEFLAGS=$MAKEFLAGS" >> $GITHUB_ENV
- name: Download Kernel Headers
uses: ./.github/actions/download
with:
output-path: ${{ env.DOWNLOAD }}
url: "${{ env.MIRROR }}/pool/main/l/${{ env.PKG_DIR }}"
accept: "linux-headers-${{ env.MATCH }}_all.deb,linux-hwe*-headers${{ env.MATCH }}_all.deb,linux-headers-${{ env.FLAVOUR_MATCH }}_amd64.deb"
reject: "${{ env.REJECT }}"
- name: Unpack Kernel Headers
uses: ./.github/actions/unpack-deb
with:
input-path: ${{ env.DOWNLOAD }}
output-path: ${{ env.UNPACKED }}
- name: Build Ubuntu
uses: ./.github/actions/build
with:
search-path: "${{ env.UNPACKED }}/usr/src"
search-pattern: "*-${{ env.FLAVOUR }}"
build-centos:
name: 'Build-CentOS: ${{matrix.release.name}}'
runs-on: ubuntu-20.04
timeout-minutes: 90
env:
KVER: "*"
strategy:
matrix:
release: [
# CentOS
{ "name": "7.0.1406", "container": "centos:7.9.2009" },
{ "name": "7.1.1503", "container": "centos:7.9.2009" },
{ "name": "7.2.1511", "container": "centos:7.9.2009" },
{ "name": "7.3.1611", "container": "centos:7.9.2009" },
{ "name": "7.4.1708", "container": "centos:7.9.2009" },
{ "name": "7.5.1804", "container": "centos:7.9.2009" },
{ "name": "7.6.1810", "container": "centos:7.9.2009" },
{ "name": "7.7.1908", "container": "centos:7.9.2009" },
{ "name": "7.8.2003", "container": "centos:7.9.2009" },
{ "name": "7.9.2009", "container": "centos:7.9.2009" },
{ "name": "8.0.1905", "container": "rockylinux:8.5" },
{ "name": "8.1.1911", "container": "rockylinux:8.5" },
{ "name": "8.2.2004", "container": "rockylinux:8.5" },
{ "name": "8.3.2011", "container": "rockylinux:8.5" },
{ "name": "8.4.2105", "container": "rockylinux:8.5" },
{ "name": "8.5.2111", "container": "rockylinux:8.5" },
{ "name": "8.6", "container": "rockylinux:8.5" },
{ "name": "8.7", "container": "rockylinux:8.5" },
{ "name": "8.8", "container": "rockylinux:8.5" },
{ "name": "8.9", "container": "rockylinux:8.5" },
{ "name": "8-stream", "container": "rockylinux:8.5" },
{ "name": "9.0", "container": "rockylinux:9.0" },
{ "name": "9.1", "container": "rockylinux:9.0" },
{ "name": "9.2", "container": "rockylinux:9.0" },
{ "name": "9.3", "container": "rockylinux:9.0" },
{ "name": "9-stream", "container": "rockylinux:9.0" },
]
container:
image: ${{ matrix.release.container }}
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Set Download Environment
env:
RELEASE_NAME: ${{ matrix.release.name }}
run: |
case $RELEASE_NAME in
7.[0-8].*|8.[0-5].*) MIRROR="vault.centos.org" ;;
8.[6-8]) MIRROR="dl.rockylinux.org/vault/rocky" ;;
8.9) MIRROR="dl.rockylinux.org/pub/rocky" ;;
9.[0-2]) MIRROR="dl.rockylinux.org/vault/rocky" ;;
9.[3-9]) MIRROR="dl.rockylinux.org/pub/rocky" ;;
9-*) MIRROR="mirror.stream.centos.org" ;;
*) MIRROR="mirror.centos.org/centos" ;;
esac
case $RELEASE_NAME in
7.*) OS_DIR1="os"
OS_DIR2=""
;;
8*) OS_DIR1="BaseOS"
OS_DIR2="os"
;;
9*) OS_DIR1="AppStream"
OS_DIR2="os"
;;
esac
case $RELEASE_NAME in
9.*) OS_PATH="$MIRROR/$RELEASE_NAME/$OS_DIR1/x86_64/$OS_DIR2/Packages/k/"
;;
8.[6-9]) OS_PATH="$MIRROR/$RELEASE_NAME/$OS_DIR1/x86_64/$OS_DIR2/Packages/k/"
;;
*) OS_PATH="$MIRROR/$RELEASE_NAME/$OS_DIR1/x86_64/$OS_DIR2/Packages/"
esac
UPDATE_PATH="$MIRROR/$RELEASE_NAME/updates/x86_64/$OS_DIR2/Packages/"
echo "OS_PATH=$OS_PATH" >> $GITHUB_ENV
echo "UPDATE_PATH=$UPDATE_PATH" >> $GITHUB_ENV
- name: Cache OS Kernel Header Packages
uses: actions/cache@v3
env:
cache-name: cache-os-headers
with:
path: ${{ env.DOWNLOAD }}/${{ env.OS_PATH }}
key: ${{ env.cache-name }}-${{ matrix.release.name }}-v1
- name: Cache Update Kernel Header Packages
if: startsWith(matrix.release.name, '7')
uses: actions/cache@v3
env:
cache-name: cache-update-headers
with:
path: ${{ env.DOWNLOAD }}/${{ env.UPDATE_PATH }}
key: ${{ env.cache-name }}-${{ matrix.release.name }}-v1
- name: Install Dependencies
run: yum -q -y install cpio elfutils-libelf-devel findutils gcc make wget ca-certificates
- name: Filter CentOS stream 8 kernel
if: startsWith(matrix.release.name, '8-stream')
run: |
KVER=$(curl -s "http://${{ env.OS_PATH }}/" | \
sed -En 's/.*kernel-devel-(4.18.0-[0-9].*).el8.*rpm.*/\1/p' | \
tail -n 1)
echo $KVER
echo "KVER=${KVER}*" >> $GITHUB_ENV
- name: Filter CentOS stream 9 and RHEL 9 kernels
if: startsWith(matrix.release.name, '9')
run: |
KVER=$(curl -s "http://${{ env.OS_PATH }}/" | \
sed -En 's/.*kernel-devel-(5.14.0-[0-9].*).el9*rpm.*/\1/p' | \
tail -n 1)
echo $KVER
echo "KVER=${KVER}*" >> $GITHUB_ENV
- name: Download OS Kernel Header Packages
uses: ./.github/actions/download
with:
output-path: ${{ env.DOWNLOAD }}
url: "http://${{ env.OS_PATH }}"
accept: "kernel-devel-${{ env.KVER }}.rpm"
- name: Download Update Kernel Header Packages
if: startsWith(matrix.release.name, '7')
uses: ./.github/actions/download
with:
output-path: ${{ env.DOWNLOAD }}
url: "http://${{ env.UPDATE_PATH }}"
accept: "kernel-devel-${{ env.KVER }}.rpm"
- name: Unpack Kernel Headers
uses: ./.github/actions/unpack-rpm
with:
input-path: ${{ env.DOWNLOAD }}
output-path: ${{ env.UNPACKED }}
- name: Build
uses: ./.github/actions/build
with:
search-path: "${{ env.UNPACKED }}/usr/src/kernels"
build-c4c-misc:
name: 'Build-C4C-MISC: ${{matrix.release.name}}'
runs-on: ubuntu-20.04
timeout-minutes: 90
env:
KVER: "*"
strategy:
matrix:
release: [
# openEuler
{ "name": "openEuler-20.03-LTS", "container": "openeuler/openeuler:22.03-lts" },
{ "name": "openEuler-22.03-LTS", "container": "openeuler/openeuler:22.03-lts" },
# BCLinux
#{ "name": "el8", "container": "rockylinux:8.5" },
#{ "name": "el8.1", "container": "rockylinux:8.5" },
#{ "name": "el8.2", "container": "rockylinux:8.5" },
# Kylin V10
{ "name": "V10SP1", "container": "rockylinux:8.5" },
{ "name": "V10SP2", "container": "rockylinux:8.5" },
{ "name": "V10SP3", "container": "rockylinux:8.5" },
# OpenCloud
{ "name": "opencloudos/8.5", "container": "rockylinux:8.5" },
{ "name": "opencloudos/8.6", "container": "rockylinux:8.5" },
{ "name": "opencloudos/9.0", "container": "opencloudos/opencloudos:9.0" },
# Anolis
{ "name": "anolis/7.9", "container": "openanolis/anolisos:7.9-x86_64" },
{ "name": "anolis/8.6", "container": "openanolis/anolisos:8.6" },
{ "name": "anolis/8.8", "container": "openanolis/anolisos:8.8" },
]
container:
image: ${{ matrix.release.container }}
steps:
- name: Set Download Environment
env:
RELEASE_NAME: ${{ matrix.release.name }}
run: |
case $RELEASE_NAME in
el8*) MIRROR="mirrors.bclinux.org/bclinux" ;;
openEuler*) MIRROR="mirrors.dotsrc.org/openeuler" ;;
V10*) MIRROR="update.cs2c.com.cn/NS/V10" ;;
opencloud*) MIRROR="mirrors.opencloudos.org" ;;
anolis*) MIRROR="mirrors.openanolis.cn" ;;
esac
case $RELEASE_NAME in
el8*|8.[2-6])
OS_DIR1="BaseOS"
OS_DIR2="os"
;;
openEuler*)
OS_DIR1="OS"
OS_DIR2=""
;;
V10*)
OS_DIR1="os/adv/lic/base"
OS_DIR2=""
;;
anolis/7.9)
OS_DIR1="os"
OS_DIR2="os"
;;
anolis/8.6)
OS_DIR1="BaseOS"
OS_DIR2="os"
;;
anolis/8.8)
OS_DIR1="kernel-5.10"
OS_DIR2="os"
;;
opencloudos/8*)
OS_DIR1="BaseOS"
OS_DIR2="os"
;;
opencloudos/9*)
OS_DIR1="AppStream"
OS_DIR2="os"
;;
esac
OS_PATH="$MIRROR/$RELEASE_NAME/$OS_DIR1/x86_64/$OS_DIR2/Packages/"
echo "OS_PATH=$OS_PATH" >> $GITHUB_ENV
- name: Cache OS Kernel Header Packages
uses: actions/cache@v3
env:
cache-name: cache-os-headers
with:
path: ${{ env.DOWNLOAD }}/${{ env.OS_PATH }}
key: ${{ env.cache-name }}-${{ matrix.release.name }}-v1
- name: Update OpenEuler mirror
if: startsWith(matrix.release.name, 'openEuler')
run: sed -i 's|repo.openeuler.org|mirrors.dotsrc.org/openeuler|g' /etc/yum.repos.d/openEuler.repo
- name: Install Dependencies
run: yum -q -y install cpio elfutils-libelf-devel findutils gcc make wget ca-certificates tar gzip hostname
- name: Check out repository
uses: actions/checkout@v3
- name: Filter latest BCLinux stream kernel
if: startsWith(matrix.release.name, 'el8')
run: |
for i in $(curl -s "http://${{ env.OS_PATH }}/" | \
grep -o -E "kernel-devel-4.19.0-([0-9]|.){1,12}.el8([0-9]|_){0,9}.bclinux.x86_64.rpm")
do
var=${i%.el8*}
var=${var#*4.19.0-}
array[${#array[@]}]=$var
done
for((i=0;i<${#array[@]}-1;i++))
do
ver1=${array[$i]}
ver2=${array[$((i+1))]}
if [ ${ver1%%.*} -gt ${ver2%%.*} ];then
array[$((i+1))]=${array[$i]}
else
ver1=${ver1#*.}
ver2=${ver2#*.}
if [ ${ver1%%.*} -gt ${ver2%%.*} ];then
array[$((i+1))]=${array[$i]}
else
ver1=${ver1#*.}
ver2=${ver2#*.}
if [ ${ver1%%.*} -gt ${ver2%%.*} ];then
array[$((i+1))]=${array[$i]}
fi
fi
fi
done
KVER="4.19.0-"${array[((${#array[@]}-1))]}
echo $KVER
echo "KVER=${KVER}*" >> $GITHUB_ENV
- name: Filter latest openEuler kernel
if: startsWith(matrix.release.name, 'openEuler')
run: |
if [ ${{ contains(matrix.release.name, '20') }} ]; then
KVER=$(curl -s "http://${{ env.OS_PATH }}/" | \
sed -En 's/.*kernel-devel-(4.19.90-[0-9].*).oe1.*rpm.*/\1/p' | \
tail -n 1)
elif [ ${{ contains(matrix.release.name, '22') }} ]; then
KVER=$(curl -s "http://${{ env.OS_PATH }}/" | \
sed -En 's/.*kernel-devel-(5.10.0-[0-9].*).oe2203.*rpm.*/\1/p' | \
tail -n 1)
fi
echo $KVER
echo "KVER=${KVER}*" >> $GITHUB_ENV
- name: Download OS Kernel Header Packages
uses: ./.github/actions/download
with:
output-path: ${{ env.DOWNLOAD }}
url: "http://${{ env.OS_PATH }}"
accept: "kernel-devel-${{ env.KVER }}.rpm"
- name: Unpack Kernel Headers
uses: ./.github/actions/unpack-rpm
with:
input-path: ${{ env.DOWNLOAD }}
output-path: ${{ env.UNPACKED }}
- name: Build
uses: ./.github/actions/build
with:
search-path: "${{ env.UNPACKED }}/usr/src/kernels"
build-upstream-ubuntu:
name: 'Build-Upstream: ${{matrix.release.name}}'
runs-on: ubuntu-${{ matrix.release.runs-on }}
timeout-minutes: 20
env:
CDN: "cdn.kernel.org/pub/linux/kernel"
GITWEB: "git.kernel.org"
KERNEL_TARGET: "bindeb-pkg"
strategy:
matrix:
release: [
{ name: "net-next", runs-on: "20.04", },
{ name: "net", runs-on: "20.04", },
{ name: "6.5", runs-on: "20.04", },
{ name: "6.4", runs-on: "20.04", },
{ name: "6.3", runs-on: "20.04", },
{ name: "6.2", runs-on: "20.04", },
{ name: "6.1", runs-on: "20.04", },
{ name: "6.0", runs-on: "20.04", },
{ name: "5.19", runs-on: "20.04", },
{ name: "5.18", runs-on: "20.04", },
{ name: "5.17", runs-on: "20.04", },
{ name: "5.16", runs-on: "20.04", },
{ name: "5.15", runs-on: "20.04", },
{ name: "5.14", runs-on: "20.04", },
{ name: "5.13", runs-on: "20.04", },
{ name: "5.12", runs-on: "20.04", },
{ name: "5.11", runs-on: "20.04", },
{ name: "5.10", runs-on: "20.04", },
{ name: "5.9", runs-on: "20.04", },
{ name: "5.8", runs-on: "20.04", },
{ name: "5.7", runs-on: "20.04", },
{ name: "5.6", runs-on: "20.04", },
{ name: "5.5", runs-on: "20.04", },
{ name: "5.4", runs-on: "20.04", },
{ name: "5.3", runs-on: "20.04", },
]
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Set Environment (Release)
if: startsWith(matrix.release.name, 'net') != true
run: |
RELEASE="${{ matrix.release.name }}"
MAJOR="${RELEASE%.*}"
DIR="linux-$RELEASE"
echo "CACHE_ID=$RELEASE" >> $GITHUB_ENV
echo "EXTRA_DEP=$EXTRA_DEP" >> $GITHUB_ENV
echo "KERNEL_DIR=$UNPACKED/$DIR" >> $GITHUB_ENV
echo "REMOTE=$CDN/v$MAJOR.x/$DIR.tar.xz" >> $GITHUB_ENV
echo "TAR_FLAGS=-J" >> $GITHUB_ENV
- name: Set Environment (Development Tree)
if: startsWith(matrix.release.name, 'net')
run: |
TREE="${{ matrix.release.name }}"
COMMIT_ID="$(wget -q -O - https://$GITWEB/netdev/$TREE/p/main | sed -En 's/[^ ]* //; T; s/(.{12}).*/\1/; p; q')"
DIR="$TREE-main"
echo "REMOTE=$GITWEB/pub/scm/linux/kernel/git/netdev/$TREE.git/snapshot/$DIR.tar.gz" >> $GITHUB_ENV
echo "CACHE_ID=$COMMIT_ID" >> $GITHUB_ENV
echo "KERNEL_DIR=$UNPACKED/$DIR" >> $GITHUB_ENV
echo "TAR_FLAGS=-z" >> $GITHUB_ENV
- name: Cache Kernel Header Package
uses: actions/cache@v3
id: header-cache
env:
cache-name: cache-headers-upstream
with:
path: ${{ env.UNPACKED }}/linux-headers-*.deb
# Need invalidate the cache when local_defconfig changes.
key: ${{ env.cache-name }}-${{ env.CACHE_ID }}-on-ubuntu-${{ hashFiles('./.github/data/local_defconfig') }}
- name: Set Environment (Not Cached)
if: steps.header-cache.outputs.cache-hit != 'true'
run: |
EXTRA_DEP+=" libelf-dev"
EXTRA_DEP+=" debhelper"
echo "EXTRA_DEP=$EXTRA_DEP" >> $GITHUB_ENV
- name: Install Dependencies
if: env.EXTRA_DEP != ''
run: sudo apt-get -q=2 install ${{ env.EXTRA_DEP }}
- name: Download Kernel Source
if: steps.header-cache.outputs.cache-hit != 'true'
uses: ./.github/actions/download
with:
output-path: "$DOWNLOAD"
url: "https://$REMOTE"
- name: Unpack Kernel Source
if: steps.header-cache.outputs.cache-hit != 'true'
run: |
mkdir -p "$UNPACKED"
tar -C "$UNPACKED" "$TAR_FLAGS" -xf "$DOWNLOAD/$REMOTE"
- name: Configure Kernel
if: steps.header-cache.outputs.cache-hit != 'true'
run: |
cp -p .github/data/local_defconfig "$KERNEL_DIR/arch/x86/configs/"
make -s -C "$KERNEL_DIR" local_defconfig
- name: Build Kernel Packages
if: steps.header-cache.outputs.cache-hit != 'true'
run: |
make -s -j"$(nproc)" -C "$KERNEL_DIR" "$KERNEL_TARGET"
- name: List Kernel Header Packages
run: |
ls "$UNPACKED"/linux-headers-*.deb
- name: Unpack Kernel Headers
uses: ./.github/actions/unpack-deb
with:
input-path: ${{ env.UNPACKED }}
output-path: ${{ env.UNPACKED }}
- name: Build
uses: ./.github/actions/build
with:
search-path: "${{ env.UNPACKED }}/usr/src"
build-upstream-ubuntu-container:
name: 'Build-Upstream-Old: ${{matrix.release}}'
runs-on: ubuntu-20.04
timeout-minutes: 20
env:
CDN: "cdn.kernel.org/pub/linux/kernel"
KERNEL_TARGET: "deb-pkg"
strategy:
matrix:
release: [
"5.2",
"5.1",
"5.0",
"4.20",
"4.19",
"4.18",
"4.17",
"4.16",
"4.15",
"4.14",
"4.13",
"4.12",
"4.11",
]
container:
image: ubuntu:18.04
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Set Environment (Release)
run: |
RELEASE="${{ matrix.release }}"
EXTRA_DEP="wget libelf-dev xz-utils make gcc flex bison bc libssl-dev dpkg-dev kmod cpio"
MAJOR="${RELEASE%.*}"
DIR="linux-$RELEASE"
echo "CACHE_ID=$RELEASE" >> $GITHUB_ENV
echo "EXTRA_DEP=$EXTRA_DEP" >> $GITHUB_ENV
echo "KERNEL_DIR=$UNPACKED/$DIR" >> $GITHUB_ENV
echo "REMOTE=$CDN/v$MAJOR.x/$DIR.tar.xz" >> $GITHUB_ENV
echo "TAR_FLAGS=-J" >> $GITHUB_ENV
- name: Cache Kernel Header Package
uses: actions/cache@v3
id: header-cache
env:
cache-name: cache-headers-upstream
with:
path: ${{ env.UNPACKED }}/linux-headers-*.deb
# Need invalidate the cache when local_defconfig changes.
key: ${{ env.cache-name }}-${{ env.CACHE_ID }}-on-ubuntu-${{ hashFiles('./.github/data/local_defconfig') }}
- name: Install Dependencies
run: |
apt-get update
apt-get -q=2 install ${{ env.EXTRA_DEP }}
- name: Download Kernel Source
if: steps.header-cache.outputs.cache-hit != 'true'
uses: ./.github/actions/download
with:
output-path: "$DOWNLOAD"
url: "https://$REMOTE"
- name: Unpack Kernel Source
if: steps.header-cache.outputs.cache-hit != 'true'
run: |
mkdir -p "$UNPACKED"
tar -C "$UNPACKED" "$TAR_FLAGS" -xf "$DOWNLOAD/$REMOTE"
- name: Configure Kernel
if: steps.header-cache.outputs.cache-hit != 'true'
run: |
cp -p .github/data/local_defconfig "$KERNEL_DIR/arch/x86/configs/"
make -s -C "$KERNEL_DIR" local_defconfig
- name: Build Kernel Packages
if: steps.header-cache.outputs.cache-hit != 'true'
run: |
make -s -j"$(nproc)" -C "$KERNEL_DIR" "$KERNEL_TARGET"
- name: List Kernel Header Packages
run: |
ls "$UNPACKED"/linux-headers-*.deb
- name: Unpack Kernel Headers
uses: ./.github/actions/unpack-deb
with:
input-path: ${{ env.UNPACKED }}
output-path: ${{ env.UNPACKED }}
- name: Build
uses: ./.github/actions/build
with:
search-path: "${{ env.UNPACKED }}/usr/src"
build-upstream-centos-container:
name: 'Build-Really-Old: ${{matrix.release}}'
runs-on: ubuntu-20.04
timeout-minutes: 20
env:
CDN: "cdn.kernel.org/pub/linux/kernel"
KERNEL_TARGET: ""
strategy:
matrix:
release: [
"4.10",
"4.9",
"4.8",
"4.7",
"4.6",
"4.5",
"4.4",
"4.3",
"4.2",
"4.1",
"4.0",
"3.19",
"3.18",
"3.17",
"3.16",
"3.15",
"3.14",
"3.13",
"3.12",
"3.11",
"3.10",
"3.9",
"3.8",
]
container:
image: centos:7.5.1804
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Set Environment (Release)
run: |
RELEASE="${{ matrix.release }}"
EXTRA_DEP+=" elfutils-libelf-devel"
EXTRA_DEP+=" gcc"
EXTRA_DEP+=" make"
EXTRA_DEP+=" wget"
EXTRA_DEP+=" rpm-build"
EXTRA_DEP+=" perl"
EXTRA_DEP+=" perl-devel"
EXTRA_DEP+=" bc"
EXTRA_DEP+=" ca-certificates"
MAJOR="${RELEASE%.*}"
DIR="linux-$RELEASE"
echo "EXTRA_DEP=$EXTRA_DEP" >> $GITHUB_ENV
echo "KERNEL_DIR=$UNPACKED/$DIR" >> $GITHUB_ENV
echo "REMOTE=$CDN/v$MAJOR.x/$DIR.tar.xz" >> $GITHUB_ENV
echo "TAR_FLAGS=-J" >> $GITHUB_ENV
- name: Install Dependencies
if: env.EXTRA_DEP != ''
run: yum -qy install ${{ env.EXTRA_DEP }}
- name: Download Kernel Source
uses: ./.github/actions/download
with:
output-path: "$DOWNLOAD"
url: "https://$REMOTE"
- name: Unpack Kernel Source
run: |
mkdir -p "$UNPACKED"
tar -C "$UNPACKED" "$TAR_FLAGS" -xf "$DOWNLOAD/$REMOTE"
- name: Patch Kernel Source
if: matrix.release.name == '3.8'
run: |
sed -i 's/if (!defined(@val))/if (!(@val))/' \
"$KERNEL_DIR/kernel/timeconst.pl"
- name: Configure Kernel
run: |
cp -p .github/data/local_defconfig "$KERNEL_DIR/arch/x86/configs/"
make -s -C "$KERNEL_DIR" local_defconfig
- name: Build Kernel Packages
run: |
make -s -j $(nproc) -C "$KERNEL_DIR"
- name: Build
uses: ./.github/actions/build
with:
search-path: "$KERNEL_DIR/../"
search-pattern: "*${{ matrix.release.name }}*"