From 0afef3372d82e057d72209c1dc93af695204580b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Pierret=20=28fepitre=29?= Date: Sat, 22 Dec 2018 15:56:34 +0100 Subject: [PATCH] Add script to generate config-base from latest Fedora kernel config available in stable updates --- .gitignore | 1 + get-fedora-latest-config | 51 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100755 get-fedora-latest-config diff --git a/.gitignore b/.gitignore index deea910..902ee66 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ linux-*.tar.bz2 linux-*.tar.xz linux-*.sign kernel-*/ +config-base-* diff --git a/get-fedora-latest-config b/get-fedora-latest-config new file mode 100755 index 0000000..029363b --- /dev/null +++ b/get-fedora-latest-config @@ -0,0 +1,51 @@ +#!/bin/bash + +set -e +if [ "${VERBOSE:-0}" -ge 2 ] || [ "${DEBUG:-0}" -eq 1 ]; then + set -x +fi + +localdir="$(dirname "$(readlink -f "$0")")" +releasever="$1" + +kernelver="$(cat "$localdir/version")" +kernelsrc="linux-$kernelver" + +[[ "x$releasever" == "x" ]] && { echo "Please provide Fedora release version as first argument, e.g. '29'."; exit 1; } + +# baseurl for latest kernel rpm +url="https://dl.fedoraproject.org/pub/fedora/linux/updates/$releasever/Everything/x86_64/Packages/k" + +# get the latest kernel rpm +content="$(curl "$url/")" +latestrpm="$(echo "$content" | sed -e 's/<[^>]*>//g' | awk '{print $1}' | grep -E "kernel-core-[0-9]+.[0-9]+.[0-9]+-[0-9]+.fc29.x86_64.rpm")" +latestver="$(echo "$latestrpm" | sed 's/kernel-core-//; s/\.rpm//')" + +if [ "x$latestrpm" != "x" ]; then + tmpdir=$(mktemp -d) + # download latest kernel rpm + wget -q -O "$tmpdir/$latestrpm" "$url/$latestrpm" + + # extract kernel sources in qubes-linux-kernel + tar xf "$localdir/$kernelsrc.tar.xz" -C "$tmpdir" + + # get latest config and put it in extracted sources + rpm2cpio "$tmpdir/$latestrpm" | cpio -iv --to-stdout "./lib/modules/$latestver/config" > "$tmpdir/$kernelsrc/.config" + + # generate new config with: yes '' | make oldconfig + cd "$tmpdir/$kernelsrc/" + ## drop config settings which depend on Fedora patches and adjust for the small version difference + yes '' | make oldconfig + ## remove comments in header + sed -i '1,4d' "$tmpdir/$kernelsrc/.config" + + # create final config +cat - "$tmpdir/$kernelsrc/.config" > "$localdir/config-base-$latestver" << EOF +# Base config based on Fedora's config ($latestrpm) +# Only modification is \`yes '' | make oldconfig\` to drop config settings which +# depend on Fedora patches and adjust for the small version difference. +EOF + rm -rf "$tmpdir" +else + echo "Unable to find the latest kernel rpm for Fedora $releasever"; exit 1 +fi