8136771: Implement the license-swap logic as a make target

Reviewed-by: tbell
This commit is contained in:
Erik Joelsson 2016-06-08 15:13:19 +02:00
parent 491d8743c3
commit f8e1100161
4 changed files with 80 additions and 25 deletions

55
make/CreateHgtipFiles.gmk Normal file
View File

@ -0,0 +1,55 @@
#
# Copyright (c) 2016, 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.
#
default: all
include $(SPEC)
include MakeBase.gmk
define SetupCreateHgtip
$$(strip $1)/$(HGTIP_FILENAME): FRC
$(HG) tip --repository $$(strip $1) --template '{node|short}\n' > $$@.tmp
if [ ! -f $$@ ] || [ "`$(CAT) $$@`" != "`$(CAT) $$@.tmp`" ]; then \
$(MV) $$@.tmp $$@ ; \
else \
$(RM) $$@.tmp ; \
fi
TARGETS += $$(strip $1)/$(HGTIP_FILENAME)
endef
# Only try to create the tips if finding an actual hg repository. This will be
# false if building from a source bundle.
$(foreach r, $(call FindAllReposAbs), \
$(if $(wildcard $r/.hg), $(eval $(call SetupCreateHgtip, $r))) \
)
all: $(TARGETS)
FRC:
.PHONY: all

View File

@ -95,6 +95,7 @@ ifneq ($(MOD_FILES), )
$(strip $(wildcard $(addsuffix $(subst .,/,/$(strip $1)), \ $(strip $(wildcard $(addsuffix $(subst .,/,/$(strip $1)), \
$(MODULE_CLASSES_DIRS) \ $(MODULE_CLASSES_DIRS) \
$(addsuffix /$(MODULE), $(IMPORT_MODULES_CLASSES)) \ $(addsuffix /$(MODULE), $(IMPORT_MODULES_CLASSES)) \
$(JDK_OUTPUTDIR)/modules/$(MODULE) \
))) )))
# Convert the modification lines into arguments for the modification tool. # Convert the modification lines into arguments for the modification tool.

View File

@ -301,13 +301,16 @@ ALL_TARGETS += $(JMOD_TARGETS)
################################################################################ ################################################################################
# Images targets # Images targets
# Stores the tips for each repository. This file is be used when constructing the jdk image and can be # Stores the tips for each repository. This file is be used when constructing
# used to track the exact sources used to build that image. # the jdk image and can be used to track the exact sources used to build that
# image.
source-tips: $(SUPPORT_OUTPUTDIR)/source_tips source-tips: $(SUPPORT_OUTPUTDIR)/source_tips
$(SUPPORT_OUTPUTDIR)/source_tips: FRC $(SUPPORT_OUTPUTDIR)/source_tips: FRC
$(call MakeDir, $(@D)) $(call MakeDir, $(@D))
@$(RM) $@ $(call GetSourceTips)
@$(call GetSourceTips)
create-hgtip-files:
+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f CreateHgtipFiles.gmk)
BOOTCYCLE_TARGET := product-images BOOTCYCLE_TARGET := product-images
bootcycle-images: bootcycle-images:
@ -337,8 +340,8 @@ profiles:
mac-bundles-jdk: mac-bundles-jdk:
+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f MacBundles.gmk) +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f MacBundles.gmk)
ALL_TARGETS += source-tips bootcycle-images zip-security zip-source \ ALL_TARGETS += source-tips create-hgtip-files bootcycle-images zip-security \
jrtfs-jar jimages profiles mac-bundles-jdk zip-source jrtfs-jar jimages profiles mac-bundles-jdk
################################################################################ ################################################################################
# Docs targets # Docs targets

View File

@ -335,25 +335,27 @@ endif # HAS_FILE_FUNCTION
################################################################################ ################################################################################
# The source tips can come from the Mercurial repository, or in the files # The source tips can come from the Mercurial repository, or in the files
# $(HGTIP_FILENAME) which contains the tip but is also positioned in the same # $(HGTIP_FILENAME) which contains the tip but is also positioned in the same
# directory as the original $(HGDIR) directory. # directory as the original .hg directory. The hgtip files are created in
# These should not be := assignments, only used from the root Makefile. # CreateHgtipFiles.gmk.
HG_VERSION = $(shell $(HG) version 2> /dev/null) HGTIP_FILENAME := .hgtip
HG_DIRECTORY=.hg FindAllReposAbs = \
HGTIP_FILENAME=.hgtip $(strip $(sort $(dir $(filter-out $(SRC_ROOT)/build/%, $(wildcard \
HG_SEARCH = ./REPO ./*/REPO ./*/*/REPO ./*/*/*/REPO $(addprefix $(SRC_ROOT)/, \
REPO_LIST = $(patsubst ./%,%,$(patsubst %/,%,$(sort $(dir \ .hg */.hg */*/.hg */*/.hg */*/*/.hg \
$(shell $(CD) $(SRC_ROOT) ; \ .hgtip */.hgtip */*/.hgtip */*/.hgtip */*/*/.hgtip \
$(LS) -d $(HG_SEARCH:%/REPO=%/$(HG_DIRECTORY)) \ ) \
$(HG_SEARCH:%/REPO=%/$(HGTIP_FILENAME)) \ )))))
2> /dev/null)))))
FindAllReposRel = \
$(strip $(subst $(SRC_ROOT)/,.,$(patsubst $(SRC_ROOT)/%/, %, $(FindAllReposAbs))))
# Emit the repo:tip pairs to $@, but only if they changed since last time # Emit the repo:tip pairs to $@, but only if they changed since last time
define GetSourceTips define GetSourceTips
$(CD) $(SRC_ROOT) ; \ $(CD) $(SRC_ROOT) ; \
for i in $(REPO_LIST) IGNORE ; do \ for i in $(FindAllReposRel) IGNORE ; do \
if [ "$${i}" = "IGNORE" ] ; then \ if [ "$${i}" = "IGNORE" ] ; then \
continue; \ continue; \
elif [ -d $${i}/$(HG_DIRECTORY) -a "$(HG_VERSION)" != "" ] ; then \ elif [ -d $${i}/.hg -a "$(HG)" != "" ] ; then \
$(PRINTF) " %s:%s" \ $(PRINTF) " %s:%s" \
"$${i}" `$(HG) tip --repository $${i} --template '{node|short}\n'` ; \ "$${i}" `$(HG) tip --repository $${i} --template '{node|short}\n'` ; \
elif [ -f $${i}/$(HGTIP_FILENAME) ] ; then \ elif [ -f $${i}/$(HGTIP_FILENAME) ] ; then \
@ -369,12 +371,6 @@ define GetSourceTips
fi fi
endef endef
# Create the HGTIP_FILENAME file. Called from closed/make/SourceBundles.gmk
define CreateHgTip
$(HG) tip --repository $1 --template '{node|short}\n' > $1/$(HGTIP_FILENAME); \
$(ECHO) $1/$(HGTIP_FILENAME)
endef
################################################################################ ################################################################################
define SetupLogging define SetupLogging