Merge pull request #144 from postmarketOS/heimdall-partitions-in-deviceinfo

Close #22: deviceinfo: add heimdall partitions / make flasher variables optional
This commit is contained in:
Oliver Smith 2017-07-14 20:48:38 +00:00 committed by GitHub
commit ec57bd7df1
9 changed files with 78 additions and 30 deletions

View File

@ -1,6 +1,6 @@
pkgname=device-samsung-i9070
pkgver=1
pkgrel=5
pkgrel=6
pkgdesc="Samsung Galaxy S Advance"
url="https://github.com/postmarketOS"
arch="noarch"
@ -32,7 +32,7 @@ package() {
"$pkgdir"/etc/modules-load.d/00-${pkgname}.conf
}
sha512sums="a76e09953981b0610f42b94acc9b3e2d1dc5a8993b0d4bec32b3704359bba04efbc22576001c7d490234634a8805ac5109d4ab28b5d52a578df1b6dbdaff18c6 deviceinfo
sha512sums="352d7778a6ae6b19e10aed8506c074510c9b504f31bbd447f295c14a3baa7dd809b2d425ef2f20ff1be631a6d9e2189b0f10f8083c92f43808c523591c43cc8d deviceinfo
098187f6ab56d2542f98f1b5fbcf493431f665a4300db05e859357366e39b02a3d508bfd94c1d1bd7c669261e7ef0d4e1aef1fdbb15541fe34f3f48a6caa247f initfs-hook.sh
ffa8ba47539f0b4a931c560811d7842c7f5270631066c270322859c1ef77e63fba09a8462c2533bd6d095056b2c7936c2d4fc4e225f3cff45169f121bf93d8ed 90-android.rules
61e8becbf6fa7c1c6c42e481083f5981ae7af33a48cbc53e817d8ac2c6a8e4f67a54b32ae3b8f5f25f7b412165a849dc93a629110dc47b0d16927bf2a12eb7e1 modules-load.conf"

View File

@ -13,3 +13,7 @@ deviceinfo_external_disk="true"
deviceinfo_external_disk_install="true"
deviceinfo_flash_methods="heimdall"
deviceinfo_arch="armhf"
# Heimdall related
deviceinfo_flash_heimdall_partition_kernel="Kernel"
deviceinfo_flash_heimdall_partition_initfs="Kernel2"

View File

@ -1,6 +1,6 @@
pkgname=device-samsung-i9100
pkgver=1
pkgrel=4
pkgrel=5
pkgdesc="Samsung Galaxy SII"
url="https://github.com/postmarketOS"
arch="noarch"
@ -23,5 +23,5 @@ package() {
"$pkgdir"/etc/udev/rules.d/90-android.rules
}
sha512sums="9ee793403f5a8789470073cb2be21b6ba12dc021530ca61b0fdc45bb903df020dba4099b93d8c922eb7f91f78888e19ac856c5baaffd23ecd81a2033b3c4ddde deviceinfo
sha512sums="7d57cbeeb4d35c5e3ea865175b781eebf88508893607b1be883c615f56bb69eb73a979d97e698d1938fcc226e3836d1f7210e9d09bad0ad66671cba5faa37cdc deviceinfo
8aead706ddb118a44de7d049f07d10a27e727d17724058d132e4ec4fa73fed29c9ccfe03f02aca459c922ec0fbba24e171fe3c76e33f7c5462631e3dd5506e36 90-android.rules"

View File

@ -13,3 +13,7 @@ deviceinfo_external_disk="true"
deviceinfo_external_disk_install="true"
deviceinfo_flash_methods="heimdall"
deviceinfo_arch="armhf"
# Heimdall related
deviceinfo_flash_heimdall_partition_kernel="KERNEL"
deviceinfo_flash_heimdall_partition_initfs="RECOVERY"

View File

@ -1,6 +1,6 @@
pkgname=heimdall
pkgver=1.4.2
pkgrel=1
pkgrel=2
pkgdesc="Flasher for Samsung Galaxy S devices"
url="https://github.com/Benjamin-Dobell/Heimdall"
arch="all"
@ -26,5 +26,5 @@ package() {
}
sha512sums="c554662f9ccb763a8e9867a0c563618879d2533af985d44db3c237d3ee51add44c1681d13b1a83b72b30ba6e5b32d7c2f9c02b31114c67c5fbe01cbb010acfe7 heimdall-1.4.2.tar.gz
a75677d4c5559bf8233a48d1b38bf91e4125717a85e1ea6d283d2d1e052c2a96228818a71f8b90adbda049b6d5b5065f7265ffc2e05cafd2ce9717bfc8ac8716 heimdall_flash_kernel.sh
f2cae8ee8bd598ca7e2ca8ccb01318dc3b7b049f6177e41a1a3b82906de86cae4f789438d9ed319ec06fd957814d59ec8b5a0f0096630cad0f2ef89825d4fd1a heimdall_flash_kernel.sh
45e742bb3a8c8d0bc6806a4e9f860b04f255cad72a8602c04759178284c66e0a90d3ea22249b5fa69de1dd1d6ecd6221adaa63d611aa20d2a54aa20868e86a9f heimdall_wait_for_device.sh"

View File

@ -3,31 +3,29 @@ set -e
usage()
{
echo "Flash an initramfs file to the recovery partition, and flash a kernel."
echo "Flash initramfs and kernel to separate partitions."
echo "The kernel needs to have its own minimal initramfs, that loads the"
echo "real initramfs from the recovery partition (\"isorec\")."
echo "real initramfs from the other partition (\"isorec\")."
echo ""
echo "Usage: $(basename "$0") <initramfs> <kernel>"
echo "Usage: $(basename "$0") <initfs> <initfs partition> <kernel> <kernel partition>"
exit 1
}
# Sanity checks
[ "$#" != 2 ] && usage
INITRAMFS="$1"
KERNEL="$2"
for file in "$INITRAMFS" "$KERNEL"; do
[ "$#" != 4 ] && usage
INITFS="$1"
INITFS_PARTITION="$2"
KERNEL="$3"
KERNEL_PARTITION="$4"
for file in "$INITFS" "$KERNEL"; do
[ -e "$file" ] && continue
echo "ERROR: File $file does not exist!"
exit 1
done
echo "(1/2) flash initramfs to recovery partition (isorec-style)"
echo "Flash initramfs to the '$INITFS_PARTITION' partition (isorec-style) and"
echo "kernel to the '$KERNEL_PARTITION' partition"
heimdall_wait_for_device.sh
gunzip -c "$INITRAMFS" | lzop > /tmp/initramfs.lzo
heimdall flash --RECOVERY /tmp/initramfs.lzo
gunzip -c "$INITFS" | lzop > /tmp/initramfs.lzo
heimdall flash --"$INITFS_PARTITION" /tmp/initramfs.lzo --"$KERNEL_PARTITION" "$KERNEL"
rm /tmp/initramfs.lzo
sleep 20
echo "(2/2) flash kernel (hit ^C if you only wanted to flash initramfs)"
heimdall_wait_for_device.sh
heimdall flash --KERNEL "$KERNEL"

View File

@ -125,6 +125,11 @@ build_packages = ["abuild", "build-base", "ccache"]
# the native chroot and a cross-compiler, without using distcc
build_cross_native = ["linux-*"]
#
# PARSE
#
# Variables in APKBUILD files, that get parsed
apkbuild_attributes = {
"arch": {"array": True},
@ -149,6 +154,39 @@ apkbuild_attributes = {
"_llvmver": {"array": False},
}
# Variables from deviceinfo. Reference: <https://postmarketos.org/deviceinfo>
deviceinfo_attributes = [
# device
"format_version",
"name",
"manufacturer",
"date",
"keyboard",
"nonfree",
"dtb",
"modules_initfs",
"external_disk",
"external_disk_install",
"flash_methods",
"arch",
# flash
"generate_bootimg",
"generate_legacy_uboot_initfs",
"flash_heimdall_partition_initfs",
"flash_heimdall_partition_kernel",
"flash_offset_base",
"flash_offset_kernel",
"flash_offset_ramdisk",
"flash_offset_second",
"flash_offset_tags",
"flash_pagesize",
"kernel_cmdline",
# weston
"weston_pixman_type",
]
#
# INITFS
#
@ -201,6 +239,7 @@ $IMAGE: Path to the system partition image
$KERNEL_CMDLINE: Kernel commandline
Fastboot specific: $OFFSET_KERNEL, $OFFSET_RAMDISK, $OFFSET_TAGS, $PAGE_SIZE
Heimdall specific: $PARTITION_KERNEL, $PARTITION_INITFS
"""
flashers = {
"fastboot": {
@ -228,8 +267,8 @@ flashers = {
["heimdall_wait_for_device.sh"],
["heimdall", "flash", "--SYSTEM", "$IMAGE"]],
"flash_kernel": [["heimdall_flash_kernel.sh",
"$BOOT/initramfs-$FLAVOR",
"$BOOT/vmlinuz-$FLAVOR"]]
"$BOOT/initramfs-$FLAVOR", "$PARTITION_INITFS",
"$BOOT/vmlinuz-$FLAVOR", "$PARTITION_KERNEL"]]
},
},
}

View File

@ -30,23 +30,19 @@ def run(args, action, flavor=None):
raise RuntimeError("action " + action + " is not"
" configured for method " + method + "!")
# Kernel commandline is optional
# Optional variables
cmdline = ""
if "kernel_cmdline" in args.deviceinfo:
cmdline = args.deviceinfo["kernel_cmdline"]
# Variable setup
vars = {
"$BOOT": "/mnt/rootfs_" + args.device + "/boot",
"$FLAVOR": flavor if flavor is not None else "",
"$IMAGE": "/home/user/rootfs/" + args.device + ".img",
"$KERNEL_CMDLINE": cmdline,
"$KERNEL_CMDLINE": args.deviceinfo["kernel_cmdline"],
"$OFFSET_KERNEL": args.deviceinfo["flash_offset_kernel"],
"$OFFSET_RAMDISK": args.deviceinfo["flash_offset_ramdisk"],
"$OFFSET_SECOND": args.deviceinfo["flash_offset_second"],
"$OFFSET_TAGS": args.deviceinfo["flash_offset_tags"],
"$PAGE_SIZE": args.deviceinfo["flash_pagesize"],
"$PARTITION_INITFS": args.deviceinfo["flash_heimdall_partition_initfs"],
"$PARTITION_KERNEL": args.deviceinfo["flash_heimdall_partition_kernel"],
}
# Run the commands of each action

View File

@ -18,6 +18,7 @@ along with pmbootstrap. If not, see <http://www.gnu.org/licenses/>.
"""
import logging
import os
import pmb.config
def deviceinfo(args, device=None):
@ -48,4 +49,10 @@ def deviceinfo(args, device=None):
key = split[0][len("deviceinfo_"):]
value = split[1].replace("\"", "").replace("\n", "")
ret[key] = value
# Assign empty string as default
for key in pmb.config.deviceinfo_attributes:
if key not in ret:
ret[key] = ""
return ret