Getting run-test-prebuilt to work quite well.
--- a/make/RunTestsPrebuilt.gmk Mon Nov 27 12:29:28 2017 +0100
+++ b/make/RunTestsPrebuilt.gmk Mon Nov 27 14:15:35 2017 +0100
@@ -23,18 +23,9 @@
# questions.
#
-# FIXME
-export BASH := bash
-
-# FIXME: hardcoded!
-
-PRODUCT_HOME=/var/tmp/jib-magnusi/install/jdk/10/22/linux-x64.jdk/jdk-10
-JT_JAVA=/var/tmp/jib-magnusi/install/java/re/jdk/8/promoted/latest/bundles/linux-x64/jdk-8-linux-x64.tar.gz/jdk1.8.0
-TEST_IMAGE_DIR=/var/tmp/jib-magnusi/install/jdk/10/22/linux-x64.test
-JT_HOME=/var/tmp/jib-magnusi/install/java/re/jtreg/4.2/promoted/all/b08/bundles/jtreg_bin-4.2.zip/jtreg
-TONGA_HOME=/var/tmp/jib-magnusi/install/jpg/infra/builddeps/tonga/4.0.0_May_12_2014+1.0/tonga-4.0.0_May_12_2014+1.0.zip
-TEST_OUTPUT_DIR=/tmp/ihse/test-out
-
+################################################################################
+# Initial bootstrapping, copied and stripped down from Makefile and Init.gmk
+################################################################################
# In Cygwin, the MAKE variable gets prepended with the current directory if the
# make executable is called using a Windows mixed path (c:/cygwin/bin/make.exe).
@@ -48,50 +39,21 @@
else
makefile_path := $(lastword $(MAKEFILE_LIST))
endif
-topdir := $(strip $(patsubst %/make/, %, $(dir $(makefile_path))))
+TOPDIR := $(strip $(patsubst %/make/, %, $(dir $(makefile_path))))
################################################################################
-
-export JDK_IMAGE_DIR := $(PRODUCT_HOME)
-export BOOT_JDK := $(JT_JAVA)
-export BUILD_OUTPUT := $(TEST_OUTPUT_DIR)
-export TONGA_JAR := $(TONGA_HOME)/tonga.jar
-
-# keep names, but verify
-export TEST_IMAGE_DIR
-export JT_HOME
-
-export TOPDIR := $(topdir)
-
-LOG_LEVEL:=debug
-SPEC := $(topdir)/make/RunTestsPrebuiltSpec.gmk
-
-# Now transform ourself to somewhat resembling sanity, but still just using the
-# hard-coded spec
-include $(SPEC)
-$(info spec is $(SPEC))
-include $(topdir)/make/common/MakeBase.gmk
-$(info inluced)
-
-NEW_SPEC := $(TEST_OUTPUT_DIR)/spec.gmk
-
-define CreateNewSpec
- $(if $(strip $(13)), \
- $(error Internal makefile error: \
- Too many arguments to macro, please update CreateNewSpec in RunTestsPrebuilt.gmk) \
- ) \
- $(shell rm -f $(NEW_SPEC)) \
- $(foreach i, 1 2 3 4 5 6 7 8 9 10 11 12, \
- $(if $(strip $($i)), \
- $(call AppendFile, $(strip $($i)), $(NEW_SPEC)) \
- ) \
- )
-endef
+# Functions
+################################################################################
define VerifyVariable
ifeq ($$($1), )
- $$(info Error: Variable $1 is missing, needed for run-tests-prebuilt)
- $$(error Cannot continue.)
+ ifeq ($2, )
+ $$(info Error: Variable $1 is missing, needed for run-tests-prebuilt)
+ $$(error Cannot continue.)
+ else
+ $$(info Variable $1 is missing, using default $2)
+ $1:=$2
+ endif
else
ifneq ($$(findstring $$(LOG_LEVEL), debug trace), )
$$(info Prebuilt variable $1=$$($1))
@@ -99,34 +61,76 @@
endif
endef
-$(eval $(call VerifyVariable,TOPDIR))
+# Create an ephemeral spec file
+# $1: the output file name
+# $2..n: The lines to output to the file.
+define CreateNewSpec
+ $(if $(strip $(13)), \
+ $(error Internal makefile error: \
+ Too many arguments to macro, please update CreateNewSpec in RunTestsPrebuilt.gmk) \
+ ) \
+ $(shell rm -f $1) \
+ $(foreach i, 2 3 4 5 6 7 8 9 10 11 12, \
+ $(if $(strip $($i)), \
+ $(call AppendFile, $(strip $($i)), $1) \
+ ) \
+ )
+endef
+
+################################################################################
+# Setup ephemeral spec file
+################################################################################
+
+# Verify that user has given correct additional input.
+
+# These variables are absolutely necessary
$(eval $(call VerifyVariable,OUTPUTDIR))
$(eval $(call VerifyVariable,BOOT_JDK))
-$(eval $(call VerifyVariable,JDK_IMAGE_DIR))
-$(eval $(call VerifyVariable,TEST_IMAGE_DIR))
$(eval $(call VerifyVariable,JT_HOME))
-$(eval $(call VerifyVariable,TONGA_JAR))
+
+# These can have default values based on the ones above
+$(eval $(call VerifyVariable,JDK_IMAGE_DIR,$(OUTPUTDIR)/images/jdk))
+$(eval $(call VerifyVariable,TEST_IMAGE_DIR,$(OUTPUTDIR)/images/test))
-$(call CreateNewSpec, \
+# Now that we have verified that we have the required variables available, we
+# can include the prebuilt spec file ourselves, without an ephemeral spec
+# wrapper. This is required so we can include MakeBase which is needed for
+# CreateNewSpec.
+SPEC := $(TOPDIR)/make/RunTestsPrebuiltSpec.gmk
+include $(SPEC)
+include $(TOPDIR)/make/common/MakeBase.gmk
+
+# Now we can include additional custom support.
+# This might define CUSTOM_NEW_SPEC_LINE
+ifneq ($(CUSTOM_MAKE_DIR), )
+ include $(CUSTOM_MAKE_DIR)/RunTestsPrebuilt.gmk
+endif
+
+NEW_SPEC := $(OUTPUTDIR)/run-test-spec.gmk
+
+$(call CreateNewSpec, $(NEW_SPEC), \
# Generated file -- do not edit!, \
SPEC := $(NEW_SPEC), \
- TOPDIR := $(topdir), \
+ TOPDIR := $(TOPDIR), \
OUTPUTDIR := $(OUTPUTDIR), \
BOOT_JDK := $(BOOT_JDK), \
JDK_IMAGE_DIR := $(JDK_IMAGE_DIR), \
TEST_IMAGE_DIR := $(TEST_IMAGE_DIR), \
JT_HOME := $(JT_HOME), \
- TONGA_JAR := $(TONGA_JAR), \
- include $(topdir)/make/RunTestsPrebuiltSpec.gmk, \
+ $(CUSTOM_NEW_SPEC_LINE), \
+ include $(TOPDIR)/make/RunTestsPrebuiltSpec.gmk, \
)
+
+################################################################################
+# The run-test-prebuilt target
################################################################################
default: all
-run-test:
+run-test-prebuilt:
@$(RM) -f $(MAKESUPPORT_OUTPUTDIR)/exit-with-error
- @cd $(topdir) && $(MAKE) -r -R -j 1 -s -I make/common/ \
+ @cd $(TOPDIR) && $(MAKE) -r -R -j 1 -s -I make/common/ \
SPEC=$(NEW_SPEC) \
-f make/RunTests.gmk run-test TEST="$(TEST)"
@if test -f $(MAKESUPPORT_OUTPUTDIR)/exit-with-error ; then \
@@ -134,6 +138,6 @@
fi
-all: run-test
+all: run-test-prebuilt
.PHONY: default all
--- a/make/RunTestsPrebuiltSpec.gmk Mon Nov 27 12:29:28 2017 +0100
+++ b/make/RunTestsPrebuiltSpec.gmk Mon Nov 27 14:15:35 2017 +0100
@@ -36,25 +36,32 @@
endif
endef
+# It is the responsibility of the file including us to have set these up.
+# Verify that this is correct.
+$(eval $(call VerifyVariable,SPEC))
$(eval $(call VerifyVariable,TOPDIR))
+$(eval $(call VerifyVariable,OUTPUTDIR))
$(eval $(call VerifyVariable,BOOT_JDK))
-$(eval $(call VerifyVariable,OUTPUT_ROOT))
-$(eval $(call VerifyVariable,JDK_IMAGE_DIR))
-$(eval $(call VerifyVariable,TEST_IMAGE_DIR))
$(eval $(call VerifyVariable,JT_HOME))
$(eval $(call VerifyVariable,TONGA_JAR))
-
-
-# These are old aliases that have not yet been fully removed
-BUILD_OUTPUT := $(OUTPUT_ROOT)
-SRC_ROOT := $(TOPDIR)
+$(eval $(call VerifyVariable,JDK_IMAGE_DIR))
+$(eval $(call VerifyVariable,TEST_IMAGE_DIR))
# FIXMEs
+#CUSTOM_ROOT := $(shell cd $(TOPDIR)/.. && pwd)
+#$(info CUSTOM_ROOT is $(CUSTOM_ROOT))
+#CLOSED_TOPDIR := $(CUSTOM_ROOT)/closed
+
# verify that we have:
# MAKE
# BASH
+# FIXME
+export BASH := bash
+
+
+
#SPEC :=
FIXPATH :=
CYGPATH := cygpath
@@ -225,3 +232,15 @@
#
JRE_IMAGE_DIR := $(JDK_IMAGE_DIR)
+
+# This macro is called to allow inclusion of closed source counterparts.
+# If running without closed sources, it expands to nothing.
+# Usage: This function is called in an open makefile, with the following
+# argument:
+# $1 the name of the makefile
+define IncludeCustomExtension
+ custom_include_file := $$(CLOSED_TOPDIR)/make/$(strip $1)
+ ifneq ($$(wildcard $$(custom_include_file)), )
+ include $$(custom_include_file)
+ endif
+endef