diff options
| -rw-r--r-- | meta/classes/image-prelink.bbclass | 13 | ||||
| -rw-r--r-- | meta/classes/image.bbclass | 14 | ||||
| -rw-r--r-- | meta/conf/bitbake.conf | 1 | ||||
| -rw-r--r-- | meta/lib/oe/sstatesig.py | 2 | ||||
| -rw-r--r-- | meta/recipes-core/busybox/busybox.inc | 10 |
5 files changed, 15 insertions, 25 deletions
diff --git a/meta/classes/image-prelink.bbclass b/meta/classes/image-prelink.bbclass index 0da094a551..8158eeaf4c 100644 --- a/meta/classes/image-prelink.bbclass +++ b/meta/classes/image-prelink.bbclass | |||
| @@ -46,17 +46,12 @@ prelink_image () { | |||
| 46 | dynamic_loader=${@get_linuxloader(d)} | 46 | dynamic_loader=${@get_linuxloader(d)} |
| 47 | 47 | ||
| 48 | # prelink! | 48 | # prelink! |
| 49 | if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then | 49 | if [ "$REPRODUCIBLE_TIMESTAMP_ROOTFS" = "" ]; then |
| 50 | bbnote " prelink: BUILD_REPRODUCIBLE_BINARIES..." | 50 | export PRELINK_TIMESTAMP=`git log -1 --pretty=%ct ` |
| 51 | if [ "$REPRODUCIBLE_TIMESTAMP_ROOTFS" = "" ]; then | ||
| 52 | export PRELINK_TIMESTAMP=`git log -1 --pretty=%ct ` | ||
| 53 | else | ||
| 54 | export PRELINK_TIMESTAMP=$REPRODUCIBLE_TIMESTAMP_ROOTFS | ||
| 55 | fi | ||
| 56 | ${STAGING_SBINDIR_NATIVE}/prelink --root ${IMAGE_ROOTFS} -am -N -c ${sysconfdir}/prelink.conf --dynamic-linker $dynamic_loader | ||
| 57 | else | 51 | else |
| 58 | ${STAGING_SBINDIR_NATIVE}/prelink --root ${IMAGE_ROOTFS} -amR -N -c ${sysconfdir}/prelink.conf --dynamic-linker $dynamic_loader | 52 | export PRELINK_TIMESTAMP=$REPRODUCIBLE_TIMESTAMP_ROOTFS |
| 59 | fi | 53 | fi |
| 54 | ${STAGING_SBINDIR_NATIVE}/prelink --root ${IMAGE_ROOTFS} -am -N -c ${sysconfdir}/prelink.conf --dynamic-linker $dynamic_loader | ||
| 60 | 55 | ||
| 61 | # Remove the prelink.conf if we had to add it. | 56 | # Remove the prelink.conf if we had to add it. |
| 62 | if [ "$dummy_prelink_conf" = "true" ]; then | 57 | if [ "$dummy_prelink_conf" = "true" ]; then |
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index c2f3232027..2fa69a40d1 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass | |||
| @@ -651,17 +651,15 @@ ROOTFS_PREPROCESS_COMMAND += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge' | |||
| 651 | POPULATE_SDK_PRE_TARGET_COMMAND += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', 'create_merged_usr_symlinks_sdk; ', '',d)}" | 651 | POPULATE_SDK_PRE_TARGET_COMMAND += "${@bb.utils.contains('DISTRO_FEATURES', 'usrmerge', 'create_merged_usr_symlinks_sdk; ', '',d)}" |
| 652 | 652 | ||
| 653 | reproducible_final_image_task () { | 653 | reproducible_final_image_task () { |
| 654 | if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then | 654 | if [ "$REPRODUCIBLE_TIMESTAMP_ROOTFS" = "" ]; then |
| 655 | REPRODUCIBLE_TIMESTAMP_ROOTFS=`git -C "${COREBASE}" log -1 --pretty=%ct 2>/dev/null` || true | ||
| 655 | if [ "$REPRODUCIBLE_TIMESTAMP_ROOTFS" = "" ]; then | 656 | if [ "$REPRODUCIBLE_TIMESTAMP_ROOTFS" = "" ]; then |
| 656 | REPRODUCIBLE_TIMESTAMP_ROOTFS=`git -C "${COREBASE}" log -1 --pretty=%ct 2>/dev/null` || true | 657 | REPRODUCIBLE_TIMESTAMP_ROOTFS=`stat -c%Y ${@bb.utils.which(d.getVar("BBPATH"), "conf/bitbake.conf")}` |
| 657 | if [ "$REPRODUCIBLE_TIMESTAMP_ROOTFS" = "" ]; then | ||
| 658 | REPRODUCIBLE_TIMESTAMP_ROOTFS=`stat -c%Y ${@bb.utils.which(d.getVar("BBPATH"), "conf/bitbake.conf")}` | ||
| 659 | fi | ||
| 660 | fi | 658 | fi |
| 661 | # Set mtime of all files to a reproducible value | ||
| 662 | bbnote "reproducible_final_image_task: mtime set to $REPRODUCIBLE_TIMESTAMP_ROOTFS" | ||
| 663 | find ${IMAGE_ROOTFS} -print0 | xargs -0 touch -h --date=@$REPRODUCIBLE_TIMESTAMP_ROOTFS | ||
| 664 | fi | 659 | fi |
| 660 | # Set mtime of all files to a reproducible value | ||
| 661 | bbnote "reproducible_final_image_task: mtime set to $REPRODUCIBLE_TIMESTAMP_ROOTFS" | ||
| 662 | find ${IMAGE_ROOTFS} -print0 | xargs -0 touch -h --date=@$REPRODUCIBLE_TIMESTAMP_ROOTFS | ||
| 665 | } | 663 | } |
| 666 | 664 | ||
| 667 | systemd_preset_all () { | 665 | systemd_preset_all () { |
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf index 1db9b3fc05..790f2f7a8c 100644 --- a/meta/conf/bitbake.conf +++ b/meta/conf/bitbake.conf | |||
| @@ -636,7 +636,6 @@ SDE_DIR = "${WORKDIR}/source-date-epoch" | |||
| 636 | SDE_FILE = "${SDE_DIR}/__source_date_epoch.txt" | 636 | SDE_FILE = "${SDE_DIR}/__source_date_epoch.txt" |
| 637 | SDE_DEPLOYDIR = "${WORKDIR}/deploy-source-date-epoch" | 637 | SDE_DEPLOYDIR = "${WORKDIR}/deploy-source-date-epoch" |
| 638 | 638 | ||
| 639 | BUILD_REPRODUCIBLE_BINARIES = "1" | ||
| 640 | export PYTHONHASHSEED = "0" | 639 | export PYTHONHASHSEED = "0" |
| 641 | export PERL_HASH_SEED = "0" | 640 | export PERL_HASH_SEED = "0" |
| 642 | export SOURCE_DATE_EPOCH ?= "${@get_source_date_epoch_value(d)}" | 641 | export SOURCE_DATE_EPOCH ?= "${@get_source_date_epoch_value(d)}" |
diff --git a/meta/lib/oe/sstatesig.py b/meta/lib/oe/sstatesig.py index c2e3e2f4f5..038404e377 100644 --- a/meta/lib/oe/sstatesig.py +++ b/meta/lib/oe/sstatesig.py | |||
| @@ -489,7 +489,7 @@ def OEOuthashBasic(path, sigfile, task, d): | |||
| 489 | include_timestamps = False | 489 | include_timestamps = False |
| 490 | include_root = True | 490 | include_root = True |
| 491 | if task == "package": | 491 | if task == "package": |
| 492 | include_timestamps = d.getVar('BUILD_REPRODUCIBLE_BINARIES') == '1' | 492 | include_timestamps = True |
| 493 | include_root = False | 493 | include_root = False |
| 494 | extra_content = d.getVar('HASHEQUIV_HASH_VERSION') | 494 | extra_content = d.getVar('HASHEQUIV_HASH_VERSION') |
| 495 | 495 | ||
diff --git a/meta/recipes-core/busybox/busybox.inc b/meta/recipes-core/busybox/busybox.inc index 808c3dc700..622325aabb 100644 --- a/meta/recipes-core/busybox/busybox.inc +++ b/meta/recipes-core/busybox/busybox.inc | |||
| @@ -110,9 +110,8 @@ python () { | |||
| 110 | } | 110 | } |
| 111 | 111 | ||
| 112 | do_prepare_config () { | 112 | do_prepare_config () { |
| 113 | if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then | 113 | export KCONFIG_NOTIMESTAMP=1 |
| 114 | export KCONFIG_NOTIMESTAMP=1 | 114 | |
| 115 | fi | ||
| 116 | sed -e '/CONFIG_STATIC/d' \ | 115 | sed -e '/CONFIG_STATIC/d' \ |
| 117 | < ${WORKDIR}/defconfig > ${S}/.config | 116 | < ${WORKDIR}/defconfig > ${S}/.config |
| 118 | echo "# CONFIG_STATIC is not set" >> .config | 117 | echo "# CONFIG_STATIC is not set" >> .config |
| @@ -143,9 +142,8 @@ do_configure () { | |||
| 143 | 142 | ||
| 144 | do_compile() { | 143 | do_compile() { |
| 145 | unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS | 144 | unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS |
| 146 | if [ "${BUILD_REPRODUCIBLE_BINARIES}" = "1" ]; then | 145 | export KCONFIG_NOTIMESTAMP=1 |
| 147 | export KCONFIG_NOTIMESTAMP=1 | 146 | |
| 148 | fi | ||
| 149 | if [ "${BUSYBOX_SPLIT_SUID}" = "1" -a x`grep "CONFIG_FEATURE_INDIVIDUAL=y" .config` = x ]; then | 147 | if [ "${BUSYBOX_SPLIT_SUID}" = "1" -a x`grep "CONFIG_FEATURE_INDIVIDUAL=y" .config` = x ]; then |
| 150 | # split the .config into two parts, and make two busybox binaries | 148 | # split the .config into two parts, and make two busybox binaries |
| 151 | if [ -e .config.orig ]; then | 149 | if [ -e .config.orig ]; then |
