openwrt/include
Christian Marangi d419136ad5
build: make find_md5 reproducible with AUTOREMOVE
While experimenting with the AUTOREMOVE option in search of a way to use
prebuilt host tools in different buildroot, it was discovered that the
md5 generated by find_md5 in depends.mk is not reproducible.

Currently the hash is generated by the path of the file in addition to
the file mod time. Out of confusion, probably, there was an idea that
such command was used on the package build_dir. Reality is that this
command is run on the package files. (Makefile, patches, src)

This is problematic because the package Makefile (for example) change at
each git clone and base the hash on the Makefile mtime doesn't really
reflect if the Makefile actually changes across a buildroot or not.

A better approach is to generate an hash of each file and then generate
an hash on the sort hash list. This way we remove the problem of git
clone setting a wrong mtime while keeping the integrity of checking if a
file changed for the package as any change will result in a different
hash.

Introduce a new kind of find_md5 function, find_md5_reproducible that
apply this new logic and limit it only with AUTOREMOVE option set to
prevent any kind of slowdown due to additional hash generation.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit 53a08e3743)
2022-12-04 16:43:04 +01:00
..
site Revert "build: use config.site generated by autoconf-lean, drop hardcoded sitefiles" 2021-03-02 11:35:45 +00:00
autotools.mk build: autotools: fix cache path 2022-04-05 00:20:24 +02:00
bpf.mk treewide: drop use of which 2022-01-17 09:14:26 +01:00
cmake.mk treewide: drop use of which 2022-01-17 09:14:26 +01:00
debug.mk build: use SPDX license tags 2021-02-05 14:54:47 +01:00
depends.mk build: make find_md5 reproducible with AUTOREMOVE 2022-12-04 16:43:04 +01:00
device_table.txt image: ensure that /dev/console exist in rootfs images 2013-08-27 12:02:58 +00:00
download.mk download: improve handling of invalid local files 2021-11-01 20:18:55 +01:00
feeds.mk build: ensure that dash isn't prepended twice to abi version suffix 2021-06-15 09:58:33 +02:00
hardened-ld-pie.specs build: add hardened builds with PIE (ASLR) support 2018-01-27 16:46:45 +01:00
hardening.mk build: use SPDX license tags 2021-02-05 14:54:47 +01:00
host-build.mk build: make find_md5 reproducible with AUTOREMOVE 2022-12-04 16:43:04 +01:00
image-commands.mk image: add support for Netgear encrypted image 2022-07-21 16:58:00 +02:00
image.mk image: always rebuild kernel loaders 2022-10-14 23:15:30 +02:00
kernel-5.10 kernel: bump 5.10 to 5.10.156 2022-11-27 15:43:08 +01:00
kernel-build.mk build: make find_md5 reproducible with AUTOREMOVE 2022-12-04 16:43:04 +01:00
kernel-defaults.mk kernel: set SOURCE_DATE_EPOCH for initramfs root dir 2022-04-06 14:03:58 +01:00
kernel-version.mk kernel: split kernel version to dedicated files 2022-01-13 23:46:39 +00:00
kernel.mk kernel: support setting extra CFLAGS for kernel compilation 2022-07-08 11:28:01 +02:00
logo.png include: update logo with better kerning 2021-01-18 09:31:39 -10:00
logo.svg include: update logo with better kerning 2021-01-18 09:31:39 -10:00
meson.mk tools/meson: update to 0.61.4 2022-04-10 16:26:01 +01:00
netfilter.mk kernel: kmod-ipt-ulog: Remove package 2022-08-14 00:29:19 +02:00
nls.mk gettext: remove package 2021-11-20 21:08:25 +01:00
package-bin.mk build: allow package to be built for all variants 2021-11-15 00:38:46 +01:00
package-defaults.mk build: use SPDX license tags 2021-02-05 14:54:47 +01:00
package-dumpinfo.mk build: drop ABI version from metadata 2021-02-14 19:41:52 +01:00
package-ipkg.mk tools: build bash on macOS and use it for ipkg-build 2022-01-27 13:38:48 +01:00
package-seccomp.mk build: use SPDX license tags 2021-02-05 14:54:47 +01:00
package.mk build: make find_md5 reproducible with AUTOREMOVE 2022-12-04 16:43:04 +01:00
prereq-build.mk build: provide xxd -i with scripts/xxdi.pl 2022-09-16 18:50:46 +02:00
prereq.mk treewide: drop use of which 2022-01-17 09:14:26 +01:00
quilt.mk quilt.mk: fix typo in the Host section 2022-03-19 16:13:58 +01:00
rootfs.mk build: reduce cleanup binary calls in rootfs.mk 2020-12-05 22:07:00 -10:00
scan.awk build: propagate override information to .packageinfo 2015-02-09 12:09:31 +00:00
scan.mk build: fix find warning with SCAN_EXTRA 2022-06-07 22:28:59 +02:00
shell.sh build: use mkhash to replace various quirky md5sum/openssl calls 2017-01-05 11:09:12 +01:00
subdir.mk build: allow package to be built for all variants 2021-11-15 00:38:46 +01:00
target.mk build: fix issues with targets installed via feeds 2022-09-27 13:45:03 +02:00
toolchain-build.mk build: use SPDX license tags 2021-02-05 14:54:47 +01:00
toplevel.mk build: toplevel.mk: fix missing kconfig dependency tracking 2022-02-22 16:37:23 +01:00
trusted-firmware-a.mk trusted-firmware-a.mk: make sure include directory exists 2022-04-10 16:32:20 +01:00
u-boot.mk u-boot.mk: add LOCALVERSION (explicitly specify OpenWrt build) 2022-02-28 23:54:52 +01:00
uclibc++.mk uclibc++: remove 2021-10-24 18:20:50 +02:00
unpack.mk include: use cpio from staging dir 2021-02-28 00:09:09 +00:00
verbose.mk verbose.mk: print ERROR messages in non-verbose 2022-02-28 23:52:13 +01:00
version.mk OpenWrt v22.03.2: revert to branch defaults 2022-10-15 14:46:15 +02:00