2022-01-02 21:38:21 +00:00
|
|
|
# Copyright 2022 Oliver Smith
|
2020-02-20 20:07:28 +00:00
|
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
2017-10-30 19:56:38 +00:00
|
|
|
import pmb.helpers.run
|
|
|
|
import pmb.aportgen.core
|
|
|
|
import pmb.parse.apkindex
|
|
|
|
import pmb.parse.arch
|
|
|
|
|
|
|
|
|
2018-10-05 07:07:57 +00:00
|
|
|
def generate_apkbuild(args, pkgname, deviceinfo, patches):
|
2017-10-30 19:56:38 +00:00
|
|
|
device = "-".join(pkgname.split("-")[1:])
|
2018-01-17 17:53:58 +00:00
|
|
|
carch = pmb.parse.arch.alpine_to_kernel(deviceinfo["arch"])
|
|
|
|
|
2021-05-19 19:08:17 +00:00
|
|
|
makedepends = ["bash", "bc", "bison", "devicepkg-dev", "flex",
|
|
|
|
"openssl-dev", "perl"]
|
2018-01-17 17:53:58 +00:00
|
|
|
|
2020-11-19 02:57:37 +00:00
|
|
|
build = """
|
|
|
|
unset LDFLAGS
|
2020-12-02 18:32:43 +00:00
|
|
|
make O="$_outdir" ARCH="$_carch" CC="${CC:-gcc}" \\
|
2020-11-19 02:57:37 +00:00
|
|
|
KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-postmarketOS\""""
|
|
|
|
|
2018-01-17 17:53:58 +00:00
|
|
|
package = """
|
2021-08-23 06:14:10 +00:00
|
|
|
downstreamkernel_package "$builddir" "$pkgdir" "$_carch\" \\
|
|
|
|
"$_flavor" "$_outdir\""""
|
2018-01-17 17:53:58 +00:00
|
|
|
|
|
|
|
if deviceinfo["bootimg_qcdt"] == "true":
|
2020-11-19 02:57:37 +00:00
|
|
|
build += """\n
|
|
|
|
# Master DTB (deviceinfo_bootimg_qcdt)"""
|
|
|
|
vendors = ["spreadtrum", "exynos", "other"]
|
2021-09-20 10:00:13 +00:00
|
|
|
soc_vendor = pmb.helpers.cli.ask("SoC vendor", vendors,
|
2020-11-19 02:57:37 +00:00
|
|
|
vendors[-1], complete=vendors)
|
|
|
|
if soc_vendor == "spreadtrum":
|
2021-02-08 20:57:24 +00:00
|
|
|
makedepends.append("dtbtool-sprd")
|
2020-11-19 02:57:37 +00:00
|
|
|
build += """
|
2021-09-05 13:56:52 +00:00
|
|
|
dtbTool-sprd -p "$_outdir/scripts/dtc/" \\
|
2020-11-19 02:57:37 +00:00
|
|
|
-o "$_outdir/arch/$_carch/boot"/dt.img \\
|
|
|
|
"$_outdir/arch/$_carch/boot/dts/\""""
|
|
|
|
elif soc_vendor == "exynos":
|
|
|
|
codename = "-".join(pkgname.split("-")[2:])
|
2021-02-08 20:57:24 +00:00
|
|
|
makedepends.append("dtbtool-exynos")
|
2021-08-23 06:14:10 +00:00
|
|
|
build += """
|
2020-11-19 02:57:37 +00:00
|
|
|
dtbTool-exynos -o "$_outdir/arch/$_carch/boot"/dt.img \\
|
2021-08-23 06:14:10 +00:00
|
|
|
$(find "$_outdir/arch/$_carch/boot/dts/\""""
|
|
|
|
build += f" -name *{codename}*.dtb)"
|
2020-11-19 02:57:37 +00:00
|
|
|
else:
|
2021-02-08 20:57:24 +00:00
|
|
|
makedepends.append("dtbtool")
|
2020-11-19 02:57:37 +00:00
|
|
|
build += """
|
2021-09-05 13:52:55 +00:00
|
|
|
dtbTool -o "$_outdir/arch/$_carch/boot"/dt.img \\
|
2020-11-19 02:57:37 +00:00
|
|
|
"$_outdir/arch/$_carch/boot/\""""
|
|
|
|
package += """
|
|
|
|
install -Dm644 "$_outdir/arch/$_carch/boot"/dt.img \\
|
|
|
|
"$pkgdir"/boot/dt.img"""
|
2018-01-17 17:53:58 +00:00
|
|
|
|
2021-02-08 20:57:24 +00:00
|
|
|
makedepends.sort()
|
|
|
|
makedepends = ("\n" + " " * 12).join(makedepends)
|
2020-04-22 21:13:25 +00:00
|
|
|
patches = ("\n" + " " * 12).join(patches)
|
|
|
|
content = f"""\
|
2018-10-05 07:07:57 +00:00
|
|
|
# Reference: <https://postmarketos.org/vendorkernel>
|
2020-04-22 21:13:25 +00:00
|
|
|
# Kernel config based on: arch/{carch}/configs/(CHANGEME!)
|
2017-10-30 19:56:38 +00:00
|
|
|
|
2020-04-22 21:14:19 +00:00
|
|
|
pkgname={pkgname}
|
2017-10-30 19:56:38 +00:00
|
|
|
pkgver=3.x.x
|
|
|
|
pkgrel=0
|
2020-04-22 21:13:25 +00:00
|
|
|
pkgdesc="{deviceinfo["name"]} kernel fork"
|
|
|
|
arch="{deviceinfo["arch"]}"
|
|
|
|
_carch="{carch}"
|
|
|
|
_flavor="{device}"
|
2017-10-30 19:56:38 +00:00
|
|
|
url="https://kernel.org"
|
2018-10-05 07:07:57 +00:00
|
|
|
license="GPL-2.0-only"
|
2020-04-19 08:57:34 +00:00
|
|
|
options="!strip !check !tracedeps pmb:cross-native"
|
2021-02-08 20:57:24 +00:00
|
|
|
makedepends="
|
|
|
|
{makedepends}
|
|
|
|
"
|
2018-10-05 07:07:57 +00:00
|
|
|
|
2017-10-30 19:56:38 +00:00
|
|
|
# Source
|
|
|
|
_repository="(CHANGEME!)"
|
|
|
|
_commit="ffffffffffffffffffffffffffffffffffffffff"
|
2020-02-01 15:47:50 +00:00
|
|
|
_config="config-$_flavor.$arch"
|
2017-10-30 19:56:38 +00:00
|
|
|
source="
|
2020-02-01 15:47:50 +00:00
|
|
|
$pkgname-$_commit.tar.gz::https://github.com/LineageOS/$_repository/archive/$_commit.tar.gz
|
2020-04-22 21:13:25 +00:00
|
|
|
$_config
|
|
|
|
{patches}
|
2017-10-30 19:56:38 +00:00
|
|
|
"
|
2020-02-01 15:47:50 +00:00
|
|
|
builddir="$srcdir/$_repository-$_commit"
|
2020-03-25 12:24:25 +00:00
|
|
|
_outdir="out"
|
2017-10-30 19:56:38 +00:00
|
|
|
|
2020-04-22 21:13:25 +00:00
|
|
|
prepare() {{
|
2017-10-30 19:56:38 +00:00
|
|
|
default_prepare
|
2020-03-25 12:24:25 +00:00
|
|
|
. downstreamkernel_prepare
|
2020-04-22 21:13:25 +00:00
|
|
|
}}
|
2017-10-30 19:56:38 +00:00
|
|
|
|
2020-11-19 02:57:37 +00:00
|
|
|
build() {{{build}
|
2020-04-22 21:13:25 +00:00
|
|
|
}}
|
2017-10-30 19:56:38 +00:00
|
|
|
|
2020-04-22 21:13:25 +00:00
|
|
|
package() {{{package}
|
|
|
|
}}
|
2017-10-30 19:56:38 +00:00
|
|
|
|
2020-04-23 07:32:47 +00:00
|
|
|
sha512sums="(run 'pmbootstrap checksum {pkgname}' to fill)"
|
|
|
|
"""
|
2017-10-30 19:56:38 +00:00
|
|
|
|
|
|
|
# Write the file
|
2021-05-19 19:08:17 +00:00
|
|
|
with open(f"{args.work}/aportgen/APKBUILD", "w", encoding="utf-8") as hndl:
|
2020-04-23 07:32:47 +00:00
|
|
|
for line in content.rstrip().split("\n"):
|
2021-05-19 19:08:17 +00:00
|
|
|
hndl.write(line[8:].replace(" " * 4, "\t") + "\n")
|
2017-10-30 19:56:38 +00:00
|
|
|
|
|
|
|
|
|
|
|
def generate(args, pkgname):
|
|
|
|
device = "-".join(pkgname.split("-")[1:])
|
|
|
|
deviceinfo = pmb.parse.deviceinfo(args, device)
|
|
|
|
|
2018-10-05 07:07:57 +00:00
|
|
|
# Symlink commonly used patches
|
2017-10-30 19:56:38 +00:00
|
|
|
pmb.helpers.run.user(args, ["mkdir", "-p", args.work + "/aportgen"])
|
2019-01-21 04:29:20 +00:00
|
|
|
patches = [
|
|
|
|
"gcc7-give-up-on-ilog2-const-optimizations.patch",
|
|
|
|
"gcc8-fix-put-user.patch",
|
2020-11-05 13:11:00 +00:00
|
|
|
"gcc10-extern_YYLOC_global_declaration.patch",
|
2019-01-21 04:29:20 +00:00
|
|
|
"kernel-use-the-gnu89-standard-explicitly.patch",
|
|
|
|
]
|
2018-10-05 07:07:57 +00:00
|
|
|
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)
|