openwrt/scripts/sysupgrade-nand.sh
Felix Fietkau be6acba4dc build system: have tar use $SOURCE_DATE_EPOCH for --mtime
The --mtime argument to 'tar' sets the modification time for all files within
the archive, which determines the timestamp files will get when they are
extracted. In this case, rootfs and other tarballs will get mtimes which
correspond to the last commit timestamp of the build system, as reported by
git/subversion.

This is a step towards reproducible image builds.

Signed-off-by: bryan newbold <bnewbold@robocracy.org>
Signed-off-by: Alexander Couzens <lynxis@fe80.eu>
Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 48586
2016-01-31 23:29:16 +00:00

74 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
board=""
kernel=""
rootfs=""
outfile=""
err=""
while [ "$1" ]; do
case "$1" in
"--board")
board="$2"
shift
shift
continue
;;
"--kernel")
kernel="$2"
shift
shift
continue
;;
"--rootfs")
rootfs="$2"
shift
shift
continue
;;
*)
if [ ! "$outfile" ]; then
outfile=$1
shift
continue
fi
;;
esac
done
if [ ! -n "$board" -o ! -r "$kernel" -a ! -r "$rootfs" -o ! "$outfile" ]; then
echo "syntax: $0 [--board boardname] [--kernel kernelimage] [--rootfs rootfs] out"
exit 1
fi
tmpdir="$( mktemp -d 2> /dev/null )"
if [ -z "$tmpdir" ]; then
# try OSX signature
tmpdir="$( mktemp -t 'ubitmp' -d )"
fi
if [ -z "$tmpdir" ]; then
exit 1
fi
mkdir -p "${tmpdir}/sysupgrade-${board}"
echo "BOARD=${board}" > "${tmpdir}/sysupgrade-${board}/CONTROL"
[ -z "${rootfs}" ] || cp "${rootfs}" "${tmpdir}/sysupgrade-${board}/root"
[ -z "${kernel}" ] || cp "${kernel}" "${tmpdir}/sysupgrade-${board}/kernel"
mtime=""
if [ -n "$SOURCE_DATE_EPOCH" ]; then
mtime="--mtime=@${SOURCE_DATE_EPOCH}"
fi
(cd "$tmpdir"; tar cvf sysupgrade.tar sysupgrade-${board} ${mtime})
err="$?"
if [ -e "$tmpdir/sysupgrade.tar" ]; then
cp "$tmpdir/sysupgrade.tar" "$outfile"
else
err=2
fi
rm -rf "$tmpdir"
exit $err