depends: create a hostid and buildid and add option for salts
These add very simple sanity checks to ensure that the build/host toolchains have not changed since the last run. If they have, all ids will change and packages will be rebuilt. For more complicated usage (like parsing dpkg), HOST_ID_SALT/BUILD_ID_SALT may be used to introduce arbitrary data to the ids.
This commit is contained in:
parent
a9149688f8
commit
dc4ec6d3db
3 changed files with 20 additions and 2 deletions
|
@ -15,6 +15,8 @@ BASEDIR = $(CURDIR)
|
||||||
HASH_LENGTH:=11
|
HASH_LENGTH:=11
|
||||||
DOWNLOAD_CONNECT_TIMEOUT:=10
|
DOWNLOAD_CONNECT_TIMEOUT:=10
|
||||||
DOWNLOAD_RETRIES:=3
|
DOWNLOAD_RETRIES:=3
|
||||||
|
HOST_ID_SALT ?= salt
|
||||||
|
BUILD_ID_SALT ?= salt
|
||||||
|
|
||||||
host:=$(BUILD)
|
host:=$(BUILD)
|
||||||
ifneq ($(HOST),)
|
ifneq ($(HOST),)
|
||||||
|
@ -73,6 +75,20 @@ include builders/$(build_os).mk
|
||||||
include builders/default.mk
|
include builders/default.mk
|
||||||
include packages/packages.mk
|
include packages/packages.mk
|
||||||
|
|
||||||
|
build_id_string:=$(BUILD_ID_SALT)
|
||||||
|
build_id_string+=$(shell $(build_CC) --version 2>/dev/null)
|
||||||
|
build_id_string+=$(shell $(build_AR) --version 2>/dev/null)
|
||||||
|
build_id_string+=$(shell $(build_CXX) --version 2>/dev/null)
|
||||||
|
build_id_string+=$(shell $(build_RANLIB) --version 2>/dev/null)
|
||||||
|
build_id_string+=$(shell $(build_STRIP) --version 2>/dev/null)
|
||||||
|
|
||||||
|
$(host_arch)_$(host_os)_id_string:=$(HOST_ID_SALT)
|
||||||
|
$(host_arch)_$(host_os)_id_string+=$(shell $(host_CC) --version 2>/dev/null)
|
||||||
|
$(host_arch)_$(host_os)_id_string+=$(shell $(host_AR) --version 2>/dev/null)
|
||||||
|
$(host_arch)_$(host_os)_id_string+=$(shell $(host_CXX) --version 2>/dev/null)
|
||||||
|
$(host_arch)_$(host_os)_id_string+=$(shell $(host_RANLIB) --version 2>/dev/null)
|
||||||
|
$(host_arch)_$(host_os)_id_string+=$(shell $(host_STRIP) --version 2>/dev/null)
|
||||||
|
|
||||||
qt_packages_$(NO_QT) = $(qt_packages) $(qt_$(host_os)_packages)
|
qt_packages_$(NO_QT) = $(qt_packages) $(qt_$(host_os)_packages)
|
||||||
qt_native_packages_$(NO_QT) = $(qt_native_packages)
|
qt_native_packages_$(NO_QT) = $(qt_native_packages)
|
||||||
wallet_packages_$(NO_WALLET) = $(wallet_packages)
|
wallet_packages_$(NO_WALLET) = $(wallet_packages)
|
||||||
|
@ -90,7 +106,7 @@ include funcs.mk
|
||||||
|
|
||||||
toolchain_path=$($($(host_arch)_$(host_os)_native_toolchain)_prefixbin)
|
toolchain_path=$($($(host_arch)_$(host_os)_native_toolchain)_prefixbin)
|
||||||
final_build_id_long+=$(shell $(build_SHA256SUM) config.site.in)
|
final_build_id_long+=$(shell $(build_SHA256SUM) config.site.in)
|
||||||
final_build_id+=$(shell echo -n $(final_build_id_long) | $(build_SHA256SUM) | cut -c-$(HASH_LENGTH))
|
final_build_id+=$(shell echo -n "$(final_build_id_long)" | $(build_SHA256SUM) | cut -c-$(HASH_LENGTH))
|
||||||
$(host_prefix)/.stamp_$(final_build_id): $(native_packages) $(packages)
|
$(host_prefix)/.stamp_$(final_build_id): $(native_packages) $(packages)
|
||||||
$(AT)rm -rf $(@D)
|
$(AT)rm -rf $(@D)
|
||||||
$(AT)mkdir -p $(@D)
|
$(AT)mkdir -p $(@D)
|
||||||
|
|
|
@ -38,6 +38,8 @@ The following can be set when running make: make FOO=bar
|
||||||
NO_WALLET: Don't download/build/cache libs needed to enable the wallet
|
NO_WALLET: Don't download/build/cache libs needed to enable the wallet
|
||||||
NO_UPNP: Don't download/build/cache packages needed for enabling upnp
|
NO_UPNP: Don't download/build/cache packages needed for enabling upnp
|
||||||
DEBUG: disable some optimizations and enable more runtime checking
|
DEBUG: disable some optimizations and enable more runtime checking
|
||||||
|
HOST_ID_SALT: Optional salt to use when generating host package ids
|
||||||
|
BUILD_ID_SALT: Optional salt to use when generating build package ids
|
||||||
|
|
||||||
If some packages are not built, for example `make NO_WALLET=1`, the appropriate
|
If some packages are not built, for example `make NO_WALLET=1`, the appropriate
|
||||||
options will be passed to bitcoin's configure. In this case, `--disable-wallet`.
|
options will be passed to bitcoin's configure. In this case, `--disable-wallet`.
|
||||||
|
|
|
@ -39,7 +39,7 @@ define int_get_build_id
|
||||||
$(eval $(1)_dependencies += $($(1)_$(host_arch)_$(host_os)_dependencies) $($(1)_$(host_os)_dependencies))
|
$(eval $(1)_dependencies += $($(1)_$(host_arch)_$(host_os)_dependencies) $($(1)_$(host_os)_dependencies))
|
||||||
$(eval $(1)_all_dependencies:=$(call int_get_all_dependencies,$(1),$($($(1)_type)_native_toolchain) $($(1)_dependencies)))
|
$(eval $(1)_all_dependencies:=$(call int_get_all_dependencies,$(1),$($($(1)_type)_native_toolchain) $($(1)_dependencies)))
|
||||||
$(foreach dep,$($(1)_all_dependencies),$(eval $(1)_build_id_deps+=$(dep)-$($(dep)_version)-$($(dep)_recipe_hash)))
|
$(foreach dep,$($(1)_all_dependencies),$(eval $(1)_build_id_deps+=$(dep)-$($(dep)_version)-$($(dep)_recipe_hash)))
|
||||||
$(eval $(1)_build_id_long:=$(1)-$($(1)_version)-$($(1)_recipe_hash)-$(release_type) $($(1)_build_id_deps))
|
$(eval $(1)_build_id_long:=$(1)-$($(1)_version)-$($(1)_recipe_hash)-$(release_type) $($(1)_build_id_deps) $($($(1)_type)_id_string))
|
||||||
$(eval $(1)_build_id:=$(shell echo -n "$($(1)_build_id_long)" | $(build_SHA256SUM) | cut -c-$(HASH_LENGTH)))
|
$(eval $(1)_build_id:=$(shell echo -n "$($(1)_build_id_long)" | $(build_SHA256SUM) | cut -c-$(HASH_LENGTH)))
|
||||||
final_build_id_long+=$($(package)_build_id_long)
|
final_build_id_long+=$($(package)_build_id_long)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue