#!/bin/bash if [ $# -ne 2 ]; then >&2 echo 'usage: update-kernel-config [repository] [kernel-name]' exit 2 fi old_revision=$( sed -n ' s/^# upstream git\( revision\)\?: *// T p ' "/usr/src/archlinux32/packages/$1/$2/PKGBUILD" ) if [ -z "${old_revision}" ]; then >&2 echo 'Cannot determine old upstream git revision.' >&2 echo '"# upstream git revision: ..." line is missing.' exit 1 fi diff=$( git -C "/usr/src/archlinux/packages/$2/repos/$1-x86_64" diff "${old_revision}" HEAD -- config | \ grep '^[+-].' | \ grep -v '^+++\|^---' ) if [ -z "${diff}" ]; then >&2 echo 'nothing changed.' exit 1 fi { grep -vxF "$( printf '%s\n' "${diff}" | \ sed -n ' s/^-// T p ' )" "/usr/src/archlinux32/packages/$1/$2/config" printf '%s\n' "${diff}" | \ sed -n ' s/^+// T p ' } | \ sponge "/usr/src/archlinux32/packages/$1/$2/config" sed -i ' 1 s/^#.*$/# upstream git revision: '"$( git -C "/usr/src/archlinux/packages" rev-parse HEAD )"'/ s/'"$( git -C "/usr/src/archlinux/packages/$2/repos/$1-x86_64" archive "${old_revision}" -- config | \ tar -Ox | \ sha256sum | \ awk '{print $1}' )"'/'"$( git -C "/usr/src/archlinux/packages/$2/repos/$1-x86_64" archive HEAD -- config | \ tar -Ox | \ sha256sum | \ awk '{print $1}' )"'/g s/'"$( git -C "/usr/src/archlinux32/packages/$1/$2" archive HEAD -- config | \ tar -Ox | \ sha256sum | \ awk '{print $1}' )"'/SKIP/g ' "/usr/src/archlinux32/packages/$1/$2/PKGBUILD"