diff --git a/device/device-samsung-klte/APKBUILD b/device/device-samsung-klte/APKBUILD index 2362da081..652231690 100644 --- a/device/device-samsung-klte/APKBUILD +++ b/device/device-samsung-klte/APKBUILD @@ -2,7 +2,7 @@ pkgname="device-samsung-klte" pkgdesc="Samsung Galaxy S5" pkgver=0.2 -pkgrel=1 +pkgrel=2 url="https://postmarketos.org" license="MIT" arch="noarch" @@ -26,13 +26,13 @@ package() { kernel_downstream() { pkgdesc="Display and touchscreen works (see device table for details)" depends="linux-samsung-klte" - mkdir "$subpkgdir" + devicepkg_subpackage_kernel $startdir $pkgname $subpkgname } kernel_mainline() { pkgdesc="For kernel development only (most features aren't working)" depends="linux-postmarketos-qcom" - mkdir "$subpkgdir" + devicepkg_subpackage_kernel $startdir $pkgname $subpkgname } -sha512sums="206713fdab42c064b7ffe5376506e1e1141cfcd29c20d2f10a48b10049c58fd8f6e9d8c4118e1aa08626ed2de1a4373d21e0d4c8ef874f7f0c5277611533e3a7 deviceinfo" +sha512sums="d9e5cc5750ab598d674392fea009c8204e32822078c601555872560ec96f93850a3e396e7a937bb11f77d14ebfc67584b2da96eb0a534f682cd53e4ab2c8ff60 deviceinfo" diff --git a/device/device-samsung-klte/deviceinfo b/device/device-samsung-klte/deviceinfo index 88a3a142d..9bac4b48e 100644 --- a/device/device-samsung-klte/deviceinfo +++ b/device/device-samsung-klte/deviceinfo @@ -5,7 +5,7 @@ deviceinfo_format_version="0" deviceinfo_name="Samsung Galaxy S5" deviceinfo_manufacturer="Samsung" deviceinfo_date="" -deviceinfo_dtb="" +deviceinfo_dtb="qcom-msm8974-samsung-klte" deviceinfo_modules_initfs="" deviceinfo_arch="armhf" @@ -19,9 +19,11 @@ deviceinfo_dev_keyboard="" # Bootloader related deviceinfo_flash_method="heimdall-bootimg" -deviceinfo_kernel_cmdline="androidboot.boot_recovery=1" +deviceinfo_kernel_cmdline_downstream="androidboot.boot_recovery=1" +deviceinfo_kernel_cmdline_mainline="console=ttyMSM0,115200,n8 PMOS_NO_OUTPUT_REDIRECT" deviceinfo_generate_bootimg="true" -deviceinfo_bootimg_qcdt="true" +deviceinfo_bootimg_qcdt_downstream="true" +deviceinfo_bootimg_qcdt_mainline="false" deviceinfo_flash_offset_base="0x00000000" deviceinfo_flash_offset_kernel="0x00008000" deviceinfo_flash_offset_ramdisk="0x02000000" diff --git a/main/devicepkg-dev/APKBUILD b/main/devicepkg-dev/APKBUILD index 8dc61898e..15b34a33b 100644 --- a/main/devicepkg-dev/APKBUILD +++ b/main/devicepkg-dev/APKBUILD @@ -1,6 +1,6 @@ pkgname="devicepkg-dev" -pkgver=0.4 -pkgrel=1 +pkgver=0.5 +pkgrel=0 pkgdesc="Provides default device package functions" url="https://postmarketos.org" arch="all" @@ -10,8 +10,40 @@ source=" devicepkg_build.sh devicepkg_package.sh downstreamkernel_prepare.sh + devicepkg_subpackage_kernel.sh + testdata/deviceinfo + testdata/expected-deviceinfo-downstream + testdata/expected-deviceinfo-mainline " +check() { + # Prepare a temporary dir to run the tests + testdir=$(mktemp -d) + install -Dm644 "$srcdir/deviceinfo" \ + "$testdir/src/deviceinfo" + + # Execute the script to create the subpackage deviceinfo + sh devicepkg_subpackage_kernel.sh \ + $testdir linux-test linux-test-kernel-downstream + sh devicepkg_subpackage_kernel.sh \ + $testdir linux-test linux-test-kernel-mainline + + # Compare the result with the expected files + if ! cmp -s "$srcdir/expected-deviceinfo-downstream" \ + "$testdir/pkg/linux-test-kernel-downstream/etc/deviceinfo"; then + echo "ERROR: unexpected result with downstream deviceinfo" + exit 1 + fi + if ! cmp -s "$srcdir/expected-deviceinfo-mainline" \ + "$testdir/pkg/linux-test-kernel-mainline/etc/deviceinfo"; then + echo "ERROR: unexpected result with mainline deviceinfo" + exit 1 + fi + + # Cleanup + rm -r "$testdir" +} + package() { install -Dm755 "$srcdir/devicepkg_build.sh" \ "$pkgdir/usr/bin/devicepkg_build" @@ -19,10 +51,16 @@ package() { "$pkgdir/usr/bin/devicepkg_package" install -Dm755 "$srcdir/downstreamkernel_prepare.sh" \ "$pkgdir/usr/bin/downstreamkernel_prepare" + install -Dm755 "$srcdir/devicepkg_subpackage_kernel.sh" \ + "$pkgdir/usr/bin/devicepkg_subpackage_kernel" install -Dm644 "$srcdir/compiler-gcc.h" \ "$pkgdir/usr/share/devicepkg-dev/compiler-gcc.h" } sha512sums="d69930dd790b00fb39760a37d95a10899f0d167e10e2804feb05d9ce04f94185dc32d36edc90214aba2ea2aa09bf18f7dab93f1d2eff23f67beb2cc83be30e7c compiler-gcc.h -638d50e6388eabf0da6bf0cff2fe9719ad8a808946f0077228db57fa13a26d9eeb39c1f2689c9a6f93ff9b3bcfdcfb7c358b180bba90e5bba8b9a9e78d25ed18 devicepkg_build.sh -c732792596f56860f6ab9ddd53b9a7a80224400dd20097b20cebe17a6e7330e9178783f09db16132a28a555f83e29ef3643bfe069638b62998912a9a7ffefdc0 devicepkg_package.sh -b04289881f9358cdfb2b1b62909bc828fee25e67082c0496525ba344f402c79b0632248d4980bd0e6b6895f20754fcdd0349a86b4baffcf546a7049e48ea69f3 downstreamkernel_prepare.sh" +55943344e6c6192642f20246566c8468dba33d4ec4223c4e930f723fdb0fa248001c65a9bbaa5f15c18e9a42811c9b9decedfd5586f481aa762b6423b55d55bb devicepkg_build.sh +cc35989539781da2bc847fe68448863174a79db3853f836c61da064030cb729a16681cb6ffa16add558a7dba8563cb7fab495a6db811dcc3a1af5123dc0e6f72 devicepkg_package.sh +b04289881f9358cdfb2b1b62909bc828fee25e67082c0496525ba344f402c79b0632248d4980bd0e6b6895f20754fcdd0349a86b4baffcf546a7049e48ea69f3 downstreamkernel_prepare.sh +bedf319a74bff01780192cd11c872c41a451915cc7e7542c467cd84fa1784236401f57e197258c3aae734f478c31a2052129838861ea204c0985630501f152ca devicepkg_subpackage_kernel.sh +9bb7f2a0930f397a713e9f4b6d5b83a426d9a2a3f692dcc42ac30717bf26ead869d8823a38f3ad388af12b2b9a02e8ec4d4418e9c2062389ed06d2b891a49ff3 deviceinfo +136247a16ec91dc0c7241eeddb28c2196ae3b29946a9bc7e9566f848491ef1c53b12d05bf2dbc1cc352986712fd76f25c1510bcc8f301af540a2f01c33b299e1 expected-deviceinfo-downstream +8cdbf149e1bdfaf4d4a246a208732836956fd81a3aa01ef968e4c2e2cca4027f71cfc38e22debade83ddfca4e05267983c1c8a9c1aa9461a8cf493ef7e893097 expected-deviceinfo-mainline" diff --git a/main/devicepkg-dev/devicepkg_build.sh b/main/devicepkg-dev/devicepkg_build.sh index 3b95083e5..9c9b17ecc 100644 --- a/main/devicepkg-dev/devicepkg_build.sh +++ b/main/devicepkg-dev/devicepkg_build.sh @@ -4,7 +4,7 @@ pkgname=$2 if [ -z "$startdir" ] || [ -z "$pkgname" ]; then echo "ERROR: missing argument!" - echo "Please call devicepkg_default_build() with \$startdir and \$pkgname as arguments." + echo "Please call $0 with \$startdir \$pkgname as arguments." exit 1 fi diff --git a/main/devicepkg-dev/devicepkg_package.sh b/main/devicepkg-dev/devicepkg_package.sh index f04c14375..48f1e4ebb 100644 --- a/main/devicepkg-dev/devicepkg_package.sh +++ b/main/devicepkg-dev/devicepkg_package.sh @@ -4,7 +4,7 @@ pkgname=$2 if [ -z "$startdir" ] || [ -z "$pkgname" ]; then echo "ERROR: missing argument!" - echo "Please call devicepkg_default_package() with \$startdir and \$pkgname as arguments." + echo "Please call $0 with \$startdir \$pkgname as arguments." exit 1 fi diff --git a/main/devicepkg-dev/devicepkg_subpackage_kernel.sh b/main/devicepkg-dev/devicepkg_subpackage_kernel.sh new file mode 100644 index 000000000..1b395aa66 --- /dev/null +++ b/main/devicepkg-dev/devicepkg_subpackage_kernel.sh @@ -0,0 +1,41 @@ +#!/bin/sh +startdir=$1 +pkgname=$2 +subpkgname=$3 + +if [ -z "$startdir" ] || [ -z "$pkgname" ] || [ -z "$subpkgname" ]; then + echo "ERROR: missing argument!" + echo "Please call $0 with \$startdir \$pkgname \$subpkgname as arguments." + exit 1 +fi + +srcdir="$startdir/src" +pkgdir="$startdir/pkg/$pkgname" +subpkgdir="$startdir/pkg/$subpkgname" + +if [ -e "$pkgdir/etc/deviceinfo" ]; then + rm -v "$pkgdir/etc/deviceinfo" +fi + +install -Dm644 "$srcdir/deviceinfo" \ + "$subpkgdir/etc/deviceinfo" + +# Get the kernel type ("downstream", "mainline") +kernel=$(echo "$subpkgname" | sed -n "s/.*-kernel-\(.*\)/\1/p") + +# Iterate over deviceinfo variables that have the kernel type as suffix +# var looks like: deviceinfo_kernel_cmdline, ... +grep -E "(.+)_$kernel=.*" "$subpkgdir/etc/deviceinfo" | \ + sed "s/\(.\+\)_$kernel=.*/\1/g" | while IFS= read -r var +do + if grep -Eq "$var=.*" "$subpkgdir/etc/deviceinfo"; then + echo "ERROR: variable '$var' should contain a kernel subpackage suffix" + exit 1 + fi + + # Remove the kernel suffix from the variable + sed -i "s/$var\_$kernel/$var/g" "$subpkgdir/etc/deviceinfo" + + # Remove the variables with other kernel suffixes + sed -i "/$var\_.*=.*/d" "$subpkgdir/etc/deviceinfo" +done diff --git a/main/devicepkg-dev/testdata/deviceinfo b/main/devicepkg-dev/testdata/deviceinfo new file mode 100644 index 000000000..1a191bcb1 --- /dev/null +++ b/main/devicepkg-dev/testdata/deviceinfo @@ -0,0 +1,6 @@ +deviceinfo_name="Test" +deviceinfo_kernel_cmdline_downstream="androidboot.boot_recovery=1" +deviceinfo_kernel_cmdline_mainline="console=ttyMSM0,115200,n8 PMOS_NO_OUTPUT_REDIRECT" +deviceinfo_kernel_cmdline_other="root=/dev/sda1 quiet splash" +deviceinfo_bootimg_qcdt_downstream="true" +deviceinfo_bootimg_qcdt_mainline="false" diff --git a/main/devicepkg-dev/testdata/expected-deviceinfo-downstream b/main/devicepkg-dev/testdata/expected-deviceinfo-downstream new file mode 100644 index 000000000..adde02f02 --- /dev/null +++ b/main/devicepkg-dev/testdata/expected-deviceinfo-downstream @@ -0,0 +1,3 @@ +deviceinfo_name="Test" +deviceinfo_kernel_cmdline="androidboot.boot_recovery=1" +deviceinfo_bootimg_qcdt="true" diff --git a/main/devicepkg-dev/testdata/expected-deviceinfo-mainline b/main/devicepkg-dev/testdata/expected-deviceinfo-mainline new file mode 100644 index 000000000..b5e87b30b --- /dev/null +++ b/main/devicepkg-dev/testdata/expected-deviceinfo-mainline @@ -0,0 +1,3 @@ +deviceinfo_name="Test" +deviceinfo_kernel_cmdline="console=ttyMSM0,115200,n8 PMOS_NO_OUTPUT_REDIRECT" +deviceinfo_bootimg_qcdt="false"