From 2b85a35ed11d798ca4edde4247c68ba0f622bb3c Mon Sep 17 00:00:00 2001 From: Goetz Lindenmaier Date: Tue, 12 Mar 2024 15:25:53 +0100 Subject: [PATCH] Backport 8292717 --- make/autoconf/configure.ac | 13 ++- make/autoconf/jdk-options.m4 | 39 -------- make/autoconf/lib-tests.m4 | 179 ++++++++++++++++++++++++++++++++++- make/autoconf/toolchain.m4 | 134 -------------------------- 4 files changed, 184 insertions(+), 181 deletions(-) diff --git a/make/autoconf/configure.ac b/make/autoconf/configure.ac index 7d8fa96c2c8..a5372287061 100644 --- a/make/autoconf/configure.ac +++ b/make/autoconf/configure.ac @@ -183,15 +183,14 @@ TOOLCHAIN_POST_DETECTION TOOLCHAIN_SETUP_BUILD_COMPILERS TOOLCHAIN_MISC_CHECKS -# Setup the JTReg Regression Test Harness. -TOOLCHAIN_SETUP_JTREG - -# Setup Jib dependency tool -TOOLCHAIN_SETUP_JIB - # After toolchain setup, we need to process some flags to be able to continue. FLAGS_POST_TOOLCHAIN +# Setup the tools needed to test the JDK (JTReg Regression Test Harness +# and the Jib dependency tool). +LIB_TESTS_SETUP_JTREG +LIB_TESTS_SETUP_JIB + # Now we can test some aspects on the target using configure macros. PLATFORM_SETUP_OPENJDK_TARGET_BITS PLATFORM_SETUP_OPENJDK_TARGET_ENDIANNESS @@ -233,7 +232,7 @@ HOTSPOT_SETUP_JVM_FEATURES ############################################################################### JDKOPT_DETECT_INTREE_EC -JDKOPT_ENABLE_DISABLE_FAILURE_HANDLER +LIB_TESTS_ENABLE_DISABLE_FAILURE_HANDLER JDKOPT_ENABLE_DISABLE_GENERATE_CLASSLIST JDKOPT_EXCLUDE_TRANSLATIONS JDKOPT_ENABLE_DISABLE_MANPAGES diff --git a/make/autoconf/jdk-options.m4 b/make/autoconf/jdk-options.m4 index 963b896b8d7..cc45f3c0267 100644 --- a/make/autoconf/jdk-options.m4 +++ b/make/autoconf/jdk-options.m4 @@ -521,45 +521,6 @@ AC_DEFUN_ONCE([JDKOPT_SETUP_JLINK_OPTIONS], AC_SUBST(JLINK_KEEP_PACKAGED_MODULES) ]) -################################################################################ -# -# Check if building of the jtreg failure handler should be enabled. -# -AC_DEFUN_ONCE([JDKOPT_ENABLE_DISABLE_FAILURE_HANDLER], -[ - AC_ARG_ENABLE([jtreg-failure-handler], [AS_HELP_STRING([--enable-jtreg-failure-handler], - [forces build of the jtreg failure handler to be enabled, missing dependencies - become fatal errors. Default is auto, where the failure handler is built if all - dependencies are present and otherwise just disabled.])]) - - AC_MSG_CHECKING([if jtreg failure handler should be built]) - - if test "x$enable_jtreg_failure_handler" = "xyes"; then - if test "x$JT_HOME" = "x"; then - AC_MSG_ERROR([Cannot enable jtreg failure handler without jtreg.]) - else - BUILD_FAILURE_HANDLER=true - AC_MSG_RESULT([yes, forced]) - fi - elif test "x$enable_jtreg_failure_handler" = "xno"; then - BUILD_FAILURE_HANDLER=false - AC_MSG_RESULT([no, forced]) - elif test "x$enable_jtreg_failure_handler" = "xauto" \ - || test "x$enable_jtreg_failure_handler" = "x"; then - if test "x$JT_HOME" = "x"; then - BUILD_FAILURE_HANDLER=false - AC_MSG_RESULT([no, missing jtreg]) - else - BUILD_FAILURE_HANDLER=true - AC_MSG_RESULT([yes, jtreg present]) - fi - else - AC_MSG_ERROR([Invalid value for --enable-jtreg-failure-handler: $enable_jtreg_failure_handler]) - fi - - AC_SUBST(BUILD_FAILURE_HANDLER) -]) - ################################################################################ # # Enable or disable generation of the classlist at build time diff --git a/make/autoconf/lib-tests.m4 b/make/autoconf/lib-tests.m4 index e92d4b3c7b7..104168a14f9 100644 --- a/make/autoconf/lib-tests.m4 +++ b/make/autoconf/lib-tests.m4 @@ -1,5 +1,5 @@ # -# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2018, 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 @@ -23,6 +23,13 @@ # questions. # +################################################################################ +# Setup libraries and functionalities needed to test the JDK. +################################################################################ + +# Minimum supported version +JTREG_MINIMUM_VERSION=6.1 + ############################################################################### # # Check for graalunit libs, needed for running graalunit tests. @@ -54,3 +61,173 @@ AC_DEFUN_ONCE([LIB_TESTS_SETUP_GRAALUNIT], UTIL_FIXUP_PATH([GRAALUNIT_LIB]) AC_SUBST(GRAALUNIT_LIB) ]) + +# Setup the JTReg Regression Test Harness. +AC_DEFUN_ONCE([LIB_TESTS_SETUP_JTREG], +[ + AC_ARG_WITH(jtreg, [AS_HELP_STRING([--with-jtreg], + [Regression Test Harness @<:@probed@:>@])]) + + if test "x$with_jtreg" = xno; then + # jtreg disabled + AC_MSG_CHECKING([for jtreg test harness]) + AC_MSG_RESULT([no, disabled]) + elif test "x$with_jtreg" != xyes && test "x$with_jtreg" != x; then + # An explicit path is specified, use it. + JT_HOME="$with_jtreg" + UTIL_FIXUP_PATH([JT_HOME]) + if test ! -d "$JT_HOME"; then + AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg does not exist]) + fi + + if test ! -e "$JT_HOME/lib/jtreg.jar"; then + AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg is not a valid jtreg home]) + fi + + JTREGEXE="$JT_HOME/bin/jtreg" + if test ! -x "$JTREGEXE"; then + AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg does not contain valid jtreg executable]) + fi + + AC_MSG_CHECKING([for jtreg test harness]) + AC_MSG_RESULT([$JT_HOME]) + else + # Try to locate jtreg + if test "x$JT_HOME" != x; then + # JT_HOME set in environment, use it + if test ! -d "$JT_HOME"; then + AC_MSG_WARN([Ignoring JT_HOME pointing to invalid directory: $JT_HOME]) + JT_HOME= + else + if test ! -e "$JT_HOME/lib/jtreg.jar"; then + AC_MSG_WARN([Ignoring JT_HOME which is not a valid jtreg home: $JT_HOME]) + JT_HOME= + elif test ! -x "$JT_HOME/bin/jtreg"; then + AC_MSG_WARN([Ignoring JT_HOME which does not contain valid jtreg executable: $JT_HOME]) + JT_HOME= + else + JTREGEXE="$JT_HOME/bin/jtreg" + AC_MSG_NOTICE([Located jtreg using JT_HOME from environment]) + fi + fi + fi + + if test "x$JT_HOME" = x; then + # JT_HOME is not set in environment, or was deemed invalid. + # Try to find jtreg on path + UTIL_LOOKUP_PROGS(JTREGEXE, jtreg) + if test "x$JTREGEXE" != x; then + # That's good, now try to derive JT_HOME + JT_HOME=`(cd $($DIRNAME $JTREGEXE)/.. && pwd)` + if test ! -e "$JT_HOME/lib/jtreg.jar"; then + AC_MSG_WARN([Ignoring jtreg from path since a valid jtreg home cannot be found]) + JT_HOME= + JTREGEXE= + else + AC_MSG_NOTICE([Located jtreg using jtreg executable in path]) + fi + fi + fi + + AC_MSG_CHECKING([for jtreg test harness]) + if test "x$JT_HOME" != x; then + AC_MSG_RESULT([$JT_HOME]) + else + AC_MSG_RESULT([no, not found]) + + if test "x$with_jtreg" = xyes; then + AC_MSG_ERROR([--with-jtreg was specified, but no jtreg found.]) + fi + fi + fi + + UTIL_FIXUP_EXECUTABLE(JTREGEXE) + UTIL_FIXUP_PATH(JT_HOME) + AC_SUBST(JT_HOME) + + # Verify jtreg version + if test "x$JT_HOME" != x; then + AC_MSG_CHECKING([jtreg version number]) + # jtreg -version looks like this: "jtreg 6.1+1-19" + # Extract actual version part ("6.1" in this case) + jtreg_version_full=`$JAVA -jar $JT_HOME/lib/jtreg.jar -version | $HEAD -n 1 | $CUT -d ' ' -f 2` + jtreg_version=${jtreg_version_full/%+*} + AC_MSG_RESULT([$jtreg_version]) + + # This is a simplified version of TOOLCHAIN_CHECK_COMPILER_VERSION + comparable_actual_version=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", [$]1, [$]2, [$]3, [$]4) }' <<< "$jtreg_version"` + comparable_minimum_version=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", [$]1, [$]2, [$]3, [$]4) }' <<< "$JTREG_MINIMUM_VERSION"` + if test $comparable_actual_version -lt $comparable_minimum_version ; then + AC_MSG_ERROR([jtreg version is too old, at least version $JTREG_MINIMUM_VERSION is required]) + fi + fi + + AC_SUBST(JTREGEXE) +]) + +# Setup the JIB dependency resolver +AC_DEFUN_ONCE([LIB_TESTS_SETUP_JIB], +[ + AC_ARG_WITH(jib, [AS_HELP_STRING([--with-jib], + [Jib dependency management tool @<:@not used@:>@])]) + + if test "x$with_jib" = xno || test "x$with_jib" = x; then + # jib disabled + AC_MSG_CHECKING([for jib]) + AC_MSG_RESULT(no) + elif test "x$with_jib" = xyes; then + AC_MSG_ERROR([Must supply a value to --with-jib]) + else + JIB_HOME="${with_jib}" + AC_MSG_CHECKING([for jib]) + AC_MSG_RESULT(${JIB_HOME}) + if test ! -d "${JIB_HOME}"; then + AC_MSG_ERROR([--with-jib must be a directory]) + fi + JIB_JAR=$(ls ${JIB_HOME}/lib/jib-*.jar) + if test ! -f "${JIB_JAR}"; then + AC_MSG_ERROR([Could not find jib jar file in ${JIB_HOME}]) + fi + fi + + AC_SUBST(JIB_HOME) +]) + +################################################################################ +# +# Check if building of the jtreg failure handler should be enabled. +# +AC_DEFUN_ONCE([LIB_TESTS_ENABLE_DISABLE_FAILURE_HANDLER], +[ + AC_ARG_ENABLE([jtreg-failure-handler], [AS_HELP_STRING([--enable-jtreg-failure-handler], + [forces build of the jtreg failure handler to be enabled, missing dependencies + become fatal errors. Default is auto, where the failure handler is built if all + dependencies are present and otherwise just disabled.])]) + + AC_MSG_CHECKING([if jtreg failure handler should be built]) + + if test "x$enable_jtreg_failure_handler" = "xyes"; then + if test "x$JT_HOME" = "x"; then + AC_MSG_ERROR([Cannot enable jtreg failure handler without jtreg.]) + else + BUILD_FAILURE_HANDLER=true + AC_MSG_RESULT([yes, forced]) + fi + elif test "x$enable_jtreg_failure_handler" = "xno"; then + BUILD_FAILURE_HANDLER=false + AC_MSG_RESULT([no, forced]) + elif test "x$enable_jtreg_failure_handler" = "xauto" \ + || test "x$enable_jtreg_failure_handler" = "x"; then + if test "x$JT_HOME" = "x"; then + BUILD_FAILURE_HANDLER=false + AC_MSG_RESULT([no, missing jtreg]) + else + BUILD_FAILURE_HANDLER=true + AC_MSG_RESULT([yes, jtreg present]) + fi + else + AC_MSG_ERROR([Invalid value for --enable-jtreg-failure-handler: $enable_jtreg_failure_handler]) + fi + + AC_SUBST(BUILD_FAILURE_HANDLER) +]) diff --git a/make/autoconf/toolchain.m4 b/make/autoconf/toolchain.m4 index 6b28a865a09..24151ad49e8 100644 --- a/make/autoconf/toolchain.m4 +++ b/make/autoconf/toolchain.m4 @@ -61,9 +61,6 @@ TOOLCHAIN_MINIMUM_VERSION_xlc="" # Minimum supported linker versions, empty means unspecified TOOLCHAIN_MINIMUM_LD_VERSION_gcc="2.18" -# Minimum supported version -JTREG_MINIMUM_VERSION=6.1 - # Prepare the system so that TOOLCHAIN_CHECK_COMPILER_VERSION can be called. # Must have CC_VERSION_NUMBER and CXX_VERSION_NUMBER. # $1 - optional variable prefix for compiler and version variables (BUILD_) @@ -1064,134 +1061,3 @@ AC_DEFUN_ONCE([TOOLCHAIN_MISC_CHECKS], fi AC_SUBST(HOTSPOT_TOOLCHAIN_TYPE) ]) - -# Setup the JTReg Regression Test Harness. -AC_DEFUN_ONCE([TOOLCHAIN_SETUP_JTREG], -[ - AC_ARG_WITH(jtreg, [AS_HELP_STRING([--with-jtreg], - [Regression Test Harness @<:@probed@:>@])]) - - if test "x$with_jtreg" = xno; then - # jtreg disabled - AC_MSG_CHECKING([for jtreg test harness]) - AC_MSG_RESULT([no, disabled]) - elif test "x$with_jtreg" != xyes && test "x$with_jtreg" != x; then - # An explicit path is specified, use it. - JT_HOME="$with_jtreg" - UTIL_FIXUP_PATH([JT_HOME]) - if test ! -d "$JT_HOME"; then - AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg does not exist]) - fi - - if test ! -e "$JT_HOME/lib/jtreg.jar"; then - AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg is not a valid jtreg home]) - fi - - JTREGEXE="$JT_HOME/bin/jtreg" - if test ! -x "$JTREGEXE"; then - AC_MSG_ERROR([jtreg home directory from --with-jtreg=$with_jtreg does not contain valid jtreg executable]) - fi - - AC_MSG_CHECKING([for jtreg test harness]) - AC_MSG_RESULT([$JT_HOME]) - else - # Try to locate jtreg - if test "x$JT_HOME" != x; then - # JT_HOME set in environment, use it - if test ! -d "$JT_HOME"; then - AC_MSG_WARN([Ignoring JT_HOME pointing to invalid directory: $JT_HOME]) - JT_HOME= - else - if test ! -e "$JT_HOME/lib/jtreg.jar"; then - AC_MSG_WARN([Ignoring JT_HOME which is not a valid jtreg home: $JT_HOME]) - JT_HOME= - elif test ! -x "$JT_HOME/bin/jtreg"; then - AC_MSG_WARN([Ignoring JT_HOME which does not contain valid jtreg executable: $JT_HOME]) - JT_HOME= - else - JTREGEXE="$JT_HOME/bin/jtreg" - AC_MSG_NOTICE([Located jtreg using JT_HOME from environment]) - fi - fi - fi - - if test "x$JT_HOME" = x; then - # JT_HOME is not set in environment, or was deemed invalid. - # Try to find jtreg on path - UTIL_LOOKUP_PROGS(JTREGEXE, jtreg) - if test "x$JTREGEXE" != x; then - # That's good, now try to derive JT_HOME - JT_HOME=`(cd $($DIRNAME $JTREGEXE)/.. && pwd)` - if test ! -e "$JT_HOME/lib/jtreg.jar"; then - AC_MSG_WARN([Ignoring jtreg from path since a valid jtreg home cannot be found]) - JT_HOME= - JTREGEXE= - else - AC_MSG_NOTICE([Located jtreg using jtreg executable in path]) - fi - fi - fi - - AC_MSG_CHECKING([for jtreg test harness]) - if test "x$JT_HOME" != x; then - AC_MSG_RESULT([$JT_HOME]) - else - AC_MSG_RESULT([no, not found]) - - if test "x$with_jtreg" = xyes; then - AC_MSG_ERROR([--with-jtreg was specified, but no jtreg found.]) - fi - fi - fi - - UTIL_FIXUP_EXECUTABLE(JTREGEXE) - UTIL_FIXUP_PATH(JT_HOME) - AC_SUBST(JT_HOME) - - # Verify jtreg version - if test "x$JT_HOME" != x; then - AC_MSG_CHECKING([jtreg version number]) - # jtreg -version looks like this: "jtreg 6.1+1-19" - # Extract actual version part ("6.1" in this case) - jtreg_version_full=`$JAVA -jar $JT_HOME/lib/jtreg.jar -version | $HEAD -n 1 | $CUT -d ' ' -f 2` - jtreg_version=${jtreg_version_full/%+*} - AC_MSG_RESULT([$jtreg_version]) - - # This is a simplified version of TOOLCHAIN_CHECK_COMPILER_VERSION - comparable_actual_version=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", [$]1, [$]2, [$]3, [$]4) }' <<< "$jtreg_version"` - comparable_minimum_version=`$AWK -F. '{ printf("%05d%05d%05d%05d\n", [$]1, [$]2, [$]3, [$]4) }' <<< "$JTREG_MINIMUM_VERSION"` - if test $comparable_actual_version -lt $comparable_minimum_version ; then - AC_MSG_ERROR([jtreg version is too old, at least version $JTREG_MINIMUM_VERSION is required]) - fi - fi - - AC_SUBST(JTREGEXE) -]) - -# Setup the JIB dependency resolver -AC_DEFUN_ONCE([TOOLCHAIN_SETUP_JIB], -[ - AC_ARG_WITH(jib, [AS_HELP_STRING([--with-jib], - [Jib dependency management tool @<:@not used@:>@])]) - - if test "x$with_jib" = xno || test "x$with_jib" = x; then - # jib disabled - AC_MSG_CHECKING([for jib]) - AC_MSG_RESULT(no) - elif test "x$with_jib" = xyes; then - AC_MSG_ERROR([Must supply a value to --with-jib]) - else - JIB_HOME="${with_jib}" - AC_MSG_CHECKING([for jib]) - AC_MSG_RESULT(${JIB_HOME}) - if test ! -d "${JIB_HOME}"; then - AC_MSG_ERROR([--with-jib must be a directory]) - fi - JIB_JAR=$(ls ${JIB_HOME}/lib/jib-*.jar) - if test ! -f "${JIB_JAR}"; then - AC_MSG_ERROR([Could not find jib jar file in ${JIB_HOME}]) - fi - fi - - AC_SUBST(JIB_HOME) -])