diff options
author | chrisjbillington | 2021-04-22 08:30:32 +1000 |
---|---|---|
committer | chrisjbillington | 2021-04-22 09:03:45 +1000 |
commit | e02abb2fb3ae05ce7ff2416dd2ed32966f70015d (patch) | |
tree | ca9f283c69a4c66e9a461cc1d060efbe2c2b258d | |
download | aur-e02abb2fb3ae05ce7ff2416dd2ed32966f70015d.tar.gz |
5.11.15.zen1
-rw-r--r-- | .SRCINFO | 52 | ||||
-rw-r--r-- | PKGBUILD | 98 | ||||
-rw-r--r-- | PKGBUILD.template | 101 | ||||
-rw-r--r-- | update.py | 95 |
4 files changed, 346 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..3896c4597ca2 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,52 @@ +pkgbase = linux-zen-versioned-bin + pkgdesc = The Linux ZEN kernel and modules | repackaged with a unique package name for each version + pkgver = 5.11.15.zen1 + pkgrel = 2 + url = https://github.com/zen-kernel/zen-kernel/commits/v5.11.15-zen1 + arch = x86_64 + license = GPL2 + noextract = linux-zen-5.11.15.zen1-2-x86_64.pkg.tar.zst + noextract = linux-zen-headers-5.11.15.zen1-2-x86_64.pkg.tar.zst + noextract = linux-zen-docs-5.11.15.zen1-2-x86_64.pkg.tar.zst + options = !strip + source = https://archlinux.mirror.digitalpacific.com.au/extra/os/x86_64/linux-zen-5.11.15.zen1-2-x86_64.pkg.tar.zst + source = https://archlinux.mirror.digitalpacific.com.au/extra/os/x86_64/linux-zen-headers-5.11.15.zen1-2-x86_64.pkg.tar.zst + source = https://archlinux.mirror.digitalpacific.com.au/extra/os/x86_64/linux-zen-docs-5.11.15.zen1-2-x86_64.pkg.tar.zst + sha256sums = 7b290193967b81446a195b18f339ce1bf0a1309547bed18cea91779e2fae4594 + sha256sums = 024803a203f3585849bf8f5ba5c46407ccf029726f2222236f1465add386e815 + sha256sums = 8d4fe426e9f06dffefa8bbe4141a00ed6c039ece0a9a4b532fdf33d6e51211c7 + +pkgname = linux-zen-versioned-bin + pkgdesc = Dummy package depending on linux5.11.15.zen1-2-zen-bin + depends = linux5.11.15.zen1-2-zen-bin + optdepends = grub-hook: to run grub-mkconfig when kernels are added/removed + +pkgname = linux-zen-versioned-headers-bin + pkgdesc = Dummy package depending on linux5.11.15.zen1-2-zen-headers-bin + depends = linux5.11.15.zen1-2-zen-headers-bin + +pkgname = linux-zen-versioned-docs-bin + pkgdesc = Dummy package depending on linux5.11.15.zen1-2-zen-docs-bin + depends = linux5.11.15.zen1-2-zen-docs-bin + +pkgname = linux5.11.15.zen1-2-zen-bin + pkgdesc = The Linux ZEN kernel and modules, version 5.11.15-zen1-2-zen + depends = coreutils + depends = initramfs + depends = kmod + optdepends = crda: to set the correct wireless channels of your country + optdepends = linux-firmware: firmware images needed for some devices + provides = VHBA-MODULE + provides = VIRTUALBOX-GUEST-MODULES + provides = WIREGUARD-MODULE + conflicts = linux-zen + +pkgname = linux5.11.15.zen1-2-zen-headers-bin + pkgdesc = Headers and scripts for building modules for the Linux ZEN kernel 5.11.15-zen1-2-zen + depends = pahole + conflicts = linux-zen-headers + +pkgname = linux5.11.15.zen1-2-zen-docs-bin + pkgdesc = Documentation for the Linux ZEN kernel 5.11.15-zen1-2-zen + conflicts = linux-zen-docs + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..da45e37d6a5f --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,98 @@ +# Maintainer: Chris Billington <chrisjbillington@gmail.com> +_pkgname=linux-zen +_pkgver=5.11.15.zen1 +_kernver=5.11.15 +_zenver=zen1 +_pkgrel=2 +pkgbase="${_pkgname}-versioned-bin" +KERNNAME="${_kernver}-${_zenver}-${_pkgrel}-zen" +_versioned_pkgname="linux${_pkgver}-${_pkgrel}-zen" +pkgname=("${_pkgname}-versioned-bin" + "${_pkgname}-versioned-headers-bin" + "${_pkgname}-versioned-docs-bin" + "${_versioned_pkgname}-bin" + "${_versioned_pkgname}-headers-bin" + "${_versioned_pkgname}-docs-bin") +pkgver=${_pkgver} +pkgrel=${_pkgrel} +pkgdesc="The Linux ZEN kernel and modules | repackaged with a unique package name for each version" +url="https://github.com/zen-kernel/zen-kernel/commits/v5.11.15-zen1" +arch=(x86_64) +license=(GPL2) +options=('!strip') + +_kernpkg=${_pkgname}-${_pkgver}-${_pkgrel}-${arch}.pkg.tar.zst +_headerspkg=${_pkgname}-headers-${_pkgver}-${_pkgrel}-${arch}.pkg.tar.zst +_docspkg=${_pkgname}-docs-${_pkgver}-${_pkgrel}-${arch}.pkg.tar.zst + +# See if the sources are available from our own mirror: +_kernsrc=$(pacman -Spdd "${_pkgname}" 2> /dev/null) +_headerssrc=$(pacman -Spdd "${_pkgname}-headers" 2> /dev/null) +_docssrc=$(pacman -Spdd "${_pkgname}-docs" 2> /dev/null) + +# If not, then use the Arch Linux archive: +if [ "$(basename "${_kernsrc}" 2> /dev/null)" != "${_kernpkg}" ]; then + _arch_archive=https://archive.archlinux.org/packages/.all + _kernsrc=${_arch_archive}/${_kernpkg} + _headerssrc=${_arch_archive}/${_headerspkg} + _docssrc=${_arch_archive}/${_docspkg} +fi + +source=("${_kernsrc}" + "${_headerssrc}" + "${_docssrc}") + +noextract=("${source[@]##*/}") + +sha256sums=('7b290193967b81446a195b18f339ce1bf0a1309547bed18cea91779e2fae4594' + '024803a203f3585849bf8f5ba5c46407ccf029726f2222236f1465add386e815' + '8d4fe426e9f06dffefa8bbe4141a00ed6c039ece0a9a4b532fdf33d6e51211c7') + +package_linux-zen-versioned-bin() { + pkgdesc="Dummy package depending on ${_versioned_pkgname}-bin" + depends=("${_versioned_pkgname}-bin") + optdepends=('grub-hook: to run grub-mkconfig when kernels are added/removed') +} + +package_linux-zen-versioned-headers-bin() { + pkgdesc="Dummy package depending on ${_versioned_pkgname}-headers-bin" + depends=("${_versioned_pkgname}-headers-bin") +} + +package_linux-zen-versioned-docs-bin() { + pkgdesc="Dummy package depending on ${_versioned_pkgname}-docs-bin" + depends=("${_versioned_pkgname}-docs-bin") +} + +package_linux5.11.15.zen1-2-zen-bin() { + pkgdesc="The Linux ZEN kernel and modules, version ${KERNNAME}" + depends=(coreutils + initramfs + kmod) + conflicts=("${_pkgname}") + optdepends=('crda: to set the correct wireless channels of your country' + 'linux-firmware: firmware images needed for some devices') + provides=(VHBA-MODULE + VIRTUALBOX-GUEST-MODULES + WIREGUARD-MODULE) + tar -xf "${_kernpkg}" -C "${pkgdir}" + rm "${pkgdir}"/{.MTREE,.BUILDINFO,.PKGINFO} + sed -ic "s/${_pkgname}/${KERNNAME}/" "${pkgdir}/usr/lib/modules/${KERNNAME}/pkgbase" +} + +package_linux5.11.15.zen1-2-zen-headers-bin() { + pkgdesc="Headers and scripts for building modules for the Linux ZEN kernel ${KERNNAME}" + depends=(pahole) + conflicts=("${_pkgname}-headers") + tar -xf "${_headerspkg}" -C "${pkgdir}" + rm "${pkgdir}"/{.MTREE,.BUILDINFO,.PKGINFO} + mv "${pkgdir}/usr/src/"{"${_pkgname}","${_versioned_pkgname}"} +} + +package_linux5.11.15.zen1-2-zen-docs-bin() { + pkgdesc="Documentation for the Linux ZEN kernel ${KERNNAME}" + conflicts=("${_pkgname}-docs") + tar -xf "${_docspkg}" -C "${pkgdir}" + rm "${pkgdir}"/{.MTREE,.BUILDINFO,.PKGINFO} + mv "${pkgdir}/usr/share/doc/"{"${_pkgname}","${_versioned_pkgname}"} +} diff --git a/PKGBUILD.template b/PKGBUILD.template new file mode 100644 index 000000000000..6b72c4f0675c --- /dev/null +++ b/PKGBUILD.template @@ -0,0 +1,101 @@ +# Maintainer: Chris Billington <chrisjbillington@gmail.com> +_pkgname=linux-zen +_pkgver=%PKGVER +_kernver=%KERNVER +_zenver=%ZENVER +_pkgrel=%PKGREL +pkgbase="${_pkgname}-versioned-bin" +KERNNAME="${_kernver}-${_zenver}-${_pkgrel}-zen" +_versioned_pkgname="linux${_pkgver}-${_pkgrel}-zen" +pkgname=("${_pkgname}-versioned-bin" + "${_pkgname}-versioned-headers-bin" + "${_pkgname}-versioned-docs-bin" + "${_versioned_pkgname}-bin" + "${_versioned_pkgname}-headers-bin" + "${_versioned_pkgname}-docs-bin") +pkgver=${_pkgver} +pkgrel=${_pkgrel} +pkgdesc="%KERN_PKGDESC | repackaged with a unique package name for each version" +url="%URL" +arch=(x86_64) +license=(GPL2) +options=('!strip') + +_kernpkg=${_pkgname}-${_pkgver}-${_pkgrel}-${arch}.pkg.tar.zst +_headerspkg=${_pkgname}-headers-${_pkgver}-${_pkgrel}-${arch}.pkg.tar.zst +_docspkg=${_pkgname}-docs-${_pkgver}-${_pkgrel}-${arch}.pkg.tar.zst + +# See if the sources are available from our own mirror: +_kernsrc=$(pacman -Spdd "${_pkgname}" 2> /dev/null) +_headerssrc=$(pacman -Spdd "${_pkgname}-headers" 2> /dev/null) +_docssrc=$(pacman -Spdd "${_pkgname}-docs" 2> /dev/null) + +# If not, then use the Arch Linux archive: +if [ "$(basename "${_kernsrc}" 2> /dev/null)" != "${_kernpkg}" ]; then + _arch_archive=https://archive.archlinux.org/packages/.all + _kernsrc=${_arch_archive}/${_kernpkg} + _headerssrc=${_arch_archive}/${_headerspkg} + _docssrc=${_arch_archive}/${_docspkg} +fi + +source=("${_kernsrc}" + "${_headerssrc}" + "${_docssrc}") + +noextract=("${source[@]##*/}") + +sha256sums=('0358dc97518d1e1dcb8aae3b0a3c9d0e43dd69708cd92ecef22e6e9dd3f9d1c8' + 'b6f662509ddcaa185f8eef31157cbb1e576efa6453e1a86c440bd3a21e1bc591' + '19802a951538749da4d5120ff89d1fc792e4bb8f465c1d3455d3803084e5f922') + +package_linux-zen-versioned-bin() { + pkgdesc="Dummy package depending on ${_versioned_pkgname}-bin" + depends=("${_versioned_pkgname}-bin") + optdepends=('grub-hook: to run grub-mkconfig when kernels are added/removed') +} + +package_linux-zen-versioned-headers-bin() { + pkgdesc="Dummy package depending on ${_versioned_pkgname}-headers-bin" + depends=("${_versioned_pkgname}-headers-bin") +} + +package_linux-zen-versioned-docs-bin() { + pkgdesc="Dummy package depending on ${_versioned_pkgname}-docs-bin" + depends=("${_versioned_pkgname}-docs-bin") +} + +package_linux%PKGVER-%PKGREL-zen-bin() { + pkgdesc="%KERN_PKGDESC, version ${KERNNAME}" + %KERN_DEPENDS + %KERN_CONFLICTS + %KERN_OPTDEPENDS + %KERN_PROVIDES + %KERN_REPLACES + tar -xf "${_kernpkg}" -C "${pkgdir}" + rm "${pkgdir}"/{.MTREE,.BUILDINFO,.PKGINFO} + sed -ic "s/${_pkgname}/${KERNNAME}/" "${pkgdir}/usr/lib/modules/${KERNNAME}/pkgbase" +} + +package_linux%PKGVER-%PKGREL-zen-headers-bin() { + pkgdesc="%HEADERS_PKGDESC ${KERNNAME}" + %HEADERS_DEPENDS + %HEADERS_CONFLICTS + %HEADERS_OPTDEPENDS + %HEADERS_PROVIDES + %HEADERS_REPLACES + tar -xf "${_headerspkg}" -C "${pkgdir}" + rm "${pkgdir}"/{.MTREE,.BUILDINFO,.PKGINFO} + mv "${pkgdir}/usr/src/"{"${_pkgname}","${_versioned_pkgname}"} +} + +package_linux%PKGVER-%PKGREL-zen-docs-bin() { + pkgdesc="%DOCS_PKGDESC ${KERNNAME}" + %DOCS_DEPENDS + %DOCS_CONFLICTS + %DOCS_OPTDEPENDS + %DOCS_PROVIDES + %DOCS_REPLACES + tar -xf "${_docspkg}" -C "${pkgdir}" + rm "${pkgdir}"/{.MTREE,.BUILDINFO,.PKGINFO} + mv "${pkgdir}/usr/share/doc/"{"${_pkgname}","${_versioned_pkgname}"} +} diff --git a/update.py b/update.py new file mode 100644 index 000000000000..85399917619b --- /dev/null +++ b/update.py @@ -0,0 +1,95 @@ +import subprocess +import json +import string +from pathlib import Path + +NAME = 'linux-zen' + +# Script to update the PKGBUILD to the latest [extra]/linux-zen + +def get_current(): + cmd = ['bash', '-c', 'source PKGBUILD; echo ${pkgver}-${pkgrel}'] + version = subprocess.check_output(cmd).decode('utf8').strip() + return version + + +def get_latest(): + cmd = ['pacman', '-Si', NAME] + info = subprocess.check_output(cmd).decode('utf8').strip() + version = info.split('Version', 1)[1].split(':', 1)[1].split('\n', 1)[0].strip() + return version + + +def get_info(pkgname): + url = f"https://archlinux.org/packages/extra/x86_64/{pkgname}/json/" + data = subprocess.check_output(['curl', '-s', url]).decode() + return json.loads(data) + + +class Template(string.Template): + delimiter="%" + + +def arr(name, values): + delimiter = '\n' + ' ' * (len(name) + 4) + values = [f"'{value}'" if ':' in value else value for value in values] + return f"{name}=({delimiter.join(values)})" + + +def update(): + kern_info = get_info(NAME) + headers_info = get_info(f'{NAME}-headers') + docs_info = get_info(f'{NAME}-docs') + + template = Template(Path('PKGBUILD.template').read_text()) + + pkgbuild = template.substitute( + PKGVER=kern_info['pkgver'], + KERNVER=kern_info['pkgver'].rsplit('.', 1)[0], + ZENVER=kern_info['pkgver'].rsplit('.', 1)[1], + PKGREL=kern_info['pkgrel'], + URL=kern_info['url'], + KERN_PKGDESC=kern_info['pkgdesc'], + KERN_DEPENDS=arr("depends", kern_info['depends']), + KERN_CONFLICTS=arr("conflicts", kern_info['conflicts'] + ['"${_pkgname}"']), + KERN_OPTDEPENDS=arr("optdepends", kern_info['optdepends']), + KERN_PROVIDES=arr("provides", kern_info['provides']), + KERN_REPLACES=arr("replaces", kern_info['replaces']), + HEADERS_PKGDESC=headers_info['pkgdesc'], + HEADERS_DEPENDS=arr("depends", headers_info['depends']), + HEADERS_CONFLICTS=arr( + "conflicts", headers_info['conflicts'] + ['"${_pkgname}-headers"'] + ), + HEADERS_OPTDEPENDS=arr("optdepends", headers_info['optdepends']), + HEADERS_PROVIDES=arr("provides", headers_info['provides']), + HEADERS_REPLACES=arr("replaces", headers_info['replaces']), + DOCS_PKGDESC=docs_info['pkgdesc'], + DOCS_DEPENDS=arr("depends", docs_info['depends']), + DOCS_CONFLICTS=arr( + "conflicts", docs_info['conflicts'] + ['"${_pkgname}-docs"'] + ), + DOCS_OPTDEPENDS=arr("optdepends", docs_info['optdepends']), + DOCS_PROVIDES=arr("provides", docs_info['provides']), + DOCS_REPLACES=arr("replaces", docs_info['replaces']), + ) + + # Delete empty arrays: + pkgbuild = '\n'.join( + line for line in pkgbuild.splitlines() if not line.endswith('=()') + ) + Path('PKGBUILD').write_text(pkgbuild + '\n') + subprocess.check_call(['updpkgsums']) + with open('.SRCINFO', 'w') as f: + f.write(subprocess.check_output(['makepkg', '--printsrcinfo']).decode()) + subprocess.check_call(['git', 'add', 'PKGBUILD', '.SRCINFO']) + subprocess.check_call( + ['git', 'commit', '-m', f"{kern_info['pkgver']}-{kern_info['pkgrel']}"] + ) + subprocess.check_call(['git', 'push']) + +if __name__ == '__main__': + if get_current() == get_latest(): + print(f"{NAME}-versioned-bin is up to date") + else: + print(f"{NAME}-versioned-bin is out of date!") + update() |