2017-03-28 16:41:41 +00:00
|
|
|
#
|
|
|
|
# \brief Rule for populating an archive by evaluating a content.mk file
|
|
|
|
# \author Norman Feske
|
|
|
|
# \date 2017-03-17
|
|
|
|
#
|
|
|
|
# This file complements 'create.inc' for the creation of API and source
|
|
|
|
# archives.
|
|
|
|
#
|
|
|
|
# Arguments:
|
|
|
|
#
|
|
|
|
# RECIPE_DIR - location of the recipe for the source or API archive
|
|
|
|
# DEPOT_ARCHIVE_DIR - archive destination within the depot
|
|
|
|
# TAG_FILE - file within archive used as tag for make dependencies
|
|
|
|
# GENODE_DIR - root of the Genode source tree
|
|
|
|
# REP_DIR - source repository where 'RECIPE_DIR' is located
|
|
|
|
#
|
|
|
|
|
|
|
|
#
|
|
|
|
# Validate existance of a content.mk file for the archive recipe
|
|
|
|
#
|
|
|
|
ifneq ($(RECIPE_DIR),)
|
|
|
|
EXPECTED_CONTENT_MK_FILE := $(RECIPE_DIR)/content.mk
|
|
|
|
CONTENT_MK_FILE := $(wildcard $(EXPECTED_CONTENT_MK_FILE))
|
|
|
|
endif
|
|
|
|
|
|
|
|
checked_content_mk_exists: checked_recipe_is_unique
|
|
|
|
ifeq ($(CONTENT_MK_FILE),)
|
|
|
|
@$(ECHO) "Error: Recipe misses content.mk file,\n" \
|
|
|
|
" expected at '$(EXPECTED_CONTENT_MK_FILE)'"; false
|
|
|
|
endif
|
|
|
|
|
|
|
|
$(TARGET) $(DEPOT_ARCHIVE_DIR)/$(TAG_FILE): checked_content_mk_exists
|
|
|
|
|
|
|
|
#
|
|
|
|
# Handle the creation of the TAG_FILE (and the population of the archive
|
|
|
|
# directory as its side effect) as an atomic step. Otherwise a dependent
|
|
|
|
# rule - in particular the rule for generating the hash - could be
|
|
|
|
# triggered as soon as the specific tag file appears but before the entire
|
|
|
|
# sub make is finished with populating the archive directory.
|
|
|
|
#
|
2023-01-17 14:03:22 +00:00
|
|
|
.NOTPARALLEL: $(DEPOT_ARCHIVE_DIR)/$(TAG_FILE) $(DEPOT_ARCHIVE_DIR).hash
|
2017-03-28 16:41:41 +00:00
|
|
|
|
|
|
|
#
|
|
|
|
# Assemble archive content by invoking the recipe's content.mk file
|
|
|
|
#
|
|
|
|
# If an error (such as a missing installation of a port) occurs during this
|
|
|
|
# step, remove the incomplete archive before returning an error.
|
|
|
|
#
|
|
|
|
QUIET := $(if $(VERBOSE),--quiet)
|
|
|
|
$(DEPOT_ARCHIVE_DIR)/$(TAG_FILE): $(CONTENT_MK_FILE)
|
|
|
|
$(VERBOSE)$(MAKE) $(QUIET) -f $(GENODE_DIR)/tool/depot/mk/content_env.mk \
|
|
|
|
-C $(DEPOT_ARCHIVE_DIR) \
|
|
|
|
CONTENT_MK=$< \
|
|
|
|
GENODE_DIR=$(GENODE_DIR) \
|
|
|
|
REP_DIR=$(REP_DIR) \
|
|
|
|
CONTRIB_DIR=$(GENODE_DIR)/contrib || \
|
|
|
|
( rm -r $(DEPOT_ARCHIVE_DIR); false )
|
|
|
|
$(VERBOSE)find $(DEPOT_ARCHIVE_DIR) \( -name "*~" \
|
|
|
|
-or -name "*.rej" \
|
|
|
|
-or -name "*.orig" \
|
|
|
|
-or -name "*.swp" \) -delete
|
|
|
|
|