diff --git a/pmb/aportgen/device.py b/pmb/aportgen/device.py index c6756113..7349b004 100644 --- a/pmb/aportgen/device.py +++ b/pmb/aportgen/device.py @@ -121,6 +121,7 @@ def generate_deviceinfo_fastboot_content(args, bootimg=None): def generate_deviceinfo(args, pkgname, name, manufacturer, arch, has_keyboard, has_external_storage, flash_method, bootimg=None): + # Note: New variables must be added to pmb/config/__init__.py as well content = """\ # Reference: # Please use double quotes only. You can source this file in shell scripts. diff --git a/pmb/aportgen/linux.py b/pmb/aportgen/linux.py index 38570ff2..4b161aa8 100644 --- a/pmb/aportgen/linux.py +++ b/pmb/aportgen/linux.py @@ -22,23 +22,62 @@ import pmb.parse.apkindex import pmb.parse.arch -def generate_apkbuild(args, pkgname, name, arch): +def generate_apkbuild(args, pkgname, deviceinfo): device = "-".join(pkgname.split("-")[1:]) - carch = pmb.parse.arch.alpine_to_kernel(arch) + carch = pmb.parse.arch.alpine_to_kernel(deviceinfo["arch"]) + + makedepends = "perl sed installkernel bash gmp-dev bc linux-headers elfutils-dev" + + package = """ + # kernel.release + install -D "$builddir/include/config/kernel.release" \\ + "$pkgdir/usr/share/kernel/$_flavor/kernel.release" + + # zImage (find the right one) + cd "$builddir/arch/$_carch/boot" + _target="$pkgdir/boot/vmlinuz-$_flavor" + for _zimg in zImage-dtb Image.gz-dtb *zImage Image; do + [ -e "$_zimg" ] || continue + msg "zImage found: $_zimg" + install -Dm644 "$_zimg" "$_target" + break + done + if ! [ -e "$_target" ]; then + error "Could not find zImage in $PWD!" + return 1 + fi""" + + 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 = """\ # Kernel config based on: arch/""" + carch + """/configs/(CHANGEME!) pkgname=\"""" + pkgname + """\" pkgver=3.x.x pkgrel=0 - pkgdesc=\"""" + name + """ kernel fork\" - arch=\"""" + arch + """\" + pkgdesc=\"""" + deviceinfo["name"] + """ kernel fork\" + arch=\"""" + deviceinfo["arch"] + """\" _carch=\"""" + carch + """\" _flavor=\"""" + device + """\" url="https://kernel.org" license="GPL2" options="!strip !check !tracedeps" - makedepends="perl sed installkernel bash gmp-dev bc linux-headers elfutils-dev" + makedepends=\"""" + makedepends + """\" HOSTCC="${CC:-gcc}" HOSTCC="${HOSTCC#${CROSS_COMPILE}}" @@ -78,30 +117,10 @@ def generate_apkbuild(args, pkgname, name, arch): cp .config "$startdir"/$_config } - build() { - unset LDFLAGS - make ARCH="$_carch" CC="${CC:-gcc}" \\ - KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-postmarketOS" + build() {""" + build + """ } - package() { - # kernel.release - install -D "$builddir/include/config/kernel.release" \\ - "$pkgdir/usr/share/kernel/$_flavor/kernel.release" - - # zImage (find the right one) - cd "$builddir/arch/$_carch/boot" - _target="$pkgdir/boot/vmlinuz-$_flavor" - for _zimg in zImage-dtb Image.gz-dtb *zImage Image; do - [ -e "$_zimg" ] || continue - msg "zImage found: $_zimg" - install -Dm644 "$_zimg" "$_target" - break - done - if ! [ -e "$_target" ]; then - error "Could not find zImage in $PWD!" - return 1 - fi + package() {""" + package + """ } sha512sums="(run 'pmbootstrap checksum """ + pkgname + """' to fill)" @@ -126,4 +145,4 @@ def generate(args, pkgname): "/device/linux-lg-mako/" + file, args.work + "/aportgen/"]) - generate_apkbuild(args, pkgname, deviceinfo["name"], deviceinfo["arch"]) + generate_apkbuild(args, pkgname, deviceinfo) diff --git a/pmb/config/__init__.py b/pmb/config/__init__.py index c3abffa4..002f6c89 100644 --- a/pmb/config/__init__.py +++ b/pmb/config/__init__.py @@ -206,36 +206,46 @@ apkbuild_attributes = { # Variables from deviceinfo. Reference: deviceinfo_attributes = [ - # device + # general "format_version", "name", "manufacturer", "date", - "keyboard", - "nonfree", "dtb", "modules_initfs", - "external_disk", "external_disk_install", - "flash_method", "arch", + "nonfree", + + # device + "keyboard", + "external_disk", + "screen_width", + "screen_height", + "dev_touchscreen", + "dev_touchscreen_calibration", + "dev_keyboard", + + # bootloader + "flash_method", # flash - "generate_bootimg", - "generate_legacy_uboot_initfs", "flash_heimdall_partition_kernel", "flash_heimdall_partition_initfs", "flash_heimdall_partition_system", - "flash_fastboot_max_size", - "flash_fastboot_vendor_id", + "generate_legacy_uboot_initfs", + "kernel_cmdline", + "generate_bootimg", + "bootimg_qcdt", "flash_offset_base", "flash_offset_kernel", "flash_offset_ramdisk", "flash_offset_second", "flash_offset_tags", "flash_pagesize", + "flash_fastboot_max_size", + "flash_fastboot_vendor_id", "flash_sparse", - "kernel_cmdline", # weston "weston_pixman_type",