# # Copyright (c) 2016, 2022, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 2 only, as # published by the Free Software Foundation. Oracle designates this # particular file as subject to the "Classpath" exception as provided # by Oracle in the LICENSE file that accompanied this code. # # This code is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # version 2 for more details (a copy is included in the LICENSE file that # accompanied this code). # # You should have received a copy of the GNU General Public License version # 2 along with this work; if not, write to the Free Software Foundation, # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. # # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA # or visit www.oracle.com if you need additional information or have any # questions. #
################################################################################ # Keep track of what source revision is used to create the build, by creating # a tracker file in the output directory. This tracker file is included in the # source image, and can be used to recreate the source revision used. # # We're either building directly from an SCM repository, and if so, use the # current revision from that SCM. Otherwise, we are building from a source # bundle. As a part of creating this source bundle, the current SCM revisions of # all repos will be stored in a file in the top dir, which is then used when # creating the tracker file.
# Verify that the entire forest is consistent
$(foreach repo, $(call FindAllReposRel), \
$(if $(wildcard $(TOPDIR)/$(repo)/$(SCM_DIR)),, \
$(error Inconsistent revision control: $(repo) is missing $(SCM_DIR) directory)) \
)
# Replace "." with "_top" and "/" with "-"
MakeFilenameFromRepo = \
$(strip $(subst .,top, $(subst /,-, $1)))
################################################################################ # SetupGetRevisionForRepo defines a make rule for creating a file containing # the name of the repository and the output of the scm command for that # repository. # # Argument 1 is the relative path to the repository from the top dir. #
SetupGetRevisionForRepo = $(NamedParamsMacroTemplate) define SetupGetRevisionForRepoBody
$1_REPO_PATH := $$(TOPDIR)/$$(strip $1)
$1_FILENAME := $$(call MakeFilenameFromRepo, $1)
# Setup rules for all repos. This makes sure all the "git log" calls are made # in parallel.
$(foreach repo, $(call FindAllReposRel), \
$(eval $(call SetupGetRevisionForRepo, $(repo))) \
)
# Create a complete source revision output file from all repos # Param 1: The output file define CreateSourceRevisionFile
$1: $$(REPO_REVISIONS)
$$(call MakeDir, $$(@D))
$$(ECHO) `$$(CAT) $$(REPO_REVISIONS)` > $$@.tmp if [ ! -f $$@ ] || [ "`$$(CAT) $$@`" != "`$$(CAT) $$@.tmp`" ]; then \
$$(MV) $$@.tmp $$@ ; \ else \
$$(RM) $$@.tmp ; \ fi endef
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.