* [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps'
@ 2015-04-25 14:42 Thomas Petazzoni
2015-04-25 14:42 ` [Buildroot] [PATCHv3 01/18] fs: only add non rootfs- targets to PACKAGES Thomas Petazzoni
` (18 more replies)
0 siblings, 19 replies; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-25 14:42 UTC (permalink / raw)
To: buildroot
Hello,
This is a new iteration of the "Package based 'source', 'legal-info',
'source-check' and 'external-deps'" series.
Changes since v2:
=================
- Remove all patches that have been applied to master, and rebase on
top of the latest master, fixing the conflicts along the way.
- Add a patch 'fs: only add non rootfs- targets to PACKAGES' to
remove the circular dependency that can be introduced in some
configurations by the previously applied 'fs: add rootfs
dependencies to PACKAGES' patch.
- Add patch 'pkg-generic: take into account patch dependencies in
source, external-deps and legal-info' to take care of
<pkg>_PATCH_DEPENDENCIES, and also change the implementation of
source-check to take care of <pkg>_PATCH_DEPENDENCIES. Long term, a
better refactoring would be useful to have a single variable
listing all dependencies, but we didn't want to do this right now,
as we're close to -rc1 and we want to get this patch series finally
merged.
- Add three patches to ensure that 'make source-check' can still be
executed even if the various checks done by packages filtering on
MAKECMDGOALS return false. Instead of just adding source-check
everywhere, we refactor the code in an hopefully much nicer
way. The patches are intentionally put at the end of the series, so
that the rest of the series can be applied regardless of the review
on those patches. If those patches are not applied, only the
source-check target would have a regression: it would no longer be
possible to execute this target if one of the checks in
linux/barebox/uboot fires up an error.
Makefile: add a few more targets to nobuild_targets
packages: refactor checks using BR_BUILDING
Makefile: add BR_BUILDING variable
- Added Reviewed-by from Yann and Arnout on 'pkg-download: remove
support for the SHOW_EXTERNAL_DEPS DL_MODE'
- Added Reviewed-by and Tested-by from Yann, and Reviewed-by from
Arnout on 'Makefile: move source-check outside of
noconfig_targets'. Also reworded the commit log to be more correct
about why we're moving source-check outside of noconfig_targets,
following the comments made by Arnout.
- Added Reviewed-by and Tested-by from Yann and Reviewed-by from
Arnout on 'pkg-download: extend DOWNLOAD_INNER, add a SOURCE_CHECK
macro'.
- In patch 'pkg-generic: implement source-check targets', fix the
missing $$(sep) as noticed by Yann. The problem was not visible
with the full series applied because the code introduced in this
patch gets refactored later in a correct way. But it isn't good if
the series is not bisectable, so the issue was fixed anyway.
- Added Acked-by + Tested-by from Yann and Reviewed-by from Arnout on
'Makefile: implement a package based source-check target'.
- Added Reviewed-by + Tested-by from Arnout on 'pkg-generic: remove
the .stamp_rsync_sourced fake stamp file'.
- Added Acked-by + Tested-by from Arnout on 'pkg-generic: don't use
DL_MODE in .stamp_downloaded'.
- Added Acked-by + Tested-by from Arnout on 'pkg-download: get rid of
DL_MODE'.
- Added Acked-by + Tested-by from Arnout on 'pkg-download: fix
indentation for SOURCE_CHECK_* macros'.
- Remove patch 'pkg-generic: propagate <pkg>_EXTRA_DOWNLOADS from
target to host package' which was not strictly needed. Suggested by
Arnout.
- Added Acked-by + Tested-by from Arnout on 'Makefile: implement the
'source' target using the package infrastructure' and 'Makefile:
remove unneeded variables'.
Changes since v1:
=================
- Remove all the patches that have been applied to master, and rebase
on top of the latest master, fixing the conflicts along the way.
- Fix a bug in the implementation of $(1)-source-check: the code was
using $(p) to reference the loop iterator, while it should have
been using $$(p) instead.
- Add missing phony targets in pkg-kconfig: $(1)-savedefconfig and
$(1)-update-defconfig. Noticed by Yann E. Morin.
- Mark rootfs-ext2-symlink as a phony target. Noticed by Yann
E. Morin.
- Add Reviewed-by from Yann on "Makefile: targets are now declared
phony by the appropriate infrastructures" since the problem he
pointed out in the review has been fixed in previous patches.
- In patch "Makefile: rename TARGETS to PACKAGES", fix typo in commit
log (should be *listed*), and also rename TARGETS to PACKAGES in
package/matchbox/matchbox.mk as well as
support/scripts/graph-depends, as mentionned by Yann E. Morin.
- Added Acked-by from Yann on "fs: add rootfs dependencies to
PACKAGES".
- Extend the commit log of "Makefile: use <pkg>-all-legal-info to
implement the legal-info target" to explain why the 'make
legal-info' output before and after this patch may be different,
and why it is actually more correct after the patch. Suggested by
Yann.
- Add Reviewed-by from Yann on patch "Makefile: simplify
show-targets".
- Added Tested-by and Reviewed-by from Yann on patch "Makefile: use
the package infra based external-deps".
Original introduction of the series
===================================
(Note: this is the original introduction of the series, matching the
v1. Since some patches have been merged, the patch numbers below do
not match this current version of the series.)
The initial goal of this series was to change the way we recursively
go through host dependencies for the implementation of the 'source',
'external-deps', 'legal-info' and 'source-check' targets.
The implementation of such targets currently do not rely on the
package infrastructure, and the main Makefile tries to iterate through
the dependencies of all packages using the TARGETS, TARGETS_HOST_DEPS
and HOST_DEPS variable, but it does so with only a two-level
recursion, which does not guarantee that all dependencies will have
been taken into account. It is also not at all in the spirit of the
rest of the package infrastructure.
So our final goal is simply that all those targets are implemented
using per-package make targets that recursively go through their own
dependencies.
Along the way, a number of other related changes or cleanups have been
made, and we try to describe below the overall logic of the patch
series:
- Currently, some packages do directly use the 'DOWNLOAD' macro to
download files. This has the unfortunate effect that the package
infrastructure is not aware that those files are being downloaded,
which is bad.
To fix this, patches 1 to 7 fixes the two problematic packages: the
'linux' and 'perl' packages. In the case of the 'perl' package, an
addition was needed to the package infrastructure: supporting full
URLs in <pkg>_EXTRA_DOWNLOADS. Some related cleanups and
improvements are done as part of these changes.
Compared to the v1 of those patches: I've fixed the typos found by
Baruch and Romain, added the Reviewed-by tags that were given,
fixed the manual line-break issue reported by Arnout, and adjusted
the order of the variables in perl.mk as suggested by Arnout.
- As part of the review of the first version of this series (which
only included patches 1 to 7), a comment was made that packages
like Linux were only applying patches named linux-*.patch, while we
have moved for all other packages to a convention that consists in
applying *.patch. Therefore, patches 8 and 9 make the Linux,
U-Boot, Barebox, AT91Bootstrap and AT91Bootstrap3 follow this
convention, and fix the user manual accordingly.
- Patches 10 and 11 start extending the package infrastructure by
adding the <pkg>-external-deps, <pkg>-all-external-deps,
<pkg>-all-source and <pkg>-all-legal-info targets.
- Patch 12 is doing some silly cleanup of the main Makefile.
- Patches 13 to 17 clarify and fix the way we declare the PHONY make
targets, by making the package infrastructure responsible for doing
that for package targets.
- Patches 18 and 19 make some not very important cleanups (variable
renaming, etc.)
- Patch 20 switches the 'legal-info' target to fully use the package
infrastructure, thanks to the <pkg>-all-legal-info target added
previously.
- Patch 21 simplifies show-targets a bit.
- Patch 22, like patch 20, switches the global 'external-deps' target
to fully use the package infrastructure, thanks to the
<pkg>-all-external-deps target added previously.
- Patch 23 cleans up the download infra by removing the support for
the SHOW_EXTERNAL_DEPS DL_MODE, unneeded now that the package infra
is in charge of the 'external-deps' feature.
- Patches 24, 25, 26, 27, 28, 29 and 30 take care of the global
'source-check' target, also moved to use the package infrastructure
through newly introduced <pkg>-source-check and
<pkg>-all-source-check targets.
- Patch 31 does some indentation cleanup.
- Patch 32 and 33 make some improvements to the package
infrastructure in terms of downloading source, patches and extra
downloads.
- Patch 34 implements the global 'source' target using the package
infrastructrure, thanks to <pkg>-source and <pkg>-all-source.
- Patch 35 removes the now unneeded variables from the main Makefile,
which was our original goal.
Thomas
Thomas Petazzoni (18):
fs: only add non rootfs- targets to PACKAGES
pkg-generic: take into account patch dependencies in source,
external-deps and legal-info
Makefile: use the package infra based external-deps
pkg-download: remove support for the SHOW_EXTERNAL_DEPS DL_MODE
Makefile: move source-check outside of noconfig_targets
pkg-download: extend DOWNLOAD_INNER, add a SOURCE_CHECK macro
pkg-generic: implement source-check targets
Makefile: implement a package based source-check target
pkg-generic: remove the .stamp_rsync_sourced fake stamp file
pkg-generic: don't use DL_MODE in .stamp_downloaded
pkg-download: get rid of DL_MODE
pkg-download: fix indentation for SOURCE_CHECK_* macros
pkg-generic: introduce a <pkg>_ALL_DOWNLOADS variable and factorize
code
Makefile: implement the 'source' target using the package
infrastructure
Makefile: remove unneeded variables
Makefile: add BR_BUILDING variable
packages: refactor checks using BR_BUILDING
Makefile: add a few more targets to nobuild_targets
Makefile | 53 ++++++++++------------
boot/at91bootstrap/at91bootstrap.mk | 5 +--
boot/at91bootstrap3/at91bootstrap3.mk | 2 +-
boot/barebox/barebox.mk | 5 +--
boot/uboot/uboot.mk | 13 ++----
boot/xloader/xloader.mk | 6 +--
fs/common.mk | 2 +-
linux/linux.mk | 2 +-
package/pkg-download.mk | 83 +++++++++--------------------------
package/pkg-generic.mk | 72 +++++++++++++++---------------
package/sunxi-boards/sunxi-boards.mk | 4 +-
11 files changed, 91 insertions(+), 156 deletions(-)
--
2.1.0
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 01/18] fs: only add non rootfs- targets to PACKAGES
2015-04-25 14:42 [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
@ 2015-04-25 14:42 ` Thomas Petazzoni
2015-04-25 16:36 ` Yann E. MORIN
2015-04-25 14:42 ` [Buildroot] [PATCHv3 02/18] pkg-generic: take into account patch dependencies in source, external-deps and legal-info Thomas Petazzoni
` (17 subsequent siblings)
18 siblings, 1 reply; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-25 14:42 UTC (permalink / raw)
To: buildroot
Commit 4570dbcb14b394d8f3c97baf4c9e5f4f225d1d37
("4570dbcb14b394d8f3c97baf4c9e5f4f225d1d37") added the dependencies of
rootfs building logic to PACKAGES, only thinking about the case where
rootfs building logic actually depends on real, normal packages
(host-mtd, host-genext2fs, etc.). But some file systems (rootfs-ubi)
depend on other filesystem images (rootfs-ubifs). And such targets
should not be added to PACKAGES, other an incorrect circular
dependency is created.
This commit fixes that by only adding the rootfs building logic
dependencies that do *not* start with rootfs- to the global PACKAGES
variable.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
fs/common.mk | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/common.mk b/fs/common.mk
index 41ee86d..4387d06 100644
--- a/fs/common.mk
+++ b/fs/common.mk
@@ -106,7 +106,7 @@ rootfs-$(1): $$(BINARIES_DIR)/rootfs.$(1) $$(ROOTFS_$(2)_POST_TARGETS)
ifeq ($$(BR2_TARGET_ROOTFS_$(2)),y)
TARGETS_ROOTFS += rootfs-$(1)
-PACKAGES += $$(ROOTFS_$(2)_DEPENDENCIES)
+PACKAGES += $$(filter-out rootfs-%,$$(ROOTFS_$(2)_DEPENDENCIES))
endif
endef
--
2.1.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 02/18] pkg-generic: take into account patch dependencies in source, external-deps and legal-info
2015-04-25 14:42 [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
2015-04-25 14:42 ` [Buildroot] [PATCHv3 01/18] fs: only add non rootfs- targets to PACKAGES Thomas Petazzoni
@ 2015-04-25 14:42 ` Thomas Petazzoni
2015-04-25 16:41 ` Yann E. MORIN
2015-04-25 14:42 ` [Buildroot] [PATCHv3 03/18] Makefile: use the package infra based external-deps Thomas Petazzoni
` (16 subsequent siblings)
18 siblings, 1 reply; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-25 14:42 UTC (permalink / raw)
To: buildroot
The $(1)-all-{source,external-deps,legal-info} targets currently only
take care of the dependencies in <pkg>_DEPENDENCIES, but not
<pkg>_PATCH_DEPENDENCIES. This patch fixes that.
Long term, we might want to refactor this to have a single variable
containing all dependencies. But this requires more work in
pkg-generic than we want to do at the moment.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
package/pkg-generic.mk | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
index 455bdf1..de63f2f 100644
--- a/package/pkg-generic.mk
+++ b/package/pkg-generic.mk
@@ -592,11 +592,20 @@ $(1)-graph-depends: graph-depends-requirements
|tee $$(GRAPHS_DIR)/$$(@).dot \
|dot $$(BR2_GRAPH_DOT_OPTS) -T$$(BR_GRAPH_OUT) -o $$(GRAPHS_DIR)/$$(@).$$(BR_GRAPH_OUT)
-$(1)-all-source: $$(foreach p,$$($(2)_FINAL_DEPENDENCIES),$$(p)-all-source) $(1)-source
-
-$(1)-all-external-deps: $$(foreach p,$$($(2)_FINAL_DEPENDENCIES),$$(p)-all-external-deps) $(1)-external-deps
-
-$(1)-all-legal-info: $$(foreach p,$$($(2)_FINAL_DEPENDENCIES),$$(p)-all-legal-info) $(1)-legal-info
+$(1)-all-source: $$(foreach p, \
+ $$($(2)_FINAL_DEPENDENCIES) $$($(2)_FINAL_PATCH_DEPENDENCIES), \
+ $$(p)-all-source) \
+ $(1)-source
+
+$(1)-all-external-deps: $$(foreach p, \
+ $$($(2)_FINAL_DEPENDENCIES) $$($(2)_FINAL_PATCH_DEPENDENCIES), \
+ $$(p)-all-external-deps) \
+ $(1)-external-deps
+
+$(1)-all-legal-info: $$(foreach p, \
+ $$($(2)_FINAL_DEPENDENCIES) $$($(2)_FINAL_PATCH_DEPENDENCIES), \
+ $$(p)-all-legal-info) \
+ $(1)-legal-info
$(1)-dirclean: $$($(2)_TARGET_DIRCLEAN)
--
2.1.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 03/18] Makefile: use the package infra based external-deps
2015-04-25 14:42 [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
2015-04-25 14:42 ` [Buildroot] [PATCHv3 01/18] fs: only add non rootfs- targets to PACKAGES Thomas Petazzoni
2015-04-25 14:42 ` [Buildroot] [PATCHv3 02/18] pkg-generic: take into account patch dependencies in source, external-deps and legal-info Thomas Petazzoni
@ 2015-04-25 14:42 ` Thomas Petazzoni
2015-04-25 14:42 ` [Buildroot] [PATCHv3 04/18] pkg-download: remove support for the SHOW_EXTERNAL_DEPS DL_MODE Thomas Petazzoni
` (15 subsequent siblings)
18 siblings, 0 replies; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-25 14:42 UTC (permalink / raw)
To: buildroot
This commit changes the global 'external-deps' target to use the newly
introduced per-package <pkg>-all-external-deps, instead of relying on
the 'source' target with a custom DL_MODE.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
---
Makefile | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index 6a7581a..7649e4c 100644
--- a/Makefile
+++ b/Makefile
@@ -614,8 +614,9 @@ target-post-image: $(TARGETS_ROOTFS) target-finalize
source: $(PACKAGES_SOURCE) $(HOST_SOURCE)
+_external-deps: $(foreach p,$(PACKAGES),$(p)-all-external-deps)
external-deps:
- @$(MAKE1) -Bs DL_MODE=SHOW_EXTERNAL_DEPS $(EXTRAMAKEARGS) source | sort -u
+ @$(MAKE1) -Bs $(EXTRAMAKEARGS) _external-deps | sort -u
legal-info-clean:
@rm -fr $(LEGAL_INFO_DIR)
--
2.1.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 04/18] pkg-download: remove support for the SHOW_EXTERNAL_DEPS DL_MODE
2015-04-25 14:42 [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
` (2 preceding siblings ...)
2015-04-25 14:42 ` [Buildroot] [PATCHv3 03/18] Makefile: use the package infra based external-deps Thomas Petazzoni
@ 2015-04-25 14:42 ` Thomas Petazzoni
2015-04-25 14:42 ` [Buildroot] [PATCHv3 05/18] Makefile: move source-check outside of noconfig_targets Thomas Petazzoni
` (14 subsequent siblings)
18 siblings, 0 replies; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-25 14:42 UTC (permalink / raw)
To: buildroot
Now that the external-deps implementation relies on the per-package
<pkg>-all-external-deps and <pkg>-external-deps targets and no longer
on the 'source' target with a custom DL_MODE, we can get rid of the
support for the SHOW_EXTERNAL_DEPS DL_MODE value in the pkg-download
logic.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
---
package/pkg-download.mk | 45 ++-------------------------------------------
package/pkg-generic.mk | 5 +----
2 files changed, 3 insertions(+), 47 deletions(-)
diff --git a/package/pkg-download.mk b/package/pkg-download.mk
index 1fc23c4..eee9e59 100644
--- a/package/pkg-download.mk
+++ b/package/pkg-download.mk
@@ -20,9 +20,8 @@ export LOCALFILES := $(call qstrip,$(BR2_LOCALFILES))
DL_WRAPPER = support/download/dl-wrapper
-# Default spider mode is 'DOWNLOAD'. Other possible values are 'SOURCE_CHECK'
-# used by the _source-check target and 'SHOW_EXTERNAL_DEPS', used by the
-# external-deps target.
+# Default spider mode is 'DOWNLOAD'. Other possible value is
+# 'SOURCE_CHECK' used by the _source-check target.
DL_MODE = DOWNLOAD
# DL_DIR may have been set already from the environment
@@ -74,11 +73,6 @@ export BR_NO_CHECK_HASH_FOR
# The SOURCE_CHECK_* helpers are in charge of simply checking that the source
# is available for download. This can be used to make sure one will be able
# to get all the sources needed for one's build configuration.
-#
-# The SHOW_EXTERNAL_DEPS_* helpers simply output to the console the names
-# of the files that will be downloaded, or path and revision of the
-# source repositories, producing a list of all the "external dependencies"
-# of a given build configuration.
################################################################################
# Try a shallow clone - but that only works if the version is a ref (tag or
@@ -103,11 +97,6 @@ define SOURCE_CHECK_GIT
$(GIT) ls-remote --heads $($(PKG)_SITE) > /dev/null
endef
-define SHOW_EXTERNAL_DEPS_GIT
- echo $($(PKG)_SOURCE)
-endef
-
-
define DOWNLOAD_BZR
$(EXTRA_ENV) $(DL_WRAPPER) -b bzr \
-o $(DL_DIR)/$($(PKG)_SOURCE) \
@@ -122,10 +111,6 @@ define SOURCE_CHECK_BZR
$(BZR) ls --quiet $($(PKG)_SITE) > /dev/null
endef
-define SHOW_EXTERNAL_DEPS_BZR
- echo $($(PKG)_SOURCE)
-endef
-
define DOWNLOAD_CVS
$(EXTRA_ENV) $(DL_WRAPPER) -b cvs \
-o $(DL_DIR)/$($(PKG)_SOURCE) \
@@ -142,10 +127,6 @@ define SOURCE_CHECK_CVS
$(CVS) -d:pserver:anonymous:@$(call stripurischeme,$(call qstrip,$($(PKG)_SITE))) login
endef
-define SHOW_EXTERNAL_DEPS_CVS
- echo $($(PKG)_SOURCE)
-endef
-
define DOWNLOAD_SVN
$(EXTRA_ENV) $(DL_WRAPPER) -b svn \
-o $(DL_DIR)/$($(PKG)_SOURCE) \
@@ -160,10 +141,6 @@ define SOURCE_CHECK_SVN
$(SVN) ls $($(PKG)_SITE)@$($(PKG)_DL_VERSION) > /dev/null
endef
-define SHOW_EXTERNAL_DEPS_SVN
- echo $($(PKG)_SOURCE)
-endef
-
# SCP URIs should be of the form scp://[user@]host:filepath
# Note that filepath is relative to the user's home directory, so you may want
# to prepend the path with a slash: scp://[user@]host:/absolutepath
@@ -180,11 +157,6 @@ define SOURCE_CHECK_SCP
$(SSH) $(call domain,$(1),:) ls '$(call notdomain,$(1),:)' > /dev/null
endef
-define SHOW_EXTERNAL_DEPS_SCP
- echo $(2)
-endef
-
-
define DOWNLOAD_HG
$(EXTRA_ENV) $(DL_WRAPPER) -b hg \
-o $(DL_DIR)/$($(PKG)_SOURCE) \
@@ -201,11 +173,6 @@ define SOURCE_CHECK_HG
$(HG) incoming --force -l1 $($(PKG)_SITE) > /dev/null
endef
-define SHOW_EXTERNAL_DEPS_HG
- echo $($(PKG)_SOURCE)
-endef
-
-
define DOWNLOAD_WGET
$(EXTRA_ENV) $(DL_WRAPPER) -b wget \
-o $(DL_DIR)/$(2) \
@@ -219,10 +186,6 @@ define SOURCE_CHECK_WGET
$(WGET) --spider '$(call qstrip,$(1))'
endef
-define SHOW_EXTERNAL_DEPS_WGET
- echo $(2)
-endef
-
define DOWNLOAD_LOCALFILES
$(EXTRA_ENV) $(DL_WRAPPER) -b cp \
-o $(DL_DIR)/$(2) \
@@ -236,10 +199,6 @@ define SOURCE_CHECK_LOCALFILES
test -e $(call stripurischeme,$(call qstrip,$(1)))
endef
-define SHOW_EXTERNAL_DEPS_LOCALFILES
- echo $(2)
-endef
-
################################################################################
# DOWNLOAD -- Download helper. Will try to download source from:
# 1) BR2_PRIMARY_SITE if enabled
diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
index de63f2f..a12b868 100644
--- a/package/pkg-generic.mk
+++ b/package/pkg-generic.mk
@@ -122,13 +122,10 @@ $(BUILD_DIR)/%/.stamp_rsynced:
$(foreach hook,$($(PKG)_POST_RSYNC_HOOKS),$(call $(hook))$(sep))
$(Q)touch $@
-# Handle the SOURCE_CHECK and SHOW_EXTERNAL_DEPS cases for rsynced
-# packages
+# Handle the SOURCE_CHECK case for rsynced packages
$(BUILD_DIR)/%/.stamp_rsync_sourced:
ifeq ($(DL_MODE),SOURCE_CHECK)
test -d $(SRCDIR)
-else ifeq ($(DL_MODE),SHOW_EXTERNAL_DEPS)
- echo "file://$(SRCDIR)"
else
@true # Nothing to do to source a local package
endif
--
2.1.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 05/18] Makefile: move source-check outside of noconfig_targets
2015-04-25 14:42 [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
` (3 preceding siblings ...)
2015-04-25 14:42 ` [Buildroot] [PATCHv3 04/18] pkg-download: remove support for the SHOW_EXTERNAL_DEPS DL_MODE Thomas Petazzoni
@ 2015-04-25 14:42 ` Thomas Petazzoni
2015-04-25 14:42 ` [Buildroot] [PATCHv3 06/18] pkg-download: extend DOWNLOAD_INNER, add a SOURCE_CHECK macro Thomas Petazzoni
` (13 subsequent siblings)
18 siblings, 0 replies; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-25 14:42 UTC (permalink / raw)
To: buildroot
make source-check is here to check whether the remote sources for the
current selection of packages are still available. In its current
implementation, since it simply calls recursively a sub-make with the
source target, it can be a noconfig_targets. However, a follow-up
change will make source-check not use a sub-make, which will require
it to no longer be a noconfig_targets.
Therefore, as a preparation, this commit moves source-check outside of
noconfig_targets.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
---
Makefile | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/Makefile b/Makefile
index 7649e4c..a442325 100644
--- a/Makefile
+++ b/Makefile
@@ -75,7 +75,7 @@ export BR2_VERSION_FULL := $(BR2_VERSION)$(shell $(TOPDIR)/support/scripts/setlo
noconfig_targets := menuconfig nconfig gconfig xconfig config oldconfig randconfig \
defconfig %_defconfig allyesconfig allnoconfig silentoldconfig release \
randpackageconfig allyespackageconfig allnopackageconfig \
- source-check print-version olddefconfig
+ print-version olddefconfig
# Strip quotes and then whitespaces
qstrip = $(strip $(subst ",,$(1)))
@@ -422,7 +422,7 @@ world: target-post-image
.PHONY: all world toolchain dirs clean distclean source outputmakefile \
legal-info legal-info-prepare legal-info-clean printvars help \
- list-defconfigs target-finalize target-post-image
+ list-defconfigs target-finalize target-post-image source-check
################################################################################
#
@@ -618,6 +618,10 @@ _external-deps: $(foreach p,$(PACKAGES),$(p)-all-external-deps)
external-deps:
@$(MAKE1) -Bs $(EXTRAMAKEARGS) _external-deps | sort -u
+# check if download URLs are outdated
+source-check:
+ $(MAKE1) DL_MODE=SOURCE_CHECK $(EXTRAMAKEARGS) source
+
legal-info-clean:
@rm -fr $(LEGAL_INFO_DIR)
@@ -778,10 +782,6 @@ savedefconfig: $(BUILD_DIR)/buildroot-config/conf outputmakefile
--savedefconfig=$(if $(DEFCONFIG),$(DEFCONFIG),$(CONFIG_DIR)/defconfig) \
$(CONFIG_CONFIG_IN)
-# check if download URLs are outdated
-source-check:
- $(MAKE1) DL_MODE=SOURCE_CHECK $(EXTRAMAKEARGS) source
-
.PHONY: defconfig savedefconfig
################################################################################
--
2.1.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 06/18] pkg-download: extend DOWNLOAD_INNER, add a SOURCE_CHECK macro
2015-04-25 14:42 [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
` (4 preceding siblings ...)
2015-04-25 14:42 ` [Buildroot] [PATCHv3 05/18] Makefile: move source-check outside of noconfig_targets Thomas Petazzoni
@ 2015-04-25 14:42 ` Thomas Petazzoni
2015-04-25 17:15 ` Yann E. MORIN
2015-04-25 14:42 ` [Buildroot] [PATCHv3 07/18] pkg-generic: implement source-check targets Thomas Petazzoni
` (12 subsequent siblings)
18 siblings, 1 reply; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-25 14:42 UTC (permalink / raw)
To: buildroot
As part of moving to a package infrastructure based source-check
implementation, we are going to move away from the global DL_MODE
variable to select the behavior of the DOWNLOAD_INNER macro.
As a preparation to this, this commit makes the DOWNLOAD_INNER macro
take a third argument, which is the action to be done: either DOWNLOAD
or SOURCE_CHECK. For now, the DOWNLOAD macro passes $(DL_MODE) as this
third argument, in order to keep the existing behavior.
In addition, a SOURCE_CHECK macro is added, which calls DOWNLOAD_INNER
with the appropriate action. This macro will be used in the upcoming
package infra based implementation of source-check.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
[tested by doing a "make source" on a randpackageconfig]
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
package/pkg-download.mk | 28 ++++++++++++++++------------
1 file changed, 16 insertions(+), 12 deletions(-)
diff --git a/package/pkg-download.mk b/package/pkg-download.mk
index eee9e59..76afced 100644
--- a/package/pkg-download.mk
+++ b/package/pkg-download.mk
@@ -212,14 +212,18 @@ endef
################################################################################
define DOWNLOAD
- $(call DOWNLOAD_INNER,$(1),$(notdir $(1)))
+ $(call DOWNLOAD_INNER,$(1),$(notdir $(1)),$(DL_MODE))
+endef
+
+define SOURCE_CHECK
+ $(call DOWNLOAD_INNER,$(1),$(notdir $(1)),SOURCE_CHECK)
endef
define DOWNLOAD_INNER
$(Q)if test -n "$(call qstrip,$(BR2_PRIMARY_SITE))" ; then \
case "$(call geturischeme,$(BR2_PRIMARY_SITE))" in \
- scp) $(call $(DL_MODE)_SCP,$(BR2_PRIMARY_SITE)/$(2),$(2)) && exit ;; \
- *) $(call $(DL_MODE)_WGET,$(BR2_PRIMARY_SITE)/$(2),$(2)) && exit ;; \
+ scp) $(call $(3)_SCP,$(BR2_PRIMARY_SITE)/$(2),$(2)) && exit ;; \
+ *) $(call $(3)_WGET,$(BR2_PRIMARY_SITE)/$(2),$(2)) && exit ;; \
esac ; \
fi ; \
if test "$(BR2_PRIMARY_SITE_ONLY)" = "y" ; then \
@@ -232,18 +236,18 @@ define DOWNLOAD_INNER
scheme="$($(PKG)_SITE_METHOD)" ; \
fi ; \
case "$$scheme" in \
- git) $($(DL_MODE)_GIT) && exit ;; \
- svn) $($(DL_MODE)_SVN) && exit ;; \
- cvs) $($(DL_MODE)_CVS) && exit ;; \
- bzr) $($(DL_MODE)_BZR) && exit ;; \
- file) $($(DL_MODE)_LOCALFILES) && exit ;; \
- scp) $($(DL_MODE)_SCP) && exit ;; \
- hg) $($(DL_MODE)_HG) && exit ;; \
- *) $(call $(DL_MODE)_WGET,$(1),$(2)) && exit ;; \
+ git) $($(3)_GIT) && exit ;; \
+ svn) $($(3)_SVN) && exit ;; \
+ cvs) $($(3)_CVS) && exit ;; \
+ bzr) $($(3)_BZR) && exit ;; \
+ file) $($(3)_LOCALFILES) && exit ;; \
+ scp) $($(3)_SCP) && exit ;; \
+ hg) $($(3)_HG) && exit ;; \
+ *) $(call $(3)_WGET,$(1),$(2)) && exit ;; \
esac ; \
fi ; \
if test -n "$(call qstrip,$(BR2_BACKUP_SITE))" ; then \
- $(call $(DL_MODE)_WGET,$(BR2_BACKUP_SITE)/$(2),$(2)) && exit ; \
+ $(call $(3)_WGET,$(BR2_BACKUP_SITE)/$(2),$(2)) && exit ; \
fi ; \
exit 1
endef
--
2.1.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 07/18] pkg-generic: implement source-check targets
2015-04-25 14:42 [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
` (5 preceding siblings ...)
2015-04-25 14:42 ` [Buildroot] [PATCHv3 06/18] pkg-download: extend DOWNLOAD_INNER, add a SOURCE_CHECK macro Thomas Petazzoni
@ 2015-04-25 14:42 ` Thomas Petazzoni
2015-04-25 17:28 ` Yann E. MORIN
2015-04-25 14:42 ` [Buildroot] [PATCHv3 08/18] Makefile: implement a package based source-check target Thomas Petazzoni
` (11 subsequent siblings)
18 siblings, 1 reply; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-25 14:42 UTC (permalink / raw)
To: buildroot
This commits extends the common package infrastructure with the
$(1)-source-check and $(1)-all-source-check targets.
The $(1)-source-check target simply calls the newly added
SOURCE_CHECK macro on all items to be downloaded.
The $(1)-all-source-check target will depend on the
$(1)-all-source-check targets of all dependent packages and the
$(1)-source-check target of the current package, which allows to do a
recursive source-check in the dependency tree.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
package/pkg-generic.mk | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
index a12b868..5a9bcf1 100644
--- a/package/pkg-generic.mk
+++ b/package/pkg-generic.mk
@@ -579,6 +579,16 @@ endif
$(1)-show-version:
@echo $$($(2)_VERSION)
+$(1)-source-check:
+ifeq ($$($(2)_OVERRIDE_SRCDIR),)
+ $$(foreach p,$$($(2)_SOURCE) $$($(2)_EXTRA_DOWNLOADS) $$($(2)_PATCH),\
+ $$(if $$(findstring ://,$$(p)),\
+ $$(call SOURCE_CHECK,$$(p)),\
+ $$(call SOURCE_CHECK,$$($(2)_SITE:/=)/$$(p)))$$(sep))
+else
+ test -d $$($(2)_OVERRIDE_SRCDIR)
+endif
+
$(1)-show-depends:
@echo $$(sort $$($(2)_FINAL_DEPENDENCIES) $$($(2)_FINAL_PATCH_DEPENDENCIES))
@@ -594,6 +604,11 @@ $(1)-all-source: $$(foreach p, \
$$(p)-all-source) \
$(1)-source
+$(1)-all-source-check: $$(foreach p, \
+ $$($(2)_FINAL_DEPENDENCIES) $$($(2)_FINAL_PATCH_DEPENDENCIES), \
+ $$(p)-all-source-check) \
+ $(1)-source-check
+
$(1)-all-external-deps: $$(foreach p, \
$$($(2)_FINAL_DEPENDENCIES) $$($(2)_FINAL_PATCH_DEPENDENCIES), \
$$(p)-all-external-deps) \
@@ -793,6 +808,7 @@ endif
$(1)-all-external-deps \
$(1)-all-legal-info \
$(1)-all-source \
+ $(1)-all-source-check \
$(1)-build \
$(1)-clean-for-rebuild \
$(1)-clean-for-reconfigure \
@@ -816,7 +832,8 @@ endif
$(1)-rsync \
$(1)-show-depends \
$(1)-show-version \
- $(1)-source
+ $(1)-source \
+ $(1)-source-check
endif # $(2)_KCONFIG_VAR
endef # inner-generic-package
--
2.1.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 08/18] Makefile: implement a package based source-check target
2015-04-25 14:42 [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
` (6 preceding siblings ...)
2015-04-25 14:42 ` [Buildroot] [PATCHv3 07/18] pkg-generic: implement source-check targets Thomas Petazzoni
@ 2015-04-25 14:42 ` Thomas Petazzoni
2015-04-25 14:42 ` [Buildroot] [PATCHv3 09/18] pkg-generic: remove the .stamp_rsync_sourced fake stamp file Thomas Petazzoni
` (10 subsequent siblings)
18 siblings, 0 replies; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-25 14:42 UTC (permalink / raw)
To: buildroot
This commit switches the implementation of the global source-check
target to use a package infrastructure based mechanism, using the
$(1)-all-source-check target added in the previous commit.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
---
Makefile | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index a442325..f5ff574 100644
--- a/Makefile
+++ b/Makefile
@@ -619,8 +619,7 @@ external-deps:
@$(MAKE1) -Bs $(EXTRAMAKEARGS) _external-deps | sort -u
# check if download URLs are outdated
-source-check:
- $(MAKE1) DL_MODE=SOURCE_CHECK $(EXTRAMAKEARGS) source
+source-check: $(foreach p,$(PACKAGES),$(p)-all-source-check)
legal-info-clean:
@rm -fr $(LEGAL_INFO_DIR)
--
2.1.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 09/18] pkg-generic: remove the .stamp_rsync_sourced fake stamp file
2015-04-25 14:42 [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
` (7 preceding siblings ...)
2015-04-25 14:42 ` [Buildroot] [PATCHv3 08/18] Makefile: implement a package based source-check target Thomas Petazzoni
@ 2015-04-25 14:42 ` Thomas Petazzoni
2015-04-25 17:33 ` Yann E. MORIN
2015-04-25 17:53 ` Yann E. MORIN
2015-04-25 14:42 ` [Buildroot] [PATCHv3 10/18] pkg-generic: don't use DL_MODE in .stamp_downloaded Thomas Petazzoni
` (9 subsequent siblings)
18 siblings, 2 replies; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-25 14:42 UTC (permalink / raw)
To: buildroot
The only reason for the .stamp_rsync_sourced fake stamp file target to
exist was to handle the SOURCE_CHECK operation on packages using the
OVERRIDE_SRCDIR mechanism. Now that this is handled directly inside
$(1)-source-check, there is no longer any need for this part of the
code.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Tested-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
---
package/pkg-generic.mk | 13 +------------
1 file changed, 1 insertion(+), 12 deletions(-)
diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
index 5a9bcf1..05831d4 100644
--- a/package/pkg-generic.mk
+++ b/package/pkg-generic.mk
@@ -122,14 +122,6 @@ $(BUILD_DIR)/%/.stamp_rsynced:
$(foreach hook,$($(PKG)_POST_RSYNC_HOOKS),$(call $(hook))$(sep))
$(Q)touch $@
-# Handle the SOURCE_CHECK case for rsynced packages
-$(BUILD_DIR)/%/.stamp_rsync_sourced:
-ifeq ($(DL_MODE),SOURCE_CHECK)
- test -d $(SRCDIR)
-else
- @true # Nothing to do to source a local package
-endif
-
# Patch
#
# The RAWNAME variable is the lowercased package name, which allows to
@@ -441,7 +433,6 @@ $(2)_TARGET_INSTALL_HOST = $$($(2)_DIR)/.stamp_host_installed
$(2)_TARGET_BUILD = $$($(2)_DIR)/.stamp_built
$(2)_TARGET_CONFIGURE = $$($(2)_DIR)/.stamp_configured
$(2)_TARGET_RSYNC = $$($(2)_DIR)/.stamp_rsynced
-$(2)_TARGET_RSYNC_SOURCE = $$($(2)_DIR)/.stamp_rsync_sourced
$(2)_TARGET_PATCH = $$($(2)_DIR)/.stamp_patched
$(2)_TARGET_EXTRACT = $$($(2)_DIR)/.stamp_extracted
$(2)_TARGET_SOURCE = $$($(2)_DIR)/.stamp_downloaded
@@ -570,7 +561,7 @@ $(1)-extract: $(1)-rsync
$(1)-rsync: $$($(2)_TARGET_RSYNC)
-$(1)-source: $$($(2)_TARGET_RSYNC_SOURCE)
+$(1)-source:
$(1)-external-deps:
@echo "file://$$($(2)_OVERRIDE_SRCDIR)"
@@ -652,8 +643,6 @@ $$($(2)_TARGET_BUILD): PKG=$(2)
$$($(2)_TARGET_CONFIGURE): PKG=$(2)
$$($(2)_TARGET_RSYNC): SRCDIR=$$($(2)_OVERRIDE_SRCDIR)
$$($(2)_TARGET_RSYNC): PKG=$(2)
-$$($(2)_TARGET_RSYNC_SOURCE): SRCDIR=$$($(2)_OVERRIDE_SRCDIR)
-$$($(2)_TARGET_RSYNC_SOURCE): PKG=$(2)
$$($(2)_TARGET_PATCH): PKG=$(2)
$$($(2)_TARGET_PATCH): RAWNAME=$$(patsubst host-%,%,$(1))
$$($(2)_TARGET_PATCH): PKGDIR=$(pkgdir)
--
2.1.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 10/18] pkg-generic: don't use DL_MODE in .stamp_downloaded
2015-04-25 14:42 [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
` (8 preceding siblings ...)
2015-04-25 14:42 ` [Buildroot] [PATCHv3 09/18] pkg-generic: remove the .stamp_rsync_sourced fake stamp file Thomas Petazzoni
@ 2015-04-25 14:42 ` Thomas Petazzoni
2015-04-25 17:34 ` Yann E. MORIN
2015-04-25 14:42 ` [Buildroot] [PATCHv3 11/18] pkg-download: get rid of DL_MODE Thomas Petazzoni
` (8 subsequent siblings)
18 siblings, 1 reply; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-25 14:42 UTC (permalink / raw)
To: buildroot
The .stamp_downloaded target is now only being used to really
download, and no longer for other activities like "source check" or
"external deps". So the check on DL_MODE being equal to DOWNLOAD is no
longer necessary.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Tested-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
---
package/pkg-generic.mk | 4 ----
1 file changed, 4 deletions(-)
diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
index 05831d4..cb901ae 100644
--- a/package/pkg-generic.mk
+++ b/package/pkg-generic.mk
@@ -71,7 +71,6 @@ endif
# Retrieve the archive
$(BUILD_DIR)/%/.stamp_downloaded:
$(foreach hook,$($(PKG)_PRE_DOWNLOAD_HOOKS),$(call $(hook))$(sep))
-ifeq ($(DL_MODE),DOWNLOAD)
# Only show the download message if it isn't already downloaded
$(Q)for p in $($(PKG)_SOURCE) $($(PKG)_PATCH) $($(PKG)_EXTRA_DOWNLOADS) ; do \
if test ! -e $(DL_DIR)/`basename $$p` ; then \
@@ -79,7 +78,6 @@ ifeq ($(DL_MODE),DOWNLOAD)
break ; \
fi ; \
done
-endif
$(if $($(PKG)_SOURCE),$(call DOWNLOAD,$($(PKG)_SITE:/=)/$($(PKG)_SOURCE)))
$(foreach p,$($(PKG)_EXTRA_DOWNLOADS),\
$(if $(findstring ://,$(p)),\
@@ -94,10 +92,8 @@ endif
)\
$(sep))
$(foreach hook,$($(PKG)_POST_DOWNLOAD_HOOKS),$(call $(hook))$(sep))
-ifeq ($(DL_MODE),DOWNLOAD)
$(Q)mkdir -p $(@D)
$(Q)touch $@
-endif
# Unpack the archive
$(BUILD_DIR)/%/.stamp_extracted:
--
2.1.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 11/18] pkg-download: get rid of DL_MODE
2015-04-25 14:42 [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
` (9 preceding siblings ...)
2015-04-25 14:42 ` [Buildroot] [PATCHv3 10/18] pkg-generic: don't use DL_MODE in .stamp_downloaded Thomas Petazzoni
@ 2015-04-25 14:42 ` Thomas Petazzoni
2015-04-25 17:35 ` Yann E. MORIN
2015-04-25 14:42 ` [Buildroot] [PATCHv3 12/18] pkg-download: fix indentation for SOURCE_CHECK_* macros Thomas Petazzoni
` (7 subsequent siblings)
18 siblings, 1 reply; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-25 14:42 UTC (permalink / raw)
To: buildroot
The DL_MODE variable is now no longer used with any other value than
"DOWNLOAD", so it no longer makes sense to have this variable at
all. Therefore, this commit gets rid of it.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Tested-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
---
package/pkg-download.mk | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/package/pkg-download.mk b/package/pkg-download.mk
index 76afced..a145011 100644
--- a/package/pkg-download.mk
+++ b/package/pkg-download.mk
@@ -20,10 +20,6 @@ export LOCALFILES := $(call qstrip,$(BR2_LOCALFILES))
DL_WRAPPER = support/download/dl-wrapper
-# Default spider mode is 'DOWNLOAD'. Other possible value is
-# 'SOURCE_CHECK' used by the _source-check target.
-DL_MODE = DOWNLOAD
-
# DL_DIR may have been set already from the environment
ifeq ($(origin DL_DIR),undefined)
DL_DIR ?= $(call qstrip,$(BR2_DL_DIR))
@@ -212,7 +208,7 @@ endef
################################################################################
define DOWNLOAD
- $(call DOWNLOAD_INNER,$(1),$(notdir $(1)),$(DL_MODE))
+ $(call DOWNLOAD_INNER,$(1),$(notdir $(1)),DOWNLOAD)
endef
define SOURCE_CHECK
--
2.1.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 12/18] pkg-download: fix indentation for SOURCE_CHECK_* macros
2015-04-25 14:42 [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
` (10 preceding siblings ...)
2015-04-25 14:42 ` [Buildroot] [PATCHv3 11/18] pkg-download: get rid of DL_MODE Thomas Petazzoni
@ 2015-04-25 14:42 ` Thomas Petazzoni
2015-04-25 17:37 ` Yann E. MORIN
2015-04-25 14:42 ` [Buildroot] [PATCHv3 13/18] pkg-generic: introduce a <pkg>_ALL_DOWNLOADS variable and factorize code Thomas Petazzoni
` (6 subsequent siblings)
18 siblings, 1 reply; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-25 14:42 UTC (permalink / raw)
To: buildroot
Some of the SOURCE_CHECK_* macros are using a non-standard two-spaces
indentation. This commit switches them to use a single tab based
indentation, like in the rest of Buildroot.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Tested-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
[with git show -w]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
package/pkg-download.mk | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/package/pkg-download.mk b/package/pkg-download.mk
index a145011..a38062e 100644
--- a/package/pkg-download.mk
+++ b/package/pkg-download.mk
@@ -90,7 +90,7 @@ endef
# TODO: improve to check that the given PKG_DL_VERSION exists on the remote
# repository
define SOURCE_CHECK_GIT
- $(GIT) ls-remote --heads $($(PKG)_SITE) > /dev/null
+ $(GIT) ls-remote --heads $($(PKG)_SITE) > /dev/null
endef
define DOWNLOAD_BZR
@@ -134,7 +134,7 @@ define DOWNLOAD_SVN
endef
define SOURCE_CHECK_SVN
- $(SVN) ls $($(PKG)_SITE)@$($(PKG)_DL_VERSION) > /dev/null
+ $(SVN) ls $($(PKG)_SITE)@$($(PKG)_DL_VERSION) > /dev/null
endef
# SCP URIs should be of the form scp://[user@]host:filepath
@@ -166,7 +166,7 @@ endef
# TODO: improve to check that the given PKG_DL_VERSION exists on the remote
# repository
define SOURCE_CHECK_HG
- $(HG) incoming --force -l1 $($(PKG)_SITE) > /dev/null
+ $(HG) incoming --force -l1 $($(PKG)_SITE) > /dev/null
endef
define DOWNLOAD_WGET
@@ -179,7 +179,7 @@ define DOWNLOAD_WGET
endef
define SOURCE_CHECK_WGET
- $(WGET) --spider '$(call qstrip,$(1))'
+ $(WGET) --spider '$(call qstrip,$(1))'
endef
define DOWNLOAD_LOCALFILES
@@ -192,7 +192,7 @@ define DOWNLOAD_LOCALFILES
endef
define SOURCE_CHECK_LOCALFILES
- test -e $(call stripurischeme,$(call qstrip,$(1)))
+ test -e $(call stripurischeme,$(call qstrip,$(1)))
endef
################################################################################
--
2.1.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 13/18] pkg-generic: introduce a <pkg>_ALL_DOWNLOADS variable and factorize code
2015-04-25 14:42 [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
` (11 preceding siblings ...)
2015-04-25 14:42 ` [Buildroot] [PATCHv3 12/18] pkg-download: fix indentation for SOURCE_CHECK_* macros Thomas Petazzoni
@ 2015-04-25 14:42 ` Thomas Petazzoni
2015-04-25 17:58 ` Yann E. MORIN
2015-04-25 14:42 ` [Buildroot] [PATCHv3 14/18] Makefile: implement the 'source' target using the package infrastructure Thomas Petazzoni
` (5 subsequent siblings)
18 siblings, 1 reply; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-25 14:42 UTC (permalink / raw)
To: buildroot
Now, both the download and source-check code are iterating over
<pkg>_SOURCE, <pkg>_PATCH and <pkg>_EXTRA_DOWNLOADS elements, figuring
out whether they contain full URLs or not. Instead of doing this
repeatdly, this patch introduces an internal <pkg>_ALL_DOWNLOADS
variable, which contains the list of everything that needs to be
downloaded, with URLs already expanded to take into account <pkg>_SITE
if needed.
This allows to simplify quite significantly the .stamp_download and
source-check implementation.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
package/pkg-generic.mk | 26 ++++++++------------------
1 file changed, 8 insertions(+), 18 deletions(-)
diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
index cb901ae..517c02f 100644
--- a/package/pkg-generic.mk
+++ b/package/pkg-generic.mk
@@ -72,25 +72,13 @@ endif
$(BUILD_DIR)/%/.stamp_downloaded:
$(foreach hook,$($(PKG)_PRE_DOWNLOAD_HOOKS),$(call $(hook))$(sep))
# Only show the download message if it isn't already downloaded
- $(Q)for p in $($(PKG)_SOURCE) $($(PKG)_PATCH) $($(PKG)_EXTRA_DOWNLOADS) ; do \
+ $(Q)for p in $($(PKG)_ALL_DOWNLOADS); do \
if test ! -e $(DL_DIR)/`basename $$p` ; then \
$(call MESSAGE,"Downloading") ; \
break ; \
fi ; \
done
- $(if $($(PKG)_SOURCE),$(call DOWNLOAD,$($(PKG)_SITE:/=)/$($(PKG)_SOURCE)))
- $(foreach p,$($(PKG)_EXTRA_DOWNLOADS),\
- $(if $(findstring ://,$(p)),\
- $(call DOWNLOAD,$(p)),\
- $(call DOWNLOAD,$($(PKG)_SITE:/=)/$(p))\
- )\
- $(sep))
- $(foreach p,$($(PKG)_PATCH),\
- $(if $(findstring ://,$(p)),\
- $(call DOWNLOAD,$(p)),\
- $(call DOWNLOAD,$($(PKG)_SITE:/=)/$(p))\
- )\
- $(sep))
+ $(foreach p,$($(PKG)_ALL_DOWNLOADS),$(call DOWNLOAD,$(p))$(sep))
$(foreach hook,$($(PKG)_POST_DOWNLOAD_HOOKS),$(call $(hook))$(sep))
$(Q)mkdir -p $(@D)
$(Q)touch $@
@@ -355,6 +343,11 @@ ifndef $(2)_PATCH
endif
endif
+$(2)_ALL_DOWNLOADS = \
+ $$(foreach p,$$($(2)_SOURCE) $$($(2)_PATCH) $$($(2)_EXTRA_DOWNLOADS),\
+ $$(if $$(findstring ://,$$(p)),$$(p),\
+ $$($(2)_SITE:/=)/$$(p)))
+
ifndef $(2)_SITE
ifdef $(3)_SITE
$(2)_SITE = $$($(3)_SITE)
@@ -568,10 +561,7 @@ $(1)-show-version:
$(1)-source-check:
ifeq ($$($(2)_OVERRIDE_SRCDIR),)
- $$(foreach p,$$($(2)_SOURCE) $$($(2)_EXTRA_DOWNLOADS) $$($(2)_PATCH),\
- $$(if $$(findstring ://,$$(p)),\
- $$(call SOURCE_CHECK,$$(p)),\
- $$(call SOURCE_CHECK,$$($(2)_SITE:/=)/$$(p)))$$(sep))
+ $$(foreach p,$$($(2)_ALL_DOWNLOADS),$$(call SOURCE_CHECK,$$(p))$$(sep))
else
test -d $$($(2)_OVERRIDE_SRCDIR)
endif
--
2.1.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 14/18] Makefile: implement the 'source' target using the package infrastructure
2015-04-25 14:42 [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
` (12 preceding siblings ...)
2015-04-25 14:42 ` [Buildroot] [PATCHv3 13/18] pkg-generic: introduce a <pkg>_ALL_DOWNLOADS variable and factorize code Thomas Petazzoni
@ 2015-04-25 14:42 ` Thomas Petazzoni
2015-04-25 18:51 ` Yann E. MORIN
2015-04-25 14:42 ` [Buildroot] [PATCHv3 15/18] Makefile: remove unneeded variables Thomas Petazzoni
` (4 subsequent siblings)
18 siblings, 1 reply; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-25 14:42 UTC (permalink / raw)
To: buildroot
Now that all the bits are in place, switch the global 'source' target
to use the package infrastructure logic.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Tested-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
[with 'make source' (actually together with the next patch).]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index f5ff574..e8a694b 100644
--- a/Makefile
+++ b/Makefile
@@ -612,7 +612,7 @@ target-post-image: $(TARGETS_ROOTFS) target-finalize
$(call MESSAGE,"Executing post-image script $(s)"); \
$(EXTRA_ENV) $(s) $(BINARIES_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep))
-source: $(PACKAGES_SOURCE) $(HOST_SOURCE)
+source: $(foreach p,$(PACKAGES),$(p)-all-source)
_external-deps: $(foreach p,$(PACKAGES),$(p)-all-external-deps)
external-deps:
--
2.1.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 15/18] Makefile: remove unneeded variables
2015-04-25 14:42 [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
` (13 preceding siblings ...)
2015-04-25 14:42 ` [Buildroot] [PATCHv3 14/18] Makefile: implement the 'source' target using the package infrastructure Thomas Petazzoni
@ 2015-04-25 14:42 ` Thomas Petazzoni
2015-04-25 18:58 ` Yann E. MORIN
2015-04-25 14:43 ` [Buildroot] [PATCHv3 16/18] Makefile: add BR_BUILDING variable Thomas Petazzoni
` (3 subsequent siblings)
18 siblings, 1 reply; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-25 14:42 UTC (permalink / raw)
To: buildroot
Now that all the external-deps, source-check and source targets are
properly implemented based on the package infrastructure, the
PACKAGES_SOURCE, TARGET_HOST_DEPS, HOST_DEPS and HOST_SOURCE variables
are no longer needed. This is a good thing since they were anyway
incorrect, as they were only doing a two level recursion in the
dependencies of host packages.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Tested-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
---
Makefile | 21 ---------------------
1 file changed, 21 deletions(-)
diff --git a/Makefile b/Makefile
index e8a694b..0ba341b 100644
--- a/Makefile
+++ b/Makefile
@@ -389,27 +389,6 @@ include fs/common.mk
include $(BR2_EXTERNAL)/external.mk
-PACKAGES_SOURCE := $(patsubst %,%-source,$(PACKAGES))
-
-# host-* dependencies have to be handled specially, as those aren't
-# visible in Kconfig and hence not added to a variable like PACKAGES.
-# instead, find all the host-* targets listed in each <PKG>_DEPENDENCIES
-# variable for each enabled target.
-# Notice: this only works for newstyle gentargets/autotargets packages
-TARGETS_HOST_DEPS = $(sort $(filter host-%,$(foreach dep,\
- $(addsuffix _DEPENDENCIES,\
- $(call UPPERCASE,$(PACKAGES) $(TARGETS_ROOTFS))),\
- $($(dep)))))
-# Host packages can in turn have their own dependencies. Likewise find
-# all the package names listed in the HOST_<PKG>_DEPENDENCIES for each
-# host package found above. Ideally this should be done recursively until
-# no more packages are found, but that's hard to do in make, so limit to
-# 1 level for now.
-HOST_DEPS = $(sort $(foreach dep,\
- $(addsuffix _DEPENDENCIES,$(call UPPERCASE,$(TARGETS_HOST_DEPS))),\
- $($(dep))))
-HOST_SOURCE += $(addsuffix -source,$(sort $(TARGETS_HOST_DEPS) $(HOST_DEPS)))
-
dirs: $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
$(HOST_DIR) $(BINARIES_DIR)
--
2.1.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 16/18] Makefile: add BR_BUILDING variable
2015-04-25 14:42 [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
` (14 preceding siblings ...)
2015-04-25 14:42 ` [Buildroot] [PATCHv3 15/18] Makefile: remove unneeded variables Thomas Petazzoni
@ 2015-04-25 14:43 ` Thomas Petazzoni
2015-04-25 20:26 ` Yann E. MORIN
2015-04-25 14:43 ` [Buildroot] [PATCHv3 17/18] packages: refactor checks using BR_BUILDING Thomas Petazzoni
` (2 subsequent siblings)
18 siblings, 1 reply; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-25 14:43 UTC (permalink / raw)
To: buildroot
Some packages do some sanity checks on their configuration, for
example linux checks that the defconfig string is not empty when a
defconfig is used. Such checks are currently always performed, except
when the 'source' target is part of make goals.
This is problematic for two reasons:
- Other targets such as 'source-check', 'external-deps' or
'legal-info', that do not consist in doing a build, cannot be
executed in such situations.
- The current code removes the check as soon as one of the targets is
source. But if there are other non-source targets called at the
same time, the checks are ignored.
This commit therefore introduces an internal variable called
BR_BUILDING, which tells packages if we are actually building or
not. A variable nobuild_targets indicates the targets that we do not
consider as being build targets.
For the moment, nobuild_targets only contains 'source', to be
completely iso-functional.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
Makefile | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/Makefile b/Makefile
index 0ba341b..e0be636 100644
--- a/Makefile
+++ b/Makefile
@@ -77,6 +77,22 @@ noconfig_targets := menuconfig nconfig gconfig xconfig config oldconfig randconf
randpackageconfig allyespackageconfig allnopackageconfig \
print-version olddefconfig
+# Some global targets do not trigger a build, but are used to collect
+# metadata, or do various checks. When such targets are triggered,
+# some packages should not do their configuration sanity
+# checks. Provide them a BR_BUILDING variable set to 'y' when we're
+# actually building and they should do their sanity checks.
+#
+# We're building in two situations: when MAKECMDGOALS is empty
+# (default target is to build), or when MAKECMDGOALS contains
+# something else than one of the nobuild_targets.
+nobuild_targets := source
+ifeq ($(MAKECMDGOALS),)
+BR_BUILDING = y
+else ifneq ($(filter-out $(nobuild_targets),$(MAKECMDGOALS)),)
+BR_BUILDING = y
+endif
+
# Strip quotes and then whitespaces
qstrip = $(strip $(subst ",,$(1)))
#"))
--
2.1.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 17/18] packages: refactor checks using BR_BUILDING
2015-04-25 14:42 [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
` (15 preceding siblings ...)
2015-04-25 14:43 ` [Buildroot] [PATCHv3 16/18] Makefile: add BR_BUILDING variable Thomas Petazzoni
@ 2015-04-25 14:43 ` Thomas Petazzoni
2015-04-25 20:52 ` Yann E. MORIN
2015-04-25 14:43 ` [Buildroot] [PATCHv3 18/18] Makefile: add a few more targets to nobuild_targets Thomas Petazzoni
2015-04-25 14:45 ` [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
18 siblings, 1 reply; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-25 14:43 UTC (permalink / raw)
To: buildroot
Instead of manually testing MAKECMDGOALS, use the newly introduced
BR_BUILDING variable to know if we're building or not.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
boot/at91bootstrap/at91bootstrap.mk | 5 +----
boot/at91bootstrap3/at91bootstrap3.mk | 2 +-
boot/barebox/barebox.mk | 5 +----
boot/uboot/uboot.mk | 13 ++++---------
boot/xloader/xloader.mk | 6 +-----
linux/linux.mk | 2 +-
package/sunxi-boards/sunxi-boards.mk | 4 +---
7 files changed, 10 insertions(+), 27 deletions(-)
diff --git a/boot/at91bootstrap/at91bootstrap.mk b/boot/at91bootstrap/at91bootstrap.mk
index 802e85e..f655058 100644
--- a/boot/at91bootstrap/at91bootstrap.mk
+++ b/boot/at91bootstrap/at91bootstrap.mk
@@ -40,11 +40,8 @@ endef
$(eval $(generic-package))
-ifeq ($(BR2_TARGET_AT91BOOTSTRAP),y)
-# we NEED a board name unless we're at make source
-ifeq ($(filter source,$(MAKECMDGOALS)),)
+ifeq ($(BR2_TARGET_AT91BOOTSTRAP)$(BR_BUILDING),yy)
ifeq ($(AT91BOOTSTRAP_BOARD),)
$(error No AT91Bootstrap board name set. Check your BR2_TARGET_AT91BOOTSTRAP_BOARD setting)
endif
endif
-endif
diff --git a/boot/at91bootstrap3/at91bootstrap3.mk b/boot/at91bootstrap3/at91bootstrap3.mk
index 3e3b78e..ff49e14 100644
--- a/boot/at91bootstrap3/at91bootstrap3.mk
+++ b/boot/at91bootstrap3/at91bootstrap3.mk
@@ -43,7 +43,7 @@ AT91BOOTSTRAP3_KCONFIG_OPTS = $(AT91BOOTSTRAP3_MAKE_OPTS)
$(eval $(kconfig-package))
# Checks to give errors that the user can understand
-ifeq ($(filter source,$(MAKECMDGOALS)),)
+ifeq ($(BR_BUILDING),y)
ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG),y)
ifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG)),)
$(error No at91bootstrap3 defconfig name specified, check your BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG setting)
diff --git a/boot/barebox/barebox.mk b/boot/barebox/barebox.mk
index 98cb04e..54f52bb 100644
--- a/boot/barebox/barebox.mk
+++ b/boot/barebox/barebox.mk
@@ -106,11 +106,8 @@ endif
$(eval $(kconfig-package))
-ifeq ($(BR2_TARGET_BAREBOX),y)
-# we NEED a board defconfig file unless we're at make source
-ifeq ($(filter source,$(MAKECMDGOALS)),)
+ifeq ($(BR2_TARGET_BAREBOX)$(BR_BUILDING),yy)
ifeq ($(BAREBOX_SOURCE_CONFIG),)
$(error No Barebox config file. Check your BR2_TARGET_BAREBOX_BOARD_DEFCONFIG or BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE settings)
endif
endif
-endif
diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk
index 1526177..01aaf2c 100644
--- a/boot/uboot/uboot.mk
+++ b/boot/uboot/uboot.mk
@@ -164,8 +164,7 @@ define UBOOT_INSTALL_OMAP_IFT_IMAGE
endef
ifeq ($(BR2_TARGET_UBOOT_OMAP_IFT),y)
-# we NEED a config file unless we're at make source
-ifeq ($(filter source,$(MAKECMDGOALS)),)
+ifeq ($(BR_BUILDING),y)
ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_OMAP_IFT_CONFIG)),)
$(error No gpsign config file. Check your BR2_TARGET_UBOOT_OMAP_IFT_CONFIG setting)
endif
@@ -179,8 +178,7 @@ UBOOT_POST_INSTALL_IMAGES_HOOKS += UBOOT_INSTALL_OMAP_IFT_IMAGE
endif
ifeq ($(BR2_TARGET_UBOOT_ENVIMAGE),y)
-# we NEED a environment settings unless we're at make source
-ifeq ($(filter source,$(MAKECMDGOALS)),)
+ifeq ($(BR_BUILDING),y)
ifeq ($(call qstrip,$(BR2_TARGET_UBOOT_ENVIMAGE_SOURCE)),)
$(error Please define a source file for Uboot environment (BR2_TARGET_UBOOT_ENVIMAGE_SOURCE setting))
endif
@@ -193,9 +191,7 @@ endif
$(eval $(generic-package))
-ifeq ($(BR2_TARGET_UBOOT),y)
-# we NEED a board name unless we're at make source
-ifeq ($(filter source,$(MAKECMDGOALS)),)
+ifeq ($(BR2_TARGET_UBOOT)$(BR_BUILDING),yy)
ifeq ($(UBOOT_BOARD_NAME),)
$(error No U-Boot board name set. Check your BR2_TARGET_UBOOT_BOARDNAME setting)
endif
@@ -221,5 +217,4 @@ $(error No custom U-Boot repository URL specified. Check your BR2_TARGET_UBOOT_C
endif # qstrip BR2_TARGET_UBOOT_CUSTOM_CUSTOM_REPO_VERSION
endif # BR2_TARGET_UBOOT_CUSTOM_GIT || BR2_TARGET_UBOOT_CUSTOM_HG
-endif # filter source
-endif # BR2_TARGET_UBOOT
+endif # BR2_TARGET_UBOOT && BR_BUILDING
diff --git a/boot/xloader/xloader.mk b/boot/xloader/xloader.mk
index 90d5fa2..a07a190 100644
--- a/boot/xloader/xloader.mk
+++ b/boot/xloader/xloader.mk
@@ -25,12 +25,8 @@ endef
$(eval $(generic-package))
-ifeq ($(BR2_TARGET_XLOADER),y)
-# we NEED a board name unless we're at make source
-ifeq ($(filter source,$(MAKECMDGOALS)),)
+ifeq ($(BR2_TARGET_XLOADER)$(BR_BUILDING),y)
ifeq ($(XLOADER_BOARD_NAME),)
$(error NO x-loader board name set. Check your BR2_BOOT_XLOADER_BOARDNAME setting)
endif
endif
-
-endif
diff --git a/linux/linux.mk b/linux/linux.mk
index deed073..0c348da 100644
--- a/linux/linux.mk
+++ b/linux/linux.mk
@@ -354,7 +354,7 @@ $(LINUX_DIR)/.stamp_initramfs_rebuilt: $(LINUX_DIR)/.stamp_target_installed $(LI
linux-rebuild-with-initramfs: $(LINUX_DIR)/.stamp_initramfs_rebuilt
# Checks to give errors that the user can understand
-ifeq ($(filter source,$(MAKECMDGOALS)),)
+ifeq ($(BR_BUILDING),y)
ifeq ($(BR2_LINUX_KERNEL_USE_DEFCONFIG),y)
ifeq ($(call qstrip,$(BR2_LINUX_KERNEL_DEFCONFIG)),)
$(error No kernel defconfig name specified, check your BR2_LINUX_KERNEL_DEFCONFIG setting)
diff --git a/package/sunxi-boards/sunxi-boards.mk b/package/sunxi-boards/sunxi-boards.mk
index 1a2bb4c..cacf824 100644
--- a/package/sunxi-boards/sunxi-boards.mk
+++ b/package/sunxi-boards/sunxi-boards.mk
@@ -16,13 +16,11 @@ define SUNXI_BOARDS_INSTALL_IMAGES_CMDS
$(BINARIES_DIR)/script.bin
endef
-ifeq ($(BR2_PACKAGE_SUNXI_BOARDS),y)
+ifeq ($(BR2_PACKAGE_SUNXI_BOARDS)$(BR_BUILDING),yy)
# we NEED a board name
-ifeq ($(filter source,$(MAKECMDGOALS)),)
ifeq ($(SUNXI_BOARDS_FEX_FILE),)
$(error No sunxi .fex file specified. Check your BR2_PACKAGE_SUNXI_BOARDS_FEX_FILE settings)
endif
endif
-endif
$(eval $(generic-package))
--
2.1.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 18/18] Makefile: add a few more targets to nobuild_targets
2015-04-25 14:42 [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
` (16 preceding siblings ...)
2015-04-25 14:43 ` [Buildroot] [PATCHv3 17/18] packages: refactor checks using BR_BUILDING Thomas Petazzoni
@ 2015-04-25 14:43 ` Thomas Petazzoni
2015-04-25 14:45 ` [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
18 siblings, 0 replies; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-25 14:43 UTC (permalink / raw)
To: buildroot
With this commit, one can now execute the source-check, external-deps
and legal-info targets regardless of the checks normally being done by
packages on the configuration.
Note that we intentionally do not go down the road of adding %-source,
%-legal-info, and the miryad of other targets that could work in such
situations. We only whitelist a few targets that are really useful to
have as nobuild_targets.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index e0be636..2d7c05a 100644
--- a/Makefile
+++ b/Makefile
@@ -86,7 +86,7 @@ noconfig_targets := menuconfig nconfig gconfig xconfig config oldconfig randconf
# We're building in two situations: when MAKECMDGOALS is empty
# (default target is to build), or when MAKECMDGOALS contains
# something else than one of the nobuild_targets.
-nobuild_targets := source
+nobuild_targets := source source-check legal-info external-deps _external-deps
ifeq ($(MAKECMDGOALS),)
BR_BUILDING = y
else ifneq ($(filter-out $(nobuild_targets),$(MAKECMDGOALS)),)
--
2.1.0
^ permalink raw reply related [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps'
2015-04-25 14:42 [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
` (17 preceding siblings ...)
2015-04-25 14:43 ` [Buildroot] [PATCHv3 18/18] Makefile: add a few more targets to nobuild_targets Thomas Petazzoni
@ 2015-04-25 14:45 ` Thomas Petazzoni
18 siblings, 0 replies; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-25 14:45 UTC (permalink / raw)
To: buildroot
Hello,
On Sat, 25 Apr 2015 16:42:44 +0200, Thomas Petazzoni wrote:
> This is a new iteration of the "Package based 'source', 'legal-info',
> 'source-check' and 'external-deps'" series.
If someone wants to test this series, I've pushed it at:
http://git.free-electrons.com/users/thomas-petazzoni/buildroot/log/?h=pkg-based-deps-v3
Thanks,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 01/18] fs: only add non rootfs- targets to PACKAGES
2015-04-25 14:42 ` [Buildroot] [PATCHv3 01/18] fs: only add non rootfs- targets to PACKAGES Thomas Petazzoni
@ 2015-04-25 16:36 ` Yann E. MORIN
0 siblings, 0 replies; 46+ messages in thread
From: Yann E. MORIN @ 2015-04-25 16:36 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2015-04-25 16:42 +0200, Thomas Petazzoni spake thusly:
> Commit 4570dbcb14b394d8f3c97baf4c9e5f4f225d1d37
> ("4570dbcb14b394d8f3c97baf4c9e5f4f225d1d37") added the dependencies of
> rootfs building logic to PACKAGES, only thinking about the case where
> rootfs building logic actually depends on real, normal packages
> (host-mtd, host-genext2fs, etc.). But some file systems (rootfs-ubi)
> depend on other filesystem images (rootfs-ubifs). And such targets
> should not be added to PACKAGES, other an incorrect circular
^^^^^
*otherwise
> dependency is created.
>
> This commit fixes that by only adding the rootfs building logic
> dependencies that do *not* start with rootfs- to the global PACKAGES
> variable.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Except for that:
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Regards,
Yann E. MORIN.
> ---
> fs/common.mk | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/common.mk b/fs/common.mk
> index 41ee86d..4387d06 100644
> --- a/fs/common.mk
> +++ b/fs/common.mk
> @@ -106,7 +106,7 @@ rootfs-$(1): $$(BINARIES_DIR)/rootfs.$(1) $$(ROOTFS_$(2)_POST_TARGETS)
>
> ifeq ($$(BR2_TARGET_ROOTFS_$(2)),y)
> TARGETS_ROOTFS += rootfs-$(1)
> -PACKAGES += $$(ROOTFS_$(2)_DEPENDENCIES)
> +PACKAGES += $$(filter-out rootfs-%,$$(ROOTFS_$(2)_DEPENDENCIES))
> endif
> endef
>
> --
> 2.1.0
>
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 02/18] pkg-generic: take into account patch dependencies in source, external-deps and legal-info
2015-04-25 14:42 ` [Buildroot] [PATCHv3 02/18] pkg-generic: take into account patch dependencies in source, external-deps and legal-info Thomas Petazzoni
@ 2015-04-25 16:41 ` Yann E. MORIN
2015-04-26 9:38 ` Thomas Petazzoni
0 siblings, 1 reply; 46+ messages in thread
From: Yann E. MORIN @ 2015-04-25 16:41 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2015-04-25 16:42 +0200, Thomas Petazzoni spake thusly:
> The $(1)-all-{source,external-deps,legal-info} targets currently only
> take care of the dependencies in <pkg>_DEPENDENCIES, but not
> <pkg>_PATCH_DEPENDENCIES. This patch fixes that.
>
> Long term, we might want to refactor this to have a single variable
> containing all dependencies. But this requires more work in
> pkg-generic than we want to do at the moment.
Well, you can still introduce $(2)_FINAL_ALL_DEPENDENCIES. That would
make the code reall much more readable.
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> ---
> package/pkg-generic.mk | 19 ++++++++++++++-----
> 1 file changed, 14 insertions(+), 5 deletions(-)
>
> diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
> index 455bdf1..de63f2f 100644
> --- a/package/pkg-generic.mk
> +++ b/package/pkg-generic.mk
> @@ -592,11 +592,20 @@ $(1)-graph-depends: graph-depends-requirements
> |tee $$(GRAPHS_DIR)/$$(@).dot \
> |dot $$(BR2_GRAPH_DOT_OPTS) -T$$(BR_GRAPH_OUT) -o $$(GRAPHS_DIR)/$$(@).$$(BR_GRAPH_OUT)
>
> -$(1)-all-source: $$(foreach p,$$($(2)_FINAL_DEPENDENCIES),$$(p)-all-source) $(1)-source
> -
> -$(1)-all-external-deps: $$(foreach p,$$($(2)_FINAL_DEPENDENCIES),$$(p)-all-external-deps) $(1)-external-deps
> -
> -$(1)-all-legal-info: $$(foreach p,$$($(2)_FINAL_DEPENDENCIES),$$(p)-all-legal-info) $(1)-legal-info
> +$(1)-all-source: $$(foreach p, \
> + $$($(2)_FINAL_DEPENDENCIES) $$($(2)_FINAL_PATCH_DEPENDENCIES), \
> + $$(p)-all-source) \
> + $(1)-source
Well, that's really unreadable. What about:
$(1)-all-source: $(1)-source
$(1)-all-source: $$(foreach p,$$($(2)_FINAL_ALL_DEPENDENCIES),$$(p)-all-source)
Of course that require _FINAL_ALL_DEPENDENCIEs, but I guess the cost is
worth the gain.
Ditto for the others, of course.
Regards,
Yann E. MORIN.
> +$(1)-all-external-deps: $$(foreach p, \
> + $$($(2)_FINAL_DEPENDENCIES) $$($(2)_FINAL_PATCH_DEPENDENCIES), \
> + $$(p)-all-external-deps) \
> + $(1)-external-deps
> +
> +$(1)-all-legal-info: $$(foreach p, \
> + $$($(2)_FINAL_DEPENDENCIES) $$($(2)_FINAL_PATCH_DEPENDENCIES), \
> + $$(p)-all-legal-info) \
> + $(1)-legal-info
>
> $(1)-dirclean: $$($(2)_TARGET_DIRCLEAN)
>
> --
> 2.1.0
>
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 06/18] pkg-download: extend DOWNLOAD_INNER, add a SOURCE_CHECK macro
2015-04-25 14:42 ` [Buildroot] [PATCHv3 06/18] pkg-download: extend DOWNLOAD_INNER, add a SOURCE_CHECK macro Thomas Petazzoni
@ 2015-04-25 17:15 ` Yann E. MORIN
0 siblings, 0 replies; 46+ messages in thread
From: Yann E. MORIN @ 2015-04-25 17:15 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2015-04-25 16:42 +0200, Thomas Petazzoni spake thusly:
> As part of moving to a package infrastructure based source-check
> implementation, we are going to move away from the global DL_MODE
> variable to select the behavior of the DOWNLOAD_INNER macro.
>
> As a preparation to this, this commit makes the DOWNLOAD_INNER macro
> take a third argument, which is the action to be done: either DOWNLOAD
> or SOURCE_CHECK. For now, the DOWNLOAD macro passes $(DL_MODE) as this
> third argument, in order to keep the existing behavior.
>
> In addition, a SOURCE_CHECK macro is added, which calls DOWNLOAD_INNER
> with the appropriate action. This macro will be used in the upcoming
> package infra based implementation of source-check.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
> [tested by doing a "make source" on a randpackageconfig]
> Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Superfluous SoB-line.
Regards,
Yann E. MORIN.
> ---
> package/pkg-download.mk | 28 ++++++++++++++++------------
> 1 file changed, 16 insertions(+), 12 deletions(-)
>
> diff --git a/package/pkg-download.mk b/package/pkg-download.mk
> index eee9e59..76afced 100644
> --- a/package/pkg-download.mk
> +++ b/package/pkg-download.mk
> @@ -212,14 +212,18 @@ endef
> ################################################################################
>
> define DOWNLOAD
> - $(call DOWNLOAD_INNER,$(1),$(notdir $(1)))
> + $(call DOWNLOAD_INNER,$(1),$(notdir $(1)),$(DL_MODE))
> +endef
> +
> +define SOURCE_CHECK
> + $(call DOWNLOAD_INNER,$(1),$(notdir $(1)),SOURCE_CHECK)
> endef
>
> define DOWNLOAD_INNER
> $(Q)if test -n "$(call qstrip,$(BR2_PRIMARY_SITE))" ; then \
> case "$(call geturischeme,$(BR2_PRIMARY_SITE))" in \
> - scp) $(call $(DL_MODE)_SCP,$(BR2_PRIMARY_SITE)/$(2),$(2)) && exit ;; \
> - *) $(call $(DL_MODE)_WGET,$(BR2_PRIMARY_SITE)/$(2),$(2)) && exit ;; \
> + scp) $(call $(3)_SCP,$(BR2_PRIMARY_SITE)/$(2),$(2)) && exit ;; \
> + *) $(call $(3)_WGET,$(BR2_PRIMARY_SITE)/$(2),$(2)) && exit ;; \
> esac ; \
> fi ; \
> if test "$(BR2_PRIMARY_SITE_ONLY)" = "y" ; then \
> @@ -232,18 +236,18 @@ define DOWNLOAD_INNER
> scheme="$($(PKG)_SITE_METHOD)" ; \
> fi ; \
> case "$$scheme" in \
> - git) $($(DL_MODE)_GIT) && exit ;; \
> - svn) $($(DL_MODE)_SVN) && exit ;; \
> - cvs) $($(DL_MODE)_CVS) && exit ;; \
> - bzr) $($(DL_MODE)_BZR) && exit ;; \
> - file) $($(DL_MODE)_LOCALFILES) && exit ;; \
> - scp) $($(DL_MODE)_SCP) && exit ;; \
> - hg) $($(DL_MODE)_HG) && exit ;; \
> - *) $(call $(DL_MODE)_WGET,$(1),$(2)) && exit ;; \
> + git) $($(3)_GIT) && exit ;; \
> + svn) $($(3)_SVN) && exit ;; \
> + cvs) $($(3)_CVS) && exit ;; \
> + bzr) $($(3)_BZR) && exit ;; \
> + file) $($(3)_LOCALFILES) && exit ;; \
> + scp) $($(3)_SCP) && exit ;; \
> + hg) $($(3)_HG) && exit ;; \
> + *) $(call $(3)_WGET,$(1),$(2)) && exit ;; \
> esac ; \
> fi ; \
> if test -n "$(call qstrip,$(BR2_BACKUP_SITE))" ; then \
> - $(call $(DL_MODE)_WGET,$(BR2_BACKUP_SITE)/$(2),$(2)) && exit ; \
> + $(call $(3)_WGET,$(BR2_BACKUP_SITE)/$(2),$(2)) && exit ; \
> fi ; \
> exit 1
> endef
> --
> 2.1.0
>
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 07/18] pkg-generic: implement source-check targets
2015-04-25 14:42 ` [Buildroot] [PATCHv3 07/18] pkg-generic: implement source-check targets Thomas Petazzoni
@ 2015-04-25 17:28 ` Yann E. MORIN
2015-04-26 9:39 ` Thomas Petazzoni
0 siblings, 1 reply; 46+ messages in thread
From: Yann E. MORIN @ 2015-04-25 17:28 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2015-04-25 16:42 +0200, Thomas Petazzoni spake thusly:
> This commits extends the common package infrastructure with the
> $(1)-source-check and $(1)-all-source-check targets.
>
> The $(1)-source-check target simply calls the newly added
> SOURCE_CHECK macro on all items to be downloaded.
>
> The $(1)-all-source-check target will depend on the
> $(1)-all-source-check targets of all dependent packages and the
> $(1)-source-check target of the current package, which allows to do a
> recursive source-check in the dependency tree.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
To be noted: packages hosted at github, when we download a released
tarball, are broken, because the backing-store is AWS, which does not
support the HEAD request. But that is not a change due to this patch, it
was already broken previously.
> ---
> package/pkg-generic.mk | 19 ++++++++++++++++++-
> 1 file changed, 18 insertions(+), 1 deletion(-)
>
> diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
> index a12b868..5a9bcf1 100644
> --- a/package/pkg-generic.mk
> +++ b/package/pkg-generic.mk
> @@ -579,6 +579,16 @@ endif
> $(1)-show-version:
> @echo $$($(2)_VERSION)
>
> +$(1)-source-check:
> +ifeq ($$($(2)_OVERRIDE_SRCDIR),)
> + $$(foreach p,$$($(2)_SOURCE) $$($(2)_EXTRA_DOWNLOADS) $$($(2)_PATCH),\
> + $$(if $$(findstring ://,$$(p)),\
> + $$(call SOURCE_CHECK,$$(p)),\
> + $$(call SOURCE_CHECK,$$($(2)_SITE:/=)/$$(p)))$$(sep))
> +else
> + test -d $$($(2)_OVERRIDE_SRCDIR)
> +endif
> +
> $(1)-show-depends:
> @echo $$(sort $$($(2)_FINAL_DEPENDENCIES) $$($(2)_FINAL_PATCH_DEPENDENCIES))
>
> @@ -594,6 +604,11 @@ $(1)-all-source: $$(foreach p, \
> $$(p)-all-source) \
> $(1)-source
>
> +$(1)-all-source-check: $$(foreach p, \
> + $$($(2)_FINAL_DEPENDENCIES) $$($(2)_FINAL_PATCH_DEPENDENCIES), \
> + $$(p)-all-source-check) \
> + $(1)-source-check
If you do the little trick I mentioned as a comment to your patch 2,
you'd have to do it here, too.
That would make it mor ereadable.
Regards,
Yann E. MORIN.
> $(1)-all-external-deps: $$(foreach p, \
> $$($(2)_FINAL_DEPENDENCIES) $$($(2)_FINAL_PATCH_DEPENDENCIES), \
> $$(p)-all-external-deps) \
> @@ -793,6 +808,7 @@ endif
> $(1)-all-external-deps \
> $(1)-all-legal-info \
> $(1)-all-source \
> + $(1)-all-source-check \
> $(1)-build \
> $(1)-clean-for-rebuild \
> $(1)-clean-for-reconfigure \
> @@ -816,7 +832,8 @@ endif
> $(1)-rsync \
> $(1)-show-depends \
> $(1)-show-version \
> - $(1)-source
> + $(1)-source \
> + $(1)-source-check
>
> endif # $(2)_KCONFIG_VAR
> endef # inner-generic-package
> --
> 2.1.0
>
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 09/18] pkg-generic: remove the .stamp_rsync_sourced fake stamp file
2015-04-25 14:42 ` [Buildroot] [PATCHv3 09/18] pkg-generic: remove the .stamp_rsync_sourced fake stamp file Thomas Petazzoni
@ 2015-04-25 17:33 ` Yann E. MORIN
2015-04-25 17:49 ` Thomas Petazzoni
2015-04-25 17:53 ` Yann E. MORIN
1 sibling, 1 reply; 46+ messages in thread
From: Yann E. MORIN @ 2015-04-25 17:33 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2015-04-25 16:42 +0200, Thomas Petazzoni spake thusly:
> The only reason for the .stamp_rsync_sourced fake stamp file target to
> exist was to handle the SOURCE_CHECK operation on packages using the
> OVERRIDE_SRCDIR mechanism. Now that this is handled directly inside
> $(1)-source-check, there is no longer any need for this part of the
> code.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
> Tested-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
> ---
> package/pkg-generic.mk | 13 +------------
> 1 file changed, 1 insertion(+), 12 deletions(-)
>
> diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
> index 5a9bcf1..05831d4 100644
> --- a/package/pkg-generic.mk
> +++ b/package/pkg-generic.mk
[--SNIP--]
> @@ -570,7 +561,7 @@ $(1)-extract: $(1)-rsync
>
> $(1)-rsync: $$($(2)_TARGET_RSYNC)
>
> -$(1)-source: $$($(2)_TARGET_RSYNC_SOURCE)
> +$(1)-source:
The reason that line existed was to be able to define a dependency on
the stamp file. There is now no reason to keep this line at all; all you
have above is declaring a make goal without dependency or rule, so it
is entirely useless.
Just get rid of the line altogether.
Regards,
Yann E. MORIN.
> $(1)-external-deps:
> @echo "file://$$($(2)_OVERRIDE_SRCDIR)"
> @@ -652,8 +643,6 @@ $$($(2)_TARGET_BUILD): PKG=$(2)
> $$($(2)_TARGET_CONFIGURE): PKG=$(2)
> $$($(2)_TARGET_RSYNC): SRCDIR=$$($(2)_OVERRIDE_SRCDIR)
> $$($(2)_TARGET_RSYNC): PKG=$(2)
> -$$($(2)_TARGET_RSYNC_SOURCE): SRCDIR=$$($(2)_OVERRIDE_SRCDIR)
> -$$($(2)_TARGET_RSYNC_SOURCE): PKG=$(2)
> $$($(2)_TARGET_PATCH): PKG=$(2)
> $$($(2)_TARGET_PATCH): RAWNAME=$$(patsubst host-%,%,$(1))
> $$($(2)_TARGET_PATCH): PKGDIR=$(pkgdir)
> --
> 2.1.0
>
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 10/18] pkg-generic: don't use DL_MODE in .stamp_downloaded
2015-04-25 14:42 ` [Buildroot] [PATCHv3 10/18] pkg-generic: don't use DL_MODE in .stamp_downloaded Thomas Petazzoni
@ 2015-04-25 17:34 ` Yann E. MORIN
0 siblings, 0 replies; 46+ messages in thread
From: Yann E. MORIN @ 2015-04-25 17:34 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2015-04-25 16:42 +0200, Thomas Petazzoni spake thusly:
> The .stamp_downloaded target is now only being used to really
> download, and no longer for other activities like "source check" or
> "external deps". So the check on DL_MODE being equal to DOWNLOAD is no
> longer necessary.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Tested-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
> Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Regards,
Yann E. MORIN.
> ---
> package/pkg-generic.mk | 4 ----
> 1 file changed, 4 deletions(-)
>
> diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
> index 05831d4..cb901ae 100644
> --- a/package/pkg-generic.mk
> +++ b/package/pkg-generic.mk
> @@ -71,7 +71,6 @@ endif
> # Retrieve the archive
> $(BUILD_DIR)/%/.stamp_downloaded:
> $(foreach hook,$($(PKG)_PRE_DOWNLOAD_HOOKS),$(call $(hook))$(sep))
> -ifeq ($(DL_MODE),DOWNLOAD)
> # Only show the download message if it isn't already downloaded
> $(Q)for p in $($(PKG)_SOURCE) $($(PKG)_PATCH) $($(PKG)_EXTRA_DOWNLOADS) ; do \
> if test ! -e $(DL_DIR)/`basename $$p` ; then \
> @@ -79,7 +78,6 @@ ifeq ($(DL_MODE),DOWNLOAD)
> break ; \
> fi ; \
> done
> -endif
> $(if $($(PKG)_SOURCE),$(call DOWNLOAD,$($(PKG)_SITE:/=)/$($(PKG)_SOURCE)))
> $(foreach p,$($(PKG)_EXTRA_DOWNLOADS),\
> $(if $(findstring ://,$(p)),\
> @@ -94,10 +92,8 @@ endif
> )\
> $(sep))
> $(foreach hook,$($(PKG)_POST_DOWNLOAD_HOOKS),$(call $(hook))$(sep))
> -ifeq ($(DL_MODE),DOWNLOAD)
> $(Q)mkdir -p $(@D)
> $(Q)touch $@
> -endif
>
> # Unpack the archive
> $(BUILD_DIR)/%/.stamp_extracted:
> --
> 2.1.0
>
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 11/18] pkg-download: get rid of DL_MODE
2015-04-25 14:42 ` [Buildroot] [PATCHv3 11/18] pkg-download: get rid of DL_MODE Thomas Petazzoni
@ 2015-04-25 17:35 ` Yann E. MORIN
0 siblings, 0 replies; 46+ messages in thread
From: Yann E. MORIN @ 2015-04-25 17:35 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2015-04-25 16:42 +0200, Thomas Petazzoni spake thusly:
> The DL_MODE variable is now no longer used with any other value than
> "DOWNLOAD", so it no longer makes sense to have this variable at
> all. Therefore, this commit gets rid of it.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
> Tested-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Regards,
Yann E. MORIN.
> ---
> package/pkg-download.mk | 6 +-----
> 1 file changed, 1 insertion(+), 5 deletions(-)
>
> diff --git a/package/pkg-download.mk b/package/pkg-download.mk
> index 76afced..a145011 100644
> --- a/package/pkg-download.mk
> +++ b/package/pkg-download.mk
> @@ -20,10 +20,6 @@ export LOCALFILES := $(call qstrip,$(BR2_LOCALFILES))
>
> DL_WRAPPER = support/download/dl-wrapper
>
> -# Default spider mode is 'DOWNLOAD'. Other possible value is
> -# 'SOURCE_CHECK' used by the _source-check target.
> -DL_MODE = DOWNLOAD
> -
> # DL_DIR may have been set already from the environment
> ifeq ($(origin DL_DIR),undefined)
> DL_DIR ?= $(call qstrip,$(BR2_DL_DIR))
> @@ -212,7 +208,7 @@ endef
> ################################################################################
>
> define DOWNLOAD
> - $(call DOWNLOAD_INNER,$(1),$(notdir $(1)),$(DL_MODE))
> + $(call DOWNLOAD_INNER,$(1),$(notdir $(1)),DOWNLOAD)
> endef
>
> define SOURCE_CHECK
> --
> 2.1.0
>
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 12/18] pkg-download: fix indentation for SOURCE_CHECK_* macros
2015-04-25 14:42 ` [Buildroot] [PATCHv3 12/18] pkg-download: fix indentation for SOURCE_CHECK_* macros Thomas Petazzoni
@ 2015-04-25 17:37 ` Yann E. MORIN
0 siblings, 0 replies; 46+ messages in thread
From: Yann E. MORIN @ 2015-04-25 17:37 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2015-04-25 16:42 +0200, Thomas Petazzoni spake thusly:
> Some of the SOURCE_CHECK_* macros are using a non-standard two-spaces
> indentation. This commit switches them to use a single tab based
> indentation, like in the rest of Buildroot.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
> Tested-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
> [with git show -w]
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Superfluous SoB line. ;-)
Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Regards,
Yann E. MORIN.
> ---
> package/pkg-download.mk | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/package/pkg-download.mk b/package/pkg-download.mk
> index a145011..a38062e 100644
> --- a/package/pkg-download.mk
> +++ b/package/pkg-download.mk
> @@ -90,7 +90,7 @@ endef
> # TODO: improve to check that the given PKG_DL_VERSION exists on the remote
> # repository
> define SOURCE_CHECK_GIT
> - $(GIT) ls-remote --heads $($(PKG)_SITE) > /dev/null
> + $(GIT) ls-remote --heads $($(PKG)_SITE) > /dev/null
> endef
>
> define DOWNLOAD_BZR
> @@ -134,7 +134,7 @@ define DOWNLOAD_SVN
> endef
>
> define SOURCE_CHECK_SVN
> - $(SVN) ls $($(PKG)_SITE)@$($(PKG)_DL_VERSION) > /dev/null
> + $(SVN) ls $($(PKG)_SITE)@$($(PKG)_DL_VERSION) > /dev/null
> endef
>
> # SCP URIs should be of the form scp://[user@]host:filepath
> @@ -166,7 +166,7 @@ endef
> # TODO: improve to check that the given PKG_DL_VERSION exists on the remote
> # repository
> define SOURCE_CHECK_HG
> - $(HG) incoming --force -l1 $($(PKG)_SITE) > /dev/null
> + $(HG) incoming --force -l1 $($(PKG)_SITE) > /dev/null
> endef
>
> define DOWNLOAD_WGET
> @@ -179,7 +179,7 @@ define DOWNLOAD_WGET
> endef
>
> define SOURCE_CHECK_WGET
> - $(WGET) --spider '$(call qstrip,$(1))'
> + $(WGET) --spider '$(call qstrip,$(1))'
> endef
>
> define DOWNLOAD_LOCALFILES
> @@ -192,7 +192,7 @@ define DOWNLOAD_LOCALFILES
> endef
>
> define SOURCE_CHECK_LOCALFILES
> - test -e $(call stripurischeme,$(call qstrip,$(1)))
> + test -e $(call stripurischeme,$(call qstrip,$(1)))
> endef
>
> ################################################################################
> --
> 2.1.0
>
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 09/18] pkg-generic: remove the .stamp_rsync_sourced fake stamp file
2015-04-25 17:33 ` Yann E. MORIN
@ 2015-04-25 17:49 ` Thomas Petazzoni
2015-04-25 17:52 ` Yann E. MORIN
2015-04-28 20:13 ` Arnout Vandecappelle
0 siblings, 2 replies; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-25 17:49 UTC (permalink / raw)
To: buildroot
Dear Yann E. MORIN,
On Sat, 25 Apr 2015 19:33:03 +0200, Yann E. MORIN wrote:
> > -$(1)-source: $$($(2)_TARGET_RSYNC_SOURCE)
> > +$(1)-source:
>
> The reason that line existed was to be able to define a dependency on
> the stamp file. There is now no reason to keep this line at all; all you
> have above is declaring a make goal without dependency or rule, so it
> is entirely useless.
I don't think a target with no dependencies or rules is useless. It can
be useful to not have an error when this target is triggered.
When you are going to do a 'make source', it will do a 'make
$(1)-source' on all packages, including the ones that have
<pkg>_OVERRIDE_SRCDIR. So there must be a $(1)-source target, even if
it doesn't do anything.
Am I missing something?
Thanks,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 09/18] pkg-generic: remove the .stamp_rsync_sourced fake stamp file
2015-04-25 17:49 ` Thomas Petazzoni
@ 2015-04-25 17:52 ` Yann E. MORIN
2015-04-28 20:13 ` Arnout Vandecappelle
1 sibling, 0 replies; 46+ messages in thread
From: Yann E. MORIN @ 2015-04-25 17:52 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2015-04-25 19:49 +0200, Thomas Petazzoni spake thusly:
> On Sat, 25 Apr 2015 19:33:03 +0200, Yann E. MORIN wrote:
>
> > > -$(1)-source: $$($(2)_TARGET_RSYNC_SOURCE)
> > > +$(1)-source:
> >
> > The reason that line existed was to be able to define a dependency on
> > the stamp file. There is now no reason to keep this line at all; all you
> > have above is declaring a make goal without dependency or rule, so it
> > is entirely useless.
>
> I don't think a target with no dependencies or rules is useless. It can
> be useful to not have an error when this target is triggered.
>
> When you are going to do a 'make source', it will do a 'make
> $(1)-source' on all packages, including the ones that have
> <pkg>_OVERRIDE_SRCDIR. So there must be a $(1)-source target, even if
> it doesn't do anything.
Argh, indeed.
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 09/18] pkg-generic: remove the .stamp_rsync_sourced fake stamp file
2015-04-25 14:42 ` [Buildroot] [PATCHv3 09/18] pkg-generic: remove the .stamp_rsync_sourced fake stamp file Thomas Petazzoni
2015-04-25 17:33 ` Yann E. MORIN
@ 2015-04-25 17:53 ` Yann E. MORIN
1 sibling, 0 replies; 46+ messages in thread
From: Yann E. MORIN @ 2015-04-25 17:53 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2015-04-25 16:42 +0200, Thomas Petazzoni spake thusly:
> The only reason for the .stamp_rsync_sourced fake stamp file target to
> exist was to handle the SOURCE_CHECK operation on packages using the
> OVERRIDE_SRCDIR mechanism. Now that this is handled directly inside
> $(1)-source-check, there is no longer any need for this part of the
> code.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
> Tested-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Regards,
Yann E. MORIN.
> ---
> package/pkg-generic.mk | 13 +------------
> 1 file changed, 1 insertion(+), 12 deletions(-)
>
> diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
> index 5a9bcf1..05831d4 100644
> --- a/package/pkg-generic.mk
> +++ b/package/pkg-generic.mk
> @@ -122,14 +122,6 @@ $(BUILD_DIR)/%/.stamp_rsynced:
> $(foreach hook,$($(PKG)_POST_RSYNC_HOOKS),$(call $(hook))$(sep))
> $(Q)touch $@
>
> -# Handle the SOURCE_CHECK case for rsynced packages
> -$(BUILD_DIR)/%/.stamp_rsync_sourced:
> -ifeq ($(DL_MODE),SOURCE_CHECK)
> - test -d $(SRCDIR)
> -else
> - @true # Nothing to do to source a local package
> -endif
> -
> # Patch
> #
> # The RAWNAME variable is the lowercased package name, which allows to
> @@ -441,7 +433,6 @@ $(2)_TARGET_INSTALL_HOST = $$($(2)_DIR)/.stamp_host_installed
> $(2)_TARGET_BUILD = $$($(2)_DIR)/.stamp_built
> $(2)_TARGET_CONFIGURE = $$($(2)_DIR)/.stamp_configured
> $(2)_TARGET_RSYNC = $$($(2)_DIR)/.stamp_rsynced
> -$(2)_TARGET_RSYNC_SOURCE = $$($(2)_DIR)/.stamp_rsync_sourced
> $(2)_TARGET_PATCH = $$($(2)_DIR)/.stamp_patched
> $(2)_TARGET_EXTRACT = $$($(2)_DIR)/.stamp_extracted
> $(2)_TARGET_SOURCE = $$($(2)_DIR)/.stamp_downloaded
> @@ -570,7 +561,7 @@ $(1)-extract: $(1)-rsync
>
> $(1)-rsync: $$($(2)_TARGET_RSYNC)
>
> -$(1)-source: $$($(2)_TARGET_RSYNC_SOURCE)
> +$(1)-source:
>
> $(1)-external-deps:
> @echo "file://$$($(2)_OVERRIDE_SRCDIR)"
> @@ -652,8 +643,6 @@ $$($(2)_TARGET_BUILD): PKG=$(2)
> $$($(2)_TARGET_CONFIGURE): PKG=$(2)
> $$($(2)_TARGET_RSYNC): SRCDIR=$$($(2)_OVERRIDE_SRCDIR)
> $$($(2)_TARGET_RSYNC): PKG=$(2)
> -$$($(2)_TARGET_RSYNC_SOURCE): SRCDIR=$$($(2)_OVERRIDE_SRCDIR)
> -$$($(2)_TARGET_RSYNC_SOURCE): PKG=$(2)
> $$($(2)_TARGET_PATCH): PKG=$(2)
> $$($(2)_TARGET_PATCH): RAWNAME=$$(patsubst host-%,%,$(1))
> $$($(2)_TARGET_PATCH): PKGDIR=$(pkgdir)
> --
> 2.1.0
>
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 13/18] pkg-generic: introduce a <pkg>_ALL_DOWNLOADS variable and factorize code
2015-04-25 14:42 ` [Buildroot] [PATCHv3 13/18] pkg-generic: introduce a <pkg>_ALL_DOWNLOADS variable and factorize code Thomas Petazzoni
@ 2015-04-25 17:58 ` Yann E. MORIN
0 siblings, 0 replies; 46+ messages in thread
From: Yann E. MORIN @ 2015-04-25 17:58 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2015-04-25 16:42 +0200, Thomas Petazzoni spake thusly:
> Now, both the download and source-check code are iterating over
> <pkg>_SOURCE, <pkg>_PATCH and <pkg>_EXTRA_DOWNLOADS elements, figuring
> out whether they contain full URLs or not. Instead of doing this
> repeatdly, this patch introduces an internal <pkg>_ALL_DOWNLOADS
> variable, which contains the list of everything that needs to be
> downloaded, with URLs already expanded to take into account <pkg>_SITE
> if needed.
>
> This allows to simplify quite significantly the .stamp_download and
> source-check implementation.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Note that adding $(2)_FINAL_ALL_DEPENDENCIES would not be much more
intrusive than this one patch.
Regards,
Yann E. MORIN.
> ---
> package/pkg-generic.mk | 26 ++++++++------------------
> 1 file changed, 8 insertions(+), 18 deletions(-)
>
> diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
> index cb901ae..517c02f 100644
> --- a/package/pkg-generic.mk
> +++ b/package/pkg-generic.mk
> @@ -72,25 +72,13 @@ endif
> $(BUILD_DIR)/%/.stamp_downloaded:
> $(foreach hook,$($(PKG)_PRE_DOWNLOAD_HOOKS),$(call $(hook))$(sep))
> # Only show the download message if it isn't already downloaded
> - $(Q)for p in $($(PKG)_SOURCE) $($(PKG)_PATCH) $($(PKG)_EXTRA_DOWNLOADS) ; do \
> + $(Q)for p in $($(PKG)_ALL_DOWNLOADS); do \
> if test ! -e $(DL_DIR)/`basename $$p` ; then \
> $(call MESSAGE,"Downloading") ; \
> break ; \
> fi ; \
> done
> - $(if $($(PKG)_SOURCE),$(call DOWNLOAD,$($(PKG)_SITE:/=)/$($(PKG)_SOURCE)))
> - $(foreach p,$($(PKG)_EXTRA_DOWNLOADS),\
> - $(if $(findstring ://,$(p)),\
> - $(call DOWNLOAD,$(p)),\
> - $(call DOWNLOAD,$($(PKG)_SITE:/=)/$(p))\
> - )\
> - $(sep))
> - $(foreach p,$($(PKG)_PATCH),\
> - $(if $(findstring ://,$(p)),\
> - $(call DOWNLOAD,$(p)),\
> - $(call DOWNLOAD,$($(PKG)_SITE:/=)/$(p))\
> - )\
> - $(sep))
> + $(foreach p,$($(PKG)_ALL_DOWNLOADS),$(call DOWNLOAD,$(p))$(sep))
> $(foreach hook,$($(PKG)_POST_DOWNLOAD_HOOKS),$(call $(hook))$(sep))
> $(Q)mkdir -p $(@D)
> $(Q)touch $@
> @@ -355,6 +343,11 @@ ifndef $(2)_PATCH
> endif
> endif
>
> +$(2)_ALL_DOWNLOADS = \
> + $$(foreach p,$$($(2)_SOURCE) $$($(2)_PATCH) $$($(2)_EXTRA_DOWNLOADS),\
> + $$(if $$(findstring ://,$$(p)),$$(p),\
> + $$($(2)_SITE:/=)/$$(p)))
> +
> ifndef $(2)_SITE
> ifdef $(3)_SITE
> $(2)_SITE = $$($(3)_SITE)
> @@ -568,10 +561,7 @@ $(1)-show-version:
>
> $(1)-source-check:
> ifeq ($$($(2)_OVERRIDE_SRCDIR),)
> - $$(foreach p,$$($(2)_SOURCE) $$($(2)_EXTRA_DOWNLOADS) $$($(2)_PATCH),\
> - $$(if $$(findstring ://,$$(p)),\
> - $$(call SOURCE_CHECK,$$(p)),\
> - $$(call SOURCE_CHECK,$$($(2)_SITE:/=)/$$(p)))$$(sep))
> + $$(foreach p,$$($(2)_ALL_DOWNLOADS),$$(call SOURCE_CHECK,$$(p))$$(sep))
> else
> test -d $$($(2)_OVERRIDE_SRCDIR)
> endif
> --
> 2.1.0
>
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 14/18] Makefile: implement the 'source' target using the package infrastructure
2015-04-25 14:42 ` [Buildroot] [PATCHv3 14/18] Makefile: implement the 'source' target using the package infrastructure Thomas Petazzoni
@ 2015-04-25 18:51 ` Yann E. MORIN
0 siblings, 0 replies; 46+ messages in thread
From: Yann E. MORIN @ 2015-04-25 18:51 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2015-04-25 16:42 +0200, Thomas Petazzoni spake thusly:
> Now that all the bits are in place, switch the global 'source' target
> to use the package infrastructure logic.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
> Tested-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
> [with 'make source' (actually together with the next patch).]
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Still that superfluous SoB line... ;-)
Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
[tested with a randpackageconfig]
Regards,
Yann E. MORIN.
> ---
> Makefile | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/Makefile b/Makefile
> index f5ff574..e8a694b 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -612,7 +612,7 @@ target-post-image: $(TARGETS_ROOTFS) target-finalize
> $(call MESSAGE,"Executing post-image script $(s)"); \
> $(EXTRA_ENV) $(s) $(BINARIES_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep))
>
> -source: $(PACKAGES_SOURCE) $(HOST_SOURCE)
> +source: $(foreach p,$(PACKAGES),$(p)-all-source)
>
> _external-deps: $(foreach p,$(PACKAGES),$(p)-all-external-deps)
> external-deps:
> --
> 2.1.0
>
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 15/18] Makefile: remove unneeded variables
2015-04-25 14:42 ` [Buildroot] [PATCHv3 15/18] Makefile: remove unneeded variables Thomas Petazzoni
@ 2015-04-25 18:58 ` Yann E. MORIN
0 siblings, 0 replies; 46+ messages in thread
From: Yann E. MORIN @ 2015-04-25 18:58 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2015-04-25 16:42 +0200, Thomas Petazzoni spake thusly:
> Now that all the external-deps, source-check and source targets are
> properly implemented based on the package infrastructure, the
> PACKAGES_SOURCE, TARGET_HOST_DEPS, HOST_DEPS and HOST_SOURCE variables
> are no longer needed. This is a good thing since they were anyway
> incorrect, as they were only doing a two level recursion in the
> dependencies of host packages.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
> Tested-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Tested-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
[tested with a randpackageconfig]
Regards,
Yann E. MORIN.
> ---
> Makefile | 21 ---------------------
> 1 file changed, 21 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index e8a694b..0ba341b 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -389,27 +389,6 @@ include fs/common.mk
>
> include $(BR2_EXTERNAL)/external.mk
>
> -PACKAGES_SOURCE := $(patsubst %,%-source,$(PACKAGES))
> -
> -# host-* dependencies have to be handled specially, as those aren't
> -# visible in Kconfig and hence not added to a variable like PACKAGES.
> -# instead, find all the host-* targets listed in each <PKG>_DEPENDENCIES
> -# variable for each enabled target.
> -# Notice: this only works for newstyle gentargets/autotargets packages
> -TARGETS_HOST_DEPS = $(sort $(filter host-%,$(foreach dep,\
> - $(addsuffix _DEPENDENCIES,\
> - $(call UPPERCASE,$(PACKAGES) $(TARGETS_ROOTFS))),\
> - $($(dep)))))
> -# Host packages can in turn have their own dependencies. Likewise find
> -# all the package names listed in the HOST_<PKG>_DEPENDENCIES for each
> -# host package found above. Ideally this should be done recursively until
> -# no more packages are found, but that's hard to do in make, so limit to
> -# 1 level for now.
> -HOST_DEPS = $(sort $(foreach dep,\
> - $(addsuffix _DEPENDENCIES,$(call UPPERCASE,$(TARGETS_HOST_DEPS))),\
> - $($(dep))))
> -HOST_SOURCE += $(addsuffix -source,$(sort $(TARGETS_HOST_DEPS) $(HOST_DEPS)))
> -
> dirs: $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \
> $(HOST_DIR) $(BINARIES_DIR)
>
> --
> 2.1.0
>
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 16/18] Makefile: add BR_BUILDING variable
2015-04-25 14:43 ` [Buildroot] [PATCHv3 16/18] Makefile: add BR_BUILDING variable Thomas Petazzoni
@ 2015-04-25 20:26 ` Yann E. MORIN
2015-04-25 21:14 ` Yann E. MORIN
0 siblings, 1 reply; 46+ messages in thread
From: Yann E. MORIN @ 2015-04-25 20:26 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2015-04-25 16:43 +0200, Thomas Petazzoni spake thusly:
> Some packages do some sanity checks on their configuration, for
> example linux checks that the defconfig string is not empty when a
> defconfig is used. Such checks are currently always performed, except
> when the 'source' target is part of make goals.
>
> This is problematic for two reasons:
>
> - Other targets such as 'source-check', 'external-deps' or
> 'legal-info', that do not consist in doing a build, cannot be
> executed in such situations.
>
> - The current code removes the check as soon as one of the targets is
> source. But if there are other non-source targets called at the
> same time, the checks are ignored.
>
> This commit therefore introduces an internal variable called
> BR_BUILDING, which tells packages if we are actually building or
> not. A variable nobuild_targets indicates the targets that we do not
> consider as being build targets.
>
> For the moment, nobuild_targets only contains 'source', to be
> completely iso-functional.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
I'm not too fond of the variable name, but I can't find a better one...
Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Not tested, there's virtually nothing new to test (except that it is
valid make synbtax, obviously, and that's OK).
Regards,
Yann E. MORIN.
> ---
> Makefile | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/Makefile b/Makefile
> index 0ba341b..e0be636 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -77,6 +77,22 @@ noconfig_targets := menuconfig nconfig gconfig xconfig config oldconfig randconf
> randpackageconfig allyespackageconfig allnopackageconfig \
> print-version olddefconfig
>
> +# Some global targets do not trigger a build, but are used to collect
> +# metadata, or do various checks. When such targets are triggered,
> +# some packages should not do their configuration sanity
> +# checks. Provide them a BR_BUILDING variable set to 'y' when we're
> +# actually building and they should do their sanity checks.
> +#
> +# We're building in two situations: when MAKECMDGOALS is empty
> +# (default target is to build), or when MAKECMDGOALS contains
> +# something else than one of the nobuild_targets.
> +nobuild_targets := source
> +ifeq ($(MAKECMDGOALS),)
> +BR_BUILDING = y
> +else ifneq ($(filter-out $(nobuild_targets),$(MAKECMDGOALS)),)
> +BR_BUILDING = y
> +endif
> +
> # Strip quotes and then whitespaces
> qstrip = $(strip $(subst ",,$(1)))
> #"))
> --
> 2.1.0
>
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 17/18] packages: refactor checks using BR_BUILDING
2015-04-25 14:43 ` [Buildroot] [PATCHv3 17/18] packages: refactor checks using BR_BUILDING Thomas Petazzoni
@ 2015-04-25 20:52 ` Yann E. MORIN
2015-04-25 21:59 ` Yann E. MORIN
2015-04-26 9:42 ` Thomas Petazzoni
0 siblings, 2 replies; 46+ messages in thread
From: Yann E. MORIN @ 2015-04-25 20:52 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2015-04-25 16:43 +0200, Thomas Petazzoni spake thusly:
> Instead of manually testing MAKECMDGOALS, use the newly introduced
> BR_BUILDING variable to know if we're building or not.
>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
[--SNIP--]
> diff --git a/boot/at91bootstrap/at91bootstrap.mk b/boot/at91bootstrap/at91bootstrap.mk
> index 802e85e..f655058 100644
> --- a/boot/at91bootstrap/at91bootstrap.mk
> +++ b/boot/at91bootstrap/at91bootstrap.mk
> @@ -40,11 +40,8 @@ endef
>
> $(eval $(generic-package))
>
> -ifeq ($(BR2_TARGET_AT91BOOTSTRAP),y)
> -# we NEED a board name unless we're at make source
> -ifeq ($(filter source,$(MAKECMDGOALS)),)
> +ifeq ($(BR2_TARGET_AT91BOOTSTRAP)$(BR_BUILDING),yy)
> ifeq ($(AT91BOOTSTRAP_BOARD),)
> $(error No AT91Bootstrap board name set. Check your BR2_TARGET_AT91BOOTSTRAP_BOARD setting)
> endif
> endif
> -endif
> diff --git a/boot/at91bootstrap3/at91bootstrap3.mk b/boot/at91bootstrap3/at91bootstrap3.mk
> index 3e3b78e..ff49e14 100644
> --- a/boot/at91bootstrap3/at91bootstrap3.mk
> +++ b/boot/at91bootstrap3/at91bootstrap3.mk
> @@ -43,7 +43,7 @@ AT91BOOTSTRAP3_KCONFIG_OPTS = $(AT91BOOTSTRAP3_MAKE_OPTS)
> $(eval $(kconfig-package))
>
> # Checks to give errors that the user can understand
> -ifeq ($(filter source,$(MAKECMDGOALS)),)
> +ifeq ($(BR_BUILDING),y)
> ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG),y)
I think it would be good to have a single way we do those checks.
For example, compare at91bootstrap above and at91bootstrap3 here.
The former is doing the BR2_BUILDING check and package-enabled check
in a single ifeq, while the latter does it with two ifeq.
I don't really care which we use, but we should use the same everywhere.
Maybe we could favour doing it with feq, for those packages that want to
do multiple checks.
Applicable to the other packages, of course.
[--SNIP--]
> diff --git a/boot/xloader/xloader.mk b/boot/xloader/xloader.mk
> index 90d5fa2..a07a190 100644
> --- a/boot/xloader/xloader.mk
> +++ b/boot/xloader/xloader.mk
> @@ -25,12 +25,8 @@ endef
>
> $(eval $(generic-package))
>
> -ifeq ($(BR2_TARGET_XLOADER),y)
> -# we NEED a board name unless we're at make source
> -ifeq ($(filter source,$(MAKECMDGOALS)),)
> +ifeq ($(BR2_TARGET_XLOADER)$(BR_BUILDING),y)
This is broken: it should be compared to 'yy', not a single 'y'.
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 16/18] Makefile: add BR_BUILDING variable
2015-04-25 20:26 ` Yann E. MORIN
@ 2015-04-25 21:14 ` Yann E. MORIN
2015-04-26 9:40 ` Thomas Petazzoni
0 siblings, 1 reply; 46+ messages in thread
From: Yann E. MORIN @ 2015-04-25 21:14 UTC (permalink / raw)
To: buildroot
Thomas,All,
On 2015-04-25 22:26 +0200, Yann E. MORIN spake thusly:
> On 2015-04-25 16:43 +0200, Thomas Petazzoni spake thusly:
> > Some packages do some sanity checks on their configuration, for
> > example linux checks that the defconfig string is not empty when a
> > defconfig is used. Such checks are currently always performed, except
> > when the 'source' target is part of make goals.
> >
> > This is problematic for two reasons:
> >
> > - Other targets such as 'source-check', 'external-deps' or
> > 'legal-info', that do not consist in doing a build, cannot be
> > executed in such situations.
> >
> > - The current code removes the check as soon as one of the targets is
> > source. But if there are other non-source targets called at the
> > same time, the checks are ignored.
> >
> > This commit therefore introduces an internal variable called
> > BR_BUILDING, which tells packages if we are actually building or
> > not. A variable nobuild_targets indicates the targets that we do not
> > consider as being build targets.
> >
> > For the moment, nobuild_targets only contains 'source', to be
> > completely iso-functional.
> >
> > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
>
> I'm not too fond of the variable name, but I can't find a better one...
>
> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
I maintian my ack, but I have a deeper concern about not doing those
checks in the first place.
So, what does it mean not to have a config/board/... name to start with?
It means the specific configuration is not complete, and that the
package will fail to configure or build. So it does not make sense to
accept a configuration where such config name are missing.
Furthermore, what about a package that needs the config name to decide
what tarball to download? In that case, we can't do the check at all,
and we must fail as soon as the config name is empty.
As such, I'd prefer we do not condition the check on whether we'r
ebuilding or not, but that we do it always, fo all packages.
However, I can see one reason where we would still want the checks to be
conditional: make rand*config && make source-check . And that is a
tricky case to solve.
We could do it by always defining defaults (in the Config.in) to such
config names; those defaults could be conditional, of course. But coming
up with sane defaults is not easy either...
Thoughts?
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 17/18] packages: refactor checks using BR_BUILDING
2015-04-25 20:52 ` Yann E. MORIN
@ 2015-04-25 21:59 ` Yann E. MORIN
2015-04-26 9:42 ` Thomas Petazzoni
1 sibling, 0 replies; 46+ messages in thread
From: Yann E. MORIN @ 2015-04-25 21:59 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2015-04-25 22:52 +0200, Yann E. MORIN spake thusly:
> On 2015-04-25 16:43 +0200, Thomas Petazzoni spake thusly:
> > Instead of manually testing MAKECMDGOALS, use the newly introduced
> > BR_BUILDING variable to know if we're building or not.
[--SNIP--]
> > # Checks to give errors that the user can understand
> > -ifeq ($(filter source,$(MAKECMDGOALS)),)
> > +ifeq ($(BR_BUILDING),y)
> > ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG),y)
>
> I think it would be good to have a single way we do those checks.
>
> For example, compare at91bootstrap above and at91bootstrap3 here.
> The former is doing the BR2_BUILDING check and package-enabled check
> in a single ifeq, while the latter does it with two ifeq.
>
> I don't really care which we use, but we should use the same everywhere.
> Maybe we could favour doing it with feq, for those packages that want to
> do multiple checks.
Slip of the fingers... I meant: do it with two ifeq...
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 02/18] pkg-generic: take into account patch dependencies in source, external-deps and legal-info
2015-04-25 16:41 ` Yann E. MORIN
@ 2015-04-26 9:38 ` Thomas Petazzoni
0 siblings, 0 replies; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-26 9:38 UTC (permalink / raw)
To: buildroot
Dear Yann E. MORIN,
On Sat, 25 Apr 2015 18:41:09 +0200, Yann E. MORIN wrote:
> Thomas, All,
>
> On 2015-04-25 16:42 +0200, Thomas Petazzoni spake thusly:
> > The $(1)-all-{source,external-deps,legal-info} targets currently only
> > take care of the dependencies in <pkg>_DEPENDENCIES, but not
> > <pkg>_PATCH_DEPENDENCIES. This patch fixes that.
> >
> > Long term, we might want to refactor this to have a single variable
> > containing all dependencies. But this requires more work in
> > pkg-generic than we want to do at the moment.
>
> Well, you can still introduce $(2)_FINAL_ALL_DEPENDENCIES. That would
> make the code reall much more readable.
Right. v4 will have a $(2)_FINAL_ALL_DEPENDENCIES variable.
> Well, that's really unreadable.
A matter of taste I'd say :)
> What about:
>
> $(1)-all-source: $(1)-source
> $(1)-all-source: $$(foreach p,$$($(2)_FINAL_ALL_DEPENDENCIES),$$(p)-all-source)
>
> Of course that require _FINAL_ALL_DEPENDENCIEs, but I guess the cost is
> worth the gain.
Ok, right, it's in v4.
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 07/18] pkg-generic: implement source-check targets
2015-04-25 17:28 ` Yann E. MORIN
@ 2015-04-26 9:39 ` Thomas Petazzoni
2015-04-26 14:12 ` Yann E. MORIN
0 siblings, 1 reply; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-26 9:39 UTC (permalink / raw)
To: buildroot
Dear Yann E. MORIN,
On Sat, 25 Apr 2015 19:28:37 +0200, Yann E. MORIN wrote:
> To be noted: packages hosted at github, when we download a released
> tarball, are broken, because the backing-store is AWS, which does not
> support the HEAD request. But that is not a change due to this patch, it
> was already broken previously.
Right. Let's not fix all the problems in this patch series :-)
> > +$(1)-all-source-check: $$(foreach p, \
> > + $$($(2)_FINAL_DEPENDENCIES) $$($(2)_FINAL_PATCH_DEPENDENCIES), \
> > + $$(p)-all-source-check) \
> > + $(1)-source-check
>
> If you do the little trick I mentioned as a comment to your patch 2,
> you'd have to do it here, too.
Will be in v4.
Thanks,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 16/18] Makefile: add BR_BUILDING variable
2015-04-25 21:14 ` Yann E. MORIN
@ 2015-04-26 9:40 ` Thomas Petazzoni
2015-04-26 14:13 ` Yann E. MORIN
0 siblings, 1 reply; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-26 9:40 UTC (permalink / raw)
To: buildroot
Yann,
On Sat, 25 Apr 2015 23:14:57 +0200, Yann E. MORIN wrote:
> I maintian my ack, but I have a deeper concern about not doing those
> checks in the first place.
>
> So, what does it mean not to have a config/board/... name to start with?
>
> It means the specific configuration is not complete, and that the
> package will fail to configure or build. So it does not make sense to
> accept a configuration where such config name are missing.
>
> Furthermore, what about a package that needs the config name to decide
> what tarball to download? In that case, we can't do the check at all,
> and we must fail as soon as the config name is empty.
>
> As such, I'd prefer we do not condition the check on whether we'r
> ebuilding or not, but that we do it always, fo all packages.
>
> However, I can see one reason where we would still want the checks to be
> conditional: make rand*config && make source-check . And that is a
> tricky case to solve.
>
> We could do it by always defining defaults (in the Config.in) to such
> config names; those defaults could be conditional, of course. But coming
> up with sane defaults is not easy either...
>
> Thoughts?
I'd answer that this is a deeper discussion, into which I'd prefer to
not get into at this point. The patch series is trying to keep the
existing behavior, and I'd like to not change that for now.
Once this patch series gets merged, I'll be happy to rediscuss why we
have this special casing on 'make source' / 'make source-check' to
disable the checks.
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 17/18] packages: refactor checks using BR_BUILDING
2015-04-25 20:52 ` Yann E. MORIN
2015-04-25 21:59 ` Yann E. MORIN
@ 2015-04-26 9:42 ` Thomas Petazzoni
2015-04-26 14:18 ` Yann E. MORIN
1 sibling, 1 reply; 46+ messages in thread
From: Thomas Petazzoni @ 2015-04-26 9:42 UTC (permalink / raw)
To: buildroot
Dear Yann E. MORIN,
On Sat, 25 Apr 2015 22:52:57 +0200, Yann E. MORIN wrote:
> > # Checks to give errors that the user can understand
> > -ifeq ($(filter source,$(MAKECMDGOALS)),)
> > +ifeq ($(BR_BUILDING),y)
> > ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG),y)
>
> I think it would be good to have a single way we do those checks.
>
> For example, compare at91bootstrap above and at91bootstrap3 here.
> The former is doing the BR2_BUILDING check and package-enabled check
> in a single ifeq, while the latter does it with two ifeq.
>
> I don't really care which we use, but we should use the same everywhere.
> Maybe we could favour doing it with feq, for those packages that want to
> do multiple checks.
>
> Applicable to the other packages, of course.
I don't quite agree. For at91bootstrap, there is only one check being
done, while for at91bootstrap3, two checks are being done.
So basically, the current code is:
ifeq ($(BR_BUILDING),y)
ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG),y)
ifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG)),)
$(error No at91bootstrap3 defconfig name specified, check your BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG setting)
endif
endif
ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_CUSTOM_CONFIG),y)
ifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE)),)
$(error No at91bootstrap3 configuration file specified, check your BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE setting)
endif
endif
endif
While you're proposing to unfactorize the BR_BUILDING test:
ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG)$(BR_BUILDING),yy)
ifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG)),)
$(error No at91bootstrap3 defconfig name specified, check your BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG setting)
endif
endif
ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_CUSTOM_CONFIG)$(BR_BUILDING),yy)
ifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE)),)
$(error No at91bootstrap3 configuration file specified, check your BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE setting)
endif
endif
I'm not sure in this case this is really better.
> > -ifeq ($(BR2_TARGET_XLOADER),y)
> > -# we NEED a board name unless we're at make source
> > -ifeq ($(filter source,$(MAKECMDGOALS)),)
> > +ifeq ($(BR2_TARGET_XLOADER)$(BR_BUILDING),y)
>
> This is broken: it should be compared to 'yy', not a single 'y'.
Fixed in v4.
Thanks,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 07/18] pkg-generic: implement source-check targets
2015-04-26 9:39 ` Thomas Petazzoni
@ 2015-04-26 14:12 ` Yann E. MORIN
0 siblings, 0 replies; 46+ messages in thread
From: Yann E. MORIN @ 2015-04-26 14:12 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2015-04-26 11:39 +0200, Thomas Petazzoni spake thusly:
> On Sat, 25 Apr 2015 19:28:37 +0200, Yann E. MORIN wrote:
> > To be noted: packages hosted at github, when we download a released
> > tarball, are broken, because the backing-store is AWS, which does not
> > support the HEAD request. But that is not a change due to this patch, it
> > was already broken previously.
>
> Right. Let's not fix all the problems in this patch series :-)
Of course not. Just sayin'...
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 16/18] Makefile: add BR_BUILDING variable
2015-04-26 9:40 ` Thomas Petazzoni
@ 2015-04-26 14:13 ` Yann E. MORIN
0 siblings, 0 replies; 46+ messages in thread
From: Yann E. MORIN @ 2015-04-26 14:13 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2015-04-26 11:40 +0200, Thomas Petazzoni spake thusly:
> On Sat, 25 Apr 2015 23:14:57 +0200, Yann E. MORIN wrote:
> > I maintian my ack, but I have a deeper concern about not doing those
> > checks in the first place.
> >
> > So, what does it mean not to have a config/board/... name to start with?
> >
> > It means the specific configuration is not complete, and that the
> > package will fail to configure or build. So it does not make sense to
> > accept a configuration where such config name are missing.
> >
> > Furthermore, what about a package that needs the config name to decide
> > what tarball to download? In that case, we can't do the check at all,
> > and we must fail as soon as the config name is empty.
> >
> > As such, I'd prefer we do not condition the check on whether we'r
> > ebuilding or not, but that we do it always, fo all packages.
> >
> > However, I can see one reason where we would still want the checks to be
> > conditional: make rand*config && make source-check . And that is a
> > tricky case to solve.
> >
> > We could do it by always defining defaults (in the Config.in) to such
> > config names; those defaults could be conditional, of course. But coming
> > up with sane defaults is not easy either...
> >
> > Thoughts?
>
> I'd answer that this is a deeper discussion, into which I'd prefer to
> not get into at this point. The patch series is trying to keep the
> existing behavior, and I'd like to not change that for now.
Absolutely in agreement with that.
I never intended my comments to be taken as a suggestion to change your
series. I even stated that I did maintain my acked-by. ;-)
> Once this patch series gets merged, I'll be happy to rediscuss why we
> have this special casing on 'make source' / 'make source-check' to
> disable the checks.
Yup.
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 17/18] packages: refactor checks using BR_BUILDING
2015-04-26 9:42 ` Thomas Petazzoni
@ 2015-04-26 14:18 ` Yann E. MORIN
0 siblings, 0 replies; 46+ messages in thread
From: Yann E. MORIN @ 2015-04-26 14:18 UTC (permalink / raw)
To: buildroot
Thomas, All,
On 2015-04-26 11:42 +0200, Thomas Petazzoni spake thusly:
> On Sat, 25 Apr 2015 22:52:57 +0200, Yann E. MORIN wrote:
>
> > > # Checks to give errors that the user can understand
> > > -ifeq ($(filter source,$(MAKECMDGOALS)),)
> > > +ifeq ($(BR_BUILDING),y)
> > > ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG),y)
> >
> > I think it would be good to have a single way we do those checks.
> >
> > For example, compare at91bootstrap above and at91bootstrap3 here.
> > The former is doing the BR2_BUILDING check and package-enabled check
> > in a single ifeq, while the latter does it with two ifeq.
> >
> > I don't really care which we use, but we should use the same everywhere.
> > Maybe we could favour doing it with feq, for those packages that want to
> > do multiple checks.
> >
> > Applicable to the other packages, of course.
>
> I don't quite agree. For at91bootstrap, there is only one check being
> done, while for at91bootstrap3, two checks are being done.
>
> So basically, the current code is:
>
> ifeq ($(BR_BUILDING),y)
> ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG),y)
> ifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG)),)
> $(error No at91bootstrap3 defconfig name specified, check your BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG setting)
> endif
> endif
>
> ifeq ($(BR2_TARGET_AT91BOOTSTRAP3_USE_CUSTOM_CONFIG),y)
> ifeq ($(call qstrip,$(BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE)),)
> $(error No at91bootstrap3 configuration file specified, check your BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE setting)
> endif
> endif
> endif
>
> While you're proposing to unfactorize the BR_BUILDING test:
I thionk I actually meant the other way around: always use two ifeq,
that is always factorise the check on BR_BUILDING. But there was some
typing errors in my comment, which I clarified in a further reply:
http://lists.busybox.net/pipermail/buildroot/2015-April/126861.html
What I really meant is that I think it would be good to have a single
and uniform way of doing the checks, so we have sane examples on how to
do it. For example, you even had an issue with xloader that completely
broke the 'source' rule. ;-)
But I won;t be pedantic on this. ;-)
Regards,
Yann E. MORIN.
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 46+ messages in thread
* [Buildroot] [PATCHv3 09/18] pkg-generic: remove the .stamp_rsync_sourced fake stamp file
2015-04-25 17:49 ` Thomas Petazzoni
2015-04-25 17:52 ` Yann E. MORIN
@ 2015-04-28 20:13 ` Arnout Vandecappelle
1 sibling, 0 replies; 46+ messages in thread
From: Arnout Vandecappelle @ 2015-04-28 20:13 UTC (permalink / raw)
To: buildroot
On 04/25/15 19:49, Thomas Petazzoni wrote:
> Dear Yann E. MORIN,
>
> On Sat, 25 Apr 2015 19:33:03 +0200, Yann E. MORIN wrote:
>
>>> -$(1)-source: $$($(2)_TARGET_RSYNC_SOURCE)
>>> +$(1)-source:
>>
>> The reason that line existed was to be able to define a dependency on
>> the stamp file. There is now no reason to keep this line at all; all you
>> have above is declaring a make goal without dependency or rule, so it
>> is entirely useless.
>
> I don't think a target with no dependencies or rules is useless. It can
> be useful to not have an error when this target is triggered.
>
> When you are going to do a 'make source', it will do a 'make
> $(1)-source' on all packages, including the ones that have
> <pkg>_OVERRIDE_SRCDIR. So there must be a $(1)-source target, even if
> it doesn't do anything.
>
> Am I missing something?
Actually, adding it to .PHONY is sufficient, there's no need to declare it
explicitly. But of course it doesn't hurt either, and this patch was already
committed.
Regards,
Arnout
--
Arnout Vandecappelle arnout at mind be
Senior Embedded Software Architect +32-16-286500
Essensium/Mind http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
^ permalink raw reply [flat|nested] 46+ messages in thread
end of thread, other threads:[~2015-04-28 20:13 UTC | newest]
Thread overview: 46+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-25 14:42 [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
2015-04-25 14:42 ` [Buildroot] [PATCHv3 01/18] fs: only add non rootfs- targets to PACKAGES Thomas Petazzoni
2015-04-25 16:36 ` Yann E. MORIN
2015-04-25 14:42 ` [Buildroot] [PATCHv3 02/18] pkg-generic: take into account patch dependencies in source, external-deps and legal-info Thomas Petazzoni
2015-04-25 16:41 ` Yann E. MORIN
2015-04-26 9:38 ` Thomas Petazzoni
2015-04-25 14:42 ` [Buildroot] [PATCHv3 03/18] Makefile: use the package infra based external-deps Thomas Petazzoni
2015-04-25 14:42 ` [Buildroot] [PATCHv3 04/18] pkg-download: remove support for the SHOW_EXTERNAL_DEPS DL_MODE Thomas Petazzoni
2015-04-25 14:42 ` [Buildroot] [PATCHv3 05/18] Makefile: move source-check outside of noconfig_targets Thomas Petazzoni
2015-04-25 14:42 ` [Buildroot] [PATCHv3 06/18] pkg-download: extend DOWNLOAD_INNER, add a SOURCE_CHECK macro Thomas Petazzoni
2015-04-25 17:15 ` Yann E. MORIN
2015-04-25 14:42 ` [Buildroot] [PATCHv3 07/18] pkg-generic: implement source-check targets Thomas Petazzoni
2015-04-25 17:28 ` Yann E. MORIN
2015-04-26 9:39 ` Thomas Petazzoni
2015-04-26 14:12 ` Yann E. MORIN
2015-04-25 14:42 ` [Buildroot] [PATCHv3 08/18] Makefile: implement a package based source-check target Thomas Petazzoni
2015-04-25 14:42 ` [Buildroot] [PATCHv3 09/18] pkg-generic: remove the .stamp_rsync_sourced fake stamp file Thomas Petazzoni
2015-04-25 17:33 ` Yann E. MORIN
2015-04-25 17:49 ` Thomas Petazzoni
2015-04-25 17:52 ` Yann E. MORIN
2015-04-28 20:13 ` Arnout Vandecappelle
2015-04-25 17:53 ` Yann E. MORIN
2015-04-25 14:42 ` [Buildroot] [PATCHv3 10/18] pkg-generic: don't use DL_MODE in .stamp_downloaded Thomas Petazzoni
2015-04-25 17:34 ` Yann E. MORIN
2015-04-25 14:42 ` [Buildroot] [PATCHv3 11/18] pkg-download: get rid of DL_MODE Thomas Petazzoni
2015-04-25 17:35 ` Yann E. MORIN
2015-04-25 14:42 ` [Buildroot] [PATCHv3 12/18] pkg-download: fix indentation for SOURCE_CHECK_* macros Thomas Petazzoni
2015-04-25 17:37 ` Yann E. MORIN
2015-04-25 14:42 ` [Buildroot] [PATCHv3 13/18] pkg-generic: introduce a <pkg>_ALL_DOWNLOADS variable and factorize code Thomas Petazzoni
2015-04-25 17:58 ` Yann E. MORIN
2015-04-25 14:42 ` [Buildroot] [PATCHv3 14/18] Makefile: implement the 'source' target using the package infrastructure Thomas Petazzoni
2015-04-25 18:51 ` Yann E. MORIN
2015-04-25 14:42 ` [Buildroot] [PATCHv3 15/18] Makefile: remove unneeded variables Thomas Petazzoni
2015-04-25 18:58 ` Yann E. MORIN
2015-04-25 14:43 ` [Buildroot] [PATCHv3 16/18] Makefile: add BR_BUILDING variable Thomas Petazzoni
2015-04-25 20:26 ` Yann E. MORIN
2015-04-25 21:14 ` Yann E. MORIN
2015-04-26 9:40 ` Thomas Petazzoni
2015-04-26 14:13 ` Yann E. MORIN
2015-04-25 14:43 ` [Buildroot] [PATCHv3 17/18] packages: refactor checks using BR_BUILDING Thomas Petazzoni
2015-04-25 20:52 ` Yann E. MORIN
2015-04-25 21:59 ` Yann E. MORIN
2015-04-26 9:42 ` Thomas Petazzoni
2015-04-26 14:18 ` Yann E. MORIN
2015-04-25 14:43 ` [Buildroot] [PATCHv3 18/18] Makefile: add a few more targets to nobuild_targets Thomas Petazzoni
2015-04-25 14:45 ` [Buildroot] [PATCHv3 00/18] Package based 'source', 'legal-info', 'source-check' and 'external-deps' Thomas Petazzoni
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.