1
0
Fork 1
mirror of https://gitlab.postmarketos.org/postmarketOS/pmbootstrap.git synced 2025-07-13 19:39:51 +03:00
pmbootstrap/pmb/aportgen/linux.py
Minecrell 21b4e04c77
pmb.aportgen.linux: remove HOSTCC for latest GCC (!1880)
Setting HOSTCC is not necessary when using latest GCC
(since it defaults to "gcc"). Setting it only causes annoying
linter warnings. Let's remove it!
2020-03-01 10:27:15 +01:00

98 lines
3.4 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 = "perl sed installkernel bash gmp-dev bc linux-headers elfutils-dev devicepkg-dev"
package = """
downstreamkernel_package "$builddir" "$pkgdir" "$_carch" "$_flavor\""""
build = """
unset LDFLAGS
make ARCH="$_carch" CC="${CC:-gcc}" \\
KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-postmarketOS\""""
if deviceinfo["bootimg_qcdt"] == "true":
makedepends += " dtbtool"
build += """\n
# Generate master DTB (deviceinfo_bootimg_qcdt)
dtbTool -s 2048 -p "scripts/dtc/" -o "arch/""" + carch + "/boot/dt.img\" \"arch/" + carch + "/boot/\""
package += """\n
# Master DTB (deviceinfo_bootimg_qcdt)
install -Dm644 "$builddir/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() {""" + build + """
}
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)