Message ID | 20240713122331.298786-5-heiko.thiery@gmail.com |
---|---|
State | Accepted |
Headers | show |
Series | package/ccache: bump version | expand |
On 13/07/2024 14:23, Heiko Thiery wrote: > As more and more packages are required to build the host ccache package > and therefore they has to be filtered out for ccache dependency the list > growed up. > > By adding the variable <PKG>_ADD_CCACHE_DEPENDENCY with the default > value to 'yes' we can remove that dependency for each package that is > needed by ccache by setting the value to 'no'. This can be done in the > package makefile instead of tracking the list in the core pkg-generic.mk file. > > This behavior is similar to the skeleton and toolchain dependency. > > Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com> [snip] > diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk > index eeb7531dbb..0dd9f6b26d 100644 > --- a/package/pkg-generic.mk > +++ b/package/pkg-generic.mk > @@ -761,6 +761,9 @@ endif # ifeq ($$($(2)_CPE_ID_VALID),YES) > # Similarly for the skeleton. > $(2)_ADD_TOOLCHAIN_DEPENDENCY ?= YES > $(2)_ADD_SKELETON_DEPENDENCY ?= YES > +ifeq ($$(BR2_CCACHE),y) I've removed this condition and instead added it ... > +$(2)_ADD_CCACHE_DEPENDENCY ?= YES > +endif > > > ifeq ($(4),target) > @@ -772,6 +775,10 @@ $(2)_DEPENDENCIES += toolchain > endif > endif > > +ifeq ($$($(2)_ADD_CCACHE_DEPENDENCY),YES) ... here ifeq ($$(BR2_CCACHE):$$($(2)_ADD_CCACHE_DEPENDENCY),y:YES) Regards, Arnout > +$(2)_DEPENDENCIES += host-ccache > +endif > + > ifneq ($(1),host-skeleton) > $(2)_DEPENDENCIES += host-skeleton > endif > @@ -792,12 +799,6 @@ $(2)_EXTRACT_DEPENDENCIES += \ > $$(call extractor-pkg-dependency,$$(notdir $$(dl)))) > endif > > -ifeq ($$(BR2_CCACHE),y) > -ifeq ($$(filter host-tar host-skeleton host-xz host-lzip host-fakedate host-ccache host-cmake host-hiredis host-pkgconf host-zstd host-xxhash host-blake3,$(1)),) > -$(2)_DEPENDENCIES += host-ccache > -endif > -endif > - > ifeq ($$(BR2_REPRODUCIBLE),y) > ifeq ($$(filter host-skeleton host-fakedate,$(1)),) > $(2)_DEPENDENCIES += host-fakedate > diff --git a/package/pkgconf/pkgconf.mk b/package/pkgconf/pkgconf.mk > index 1d73b691e1..a8c7b48287 100644 > --- a/package/pkgconf/pkgconf.mk > +++ b/package/pkgconf/pkgconf.mk > @@ -11,6 +11,9 @@ PKGCONF_LICENSE = pkgconf license > PKGCONF_LICENSE_FILES = COPYING > PKGCONF_CPE_ID_VENDOR = pkgconf > > +# The package is a dependency to ccache so ccache cannot be a dependency > +HOST_PKGCONF_ADD_CCACHE_DEPENDENCY = NO > + > # We are a ccache dependency, so we can't use ccache > HOST_PKGCONF_CONF_ENV = \ > CC="$(HOSTCC_NOCCACHE)" \ > diff --git a/package/skeleton/skeleton.mk b/package/skeleton/skeleton.mk > index 4eaaf32ead..1bb3971191 100644 > --- a/package/skeleton/skeleton.mk > +++ b/package/skeleton/skeleton.mk > @@ -11,6 +11,9 @@ > SKELETON_ADD_TOOLCHAIN_DEPENDENCY = NO > SKELETON_ADD_SKELETON_DEPENDENCY = NO > > +# The package is a dependency to ccache so ccache cannot be a dependency > +HOST_SKELETON_ADD_CCACHE_DEPENDENCY = NO > + > # Although the $(HOST_DIR)/usr symlink is mostly for backward compatibility, > # there are weird packages that still require it (see host-systemd, and > # commit 35c11a027c88). > diff --git a/package/tar/tar.mk b/package/tar/tar.mk > index a7e85afb72..b9de082603 100644 > --- a/package/tar/tar.mk > +++ b/package/tar/tar.mk > @@ -13,6 +13,9 @@ TAR_CPE_ID_VENDOR = gnu > TAR_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) > TAR_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) > > +# The package is a dependency to ccache so ccache cannot be a dependency > +HOST_TAR_ADD_CCACHE_DEPENDENCY = NO > + > # busybox installs in /bin, so we need tar to install as well in /bin > # so that we don't end up with two different tar > # > diff --git a/package/xxhash/xxhash.mk b/package/xxhash/xxhash.mk > index fde8e464f9..f16a784966 100644 > --- a/package/xxhash/xxhash.mk > +++ b/package/xxhash/xxhash.mk > @@ -10,6 +10,9 @@ XXHASH_LICENSE = BSD-2-Clause (library), GPL-2.0+ (xxhsum) > XXHASH_LICENSE_FILES = LICENSE cli/COPYING > XXHASH_INSTALL_STAGING = YES > > +# The package is a dependency to ccache so ccache cannot be a dependency > +HOST_XXHASH_ADD_CCACHE_DEPENDENCY = NO > + > XXHASH_TARGETS = xxhsum libxxhash.pc > XXHASH_INSTALL_TARGETS = \ > install_libxxhash.includes \ > diff --git a/package/xz/xz.mk b/package/xz/xz.mk > index fa4f6dbda9..e295144ed1 100644 > --- a/package/xz/xz.mk > +++ b/package/xz/xz.mk > @@ -13,6 +13,9 @@ XZ_LICENSE = Public Domain, BSD-0-Clause, GPL-2.0+, GPL-3.0+, LGPL-2.1+ > XZ_LICENSE_FILES = COPYING COPYING.0BSD COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv2.1 > XZ_CPE_ID_VENDOR = tukaani > > +# The package is a dependency to ccache so ccache cannot be a dependency > +HOST_XZ_ADD_CCACHE_DEPENDENCY = NO > + > XZ_CONF_OPTS = \ > --enable-encoders=lzma1,lzma2,delta,x86,powerpc,ia64,arm,armthumb,arm64,sparc,riscv \ > --enable-decoders=lzma1,lzma2,delta,x86,powerpc,ia64,arm,armthumb,arm64,sparc,riscv \ > diff --git a/package/zstd/zstd.mk b/package/zstd/zstd.mk > index a2da0dd479..575bb2c838 100644 > --- a/package/zstd/zstd.mk > +++ b/package/zstd/zstd.mk > @@ -12,6 +12,9 @@ ZSTD_LICENSE_FILES = LICENSE COPYING > ZSTD_CPE_ID_VENDOR = facebook > ZSTD_CPE_ID_PRODUCT = zstandard > > +# The package is a dependency to ccache so ccache cannot be a dependency > +HOST_ZSTD_ADD_CCACHE_DEPENDENCY = NO > + > ZSTD_OPTS += PREFIX=/usr > ZSTD_OPTS += ZSTD_LEGACY_SUPPORT=0 > ifeq ($(BR2_PACKAGE_ZLIB),y)
diff --git a/package/blake3/blake3.mk b/package/blake3/blake3.mk index 5625046db6..3b1ccb44cc 100644 --- a/package/blake3/blake3.mk +++ b/package/blake3/blake3.mk @@ -10,6 +10,9 @@ BLAKE3_SUBDIR = c BLAKE3_LICENSE = Apache-2.0, CC0-1.0 BLAKE3_LICENSE_FILES = LICENSE +# The package is a dependency to ccache so ccache cannot be a dependency +HOST_BLAKE3_ADD_CCACHE_DEPENDENCY = NO + # We may be a ccache dependency, so we can't use ccache; reset the # options set by the cmake infra. HOST_BLAKE3_CONF_OPTS += \ diff --git a/package/ccache/ccache.mk b/package/ccache/ccache.mk index d92608512c..f727ca04bd 100644 --- a/package/ccache/ccache.mk +++ b/package/ccache/ccache.mk @@ -9,6 +9,10 @@ CCACHE_SITE = https://github.com/ccache/ccache/releases/download/v$(CCACHE_VERSI CCACHE_SOURCE = ccache-$(CCACHE_VERSION).tar.xz CCACHE_LICENSE = GPL-3.0+, others CCACHE_LICENSE_FILES = LICENSE.adoc GPL-3.0.txt + +# Do not add a recursive dependency to its own +HOST_CCACHE_ADD_CCACHE_DEPENDENCY = NO + HOST_CCACHE_DEPENDENCIES = host-hiredis host-zstd host-xxhash host-blake3 # We are ccache, so we can't use ccache diff --git a/package/cmake/cmake.mk b/package/cmake/cmake.mk index eacecdc0ee..842457eb34 100644 --- a/package/cmake/cmake.mk +++ b/package/cmake/cmake.mk @@ -14,6 +14,9 @@ CMAKE_CPE_ID_VALID = YES # Tool download MITM attack warning if using npm package to install cmake CMAKE_IGNORE_CVES = CVE-2016-10642 +# The package is a dependency to ccache so ccache cannot be a dependency +HOST_CMAKE_ADD_CCACHE_DEPENDENCY = NO + # CMake is a particular package: # * CMake can be built using the generic infrastructure or the cmake one. # Since Buildroot has no requirement regarding the host system cmake diff --git a/package/fakedate/fakedate.mk b/package/fakedate/fakedate.mk index 99ea748e07..3db9145e63 100644 --- a/package/fakedate/fakedate.mk +++ b/package/fakedate/fakedate.mk @@ -7,6 +7,9 @@ # source included in buildroot HOST_FAKEDATE_LICENSE = GPL-2.0+ +# The package is a dependency to ccache so ccache cannot be a dependency +HOST_FAKEDATE_ADD_CCACHE_DEPENDENCY = NO + define HOST_FAKEDATE_INSTALL_CMDS $(INSTALL) -D -m 755 package/fakedate/fakedate $(HOST_DIR)/bin/date endef diff --git a/package/hiredis/hiredis.mk b/package/hiredis/hiredis.mk index 476b079336..86f35bd4cd 100644 --- a/package/hiredis/hiredis.mk +++ b/package/hiredis/hiredis.mk @@ -12,6 +12,9 @@ HIREDIS_LICENSE_FILES = COPYING HIREDIS_CPE_ID_VENDOR = redislabs HIREDIS_INSTALL_STAGING = YES +# The package is a dependency to ccache so ccache cannot be a dependency +HOST_HIREDIS_ADD_CCACHE_DEPENDENCY = NO + HIREDIS_CONF_OPTS = -DENABLE_NUGET=OFF -DDISABLE_TESTS=ON HOST_HIREDIS_CONF_OPTS = -DENABLE_NUGET=OFF -DDISABLE_TESTS=ON -DENABLE_SSL=OFF diff --git a/package/lzip/lzip.mk b/package/lzip/lzip.mk index 31b5750767..9e09e578db 100644 --- a/package/lzip/lzip.mk +++ b/package/lzip/lzip.mk @@ -9,6 +9,9 @@ LZIP_SITE = http://download.savannah.gnu.org/releases/lzip LZIP_LICENSE = GPL-2.0+ LZIP_LICENSE_FILES = COPYING +# The package is a dependency to ccache so ccache cannot be a dependency +HOST_LZIP_ADD_CCACHE_DEPENDENCY = NO + define LZIP_CONFIGURE_CMDS (cd $(@D); $(TARGET_MAKE_ENV) ./configure --prefix=/usr \ $(TARGET_CONFIGURE_OPTS) ) diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk index eeb7531dbb..0dd9f6b26d 100644 --- a/package/pkg-generic.mk +++ b/package/pkg-generic.mk @@ -761,6 +761,9 @@ endif # ifeq ($$($(2)_CPE_ID_VALID),YES) # Similarly for the skeleton. $(2)_ADD_TOOLCHAIN_DEPENDENCY ?= YES $(2)_ADD_SKELETON_DEPENDENCY ?= YES +ifeq ($$(BR2_CCACHE),y) +$(2)_ADD_CCACHE_DEPENDENCY ?= YES +endif ifeq ($(4),target) @@ -772,6 +775,10 @@ $(2)_DEPENDENCIES += toolchain endif endif +ifeq ($$($(2)_ADD_CCACHE_DEPENDENCY),YES) +$(2)_DEPENDENCIES += host-ccache +endif + ifneq ($(1),host-skeleton) $(2)_DEPENDENCIES += host-skeleton endif @@ -792,12 +799,6 @@ $(2)_EXTRACT_DEPENDENCIES += \ $$(call extractor-pkg-dependency,$$(notdir $$(dl)))) endif -ifeq ($$(BR2_CCACHE),y) -ifeq ($$(filter host-tar host-skeleton host-xz host-lzip host-fakedate host-ccache host-cmake host-hiredis host-pkgconf host-zstd host-xxhash host-blake3,$(1)),) -$(2)_DEPENDENCIES += host-ccache -endif -endif - ifeq ($$(BR2_REPRODUCIBLE),y) ifeq ($$(filter host-skeleton host-fakedate,$(1)),) $(2)_DEPENDENCIES += host-fakedate diff --git a/package/pkgconf/pkgconf.mk b/package/pkgconf/pkgconf.mk index 1d73b691e1..a8c7b48287 100644 --- a/package/pkgconf/pkgconf.mk +++ b/package/pkgconf/pkgconf.mk @@ -11,6 +11,9 @@ PKGCONF_LICENSE = pkgconf license PKGCONF_LICENSE_FILES = COPYING PKGCONF_CPE_ID_VENDOR = pkgconf +# The package is a dependency to ccache so ccache cannot be a dependency +HOST_PKGCONF_ADD_CCACHE_DEPENDENCY = NO + # We are a ccache dependency, so we can't use ccache HOST_PKGCONF_CONF_ENV = \ CC="$(HOSTCC_NOCCACHE)" \ diff --git a/package/skeleton/skeleton.mk b/package/skeleton/skeleton.mk index 4eaaf32ead..1bb3971191 100644 --- a/package/skeleton/skeleton.mk +++ b/package/skeleton/skeleton.mk @@ -11,6 +11,9 @@ SKELETON_ADD_TOOLCHAIN_DEPENDENCY = NO SKELETON_ADD_SKELETON_DEPENDENCY = NO +# The package is a dependency to ccache so ccache cannot be a dependency +HOST_SKELETON_ADD_CCACHE_DEPENDENCY = NO + # Although the $(HOST_DIR)/usr symlink is mostly for backward compatibility, # there are weird packages that still require it (see host-systemd, and # commit 35c11a027c88). diff --git a/package/tar/tar.mk b/package/tar/tar.mk index a7e85afb72..b9de082603 100644 --- a/package/tar/tar.mk +++ b/package/tar/tar.mk @@ -13,6 +13,9 @@ TAR_CPE_ID_VENDOR = gnu TAR_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) TAR_CONF_ENV = LIBS=$(TARGET_NLS_LIBS) +# The package is a dependency to ccache so ccache cannot be a dependency +HOST_TAR_ADD_CCACHE_DEPENDENCY = NO + # busybox installs in /bin, so we need tar to install as well in /bin # so that we don't end up with two different tar # diff --git a/package/xxhash/xxhash.mk b/package/xxhash/xxhash.mk index fde8e464f9..f16a784966 100644 --- a/package/xxhash/xxhash.mk +++ b/package/xxhash/xxhash.mk @@ -10,6 +10,9 @@ XXHASH_LICENSE = BSD-2-Clause (library), GPL-2.0+ (xxhsum) XXHASH_LICENSE_FILES = LICENSE cli/COPYING XXHASH_INSTALL_STAGING = YES +# The package is a dependency to ccache so ccache cannot be a dependency +HOST_XXHASH_ADD_CCACHE_DEPENDENCY = NO + XXHASH_TARGETS = xxhsum libxxhash.pc XXHASH_INSTALL_TARGETS = \ install_libxxhash.includes \ diff --git a/package/xz/xz.mk b/package/xz/xz.mk index fa4f6dbda9..e295144ed1 100644 --- a/package/xz/xz.mk +++ b/package/xz/xz.mk @@ -13,6 +13,9 @@ XZ_LICENSE = Public Domain, BSD-0-Clause, GPL-2.0+, GPL-3.0+, LGPL-2.1+ XZ_LICENSE_FILES = COPYING COPYING.0BSD COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv2.1 XZ_CPE_ID_VENDOR = tukaani +# The package is a dependency to ccache so ccache cannot be a dependency +HOST_XZ_ADD_CCACHE_DEPENDENCY = NO + XZ_CONF_OPTS = \ --enable-encoders=lzma1,lzma2,delta,x86,powerpc,ia64,arm,armthumb,arm64,sparc,riscv \ --enable-decoders=lzma1,lzma2,delta,x86,powerpc,ia64,arm,armthumb,arm64,sparc,riscv \ diff --git a/package/zstd/zstd.mk b/package/zstd/zstd.mk index a2da0dd479..575bb2c838 100644 --- a/package/zstd/zstd.mk +++ b/package/zstd/zstd.mk @@ -12,6 +12,9 @@ ZSTD_LICENSE_FILES = LICENSE COPYING ZSTD_CPE_ID_VENDOR = facebook ZSTD_CPE_ID_PRODUCT = zstandard +# The package is a dependency to ccache so ccache cannot be a dependency +HOST_ZSTD_ADD_CCACHE_DEPENDENCY = NO + ZSTD_OPTS += PREFIX=/usr ZSTD_OPTS += ZSTD_LEGACY_SUPPORT=0 ifeq ($(BR2_PACKAGE_ZLIB),y)
As more and more packages are required to build the host ccache package and therefore they has to be filtered out for ccache dependency the list growed up. By adding the variable <PKG>_ADD_CCACHE_DEPENDENCY with the default value to 'yes' we can remove that dependency for each package that is needed by ccache by setting the value to 'no'. This can be done in the package makefile instead of tracking the list in the core pkg-generic.mk file. This behavior is similar to the skeleton and toolchain dependency. Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com> --- v4: - new commit package/blake3/blake3.mk | 3 +++ package/ccache/ccache.mk | 4 ++++ package/cmake/cmake.mk | 3 +++ package/fakedate/fakedate.mk | 3 +++ package/hiredis/hiredis.mk | 3 +++ package/lzip/lzip.mk | 3 +++ package/pkg-generic.mk | 13 +++++++------ package/pkgconf/pkgconf.mk | 3 +++ package/skeleton/skeleton.mk | 3 +++ package/tar/tar.mk | 3 +++ package/xxhash/xxhash.mk | 3 +++ package/xz/xz.mk | 3 +++ package/zstd/zstd.mk | 3 +++ 13 files changed, 44 insertions(+), 6 deletions(-)