forked from Openwrt/openwrt
b993b68b6c
Before this commit, it was assumed that mkhash is in the PATH. While this was fine for the normal build workflow, this led to some issues if make TOPDIR="$(pwd)" -C "$pkgdir" compile was called manually. In most of the cases, I just saw warnings like this: make: Entering directory '/home/.../package/gluon-status-page' bash: line 1: mkhash: command not found bash: line 1: mkhash: command not found bash: line 1: mkhash: command not found bash: line 1: mkhash: command not found bash: line 1: mkhash: command not found bash: line 1: mkhash: command not found bash: line 1: mkhash: command not found bash: line 1: mkhash: command not found [...] While these were only warnings and the package still compiled sucessfully, I also observed that some package even fail to build because of this. After applying this commit, the variable $(MKHASH) is introduced. This variable points to $(STAGING_DIR_HOST)/bin/mkhash, which is always the correct path. Signed-off-by: Leonardo Mörlein <me@irrelefant.net>
35 lines
1023 B
Bash
Executable File
35 lines
1023 B
Bash
Executable File
#!/bin/sh
|
|
|
|
BLKSZ=65536
|
|
|
|
[ -f "$1" -a -f "$2" ] || {
|
|
echo "Usage: $0 <kernel image> <rootfs image> [output file]"
|
|
exit 1
|
|
}
|
|
|
|
IMAGE=${3:-openwrt-combined.img}
|
|
|
|
# Make sure provided images are 64k aligned.
|
|
kern="${IMAGE}.kernel"
|
|
root="${IMAGE}.rootfs"
|
|
dd if="$1" of="$kern" bs=$BLKSZ conv=sync 2>/dev/null
|
|
dd if="$2" of="$root" bs=$BLKSZ conv=sync 2>/dev/null
|
|
|
|
# Calculate md5sum over combined kernel and rootfs image.
|
|
md5=$(cat "$kern" "$root" | $MKHASH md5)
|
|
|
|
# Write image header followed by kernel and rootfs image.
|
|
# The header is padded to 64k, format is:
|
|
# CI magic word ("Combined Image")
|
|
# <kernel length> length of kernel encoded as zero padded 8 digit hex
|
|
# <rootfs length> length of rootfs encoded as zero padded 8 digit hex
|
|
# <md5sum> checksum of the combined kernel and rootfs image
|
|
( printf "CI%08x%08x%32s" \
|
|
$(stat -c "%s" "$kern") $(stat -c "%s" "$root") "${md5%% *}" | \
|
|
dd bs=$BLKSZ conv=sync;
|
|
cat "$kern" "$root"
|
|
) > ${IMAGE} 2>/dev/null
|
|
|
|
# Clean up.
|
|
rm -f "$kern" "$root"
|