diff -r fd2427610c7f -r b4ef86f105ec jdk/test/Makefile --- a/jdk/test/Makefile Tue May 18 15:36:47 2010 -0700 +++ b/jdk/test/Makefile Thu May 20 13:57:58 2010 -0700 @@ -79,21 +79,25 @@ endif OS_VERSION := $(shell $(UNAME) -r) endif -ifndef OS_NAME - ifneq ($(PROCESSOR_IDENTIFIER), ) - OS_NAME = windows - SLASH_JAVA = J: - # A variety of ways to say X64 arch :^( - OS_ARCH:=$(word 1, $(PROCESSOR_IDENTIFIER)) - EXESUFFIX = .exe - # These need to be different depending on MKS or CYGWIN - ifeq ($(findstring cygdrive,$(shell ($(CD) C:/ && $(PWD)))), ) - GETMIXEDPATH = dosname -s - OS_VERSION := $(shell $(UNAME) -r) - else - GETMIXEDPATH = cygpath -m -s - OS_VERSION := $(shell $(UNAME) -s | $(CUT) -d'-' -f2) - endif +ifeq ($(OS_NAME),) + OS_NAME = windows + # GNU Make or MKS overrides $(PROCESSOR_ARCHITECTURE) to always + # return "x86". Use the first word of $(PROCESSOR_IDENTIFIER) instead. + ifeq ($(PROCESSOR_IDENTIFIER),) + PROC_ARCH:=$(shell $(UNAME) -m) + else + PROC_ARCH:=$(word 1, $(PROCESSOR_IDENTIFIER)) + endif + OS_ARCH:=$(PROC_ARCH) + SLASH_JAVA = J: + EXESUFFIX = .exe + # These need to be different depending on MKS or CYGWIN + ifeq ($(findstring cygdrive,$(shell ($(CD) C:/ && $(PWD)))), ) + GETMIXEDPATH = dosname -s + OS_VERSION := $(shell $(UNAME) -r) + else + GETMIXEDPATH = cygpath -m -s + OS_VERSION := $(shell $(UNAME) -s | $(CUT) -d'-' -f2) endif endif @@ -110,22 +114,27 @@ #OS_ARCH2-x64:=amd64 # Try and use the arch names consistently -OS_ARCH:=$(subst x64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) -OS_ARCH:=$(subst X64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) -OS_ARCH:=$(subst AMD64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) -OS_ARCH:=$(subst amd64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) -OS_ARCH:=$(subst x86_64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) -OS_ARCH:=$(subst EM64T,$(OS_ARCH_X64_NAME),$(OS_ARCH)) -OS_ARCH:=$(subst em64t,$(OS_ARCH_X64_NAME),$(OS_ARCH)) -OS_ARCH:=$(subst intel64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) -OS_ARCH:=$(subst Intel64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) -OS_ARCH:=$(subst INTEL64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) -OS_ARCH:=$(subst IA64,ia64,$(OS_ARCH)) -OS_ARCH:=$(subst X86,i586,$(OS_ARCH)) -OS_ARCH:=$(subst x86,i586,$(OS_ARCH)) -OS_ARCH:=$(subst i386,i586,$(OS_ARCH)) -OS_ARCH:=$(subst i486,i586,$(OS_ARCH)) -OS_ARCH:=$(subst i686,i586,$(OS_ARCH)) +OS_ARCH:=$(patsubst x64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) +OS_ARCH:=$(patsubst X64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) +OS_ARCH:=$(patsubst AMD64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) +OS_ARCH:=$(patsubst amd64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) +OS_ARCH:=$(patsubst x86_64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) +OS_ARCH:=$(patsubst 8664,$(OS_ARCH_X64_NAME),$(OS_ARCH)) +OS_ARCH:=$(patsubst EM64T,$(OS_ARCH_X64_NAME),$(OS_ARCH)) +OS_ARCH:=$(patsubst em64t,$(OS_ARCH_X64_NAME),$(OS_ARCH)) +OS_ARCH:=$(patsubst intel64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) +OS_ARCH:=$(patsubst Intel64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) +OS_ARCH:=$(patsubst INTEL64,$(OS_ARCH_X64_NAME),$(OS_ARCH)) +OS_ARCH:=$(patsubst IA64,ia64,$(OS_ARCH)) +OS_ARCH:=$(patsubst X86,i586,$(OS_ARCH)) +OS_ARCH:=$(patsubst x86,i586,$(OS_ARCH)) +OS_ARCH:=$(patsubst i386,i586,$(OS_ARCH)) +OS_ARCH:=$(patsubst i486,i586,$(OS_ARCH)) +OS_ARCH:=$(patsubst i686,i586,$(OS_ARCH)) +OS_ARCH:=$(patsubst 386,i586,$(OS_ARCH)) +OS_ARCH:=$(patsubst 486,i586,$(OS_ARCH)) +OS_ARCH:=$(patsubst 586,i586,$(OS_ARCH)) +OS_ARCH:=$(patsubst 686,i586,$(OS_ARCH)) # Default ARCH_DATA_MODEL settings ARCH_DATA_MODEL-i586 = 32 @@ -237,33 +246,9 @@ endif endif -# Temp file to hold list of shared library files possibly needing execute -# permissions at runtime. -SHARED_LIBRARY_LIST=$(ABS_TEST_OUTPUT_DIR)/shared_libraries.txt - -# Macro that may change execute permissions on library files and check for them. -# Files in repositories should not really have execute permissions, however -# windows dll files require execute permission. Adding execute permission -# may happen automatically on windows when using certain versions of mercurial -# but it cannot be guaranteed. And blindly adding execute permission might -# be seen as a mercurial 'change', so we avoid adding execute permission to -# repository files. Testing from a plain source tree may need the chmod a+x. -# Used on select directories. -define CheckLibraryExecutePermissions # dir -$(MKDIR) -p `$(DIRNAME) $(SHARED_LIBRARY_LIST)` -$(RM) $(SHARED_LIBRARY_LIST) -$(FIND) $1 -name \*.dll -o -name \*.DLL -o -name \*.so > $(SHARED_LIBRARY_LIST) -if [ -s $(SHARED_LIBRARY_LIST) -a ! -d $(TEST_ROOT)/../.hg ] ; then \ - $(ECHO) "$(CHMOD) a+x `$(CAT) $(SHARED_LIBRARY_LIST)`"; \ - $(CHMOD) a+x `$(CAT) $(SHARED_LIBRARY_LIST)`; \ -fi -if [ -s $(SHARED_LIBRARY_LIST) ] ; then \ - for i in `$(CAT) $(SHARED_LIBRARY_LIST)` ; do \ - if [ ! -x $${i} ] ; then \ - $(ECHO) "WARNING: File does not have execute permission: $${i}"; \ - fi; \ - done; \ -fi +# Macro to run make and set the shared library permissions +define SharedLibraryPermissions +$(MAKE) SHARED_LIBRARY_DIR=$1 UNIQUE_DIR=$@ shared_library_permissions endef # Expect JPRT to set JPRT_ARCHIVE_BUNDLE (path to zip bundle for results) @@ -515,7 +500,7 @@ JDK_ALL_TARGETS += jdk_nio2 jdk_nio2: java/nio/Buffer java/nio/ByteOrder \ java/nio/channels java/nio/BufferPoolMXBean java/nio/MappedByteBuffer - $(call CheckLibraryExecutePermissions,java/nio/channels) + $(call SharedLibraryPermissions,java/nio/channels) $(call RunOthervmBatch) # Stable othervm testruns (minus items from PROBLEM_LIST) @@ -549,7 +534,7 @@ # Using samevm has serious problems with these tests JDK_ALL_TARGETS += jdk_security3 jdk_security3: com/sun/security lib/security javax/security sun/security - $(call CheckLibraryExecutePermissions,sun/security) + $(call SharedLibraryPermissions,sun/security) $(call RunOthervmBatch) # All security tests @@ -576,7 +561,7 @@ # Using samevm has serious problems with these tests JDK_ALL_TARGETS += jdk_tools2 jdk_tools2: com/sun/tools sun/jvmstat sun/tools tools vm com/sun/servicetag com/sun/tracing - $(call CheckLibraryExecutePermissions,tools/launcher) + $(call SharedLibraryPermissions,tools/launcher) $(call RunOthervmBatch) # All tools tests @@ -646,7 +631,26 @@ ) ; $(BUNDLE_UP_AND_EXIT) \ ) 2>&1 | $(TEE) $(ABS_TEST_OUTPUT_DIR)/output.txt ; $(TESTEXIT) -PHONY_LIST += jtreg_tests +# Rule that may change execute permissions on shared library files. +# Files in repositories should never have execute permissions, but there +# are some tests that have pre-built shared libraries, and these windows +# dll files must have execute permission. Adding execute permission +# may happen automatically on windows when using certain versions of mercurial +# but it cannot be guaranteed. And blindly adding execute permission might +# be seen as a mercurial 'change', so we avoid adding execute permission to +# repository files. But testing from a plain source tree needs the chmod a+rx. +# Used on select directories and applying the chmod to all shared libraries +# not just dll files. On windows, this may not work with MKS if the files +# were installed with CYGWIN unzip or untar (MKS chmod may not do anything). +# And with CYGWIN and sshd service, you may need CYGWIN=ntsec for this to work. +# +shared_library_permissions: $(SHARED_LIBRARY_DIR) + if [ ! -d $(TEST_ROOT)/../.hg ] ; then \ + $(FIND) $< \( -name \*.dll -o -name \*.DLL -o -name \*.so \) \ + -exec $(CHMOD) a+rx {} \; ; \ + fi + +PHONY_LIST += jtreg_tests shared_library_permissions ################################################################ @@ -679,7 +683,7 @@ # perftest to collect statistics # Expect JPRT to set JPRT_PACKTEST_HOME. -PERFTEST_HOME = ${TEST_ROOT}/perf +PERFTEST_HOME = $(TEST_ROOT)/perf ifdef JPRT_PERFTEST_HOME PERFTEST_HOME = $(JPRT_PERFTEST_HOME) endif