]> code.ossystems Code Review - openembedded-core.git/commitdiff
image-prelink.bbclass: support binary reproducibility
authorJuro Bystricky <juro.bystricky@intel.com>
Wed, 9 Aug 2017 17:48:24 +0000 (10:48 -0700)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 15 Aug 2017 23:01:44 +0000 (00:01 +0100)
Conditionally support binary reproducibility in built images.
If BUILD_REPRODUCIBLE_BINARIES = 1 then:

1. Do not randomize library addresses
2. Set/export PRELINK_TIMESTAMP to a reproducible value.
   If REPRODUCIBLE_TIMESTAMP_ROOTFS is specified, then the value will
   be used. Otherwise the timestamp will be derived from the top git commit.

Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes/image-prelink.bbclass

index 6fcd6990161ef12af8e65b6dc0793a839ff7e70f..f3bb68b9e114dcd211865f17476375b4fe69c50d 100644 (file)
@@ -36,7 +36,17 @@ prelink_image () {
        dynamic_loader=$(linuxloader)
 
        # prelink!
-       ${STAGING_SBINDIR_NATIVE}/prelink --root ${IMAGE_ROOTFS} -amR -N -c ${sysconfdir}/prelink.conf --dynamic-linker $dynamic_loader
+       if [ "$BUILD_REPRODUCIBLE_BINARIES" = "1" ]; then
+               bbnote " prelink: BUILD_REPRODUCIBLE_BINARIES..."
+               if [ "$REPRODUCIBLE_TIMESTAMP_ROOTFS" = "" ]; then
+                       export PRELINK_TIMESTAMP=`git log -1 --pretty=%ct `
+               else
+                       export PRELINK_TIMESTAMP=$REPRODUCIBLE_TIMESTAMP_ROOTFS
+               fi
+               ${STAGING_SBINDIR_NATIVE}/prelink --root ${IMAGE_ROOTFS} -am -N -c ${sysconfdir}/prelink.conf --dynamic-linker $dynamic_loader
+       else
+               ${STAGING_SBINDIR_NATIVE}/prelink --root ${IMAGE_ROOTFS} -amR -N -c ${sysconfdir}/prelink.conf --dynamic-linker $dynamic_loader
+       fi
 
        # Remove the prelink.conf if we had to add it.
        if [ "$dummy_prelink_conf" = "true" ]; then