forked from Mirror/pmbootstrap
Newer kernels require "bison" and "flex", so to easy porting we should add them to generated APKBUILDs by default. While we are it, clean up the default set of dependencies a bit: - installkernel is only needed when using "make zinstall", which we are not using in downstream_package (it requires special kernel configuration, so it's not really suitable for downstream...) - most kernels seem to compile fine without gmp-dev and elfutils-dev, so they should only be added when needed - the kernel has its own headers, why do we need linux-headers? (probably copied from Alpine, but anyway...) - add openssl-dev since it is needed for building/signing kernel modules Useful reference: https://www.kernel.org/doc/html/latest/process/changes.html Although it mentions much more than what is really needed...
92 lines
3.2 KiB
Python
92 lines
3.2 KiB
Python
# Copyright 2020 Oliver Smith
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
import pmb.helpers.run
|
|
import pmb.aportgen.core
|
|
import pmb.parse.apkindex
|
|
import pmb.parse.arch
|
|
|
|
|
|
def generate_apkbuild(args, pkgname, deviceinfo, patches):
|
|
device = "-".join(pkgname.split("-")[1:])
|
|
carch = pmb.parse.arch.alpine_to_kernel(deviceinfo["arch"])
|
|
|
|
makedepends = "bash bc bison devicepkg-dev flex openssl-dev perl"
|
|
|
|
package = """
|
|
downstreamkernel_package "$builddir" "$pkgdir" "$_carch" "$_flavor\""""
|
|
|
|
if deviceinfo["bootimg_qcdt"] == "true":
|
|
makedepends += " dtbtool"
|
|
|
|
package += """\n
|
|
# Master DTB (deviceinfo_bootimg_qcdt)
|
|
dtbTool -p scripts/dtc/ -o "arch/$_carch/boot"/dt.img "arch/$_carch/boot/"
|
|
install -Dm644 "arch/$_carch/boot"/dt.img "$pkgdir"/boot/dt.img"""
|
|
|
|
content = """\
|
|
# Contributor: Firstname Lastname <email> (CHANGEME!)
|
|
# Maintainer: Firstname Lastname <email> (CHANGEME!)
|
|
# Reference: <https://postmarketos.org/vendorkernel>
|
|
# Kernel config based on: arch/""" + carch + """/configs/(CHANGEME!)
|
|
|
|
pkgname=\"""" + pkgname + """\"
|
|
pkgver=3.x.x
|
|
pkgrel=0
|
|
pkgdesc=\"""" + deviceinfo["name"] + """ kernel fork\"
|
|
arch=\"""" + deviceinfo["arch"] + """\"
|
|
_carch=\"""" + carch + """\"
|
|
_flavor=\"""" + device + """\"
|
|
url="https://kernel.org"
|
|
license="GPL-2.0-only"
|
|
options="!strip !check !tracedeps"
|
|
makedepends=\"""" + makedepends + """\"
|
|
|
|
# Source
|
|
_repository="(CHANGEME!)"
|
|
_commit="ffffffffffffffffffffffffffffffffffffffff"
|
|
_config="config-$_flavor.$arch"
|
|
source="
|
|
$pkgname-$_commit.tar.gz::https://github.com/LineageOS/$_repository/archive/$_commit.tar.gz
|
|
$_config""" + ("\n" + " " * 12).join([""] + patches) + """
|
|
"
|
|
builddir="$srcdir/$_repository-$_commit"
|
|
|
|
prepare() {
|
|
default_prepare
|
|
downstreamkernel_prepare "$srcdir" "$builddir" "$_config" "$_carch" "$HOSTCC"
|
|
}
|
|
|
|
build() {
|
|
unset LDFLAGS
|
|
make ARCH="$_carch" CC="${CC:-gcc}" \\
|
|
KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-postmarketOS"
|
|
}
|
|
|
|
package() {""" + package + """
|
|
}
|
|
|
|
sha512sums="(run 'pmbootstrap checksum """ + pkgname + """' to fill)\""""
|
|
|
|
# Write the file
|
|
with open(args.work + "/aportgen/APKBUILD", "w", encoding="utf-8") as handle:
|
|
for line in content.split("\n"):
|
|
handle.write(line[8:].replace(" " * 4, "\t") + "\n")
|
|
|
|
|
|
def generate(args, pkgname):
|
|
device = "-".join(pkgname.split("-")[1:])
|
|
deviceinfo = pmb.parse.deviceinfo(args, device)
|
|
|
|
# Symlink commonly used patches
|
|
pmb.helpers.run.user(args, ["mkdir", "-p", args.work + "/aportgen"])
|
|
patches = [
|
|
"gcc7-give-up-on-ilog2-const-optimizations.patch",
|
|
"gcc8-fix-put-user.patch",
|
|
"kernel-use-the-gnu89-standard-explicitly.patch",
|
|
]
|
|
for patch in patches:
|
|
pmb.helpers.run.user(args, ["ln", "-s",
|
|
"../../.shared-patches/linux/" + patch,
|
|
args.work + "/aportgen/" + patch])
|
|
|
|
generate_apkbuild(args, pkgname, deviceinfo, patches)
|