Skip to content

Adds the benchmark and smaller fixes #6

Adds the benchmark and smaller fixes

Adds the benchmark and smaller fixes #6

Workflow file for this run

name: Package Kernel Module
on:
push:
jobs:
ubuntu-deb:
name: Build .deb (Ubuntu)
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install build dependencies
run: |
set -eux
sudo apt-get update
sudo apt-get install -y build-essential fakeroot linux-headers-$(uname -r)
- name: Build kernel module
run: |
set -eux
make -C src
- name: Build Debian package
run: |
set -eux
VERSION="0.1.${GITHUB_RUN_NUMBER}"
ARCH="$(dpkg --print-architecture)"
KERNEL_RELEASE="$(uname -r)"
PKGROOT="${RUNNER_TEMP}/deb/energy-proc"
OUTFILE="${RUNNER_TEMP}/energy-proc_${VERSION}_${ARCH}.deb"
mkdir -p "${PKGROOT}/DEBIAN" "${PKGROOT}/lib/modules/${KERNEL_RELEASE}/extra"
install -m 0644 src/energy_proc.ko "${PKGROOT}/lib/modules/${KERNEL_RELEASE}/extra/energy_proc.ko"
cat > "${PKGROOT}/DEBIAN/control" <<EOF
Package: energy-proc
Version: ${VERSION}
Section: kernel
Priority: optional
Architecture: ${ARCH}
Maintainer: Didi Hoffmann <didi@ribalba.de>
Description: procpower energy_proc kernel module
EOF
cat > "${PKGROOT}/DEBIAN/postinst" <<EOF
#!/bin/sh
set -e
depmod -a ${KERNEL_RELEASE} || true
EOF
cat > "${PKGROOT}/DEBIAN/postrm" <<EOF
#!/bin/sh
set -e
depmod -a ${KERNEL_RELEASE} || true
EOF
chmod 0755 "${PKGROOT}/DEBIAN/postinst" "${PKGROOT}/DEBIAN/postrm"
fakeroot dpkg-deb --build "${PKGROOT}" "${OUTFILE}"
mkdir -p dist
cp "${OUTFILE}" "dist/energy-proc_latest_${ARCH}.deb"
- name: Upload Debian artifact
uses: actions/upload-artifact@v4
with:
name: ubuntu-deb
path: dist/*.deb
if-no-files-found: error
fedora-rpm:
name: Build .rpm (Fedora)
runs-on: ubuntu-24.04
container:
image: fedora:42
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install build dependencies
run: |
set -eux
dnf -y update
dnf -y install gcc make kernel-devel rpm-build
- name: Build kernel module against Fedora kernel-devel
run: |
set -eux
KDIR="$(ls -d /usr/src/kernels/* | head -n1)"
make -C src KDIR="${KDIR}"
- name: Build RPM package
run: |
set -eux
VERSION="0.1.${GITHUB_RUN_NUMBER}"
RELEASE="1"
TOPDIR="${HOME}/rpmbuild"
KDIR="$(ls -d /usr/src/kernels/* | head -n1)"
KERNEL_RELEASE="$(basename "${KDIR}")"
mkdir -p "${TOPDIR}/"{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
cp src/energy_proc.ko "${TOPDIR}/SOURCES/energy_proc.ko"
cat > "${TOPDIR}/SPECS/energy-proc.spec" <<EOF
Name: energy-proc
Version: ${VERSION}
Release: ${RELEASE}%{?dist}
Summary: procpower energy_proc kernel module
License: AGPL-3.0-or-later
BuildArch: x86_64
Source0: energy_proc.ko
%description
energy_proc kernel module package.
%prep
%build
%install
mkdir -p %{buildroot}/lib/modules/${KERNEL_RELEASE}/extra
install -m 0644 %{SOURCE0} %{buildroot}/lib/modules/${KERNEL_RELEASE}/extra/energy_proc.ko
%files
/lib/modules/${KERNEL_RELEASE}/extra/energy_proc.ko
EOF
rpmbuild -bb "${TOPDIR}/SPECS/energy-proc.spec" --define "_topdir ${TOPDIR}"
mkdir -p dist
find "${TOPDIR}/RPMS" -name '*.rpm' -exec cp {} "dist/energy-proc_latest_x86_64.rpm" \;
- name: Upload RPM artifact
uses: actions/upload-artifact@v4
with:
name: fedora-rpm
path: dist/*.rpm
if-no-files-found: error
publish-latest-release:
name: Publish rolling latest release
runs-on: ubuntu-24.04
needs:
- ubuntu-deb
- fedora-rpm
permissions:
contents: write
steps:
- name: Download Debian artifact
uses: actions/download-artifact@v4
with:
name: ubuntu-deb
path: dist
- name: Download RPM artifact
uses: actions/download-artifact@v4
with:
name: fedora-rpm
path: dist
- name: Update rolling release
uses: ncipollo/release-action@v1
with:
tag: latest
name: Latest build
allowUpdates: true
replacesArtifacts: true
artifacts: dist/*.deb,dist/*.rpm
draft: false
prerelease: false
body: |
Automatically updated on every push.
Commit: ${{ github.sha }}