# HG changeset patch # User erikj # Date 1462368541 -7200 # Node ID e1fa5c2e62a029f7459657c32b07eaaebf1c965e # Parent df5f275ebdacdb0d961aa47d23acecfa0b5cd338 8136777: Introduce bundle targets Reviewed-by: tbell, ihse diff -r df5f275ebdac -r e1fa5c2e62a0 common/autoconf/basics.m4 --- a/common/autoconf/basics.m4 Tue May 17 18:18:18 2016 +0200 +++ b/common/autoconf/basics.m4 Wed May 04 15:29:01 2016 +0200 @@ -484,6 +484,8 @@ BASIC_REQUIRE_PROGS(FILE, file) BASIC_REQUIRE_PROGS(FIND, find) BASIC_REQUIRE_PROGS(HEAD, head) + BASIC_REQUIRE_PROGS(GUNZIP, gunzip) + BASIC_REQUIRE_PROGS(GZIP, pigz gzip) BASIC_REQUIRE_PROGS(LN, ln) BASIC_REQUIRE_PROGS(LS, ls) BASIC_REQUIRE_PROGS(MKDIR, mkdir) @@ -496,7 +498,7 @@ BASIC_REQUIRE_PROGS(SH, sh) BASIC_REQUIRE_PROGS(SORT, sort) BASIC_REQUIRE_PROGS(TAIL, tail) - BASIC_REQUIRE_PROGS(TAR, tar) + BASIC_REQUIRE_PROGS(TAR, gtar tar) BASIC_REQUIRE_PROGS(TEE, tee) BASIC_REQUIRE_PROGS(TOUCH, touch) BASIC_REQUIRE_PROGS(TR, tr) @@ -1007,11 +1009,36 @@ AC_SUBST(FIND_DELETE) ]) +AC_DEFUN([BASIC_CHECK_TAR], +[ + # Test which kind of tar was found + if test "x$($TAR --version | $GREP "GNU tar")" != "x"; then + TAR_TYPE="gnu" + elif test "x$($TAR -v | $GREP "bsdtar")" != "x"; then + TAR_TYPE="bsd" + elif test "x$OPENJDK_BUILD_OS" = "xsolaris"; then + TAR_TYPE="solaris" + fi + AC_MSG_CHECKING([what type of tar was found]) + AC_MSG_RESULT([$TAR_TYPE]) + + if test "x$TAR_TYPE" = "xgnu"; then + TAR_INCLUDE_PARAM="T" + TAR_SUPPORTS_TRANSFORM="true" + else + TAR_INCLUDE_PARAM="I" + TAR_SUPPORTS_TRANSFORM="false" + fi + AC_SUBST(TAR_INCLUDE_PARAM) + AC_SUBST(TAR_SUPPORTS_TRANSFORM) +]) + AC_DEFUN_ONCE([BASIC_SETUP_COMPLEX_TOOLS], [ BASIC_CHECK_GNU_MAKE BASIC_CHECK_FIND_DELETE + BASIC_CHECK_TAR # These tools might not be installed by default, # need hint on how to install them. diff -r df5f275ebdac -r e1fa5c2e62a0 common/autoconf/compare.sh.in --- a/common/autoconf/compare.sh.in Tue May 17 18:18:18 2016 +0200 +++ b/common/autoconf/compare.sh.in Wed May 04 15:29:01 2016 +0200 @@ -48,6 +48,7 @@ export FILE="@FILE@" export FIND="@FIND@" export GREP="@GREP@" +export GUNZIP="@GUNZIP@" export LDD="@LDD@" export LN="@LN@" export MKDIR="@MKDIR@" @@ -63,10 +64,11 @@ export SORT="@SORT@" export STAT="@STAT@" export STRIP="@STRIP@ @STRIPFLAGS@" +export TAR="@TAR@" export TEE="@TEE@" export UNIQ="@UNIQ@" export UNPACK200="@FIXPATH@ @BOOT_JDK@/bin/unpack200" -export UNARCHIVE="@UNZIP@ -q" +export UNARCHIVE="@UNZIP@ -q -o" export SRC_ROOT="@TOPDIR@" export OUTPUT_ROOT="@OUTPUT_ROOT@" diff -r df5f275ebdac -r e1fa5c2e62a0 common/autoconf/generated-configure.sh --- a/common/autoconf/generated-configure.sh Tue May 17 18:18:18 2016 +0200 +++ b/common/autoconf/generated-configure.sh Wed May 04 15:29:01 2016 +0200 @@ -949,6 +949,8 @@ LDD ZIP UNZIP +TAR_SUPPORTS_TRANSFORM +TAR_INCLUDE_PARAM FIND_DELETE OUTPUT_SYNC OUTPUT_SYNC_SUPPORTED @@ -981,6 +983,9 @@ HOTSPOT_BUILD_CPU HOTSPOT_BUILD_OS_TYPE HOTSPOT_BUILD_OS +OPENJDK_BUILD_BUNDLE_PLATFORM +OPENJDK_BUILD_CPU_BUNDLE +OPENJDK_BUILD_OS_BUNDLE OPENJDK_BUILD_OS_EXPORT_DIR OPENJDK_BUILD_CPU_JLI_CFLAGS OPENJDK_BUILD_CPU_OSARCH @@ -995,6 +1000,9 @@ HOTSPOT_TARGET_OS DEFINE_CROSS_COMPILE_ARCH LP64 +OPENJDK_TARGET_BUNDLE_PLATFORM +OPENJDK_TARGET_CPU_BUNDLE +OPENJDK_TARGET_OS_BUNDLE OPENJDK_TARGET_OS_EXPORT_DIR OPENJDK_TARGET_CPU_JLI_CFLAGS OPENJDK_TARGET_CPU_OSARCH @@ -1064,6 +1072,8 @@ MKDIR LS LN +GZIP +GUNZIP HEAD FIND FILE @@ -1246,6 +1256,8 @@ FILE FIND HEAD +GUNZIP +GZIP LN LS MKDIR @@ -2184,6 +2196,8 @@ FILE Override default value for FILE FIND Override default value for FIND HEAD Override default value for HEAD + GUNZIP Override default value for GUNZIP + GZIP Override default value for GZIP LN Override default value for LN LS Override default value for LS MKDIR Override default value for MKDIR @@ -3686,6 +3700,8 @@ + + # Check if build directory is on local disk. If not possible to determine, # we prefer to claim it's local. # Argument 1: directory to test @@ -5056,7 +5072,7 @@ #CUSTOM_AUTOCONF_INCLUDE # Do not change or remove the following line, it is needed for consistency checks: -DATE_WHEN_GENERATED=1463011468 +DATE_WHEN_GENERATED=1463500649 ############################################################################### # @@ -8384,6 +8400,414 @@ # Publish this variable in the help. + if [ -z "${GUNZIP+x}" ]; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in gunzip +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_GUNZIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $GUNZIP in + [\\/]* | ?:[\\/]*) + ac_cv_path_GUNZIP="$GUNZIP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GUNZIP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +GUNZIP=$ac_cv_path_GUNZIP +if test -n "$GUNZIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GUNZIP" >&5 +$as_echo "$GUNZIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$GUNZIP" && break +done + + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !GUNZIP! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!GUNZIP!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xGUNZIP" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of GUNZIP from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of GUNZIP from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in gunzip +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_GUNZIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $GUNZIP in + [\\/]* | ?:[\\/]*) + ac_cv_path_GUNZIP="$GUNZIP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GUNZIP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +GUNZIP=$ac_cv_path_GUNZIP +if test -n "$GUNZIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GUNZIP" >&5 +$as_echo "$GUNZIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$GUNZIP" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if we try to supply an empty value + if test "x$GUNZIP" = x; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool GUNZIP= (no value)" >&5 +$as_echo "$as_me: Setting user supplied tool GUNZIP= (no value)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUNZIP" >&5 +$as_echo_n "checking for GUNZIP... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5 +$as_echo "disabled" >&6; } + else + # Check if the provided tool contains a complete path. + tool_specified="$GUNZIP" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool GUNZIP=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool GUNZIP=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_GUNZIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $GUNZIP in + [\\/]* | ?:[\\/]*) + ac_cv_path_GUNZIP="$GUNZIP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GUNZIP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +GUNZIP=$ac_cv_path_GUNZIP +if test -n "$GUNZIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GUNZIP" >&5 +$as_echo "$GUNZIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$GUNZIP" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool GUNZIP=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool GUNZIP=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GUNZIP" >&5 +$as_echo_n "checking for GUNZIP... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool GUNZIP=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + fi + + + + if test "x$GUNZIP" = x; then + as_fn_error $? "Could not find required tool for GUNZIP" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + + if [ -z "${GZIP+x}" ]; then + # The variable is not set by user, try to locate tool using the code snippet + for ac_prog in pigz gzip +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_GZIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $GZIP in + [\\/]* | ?:[\\/]*) + ac_cv_path_GZIP="$GZIP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GZIP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +GZIP=$ac_cv_path_GZIP +if test -n "$GZIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GZIP" >&5 +$as_echo "$GZIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$GZIP" && break +done + + else + # The variable is set, but is it from the command line or the environment? + + # Try to remove the string !GZIP! from our list. + try_remove_var=${CONFIGURE_OVERRIDDEN_VARIABLES//!GZIP!/} + if test "x$try_remove_var" = "x$CONFIGURE_OVERRIDDEN_VARIABLES"; then + # If it failed, the variable was not from the command line. Ignore it, + # but warn the user (except for BASH, which is always set by the calling BASH). + if test "xGZIP" != xBASH; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring value of GZIP from the environment. Use command line variables instead." >&5 +$as_echo "$as_me: WARNING: Ignoring value of GZIP from the environment. Use command line variables instead." >&2;} + fi + # Try to locate tool using the code snippet + for ac_prog in pigz gzip +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_GZIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $GZIP in + [\\/]* | ?:[\\/]*) + ac_cv_path_GZIP="$GZIP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GZIP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +GZIP=$ac_cv_path_GZIP +if test -n "$GZIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GZIP" >&5 +$as_echo "$GZIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$GZIP" && break +done + + else + # If it succeeded, then it was overridden by the user. We will use it + # for the tool. + + # First remove it from the list of overridden variables, so we can test + # for unknown variables in the end. + CONFIGURE_OVERRIDDEN_VARIABLES="$try_remove_var" + + # Check if we try to supply an empty value + if test "x$GZIP" = x; then + { $as_echo "$as_me:${as_lineno-$LINENO}: Setting user supplied tool GZIP= (no value)" >&5 +$as_echo "$as_me: Setting user supplied tool GZIP= (no value)" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GZIP" >&5 +$as_echo_n "checking for GZIP... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5 +$as_echo "disabled" >&6; } + else + # Check if the provided tool contains a complete path. + tool_specified="$GZIP" + tool_basename="${tool_specified##*/}" + if test "x$tool_basename" = "x$tool_specified"; then + # A command without a complete path is provided, search $PATH. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will search for user supplied tool GZIP=$tool_basename" >&5 +$as_echo "$as_me: Will search for user supplied tool GZIP=$tool_basename" >&6;} + # Extract the first word of "$tool_basename", so it can be a program name with args. +set dummy $tool_basename; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_GZIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $GZIP in + [\\/]* | ?:[\\/]*) + ac_cv_path_GZIP="$GZIP" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GZIP="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +GZIP=$ac_cv_path_GZIP +if test -n "$GZIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GZIP" >&5 +$as_echo "$GZIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$GZIP" = x; then + as_fn_error $? "User supplied tool $tool_basename could not be found" "$LINENO" 5 + fi + else + # Otherwise we believe it is a complete path. Use it as it is. + { $as_echo "$as_me:${as_lineno-$LINENO}: Will use user supplied tool GZIP=$tool_specified" >&5 +$as_echo "$as_me: Will use user supplied tool GZIP=$tool_specified" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GZIP" >&5 +$as_echo_n "checking for GZIP... " >&6; } + if test ! -x "$tool_specified"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + as_fn_error $? "User supplied tool GZIP=$tool_specified does not exist or is not executable" "$LINENO" 5 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tool_specified" >&5 +$as_echo "$tool_specified" >&6; } + fi + fi + fi + + fi + + + + if test "x$GZIP" = x; then + as_fn_error $? "Could not find required tool for GZIP" "$LINENO" 5 + fi + + + + + + # Publish this variable in the help. + + if [ -z "${LN+x}" ]; then # The variable is not set by user, try to locate tool using the code snippet for ac_prog in ln @@ -10834,7 +11258,7 @@ if [ -z "${TAR+x}" ]; then # The variable is not set by user, try to locate tool using the code snippet - for ac_prog in tar + for ac_prog in gtar tar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -10892,7 +11316,7 @@ $as_echo "$as_me: WARNING: Ignoring value of TAR from the environment. Use command line variables instead." >&2;} fi # Try to locate tool using the code snippet - for ac_prog in tar + for ac_prog in gtar tar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -15408,6 +15832,23 @@ fi + # The new version string in JDK 9 also defined new naming of OS and ARCH for bundles + # Macosx is osx and x86_64 is x64 + if test "x$OPENJDK_TARGET_OS" = xmacosx; then + OPENJDK_TARGET_OS_BUNDLE="osx" + else + OPENJDK_TARGET_OS_BUNDLE="$OPENJDK_TARGET_OS" + fi + if test "x$OPENJDK_TARGET_CPU" = xx86_64; then + OPENJDK_TARGET_CPU_BUNDLE="x64" + else + OPENJDK_TARGET_CPU_BUNDLE="$OPENJDK_TARGET_CPU" + fi + OPENJDK_TARGET_BUNDLE_PLATFORM="${OPENJDK_TARGET_OS_BUNDLE}-${OPENJDK_TARGET_CPU_BUNDLE}" + + + + if test "x$OPENJDK_TARGET_CPU_BITS" = x64; then A_LP64="LP64:=" # -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in @@ -15564,6 +16005,23 @@ fi + # The new version string in JDK 9 also defined new naming of OS and ARCH for bundles + # Macosx is osx and x86_64 is x64 + if test "x$OPENJDK_BUILD_OS" = xmacosx; then + OPENJDK_BUILD_OS_BUNDLE="osx" + else + OPENJDK_BUILD_OS_BUNDLE="$OPENJDK_TARGET_OS" + fi + if test "x$OPENJDK_BUILD_CPU" = xx86_64; then + OPENJDK_BUILD_CPU_BUNDLE="x64" + else + OPENJDK_BUILD_CPU_BUNDLE="$OPENJDK_BUILD_CPU" + fi + OPENJDK_BUILD_BUNDLE_PLATFORM="${OPENJDK_BUILD_OS_BUNDLE}-${OPENJDK_BUILD_CPU_BUNDLE}" + + + + if test "x$OPENJDK_BUILD_CPU_BITS" = x64; then A_LP64="LP64:=" # -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in @@ -20681,6 +21139,30 @@ + # Test which kind of tar was found + if test "x$($TAR --version | $GREP "GNU tar")" != "x"; then + TAR_TYPE="gnu" + elif test "x$($TAR -v | $GREP "bsdtar")" != "x"; then + TAR_TYPE="bsd" + elif test "x$OPENJDK_BUILD_OS" = "xsolaris"; then + TAR_TYPE="solaris" + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking what type of tar was found" >&5 +$as_echo_n "checking what type of tar was found... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TAR_TYPE" >&5 +$as_echo "$TAR_TYPE" >&6; } + + if test "x$TAR_TYPE" = "xgnu"; then + TAR_INCLUDE_PARAM="T" + TAR_SUPPORTS_TRANSFORM="true" + else + TAR_INCLUDE_PARAM="I" + TAR_SUPPORTS_TRANSFORM="false" + fi + + + + # These tools might not be installed by default, # need hint on how to install them. diff -r df5f275ebdac -r e1fa5c2e62a0 common/autoconf/platform.m4 --- a/common/autoconf/platform.m4 Tue May 17 18:18:18 2016 +0200 +++ b/common/autoconf/platform.m4 Wed May 04 15:29:01 2016 +0200 @@ -366,6 +366,23 @@ fi AC_SUBST(OPENJDK_$1_OS_EXPORT_DIR) + # The new version string in JDK 9 also defined new naming of OS and ARCH for bundles + # Macosx is osx and x86_64 is x64 + if test "x$OPENJDK_$1_OS" = xmacosx; then + OPENJDK_$1_OS_BUNDLE="osx" + else + OPENJDK_$1_OS_BUNDLE="$OPENJDK_TARGET_OS" + fi + if test "x$OPENJDK_$1_CPU" = xx86_64; then + OPENJDK_$1_CPU_BUNDLE="x64" + else + OPENJDK_$1_CPU_BUNDLE="$OPENJDK_$1_CPU" + fi + OPENJDK_$1_BUNDLE_PLATFORM="${OPENJDK_$1_OS_BUNDLE}-${OPENJDK_$1_CPU_BUNDLE}" + AC_SUBST(OPENJDK_$1_OS_BUNDLE) + AC_SUBST(OPENJDK_$1_CPU_BUNDLE) + AC_SUBST(OPENJDK_$1_BUNDLE_PLATFORM) + if test "x$OPENJDK_$1_CPU_BITS" = x64; then A_LP64="LP64:=" # -D_LP64=1 is only set on linux and mac. Setting on windows causes diff in diff -r df5f275ebdac -r e1fa5c2e62a0 common/autoconf/spec.gmk.in --- a/common/autoconf/spec.gmk.in Tue May 17 18:18:18 2016 +0200 +++ b/common/autoconf/spec.gmk.in Wed May 04 15:29:01 2016 +0200 @@ -89,6 +89,10 @@ HOTSPOT_TARGET_CPU_ARCH := @HOTSPOT_TARGET_CPU_ARCH@ HOTSPOT_TARGET_CPU_DEFINE := @HOTSPOT_TARGET_CPU_DEFINE@ +OPENJDK_TARGET_CPU_BUNDLE:=@OPENJDK_TARGET_CPU_BUNDLE@ +OPENJDK_TARGET_OS_BUNDLE:=@OPENJDK_TARGET_OS_BUNDLE@ +OPENJDK_TARGET_BUNDLE_PLATFORM:=@OPENJDK_TARGET_BUNDLE_PLATFORM@ + # We are building on this build system. # When not cross-compiling, it is the same as the target. OPENJDK_BUILD_OS:=@OPENJDK_BUILD_OS@ @@ -268,6 +272,7 @@ HOTSPOT_OUTPUTDIR=$(BUILD_OUTPUT)/hotspot JDK_OUTPUTDIR=$(BUILD_OUTPUT)/jdk IMAGES_OUTPUTDIR=$(BUILD_OUTPUT)/images +BUNDLES_OUTPUTDIR=$(BUILD_OUTPUT)/bundles TESTMAKE_OUTPUTDIR=$(BUILD_OUTPUT)/test-make MAKESUPPORT_OUTPUTDIR=$(BUILD_OUTPUT)/make-support # This does not get overridden in a bootcycle build @@ -632,6 +637,7 @@ EGREP:=@EGREP@ FGREP:=@FGREP@ GREP:=@GREP@ +GZIP:=@GZIP@ HEAD:=@HEAD@ LS:=@LS@ LN:=@LN@ @@ -679,6 +685,9 @@ DTRACE := @DTRACE@ FIXPATH:=@FIXPATH@ +TAR_INCLUDE_PARAM:=@TAR_INCLUDE_PARAM@ +TAR_SUPPORTS_TRANSFORM:=@TAR_SUPPORTS_TRANSFORM@ + # Build setup ENABLE_JFR=@ENABLE_JFR@ ENABLE_INTREE_EC=@ENABLE_INTREE_EC@ @@ -785,11 +794,46 @@ # Interim image INTERIM_IMAGE_DIR := $(SUPPORT_OUTPUTDIR)/interim-image +# Docs image +DOCS_IMAGE_SUBDIR := docs +DOCS_IMAGE_DIR := $(IMAGES_OUTPUTDIR)/$(DOCS_IMAGE_SUBDIR) + # Macosx bundles directory definitions -JDK_MACOSX_BUNDLE_SUBDIR=jdk-bundle/jdk-$(VERSION_NUMBER).jdk/Contents -JRE_MACOSX_BUNDLE_SUBDIR=jre-bundle/jre-$(VERSION_NUMBER).jre/Contents +JDK_MACOSX_BUNDLE_SUBDIR=jdk-bundle +JRE_MACOSX_BUNDLE_SUBDIR=jre-bundle JDK_MACOSX_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_MACOSX_BUNDLE_SUBDIR) JRE_MACOSX_BUNDLE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_MACOSX_BUNDLE_SUBDIR) +JDK_MACOSX_CONTENTS_SUBDIR=jdk-$(VERSION_NUMBER).jdk/Contents +JRE_MACOSX_CONTENTS_SUBDIR=jre-$(VERSION_NUMBER).jre/Contents +JDK_MACOSX_CONTENTS_DIR=$(JDK_MACOSX_BUNDLE_DIR)/$(JDK_MACOSX_CONTENTS_SUBDIR) +JRE_MACOSX_CONTENTS_DIR=$(JRE_MACOSX_BUNDLE_DIR)/$(JRE_MACOSX_CONTENTS_SUBDIR) + +# Bundle names +BASE_NAME := $(VERSION_SHORT)+$(VERSION_BUILD)_$(OPENJDK_TARGET_BUNDLE_PLATFORM) +ifeq ($(DEBUG_LEVEL), fastdebug) + DEBUG_PART := -debug +else ifneq ($(DEBUG_LEVEL), release) + DEBUG_PART := -$(DEBUG_LEVEL) +endif +JDK_BUNDLE_NAME := jdk-$(BASE_NAME)_bin$(DEBUG_PART).tar.gz +JRE_BUNDLE_NAME := jre-$(BASE_NAME)_bin$(DEBUG_PART).tar.gz +JDK_SYMBOLS_BUNDLE_NAME := jdk-$(BASE_NAME)_bin$(DEBUG_PART)-symbols.tar.gz +JRE_SYMBOLS_BUNDLE_NAME := jre-$(BASE_NAME)_bin$(DEBUG_PART)-symbols.tar.gz +ifeq ($(OPENJDK_TARGET_OS), windows) + DEMOS_BUNDLE_NAME := jdk-$(BASE_NAME)_demo$(DEBUG_PART).zip +else + DEMOS_BUNDLE_NAME := jdk-$(BASE_NAME)_demo$(DEBUG_PART).tar.gz +endif +TEST_BUNDLE_NAME := jdk-$(BASE_NAME)_bin-tests$(DEBUG_PART).tar.gz +DOCS_BUNDLE_NAME := jdk-$(BASE_NAME)_doc-api-spec$(DEBUG_PART).tar.gz + +JDK_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JDK_BUNDLE_NAME) +JRE_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JRE_BUNDLE_NAME) +JDK_SYMBOLS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JDK_SYMBOLS_BUNDLE_NAME) +JRE_SYMBOLS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(JRE_SYMBOLS_BUNDLE_NAME) +DEMOS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(DEMOS_BUNDLE_NAME) +TEST_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(TEST_BUNDLE_NAME) +DOCS_BUNDLE := $(BUNDLES_OUTPUTDIR)/$(DOCS_BUNDLE_NAME) # This macro is called to allow inclusion of closed source counterparts. # Unless overridden in closed sources, it expands to nothing. diff -r df5f275ebdac -r e1fa5c2e62a0 common/bin/compare.sh --- a/common/bin/compare.sh Tue May 17 18:18:18 2016 +0200 +++ b/common/bin/compare.sh Wed May 04 15:29:01 2016 +0200 @@ -274,14 +274,19 @@ $MKDIR -p $WORK_DIR + FILE_TYPES_FILTER="$SED \ + -e 's/BuildID[^,]*//' \ + -e 's/last modified: .*//' \ + " + echo -n File types... found="" for f in `cd $OTHER_DIR && $FIND . ! -type d` do if [ ! -f ${OTHER_DIR}/$f ]; then continue; fi if [ ! -f ${THIS_DIR}/$f ]; then continue; fi - OF=`cd ${OTHER_DIR} && $FILE -h $f | $SED 's/BuildID[^,]*//g'` - TF=`cd ${THIS_DIR} && $FILE -h $f | $SED 's/BuildID[^,]*//g'` + OF=$(cd ${OTHER_DIR} && $FILE -h $f | eval $FILE_TYPES_FILTER) + TF=$(cd ${THIS_DIR} && $FILE -h $f | eval $FILE_TYPES_FILTER) if [ "$OF" != "$TF" ] then if [ "`echo $OF | $GREP -c 'Zip archive data'`" -gt 0 ] \ @@ -320,7 +325,7 @@ ! -name "*.obj" ! -name "*.o" ! -name "JavaControlPanelHelper" \ ! -name "JavaUpdater" ! -name "JavaWSApplicationStub" \ ! -name "jspawnhelper" ! -name "JavawsLauncher" ! -name "*.a" \ - ! -name "finish_installation" ! -name "Sparkle" \ + ! -name "finish_installation" ! -name "Sparkle" ! -name "*.tar.gz" \ | $GREP -v "./bin/" | $SORT | $FILTER) echo Other files with binary differences... @@ -423,6 +428,10 @@ then (cd $THIS_UNZIPDIR && $UNARCHIVE $THIS_ZIP) (cd $OTHER_UNZIPDIR && $UNARCHIVE $OTHER_ZIP) + elif [ "$TYPE" = "gz" ] + then + (cd $THIS_UNZIPDIR && $GUNZIP -c $THIS_ZIP | $TAR xf -) + (cd $OTHER_UNZIPDIR && $GUNZIP -c $OTHER_ZIP | $TAR xf -) else (cd $THIS_UNZIPDIR && $JIMAGE extract $THIS_ZIP) (cd $OTHER_UNZIPDIR && $JIMAGE extract $OTHER_ZIP) @@ -526,10 +535,11 @@ OTHER_DIR=$2 WORK_DIR=$3 - ZIPS=$(cd $THIS_DIR && $FIND . -type f -name "*.zip" | $SORT | $FILTER ) + ZIPS=$(cd $THIS_DIR && $FIND . -type f -name "*.zip" -o -name "*.tar.gz" \ + | $SORT | $FILTER ) if [ -n "$ZIPS" ]; then - echo Zip files... + echo Zip/tar.gz files... return_value=0 for f in $ZIPS; do @@ -913,7 +923,7 @@ FULLDUMP_MSG=" " DIFF_FULLDUMP= if [[ "$KNOWN_FULLDUMP_DIFF $ACCEPTED_FULLDUMP_DIFF" = *"$BIN_FILE"* ]]; then - FULLDUMP_MSG=" ! " + FULLDUMP_MSG=" ! " fi fi fi diff -r df5f275ebdac -r e1fa5c2e62a0 common/conf/jib-profiles.js --- a/common/conf/jib-profiles.js Tue May 17 18:18:18 2016 +0200 +++ b/common/conf/jib-profiles.js Wed May 04 15:29:01 2016 +0200 @@ -215,7 +215,7 @@ var common = {}; common.dependencies = ["boot_jdk", "gnumake", "jtreg"], - common.default_make_targets = ["product-images", "test-image"], + common.default_make_targets = ["product-bundles", "test-bundles"], common.default_make_targets_debug = common.default_make_targets; common.default_make_targets_slowdebug = common.default_make_targets; common.configure_args = ["--enable-jtreg-failure-handler"], @@ -245,7 +245,7 @@ target_cpu: "x64", dependencies: concat(common.dependencies, "devkit"), configure_args: concat(common.configure_args, "--with-zlib=system"), - default_make_targets: concat(common.default_make_targets, "docs-image") + default_make_targets: concat(common.default_make_targets, "docs-bundles") }, "linux-x86": { diff -r df5f275ebdac -r e1fa5c2e62a0 make/Bundles.gmk --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/Bundles.gmk Wed May 04 15:29:01 2016 +0200 @@ -0,0 +1,300 @@ +# +# 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 + +PRODUCT_TARGETS := +TEST_TARGETS := +DOCS_TARGETS := + +# On Windows tar frequently complains that "file changed as we read it" for +# some random source files. This seems to be cause by anti virus scanners and +# is most likely safe to ignore. When it happens, tar returns '1'. +ifeq ($(OPENJDK_BUILD_OS), windows) + TAR_IGNORE_EXIT_VALUE := || test "$$$$?" = "1" +endif + +# Hook to include the corresponding custom file, if present. +$(eval $(call IncludeCustomExtension, , Bundles-pre.gmk)) +################################################################################ +# BUNDLE : Name of bundle to create +# FILES : Files in BASE_DIR to add to bundle +# SPECIAL_INCLUDES : List of directories inside BASE_DIR to look for additional +# files in. These files will not get proper dependency handling. Use when +# files or directories may contain spaces. +# BASE_DIR : Base directory for the root dir in the bundle. +# SUBDIR : Optional name of root dir in bundle. +SetupBundleFile = $(NamedParamsMacroTemplate) +define SetupBundleFileBody + + $1_RELATIVE_FILES := $$(patsubst $$($1_BASE_DIR)/%, ./%, $$($1_FILES)) + + ifneq ($$(filter %.tar.gz, $$($1_BUNDLE_NAME)), ) + $1_TYPE := tar.gz + else ifneq ($$(filter %.zip, $$($1_BUNDLE_NAME)), ) + $1_TYPE := zip + else + $$(error Unknown bundle type $$($1_BUNDLE_NAME)) + endif + + $$(call SetIfEmpty, $1_UNZIP_DEBUGINFO, false) + + $(BUNDLES_OUTPUTDIR)/$$($1_BUNDLE_NAME): $$($1_FILES) + $$(eval $$(call ListPathsSafely, \ + $1_RELATIVE_FILES, \ + $(SUPPORT_OUTPUTDIR)/bundles/_$1_files)) + $$(call MakeDir, $$(@D)) + ifneq ($$($1_SPECIAL_INCLUDES), ) + $$(foreach i, $$($1_SPECIAL_INCLUDES), \ + ($(CD) $$($1_BASE_DIR) && $(FIND) ./$$i \ + >> $(SUPPORT_OUTPUTDIR)/bundles/_$1_files ) ; ) + endif + ifneq ($$($1_SUBDIR), ) + ifeq ($$($1_TYPE)-$(TAR_SUPPORTS_TRANSFORM)-$$($1_UNZIP_DEBUGINFO), tar.gz-true-false) + $(CD) $$($1_BASE_DIR) \ + && ( $(TAR) cf - -$(TAR_INCLUDE_PARAM) $(SUPPORT_OUTPUTDIR)/bundles/_$1_files \ + --transform 's|^|$$($1_SUBDIR)/|' $(TAR_IGNORE_EXIT_VALUE) ) \ + | $(GZIP) > $$@ + else + # If a subdir has been specified, copy all files into a temporary + # location with this subdir before creating the tar file + $(RM) -r $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) + $(MKDIR) -p $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) + ( $(CD) $$($1_BASE_DIR) \ + && $(TAR) cf - -$(TAR_INCLUDE_PARAM) $(SUPPORT_OUTPUTDIR)/bundles/_$1_files \ + $(TAR_IGNORE_EXIT_VALUE) ) \ + | ( $(CD) $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) && $(TAR) xf - ) + # Unzip any zipped debuginfo files + ifeq ($$($1_UNZIP_DEBUGINFO), true) + for f in `$(FIND) $(SUPPORT_OUTPUTDIR)/bundles/$1/$$($1_SUBDIR) -name "*.diz"`; do \ + $(CD) $$$${f%/*} && $(UNZIP) -q $$$${f} && $(RM) $$$${f}; \ + done + endif + ifeq ($$($1_TYPE), tar.gz) + $(CD) $(SUPPORT_OUTPUTDIR)/bundles/$1 && \ + ( $(TAR) cf - $$($1_SUBDIR) $(TAR_IGNORE_EXIT_VALUE) ) | $(GZIP) > $$@ + else ifeq ($$($1_TYPE), zip) + $(CD) $(SUPPORT_OUTPUTDIR)/bundles/$1 && $(ZIP) -qr $$@ . + endif + endif + else + ifeq ($$($1_TYPE), tar.gz) + $(CD) $$($1_BASE_DIR) \ + && ( $(TAR) cf - -$(TAR_INCLUDE_PARAM) $(SUPPORT_OUTPUTDIR)/bundles/_$1_files \ + $(TAR_IGNORE_EXIT_VALUE) ) \ + | $(GZIP) > $$@ + else ifeq ($$($1_TYPE), zip) + $(CD) $$($1_BASE_DIR) \ + && $(ZIP) -qr $$@ . -i@$(SUPPORT_OUTPUTDIR)/bundles/_$1_files + endif + endif + + $1 += $(BUNDLES_OUTPUTDIR)/$$($1_BUNDLE_NAME) + +endef + +################################################################################ + +# On Macosx, we bundle up the macosx specific images which already have the +# correct base directories. +ifeq ($(OPENJDK_TARGET_OS), macosx) + JDK_IMAGE_DIR := $(JDK_MACOSX_BUNDLE_DIR) + JRE_IMAGE_DIR := $(JRE_MACOSX_BUNDLE_DIR) + JDK_IMAGE_HOMEDIR := $(JDK_MACOSX_CONTENTS_DIR)/Home + JRE_IMAGE_HOMEDIR := $(JRE_MACOSX_CONTENTS_DIR)/Home + JDK_BUNDLE_SUBDIR := + JRE_BUNDLE_SUBDIR := +else + JDK_IMAGE_HOMEDIR := $(JDK_IMAGE_DIR) + JRE_IMAGE_HOMEDIR := $(JRE_IMAGE_DIR) + JDK_BUNDLE_SUBDIR := jdk-$(VERSION_NUMBER) + JRE_BUNDLE_SUBDIR := jre-$(VERSION_NUMBER) + ifneq ($(DEBUG_LEVEL), release) + JDK_BUNDLE_SUBDIR := $(JDK_BUNDLE_SUBDIR)/$(DEBUG_LEVEL) + JRE_BUNDLE_SUBDIR := $(JRE_BUNDLE_SUBDIR)/$(DEBUG_LEVEL) + endif +endif + +################################################################################ + +ifneq ($(filter product-bundles, $(MAKECMDGOALS)), ) + $(eval $(call FillCacheFind, $(IMAGES_OUTPUTDIR))) + + SYMBOLS_EXCLUDE_PATTERN := %.debuginfo %.diz %.pdb %.map + + ALL_JDK_FILES := $(call CacheFind, $(JDK_IMAGE_DIR)) + + # Create special filter rules when dealing with unzipped .dSYM directories on + # macosx + ifeq ($(OPENJDK_TARGET_OS), macosx) + ifeq ($(ZIP_DEBUGINFO_FILES), false) + JDK_SYMBOLS_EXCLUDE_PATTERN := $(addprefix %, \ + $(call containing, .dSYM/, $(patsubst $(JDK_IMAGE_DIR)/%, %, $(ALL_JDK_FILES)))) + endif + endif + + JDK_BUNDLE_FILES := \ + $(filter-out \ + $(JDK_SYMBOLS_EXCLUDE_PATTERN) \ + $(JDK_EXTRA_EXCLUDES) \ + $(SYMBOLS_EXCLUDE_PATTERN) \ + $(JDK_IMAGE_HOMEDIR)/demo/% $(JDK_IMAGE_HOMEDIR)/sample/% \ + , \ + $(ALL_JDK_FILES) \ + ) + DEMOS_BUNDLE_FILES := \ + $(filter-out \ + $(JDK_SYMBOLS_EXCLUDE_PATTERN) \ + $(SYMBOLS_EXCLUDE_PATTERN) \ + , \ + $(filter \ + $(JDK_IMAGE_HOMEDIR)/demo/% $(JDK_IMAGE_HOMEDIR)/sample/% \ + $(JDK_IMAGE_HOMEDIR)/release \ + , \ + $(ALL_JDK_FILES) \ + ) \ + ) + JDK_SYMBOLS_BUNDLE_FILES := \ + $(filter \ + $(JDK_SYMBOLS_EXCLUDE_PATTERN) \ + $(SYMBOLS_EXCLUDE_PATTERN) \ + , \ + $(ALL_JDK_FILES) \ + ) \ + $(call CacheFind, $(SYMBOLS_IMAGE_DIR)) + + ALL_JRE_FILES := $(call CacheFind, $(JRE_IMAGE_DIR)) + + # Create special filter rules when dealing with unzipped .dSYM directories on + # macosx + ifeq ($(OPENJDK_TARGET_OS), macosx) + ifeq ($(ZIP_DEBUGINFO_FILES), false) + JRE_SYMBOLS_EXCLUDE_PATTERN := $(addprefix %, \ + $(call containing, .dSYM/, $(patsubst $(JRE_IMAGE_DIR)/%, %, $(ALL_JRE_FILES)))) + endif + endif + + JRE_BUNDLE_FILES := $(filter-out \ + $(JRE_SYMBOLS_EXCLUDE_PATTERN) \ + $(SYMBOLS_EXCLUDE_PATTERN), \ + $(ALL_JRE_FILES)) + JRE_SYMBOLS_BUNDLE_FILES := $(filter \ + $(JRE_SYMBOLS_EXCLUDE_PATTERN) \ + $(SYMBOLS_EXCLUDE_PATTERN), \ + $(ALL_JRE_FILES)) + + $(eval $(call SetupBundleFile, BUILD_JDK_BUNDLE, \ + BUNDLE_NAME := $(JDK_BUNDLE_NAME), \ + FILES := $(JDK_BUNDLE_FILES), \ + SPECIAL_INCLUDES := $(JDK_SPECIAL_INCLUDES), \ + BASE_DIR := $(JDK_IMAGE_DIR), \ + SUBDIR := $(JDK_BUNDLE_SUBDIR), \ + )) + + PRODUCT_TARGETS += $(BUILD_JDK_BUNDLE) + + $(eval $(call SetupBundleFile, BUILD_JRE_BUNDLE, \ + BUNDLE_NAME := $(JRE_BUNDLE_NAME), \ + FILES := $(JRE_BUNDLE_FILES), \ + BASE_DIR := $(JRE_IMAGE_DIR), \ + SUBDIR := $(JRE_BUNDLE_SUBDIR), \ + )) + + PRODUCT_TARGETS += $(BUILD_JRE_BUNDLE) + + $(eval $(call SetupBundleFile, BUILD_JDK_SYMBOLS_BUNDLE, \ + BUNDLE_NAME := $(JDK_SYMBOLS_BUNDLE_NAME), \ + FILES := $(JDK_SYMBOLS_BUNDLE_FILES), \ + BASE_DIR := $(JDK_IMAGE_DIR), \ + SUBDIR := $(JDK_BUNDLE_SUBDIR), \ + UNZIP_DEBUGINFO := true, \ + )) + + PRODUCT_TARGETS += $(BUILD_JDK_SYMBOLS_BUNDLE) + + $(eval $(call SetupBundleFile, BUILD_JRE_SYMBOLS_BUNDLE, \ + BUNDLE_NAME := $(JRE_SYMBOLS_BUNDLE_NAME), \ + FILES := $(JRE_SYMBOLS_BUNDLE_FILES), \ + BASE_DIR := $(JRE_IMAGE_DIR), \ + SUBDIR := $(JRE_BUNDLE_SUBDIR), \ + UNZIP_DEBUGINFO := true, \ + )) + + PRODUCT_TARGETS += $(BUILD_JRE_SYMBOLS_BUNDLE) + + $(eval $(call SetupBundleFile, BUILD_DEMOS_BUNDLE, \ + BUNDLE_NAME := $(DEMOS_BUNDLE_NAME), \ + FILES := $(call DoubleDollar, $(DEMOS_BUNDLE_FILES)), \ + BASE_DIR := $(JDK_IMAGE_DIR), \ + SUBDIR := $(JDK_BUNDLE_SUBDIR), \ + )) + + PRODUCT_TARGETS += $(BUILD_DEMOS_BUNDLE) +endif + +################################################################################ + +ifneq ($(filter test-bundles, $(MAKECMDGOALS)), ) + TEST_BUNDLE_FILES := $(call CacheFind, $(TEST_IMAGE_DIR)) + + $(eval $(call SetupBundleFile, BUILD_TEST_BUNDLE, \ + BUNDLE_NAME := $(TEST_BUNDLE_NAME), \ + FILES := $(call DoubleDollar, $(TEST_BUNDLE_FILES)), \ + BASE_DIR := $(TEST_IMAGE_DIR), \ + )) + + TEST_TARGETS += $(BUILD_TEST_BUNDLE) +endif + +################################################################################ + +ifneq ($(filter docs-bundles, $(MAKECMDGOALS)), ) + DOCS_BUNDLE_FILES := $(call CacheFind, $(DOCS_IMAGE_DIR)) + + $(eval $(call SetupBundleFile, BUILD_DOCS_BUNDLE, \ + BUNDLE_NAME := $(DOCS_BUNDLE_NAME), \ + FILES := $(DOCS_BUNDLE_FILES), \ + BASE_DIR := $(DOCS_IMAGE_DIR), \ + SUBDIR := docs, \ + )) + + DOCS_TARGETS += $(BUILD_DOCS_BUNDLE) +endif + +################################################################################ + +# Hook to include the corresponding custom file, if present. +$(eval $(call IncludeCustomExtension, , Bundles.gmk)) + +################################################################################ + +product-bundles: $(PRODUCT_TARGETS) +test-bundles: $(TEST_TARGETS) +docs-bundles: $(DOCS_TARGETS) + +.PHONY: all default product-bundles test-bundles docs-bundles diff -r df5f275ebdac -r e1fa5c2e62a0 make/Javadoc.gmk --- a/make/Javadoc.gmk Tue May 17 18:18:18 2016 +0200 +++ b/make/Javadoc.gmk Wed May 04 15:29:01 2016 +0200 @@ -44,7 +44,7 @@ # Definitions for directories # -DOCSDIR := $(IMAGES_OUTPUTDIR)/docs +DOCSDIR := $(DOCS_IMAGE_DIR) DOCSTMPDIR = $(SUPPORT_OUTPUTDIR)/docs HOTSPOT_DOCS_IMPORT_PATH=$(HOTSPOT_OUTPUTDIR)/docs diff -r df5f275ebdac -r e1fa5c2e62a0 make/Jprt.gmk --- a/make/Jprt.gmk Tue May 17 18:18:18 2016 +0200 +++ b/make/Jprt.gmk Wed May 04 15:29:01 2016 +0200 @@ -32,14 +32,6 @@ ifdef JPRT_ARCHIVE_BUNDLE override JPRT_ARCHIVE_BUNDLE := $(shell $(CYGPATH) -u $(JPRT_ARCHIVE_BUNDLE)) endif - ifdef JPRT_ARCHIVE_INSTALL_BUNDLE - override JPRT_ARCHIVE_INSTALL_BUNDLE := \ - $(shell $(CYGPATH) -u $(JPRT_ARCHIVE_INSTALL_BUNDLE)) - endif - ifdef JPRT_ARCHIVE_MODULES_BUNDLE - override JPRT_ARCHIVE_MODULES_BUNDLE := \ - $(shell $(CYGPATH) -u $(JPRT_ARCHIVE_MODULES_BUNDLE)) - endif ifdef JPRT_ARCHIVE_TEST_BUNDLE override JPRT_ARCHIVE_TEST_BUNDLE := \ $(shell $(CYGPATH) -u $(JPRT_ARCHIVE_TEST_BUNDLE)) @@ -55,12 +47,6 @@ ifndef JPRT_ARCHIVE_BUNDLE JPRT_ARCHIVE_BUNDLE=/tmp/jprt_bundles/jdk-image.zip endif -ifndef JPRT_ARCHIVE_INSTALL_BUNDLE - JPRT_ARCHIVE_INSTALL_BUNDLE=/tmp/jprt_bundles/product-install.zip -endif -ifndef JPRT_ARCHIVE_MODULES_BUNDLE - JPRT_ARCHIVE_MODULES_BUNDLE=/tmp/jprt_bundles/modules.zip -endif ifndef JPRT_ARCHIVE_TEST_BUNDLE JPRT_ARCHIVE_TEST_BUNDLE=/tmp/jprt_bundles/test-image.zip endif @@ -72,94 +58,51 @@ jprt_bundle: bootcycle-images endif -# This target must be called in the context of a SPEC file -jprt_bundle: $(JPRT_ARCHIVE_BUNDLE) $(JPRT_ARCHIVE_TEST_BUNDLE) \ - $(JPRT_ARCHIVE_MODULES_BUNDLE) - -ifeq ($(GCOV_ENABLED), true) - jprt_bundle: $(JPRT_ARCHIVE_SYMBOLS_BUNDLE) -endif +################################################################################ +# JPRT specific bundling targets +JPRT_TARGET ?= $(DEFAULT_MAKE_TARGET) +ifeq ($(JPRT_TARGET), $(DEFAULT_MAKE_TARGET)) + jprt_bundle: $(DEFAULT_MAKE_TARGET) $(JPRT_ARCHIVE_BUNDLE) \ + $(JPRT_ARCHIVE_TEST_BUNDLE) -# This target must be called in the context of a SPEC file -$(JPRT_ARCHIVE_BUNDLE): bundles - $(MKDIR) -p $(@D) - $(RM) $@ - $(CP) $(BUILD_OUTPUT)/bundles/$(JDK_IMAGE_SUBDIR).zip $@ + SRC_JDK_IMAGE_DIR := $(JDK_IMAGE_DIR) + SRC_TEST_IMAGE_DIR := $(TEST_IMAGE_DIR) -$(JPRT_ARCHIVE_MODULES_BUNDLE): bundles - $(MKDIR) -p $(@D) - $(RM) $@ - $(CP) $(BUILD_OUTPUT)/bundles/modules.zip $@ + # This target must be called in the context of a SPEC file + $(JPRT_ARCHIVE_BUNDLE): product-images + $(call MakeDir, $(@D)) + $(CD) $(SRC_JDK_IMAGE_DIR) && $(ZIP) -y -q -r $@ . -$(JPRT_ARCHIVE_TEST_BUNDLE): bundles - $(MKDIR) -p $(@D) - $(RM) $@ - $(CP) $(BUILD_OUTPUT)/bundles/$(TEST_IMAGE_SUBDIR).zip $@ + $(JPRT_ARCHIVE_TEST_BUNDLE): test-image + $(call MakeDir, $(@D)) + $(CD) $(SRC_TEST_IMAGE_DIR) && $(ZIP) -y -q -r $@ . -$(JPRT_ARCHIVE_SYMBOLS_BUNDLE): bundles - $(MKDIR) -p $(@D) - $(RM) $@ - $(CP) $(BUILD_OUTPUT)/bundles/$(SYMBOLS_IMAGE_SUBDIR).zip $@ + ############################################################################## + # Optional symbols bundle + ifeq ($(GCOV_ENABLED), true) + jprt_bundle: $(JPRT_ARCHIVE_SYMBOLS_BUNDLE) + zip-bundles: $(SYMBOLS_ZIP_BUNDLE) -SRC_JDK_IMAGE_DIR := $(JDK_IMAGE_DIR) -SRC_JRE_IMAGE_DIR := $(JRE_IMAGE_DIR) -SRC_TEST_IMAGE_DIR := $(TEST_IMAGE_DIR) -SRC_JDK_MACOSX_BUNDLE_DIR := $(JDK_MACOSX_BUNDLE_DIR) -SRC_JRE_MACOSX_BUNDLE_DIR := $(JRE_MACOSX_BUNDLE_DIR) + $(JPRT_ARCHIVE_SYMBOLS_BUNDLE): product-images + $(call MakeDir, $(@D)) + $(CD) $(SYMBOLS_IMAGE_DIR) && $(ZIP) -y -q -r $@ . + + endif -# Bundle up the images -JPRT_TARGET ?= default -ifeq ($(JPRT_TARGET), default) - bundles: $(JPRT_TARGET) + ############################################################################## + +else + # Just fake the main bundle to satisfy JPRT + jprt_bundle: $(JPRT_TARGET) @$(call TargetEnter) $(MKDIR) -p $(BUILD_OUTPUT)/bundles - $(CD) $(SRC_JDK_IMAGE_DIR) && $(ZIP) -y -q -r \ - $(BUILD_OUTPUT)/bundles/$(JDK_IMAGE_SUBDIR).zip . - $(CD) $(SRC_JRE_IMAGE_DIR) && $(ZIP) -y -q -r \ - $(BUILD_OUTPUT)/bundles/$(JRE_IMAGE_SUBDIR).zip . - $(CD) $(SRC_TEST_IMAGE_DIR) && $(ZIP) -y -q -r \ - $(BUILD_OUTPUT)/bundles/$(TEST_IMAGE_SUBDIR).zip . - $(CD) $(IMAGES_OUTPUTDIR)/jmods && $(ZIP) -y -q -r \ - $(BUILD_OUTPUT)/bundles/modules.zip . - if [ -d $(BUILD_OUTPUT)/install/bundles ] ; then \ - $(CD) $(BUILD_OUTPUT)/install/bundles && $(ZIP) -y -q -r \ - $(JPRT_ARCHIVE_INSTALL_BUNDLE) . ; \ - fi - if [ -d $(SYMBOLS_IMAGE_DIR) ] ; then \ - $(CD) $(SYMBOLS_IMAGE_DIR) && $(ZIP) -y -q -r \ - $(BUILD_OUTPUT)/bundles/$(SYMBOLS_IMAGE_SUBDIR).zip . ; \ - fi - @$(call TargetExit) -else - # Just fake the bundles - bundles: $(JPRT_TARGET) - @$(call TargetEnter) - $(MKDIR) -p $(BUILD_OUTPUT)/bundles - $(CD) $(TOPDIR) && $(ZIP) -y -q -r \ - $(BUILD_OUTPUT)/bundles/$(JDK_IMAGE_SUBDIR).zip README - $(CD) $(TOPDIR) && $(ZIP) -y -q -r \ - $(BUILD_OUTPUT)/bundles/$(JRE_IMAGE_SUBDIR).zip README - $(CD) $(TOPDIR) && $(ZIP) -y -q -r \ - $(BUILD_OUTPUT)/bundles/$(TEST_IMAGE_SUBDIR).zip README - $(CD) $(TOPDIR) && $(ZIP) -y -q -r \ - $(BUILD_OUTPUT)/bundles/modules.zip README + $(CD) $(TOPDIR) && $(TAR) cf - README | $(GZIP) > \ + $(JPRT_ARCHIVE_BUNDLE) @$(call TargetExit) endif -# Copy images to one unified location regardless of platform etc. -final-images: $(JPRT_TARGET) - @$(call TargetEnter) - $(RM) -r $(BUILD_OUTPUT)/final-images - $(MKDIR) -p $(BUILD_OUTPUT)/final-images/$(JDK_IMAGE_SUBDIR) - $(MKDIR) -p $(BUILD_OUTPUT)/final-images/$(JRE_IMAGE_SUBDIR) - $(CP) -R -P $(SRC_JDK_IMAGE_DIR)/* $(BUILD_OUTPUT)/final-images/$(JDK_IMAGE_SUBDIR)/ - $(CP) -R -P $(SRC_JRE_IMAGE_DIR)/* $(BUILD_OUTPUT)/final-images/$(JRE_IMAGE_SUBDIR)/ - ifeq ($(OPENJDK_TARGET_OS),macosx) - $(MKDIR) -p $(BUILD_OUTPUT)/final-images/$(JDK_MACOSX_BUNDLE_SUBDIR) - $(MKDIR) -p $(BUILD_OUTPUT)/final-images/$(JRE_MACOSX_BUNDLE_SUBDIR) - $(CP) -R -P $(SRC_JDK_MACOSX_BUNDLE_DIR)/* $(BUILD_OUTPUT)/final-images/$(JDK_MACOSX_BUNDLE_SUBDIR)/ - $(CP) -R -P $(SRC_JRE_MACOSX_BUNDLE_DIR)/* $(BUILD_OUTPUT)/final-images/$(JRE_MACOSX_BUNDLE_SUBDIR)/ - endif - @$(call TargetExit) +ALL_TARGETS += jprt_bundle -ALL_TARGETS += jprt_bundle bundles final-images +################################################################################ + +$(eval $(call IncludeCustomExtension, , Jprt.gmk)) diff -r df5f275ebdac -r e1fa5c2e62a0 make/MacBundles.gmk --- a/make/MacBundles.gmk Tue May 17 18:18:18 2016 +0200 +++ b/make/MacBundles.gmk Wed May 04 15:29:01 2016 +0200 @@ -34,7 +34,7 @@ bundles: jre-bundle jdk-bundle - # JDK_MACOSX_BUNDLE_DIR and JRE_MACOSX_BUNDLE_DIR are defined in SPEC. + # JDK_MACOSX_CONTENTS_DIR and JRE_MACOSX_CONTENTS_DIR are defined in SPEC. MACOSX_PLIST_SRC := $(JDK_TOPDIR)/make/data/bundle @@ -52,27 +52,27 @@ JDK_FILE_LIST := $(shell $(FIND) $(JDK_IMAGE_DIR)) JRE_FILE_LIST := $(shell $(FIND) $(JRE_IMAGE_DIR)) - JDK_TARGET_LIST := $(subst $(JDK_IMAGE_DIR)/,$(JDK_MACOSX_BUNDLE_DIR)/Home/,$(JDK_FILE_LIST)) - JRE_TARGET_LIST := $(subst $(JRE_IMAGE_DIR)/,$(JRE_MACOSX_BUNDLE_DIR)/Home/,$(JRE_FILE_LIST)) + JDK_TARGET_LIST := $(subst $(JDK_IMAGE_DIR)/,$(JDK_MACOSX_CONTENTS_DIR)/Home/,$(JDK_FILE_LIST)) + JRE_TARGET_LIST := $(subst $(JRE_IMAGE_DIR)/,$(JRE_MACOSX_CONTENTS_DIR)/Home/,$(JRE_FILE_LIST)) # Copy empty directories (jre/lib/applet). - $(JDK_MACOSX_BUNDLE_DIR)/Home/%: $(JDK_IMAGE_DIR)/% + $(JDK_MACOSX_CONTENTS_DIR)/Home/%: $(JDK_IMAGE_DIR)/% $(call LogInfo, Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)) $(MKDIR) -p $(@D) if [ -d "$<" ]; then $(MKDIR) -p $@; else $(CP) -f -R -P '$<' '$@'; fi - $(JRE_MACOSX_BUNDLE_DIR)/Home/%: $(JRE_IMAGE_DIR)/% + $(JRE_MACOSX_CONTENTS_DIR)/Home/%: $(JRE_IMAGE_DIR)/% $(call LogInfo, Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)) $(MKDIR) -p $(@D) if [ -d "$<" ]; then $(MKDIR) -p $@; else $(CP) -f -R -P '$<' '$@'; fi - $(JDK_MACOSX_BUNDLE_DIR)/MacOS/libjli.dylib: + $(JDK_MACOSX_CONTENTS_DIR)/MacOS/libjli.dylib: $(call LogInfo, Creating link $(patsubst $(OUTPUT_ROOT)/%,%,$@)) $(MKDIR) -p $(@D) $(RM) $@ $(LN) -s ../Home/lib/jli/libjli.dylib $@ - $(JRE_MACOSX_BUNDLE_DIR)/MacOS/libjli.dylib: + $(JRE_MACOSX_CONTENTS_DIR)/MacOS/libjli.dylib: $(call LogInfo, Creating link $(patsubst $(OUTPUT_ROOT)/%,%,$@)) $(MKDIR) -p $(@D) $(RM) $@ @@ -80,7 +80,7 @@ $(eval $(call SetupTextFileProcessing, BUILD_JDK_PLIST, \ SOURCE_FILES := $(MACOSX_PLIST_SRC)/JDK-Info.plist, \ - OUTPUT_FILE := $(JDK_MACOSX_BUNDLE_DIR)/Info.plist, \ + OUTPUT_FILE := $(JDK_MACOSX_CONTENTS_DIR)/Info.plist, \ REPLACEMENTS := \ @@ID@@ => $(BUNDLE_ID).jdk ; \ @@NAME@@ => $(BUNDLE_NAME) ; \ @@ -92,7 +92,7 @@ $(eval $(call SetupTextFileProcessing, BUILD_JRE_PLIST, \ SOURCE_FILES := $(MACOSX_PLIST_SRC)/JRE-Info.plist, \ - OUTPUT_FILE := $(JRE_MACOSX_BUNDLE_DIR)/Info.plist, \ + OUTPUT_FILE := $(JRE_MACOSX_CONTENTS_DIR)/Info.plist, \ REPLACEMENTS := \ @@ID@@ => $(BUNDLE_ID).jre ; \ @@NAME@@ => $(BUNDLE_NAME) ; \ @@ -102,13 +102,13 @@ @@VENDOR@@ => $(BUNDLE_VENDOR) , \ )) - jdk-bundle: $(JDK_TARGET_LIST) $(JDK_MACOSX_BUNDLE_DIR)/MacOS/libjli.dylib \ + jdk-bundle: $(JDK_TARGET_LIST) $(JDK_MACOSX_CONTENTS_DIR)/MacOS/libjli.dylib \ $(BUILD_JDK_PLIST) - $(SETFILE) -a B $(dir $(JDK_MACOSX_BUNDLE_DIR)) + $(SETFILE) -a B $(dir $(JDK_MACOSX_CONTENTS_DIR)) - jre-bundle: $(JRE_TARGET_LIST) $(JRE_MACOSX_BUNDLE_DIR)/MacOS/libjli.dylib \ + jre-bundle: $(JRE_TARGET_LIST) $(JRE_MACOSX_CONTENTS_DIR)/MacOS/libjli.dylib \ $(BUILD_JRE_PLIST) - $(SETFILE) -a B $(dir $(JRE_MACOSX_BUNDLE_DIR)) + $(SETFILE) -a B $(dir $(JRE_MACOSX_CONTENTS_DIR)) else # Not macosx diff -r df5f275ebdac -r e1fa5c2e62a0 make/Main.gmk --- a/make/Main.gmk Tue May 17 18:18:18 2016 +0200 +++ b/make/Main.gmk Wed May 04 15:29:01 2016 +0200 @@ -454,6 +454,20 @@ test-hotspot-internal test-jdk-jtreg-native test-make ################################################################################ +# Bundles + +product-bundles: + +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk product-bundles) + +test-bundles: + +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk test-bundles) + +docs-bundles: + +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Bundles.gmk docs-bundles) + +ALL_TARGETS += product-bundles test-bundles docs-bundles + +################################################################################ # Install targets install: @@ -678,6 +692,12 @@ install: product-images + product-bundles: product-images + + test-bundles: test-image + + docs-bundles: docs-image + generate-summary: jmods endif @@ -758,12 +778,16 @@ test-image: prepare-test-image test-image-hotspot-jtreg-native \ test-image-jdk-jtreg-native test-image-failure-handler test-image-hotspot-gtest -# all-images is the top-most target, it builds all our deliverables ("images"). +# all-images builds all our deliverables as images. all-images: product-images test-image docs-image +# all-bundles packages all our deliverables as tar.gz bundles. +all-bundles: product-bundles test-bundles docs-bundles + ALL_TARGETS += buildtools gensrc gendata copy java rmic libs launchers jmods \ jdk.jdwp.agent-gensrc $(ALL_MODULES) demos samples exploded-image \ - create-buildjdk mac-bundles product-images docs-image test-image all-images + create-buildjdk mac-bundles product-images docs-image test-image all-images \ + all-bundles ################################################################################ @@ -774,9 +798,10 @@ jdk: exploded-image images: product-images docs: docs-image +bundles: all-bundles all: all-images -ALL_TARGETS += default jdk images docs all +ALL_TARGETS += default jdk images docs bundles all ################################################################################ ################################################################################ diff -r df5f275ebdac -r e1fa5c2e62a0 make/common/MakeBase.gmk --- a/make/common/MakeBase.gmk Tue May 17 18:18:18 2016 +0200 +++ b/make/common/MakeBase.gmk Wed May 04 15:29:01 2016 +0200 @@ -145,7 +145,7 @@ $$(strip $2),$$(subst $$(SPACE),$$(NEWLINE),$$(strip $$($$(strip $1))))) endef -else # HAS_FILE_FUNCTION +else # HAS_FILE_FUNCTION = false $(eval compress_paths = \ $(strip $(shell $(CAT) $(SRC_ROOT)/make/common/support/ListPathsSafely-pre-compress.incl))) @@ -172,8 +172,8 @@ # Param 2 - File to print to # Param 3 - Set to true to append to file instead of overwriting define ListPathsSafely - ifneq (,$$(word 10001,$$($1))) - $$(error Cannot list safely more than 10000 paths. $1 has $$(words $$($1)) paths!) + ifneq (,$$(word 30001,$$($$(strip $1)))) + $$(error Cannot list safely more than 30000 paths. $1 has $$(words $$($$(strip $1))) paths!) endif $$(call MakeDir, $$(dir $2)) ifneq ($$(strip $3), true) @@ -229,6 +229,106 @@ $$(call ListPathsSafely_IfPrintf,$1,$2,9251,9500) $$(call ListPathsSafely_IfPrintf,$1,$2,9501,9750) $$(call ListPathsSafely_IfPrintf,$1,$2,9751,10000) + + $$(call ListPathsSafely_IfPrintf,$1,$2,10001,10250) + $$(call ListPathsSafely_IfPrintf,$1,$2,10251,10500) + $$(call ListPathsSafely_IfPrintf,$1,$2,10501,10750) + $$(call ListPathsSafely_IfPrintf,$1,$2,10751,11000) + + $$(call ListPathsSafely_IfPrintf,$1,$2,11001,11250) + $$(call ListPathsSafely_IfPrintf,$1,$2,11251,11500) + $$(call ListPathsSafely_IfPrintf,$1,$2,11501,11750) + $$(call ListPathsSafely_IfPrintf,$1,$2,11751,12000) + + $$(call ListPathsSafely_IfPrintf,$1,$2,12001,12250) + $$(call ListPathsSafely_IfPrintf,$1,$2,12251,12500) + $$(call ListPathsSafely_IfPrintf,$1,$2,12501,12750) + $$(call ListPathsSafely_IfPrintf,$1,$2,12751,13000) + + $$(call ListPathsSafely_IfPrintf,$1,$2,13001,13250) + $$(call ListPathsSafely_IfPrintf,$1,$2,13251,13500) + $$(call ListPathsSafely_IfPrintf,$1,$2,13501,13750) + $$(call ListPathsSafely_IfPrintf,$1,$2,13751,14000) + + $$(call ListPathsSafely_IfPrintf,$1,$2,14001,14250) + $$(call ListPathsSafely_IfPrintf,$1,$2,14251,14500) + $$(call ListPathsSafely_IfPrintf,$1,$2,14501,14750) + $$(call ListPathsSafely_IfPrintf,$1,$2,14751,15000) + + $$(call ListPathsSafely_IfPrintf,$1,$2,15001,15250) + $$(call ListPathsSafely_IfPrintf,$1,$2,15251,15500) + $$(call ListPathsSafely_IfPrintf,$1,$2,15501,15750) + $$(call ListPathsSafely_IfPrintf,$1,$2,15751,16000) + + $$(call ListPathsSafely_IfPrintf,$1,$2,16001,16250) + $$(call ListPathsSafely_IfPrintf,$1,$2,16251,16500) + $$(call ListPathsSafely_IfPrintf,$1,$2,16501,16750) + $$(call ListPathsSafely_IfPrintf,$1,$2,16751,17000) + + $$(call ListPathsSafely_IfPrintf,$1,$2,17001,17250) + $$(call ListPathsSafely_IfPrintf,$1,$2,17251,17500) + $$(call ListPathsSafely_IfPrintf,$1,$2,17501,17750) + $$(call ListPathsSafely_IfPrintf,$1,$2,17751,18000) + + $$(call ListPathsSafely_IfPrintf,$1,$2,18001,18250) + $$(call ListPathsSafely_IfPrintf,$1,$2,18251,18500) + $$(call ListPathsSafely_IfPrintf,$1,$2,18501,18750) + $$(call ListPathsSafely_IfPrintf,$1,$2,18751,19000) + + $$(call ListPathsSafely_IfPrintf,$1,$2,19001,19250) + $$(call ListPathsSafely_IfPrintf,$1,$2,19251,19500) + $$(call ListPathsSafely_IfPrintf,$1,$2,19501,19750) + $$(call ListPathsSafely_IfPrintf,$1,$2,19751,20000) + + $$(call ListPathsSafely_IfPrintf,$1,$2,20001,20250) + $$(call ListPathsSafely_IfPrintf,$1,$2,20251,20500) + $$(call ListPathsSafely_IfPrintf,$1,$2,20501,20750) + $$(call ListPathsSafely_IfPrintf,$1,$2,20751,21000) + + $$(call ListPathsSafely_IfPrintf,$1,$2,21001,21250) + $$(call ListPathsSafely_IfPrintf,$1,$2,21251,21500) + $$(call ListPathsSafely_IfPrintf,$1,$2,21501,21750) + $$(call ListPathsSafely_IfPrintf,$1,$2,21751,22000) + + $$(call ListPathsSafely_IfPrintf,$1,$2,22001,22250) + $$(call ListPathsSafely_IfPrintf,$1,$2,22251,22500) + $$(call ListPathsSafely_IfPrintf,$1,$2,22501,22750) + $$(call ListPathsSafely_IfPrintf,$1,$2,22751,23000) + + $$(call ListPathsSafely_IfPrintf,$1,$2,23001,23250) + $$(call ListPathsSafely_IfPrintf,$1,$2,23251,23500) + $$(call ListPathsSafely_IfPrintf,$1,$2,23501,23750) + $$(call ListPathsSafely_IfPrintf,$1,$2,23751,24000) + + $$(call ListPathsSafely_IfPrintf,$1,$2,24001,24250) + $$(call ListPathsSafely_IfPrintf,$1,$2,24251,24500) + $$(call ListPathsSafely_IfPrintf,$1,$2,24501,24750) + $$(call ListPathsSafely_IfPrintf,$1,$2,24751,25000) + + $$(call ListPathsSafely_IfPrintf,$1,$2,25001,25250) + $$(call ListPathsSafely_IfPrintf,$1,$2,25251,25500) + $$(call ListPathsSafely_IfPrintf,$1,$2,25501,25750) + $$(call ListPathsSafely_IfPrintf,$1,$2,25751,26000) + + $$(call ListPathsSafely_IfPrintf,$1,$2,26001,26250) + $$(call ListPathsSafely_IfPrintf,$1,$2,26251,26500) + $$(call ListPathsSafely_IfPrintf,$1,$2,26501,26750) + $$(call ListPathsSafely_IfPrintf,$1,$2,26751,27000) + + $$(call ListPathsSafely_IfPrintf,$1,$2,27001,27250) + $$(call ListPathsSafely_IfPrintf,$1,$2,27251,27500) + $$(call ListPathsSafely_IfPrintf,$1,$2,27501,27750) + $$(call ListPathsSafely_IfPrintf,$1,$2,27751,28000) + + $$(call ListPathsSafely_IfPrintf,$1,$2,28001,28250) + $$(call ListPathsSafely_IfPrintf,$1,$2,28251,28500) + $$(call ListPathsSafely_IfPrintf,$1,$2,28501,28750) + $$(call ListPathsSafely_IfPrintf,$1,$2,28751,29000) + + $$(call ListPathsSafely_IfPrintf,$1,$2,29001,29250) + $$(call ListPathsSafely_IfPrintf,$1,$2,29251,29500) + $$(call ListPathsSafely_IfPrintf,$1,$2,29501,29750) + $$(call ListPathsSafely_IfPrintf,$1,$2,29751,30000) endef endif # HAS_FILE_FUNCTION @@ -420,8 +520,12 @@ # set. Some files get their write permissions removed after being copied to the # output dir. When these are copied again to images, xattr would fail. By only clearing # attributes when they are present, failing on this is avoided. + # + # If copying a soft link to a directory, need to delete the target first to avoid + # weird errors. define install-file $(MKDIR) -p '$(@D)' + $(RM) '$@' $(CP) -fRP '$<' '$@' if [ -n "`$(XATTR) -l '$@'`" ]; then $(XATTR) -c '$@'; fi endef