commit 213d01cac6bb0b91e85dbacb5cd4dff539881780 Author: Sven Gothel Date: Wed Mar 11 17:06:23 2015 +0100 Bug 1144 - Fix commit bbea09816015ecf3596acdcc033553127fcc0ef3 (missing file) commit bbea09816015ecf3596acdcc033553127fcc0ef3 Author: Sven Gothel Date: Wed Mar 11 15:10:15 2015 +0100 Bug 1144 - Add 'DelegateImplementation': Requires own MethodBinding for delegates impl. / Adding ReturnsOpaque - DelegateImplementation requires own MethodBinding for delegates impl. The delegation name must be included within the FunctionSymbol's aliases _only_ for implementations, where delegation applies. This allows all subsequent type/cfg checks to hit on AliasedSymbol! Hence we need to create individual MethodBinding instances for interfaces and public/private implementations. - Adding ReturnsOpaque Configuration: ReturnsOpaque This feature is necessary to achieve 'Opaque' functionality for function's return type - instead of types in general. - Fix AliasedSymbolImpl copy-ctor, i.e. this.name = o.name ! commit 25f248669f603c2bbd6ad97f31e0c72ce780f507 Author: Sven Gothel Date: Wed Mar 11 11:50:58 2015 +0100 Bug 1134 - LOG AliasedSymbol: Don't issue getAliasedString(), logger takes care of that, when it logs. commit 9a65b90b34632493d86af62e4bfaf24bff29e440 Author: Sven Gothel Date: Wed Mar 11 08:55:39 2015 +0100 Bump for 2.3.0 release commit 405512e1c8a2e24834b0d057f0b020b4a0f4c25b Author: Sven Gothel Date: Wed Mar 11 08:48:36 2015 +0100 Bug 1144 - Add 'DelegateImplementation', manually impl. may delegate to renamed original 'DelegateImplementation' is a variation of 'ManuallyImplement'. 'ManuallyImplement' emits the interface method, but suppresses the Java and native-code implementation. The latter shall be implemented manually by the user. 'DelegateImplementation' emits the interface method, and the _private_ renamed Java and native-code implementation. Both can be called from the manual user implementation, hence delegation. Configuration: DelegateImplementation I.e. delegation model shall apply to and the Java and native-code implementation renamed to . The user manual implementation of may delegate to . commit f664f7e950ff60d73e488801cf7f37878588203d Author: Sven Gothel Date: Wed Mar 11 08:42:26 2015 +0100 Bug 1144 - Add 'DelegateImplementation': Cleanup MethodBinding/FunctionBinding Semantics - Clarify name semantics: name -> [interfaceName, implName, nativeName] - JavaMethodBindingEmitter: Refine native identity via isNativeMethod + isPrivateNativeMethod - ProcAddressEmitter: Remove hack whether we need to wrap .. use isNativeMethod + isPrivateNativeMethod commit c3b2a86bb9051d6f03c3f104eff2dbe6cefc1803 Author: Sven Gothel Date: Tue Mar 10 17:27:50 2015 +0100 Bug 1144 - Add 'DelegateImplementation': Sort JavaMethodBindingEmitter argument list; forImplementingMethodCall -> isNativeMethod commit 454fac44efd1728d8f5c09ed4abd4041f6187e44 Author: Sven Gothel Date: Tue Mar 10 17:25:57 2015 +0100 Bug 1144 - Add 'DelegateImplementation': Cleanup JavaConfiguration and use manuallyImplement(AliasedSymbol) for FunctionSymbol commit 9d2bc5118f20f6f6defae075da17d34e1716d36d Author: Sven Gothel Date: Mon Mar 9 07:31:53 2015 +0100 Bug 1134 - Refine err/log message of 'previous definition is here' commit 5dd12c17bf5037c7ac6a2ac73caf4d61443c4749 Author: Sven Gothel Date: Mon Mar 9 07:02:43 2015 +0100 Bug 1134 - Add ASTLocusTagProvider for Define and fix newline in c-parser (Expose source location for log/error messages) commit 8efdf71e2de6392344326ba6a28e8f8fa7e3e8e5 Author: Sven Gothel Date: Mon Mar 9 04:24:03 2015 +0100 Bug 1134 - In case of 'undefined type' throw a semantic GlueGenException instead of an NPE commit 90e53d0c01f2fe62ff8c5bcc41741ec3c9c47e59 Author: Sven Gothel Date: Mon Mar 9 03:43:55 2015 +0100 Bug 1134 - Fix CMethodBindingEmitter return type '_res' qualifiers (part 2) Commit 414a0146660cadd35d5ae270f7f819717e9c7374 removed the const/volatile of the local return variable. This change also casts the function calling result to the same - hence removing a possible c-compiler warning of dropping qualifier const. commit 10060b091b76bee35246c5165d49ab546ebc4e37 Author: Sven Gothel Date: Mon Mar 9 03:18:42 2015 +0100 Bug 1134 - ProcAddressCMethodBindingEmitter: Use available 'ProcAddrTypedef' for type validation w/ local generated variant (robustness) ProcAddressCMethodBindingEmitter code regarding having the public 'ProcAddrTypedef' (from input header) was simply broken, since it always used the local generated 'ProcAddrTypedef', if 'ProcAddrTypedef' was forced. Hence the public 'ProcAddrTypedef' was ignored in most cases. ProcAddressCMethodBindingEmitter's semantic changed from: needsLocalTypedef -> hasProcAddrTypedef New Code generation: - always generated the local 'ProcAddrTypedef' - if hasProcAddrTypedef, use public 'ProcAddrTypedef' for return type variable - cast local 'ProcAddrTypedef' to public 'ProcAddrTypedef', which renders the native compiler to validate the local and public types. commit 414a0146660cadd35d5ae270f7f819717e9c7374 Author: Sven Gothel Date: Mon Mar 9 03:10:33 2015 +0100 Bug 1134 - Fix CMethodBindingEmitter return type '_res' qualifiers We cannot have the local variable holding the return type 'const' and assign a value to it later. commit 9eb9403d774db0c55ea3cb2fc5bd04114b8b5feb Author: Sven Gothel Date: Mon Mar 9 03:09:18 2015 +0100 Bug 1134 - Fix aliased typedef struct emission - Code regarding 'aliased typedef struct' is tagged in JavaEmitter and HeaderParser: 'NOTE: Struct Name Resolution (JavaEmitter, HeaderParser)' Prefers containing cstruct typedef pointer if available _and_ if cstruct is _not_ a typedef! - Removed: 'HeaderParser.resolveAnonCompound(..)' no more required, since CompoundType always sets its name! Commit cf9f28cf249393f42d7d2835775521dfadee6b92 - JavaEmitter.emitStruct: - Regard above 'aliased typedef struct' NOTE - JavaEmitter.typeToJavaType: - Regard above 'aliased typedef struct' NOTE - ReferencedStructs - Drop duplicate CompoundType instances of same name. This can happen due to const/volatile and ASTLocusTag variants. commit cf9f28cf249393f42d7d2835775521dfadee6b92 Author: Sven Gothel Date: Mon Mar 9 02:45:21 2015 +0100 Bug 1134 - Fix IntType 'unsigned'; Type: Use copy-ctor instead of Clonable, .. - Fix IntType 'unsigned' - Need to handle 'unsigned' for typedef and !typedef, when exposing 'unsigned' for code emission. - Consider IntType.typedefUnsigned in hash/equals - Type: Use copy-ctor instead of Clonable enhancing strong typing. - add 'Type clone(final ASTLocusTag newLoc)' - Consider Type.typedefCVAttributes in hash/equals commit 3b7871515f9a6a3c7adcbf12772d168e61f86d50 Author: Sven Gothel Date: Mon Mar 9 02:10:29 2015 +0100 Bug 1134 - Make ASTLocusTag's text optional commit 457355003bff320eee831731de016d29fb1e3982 Author: Sven Gothel Date: Sun Mar 8 09:00:08 2015 +0100 Bug 1134 - Logging's formatter now takes care of Type -> getDebugString() when desired, not at 'log' call Removes load to assemble the getDebugString() of Type and JavaType when invoking log function. Note: the log may be skipped if log-level is not reached. commit da909f84dc8421052c92491baa7dd90e1c78dc8f Author: Sven Gothel Date: Sun Mar 8 00:06:11 2015 +0100 Bug 1134 - Use ASTLocationTag in Logging (PCPP, Emitter); Refine ASTLocationTag log/exception formatting. Since commit eca019cdea4017227e951d8a9eb30cb34fca4a07, we have ASTLocationTag available. Hence use it for all logging purposes and emit a standard compiler output, which shall be parsable by other tools. commit e2d5d6f55794c5e27c3a29dcbbdaf2921506667d Author: Sven Gothel Date: Sat Mar 7 09:39:26 2015 +0100 Fix Type.getDebugString() comma separation commit d75bd393a5850252d7d7012e68af3850178ca8c9 Author: Sven Gothel Date: Sat Mar 7 09:21:24 2015 +0100 Bug 1134 - Fix IntType: Add getCName(..) for proper C-type code; Fix its newCVVariant(..), don't pass given cv-attr as typedef Add getCName(..) for proper C-type code - Add 'unsigned ' if not typedef and is unsigned. - Allows removal of special case in CMethodBindingEmitter - Fixes ProcAddressCMethodBindingEmitter typedef emission and removes clang warnings, caused by this (many). Fix its newCVVariant(..), don't pass given cv-attr as typedef - Proper delegation of 'const', regression of prev. commits commit b86c042c864db0d8061b999fadc87dd9f3b45824 Author: Sven Gothel Date: Sat Mar 7 08:28:03 2015 +0100 Bug 1134 - Handle Opaque fields in structs; Print struct field name in apidoc of getter/setter commit eca019cdea4017227e951d8a9eb30cb34fca4a07 Author: Sven Gothel Date: Sat Mar 7 08:25:36 2015 +0100 Bug 1134 - Pass ASTLocationTag to all types, used for GlueGenException Enhances semantic exception in code generation by adding the AST location of the type or function declaration. commit 6a0822b03de2976c5bc37544c50e70094eeb94a7 Author: Sven Gothel Date: Fri Mar 6 12:02:19 2015 +0100 TestByteBuffer*Stream: Reduce mmap load on poor OSX mini test machine to reduce test time (was: > 10 min) commit 43f200428eb595665d6db6edbd5538413f5a977c Author: Sven Gothel Date: Fri Mar 6 10:18:59 2015 +0100 Bug 1134 - Fix regression on OpenSolaris/gcc: Redefine in test1.h (test case) commit 5f66fafec303de7d7904a499fefb8e3d023b61ae Author: Sven Gothel Date: Fri Mar 6 08:12:30 2015 +0100 Bug 1134 - GlueGenException.toString(): Produce a 'gcc' like/compatible error message commit 1df503b8f14b385b35c6b50a4ff7ff03d1c3134f Author: Sven Gothel Date: Fri Mar 6 07:41:58 2015 +0100 Bug 1134 - Fix ProcAddressEmitter.getFunctionPointerTypedefName() ; Fix JavaEmitter's Function/Struct Emission Fix ProcAddressEmitter.getFunctionPointerTypedefName(): - needs to produce function-pointer-type name w/ original name Fix JavaEmitter's Function/Struct Emission: - needs to create FunctionSymbol w/ original native name, - then rename - preserving the original one. commit 4183867b055e99762d9b1a9163012657738be31a Author: Sven Gothel Date: Fri Mar 6 07:39:30 2015 +0100 Bug 1134 - Utilize AliasedSymbol where required in *Configuration; Clarify ProcAddressEmitter criteria commit 54dcf4271abf188585b248473cab11b0b4d93854 Author: Sven Gothel Date: Fri Mar 6 07:34:58 2015 +0100 Bug 1134 - Refine Logging using 'LoggerIf' - Replace System.err w/ Logging where appropriate commit 8eb9e27bccca4a0cd6a0b1b15bee76576ce030c3 Author: Sven Gothel Date: Fri Mar 6 07:28:35 2015 +0100 Bug 1134 - Add ASTLocationTag, locating source of [semantic] errors while parsing / analyzing New GlueGenException supports ASTLocationTag, which will be throws in case of semantic and/or parsing errors. commit ea6df88075c44f6b6317920119d6b33d5d97b362 Author: Sven Gothel Date: Thu Mar 5 08:14:19 2015 +0100 Bug 1134 - Fix regression: Static C-Function call must use original API name - Regression of commit 72d3635279ffc8ad88e47dff9bbe95d211226d11 CMethodBindingEmitter emits statically linked function calls, hence needs to use the original name of AliasedSymbol. AliasedSymbol: Add 'getOrigName()' at creation! commit 72d3635279ffc8ad88e47dff9bbe95d211226d11 Author: Sven Gothel Date: Thu Mar 5 07:14:04 2015 +0100 Bug 1134 - Enhance GlueGen Compiler: Minimal GL Header Changes _and_ Typesafety - We shall be able to import 'most' vanilla GL header, i.e. only change the typedef part using our GlueGen types - Type Safety: - GlueGen now detects '#define' and 'enum' redefines and throw an exception in this case. This helps detecting wrongly renamed GL extensions into core! - GlueGen now detects function redefines (overloading) and throw an exception in this case. Hence the semantics of duplicate functions has to be equal! This helps detecting wrongly renamed GL extensions into core! - Semantic equality for all types is provided via interface TypeComparator.SemanticEqualityOp, i.e. 'boolean equalSemantics(..)' implemented by com.jogamp.gluegen.cgram.types.Type. Semantic equality can be relaxed via config "RelaxedEqualSemanticsTest true", i.e. ignoring integer size, and const / volatile qualifiers. - All equality/hash methods of 'com.jogamp.gluegen.cgram.types.*' are restructured. - Track and simplify renamed 'symbol', i.e. use a common sub-interface for all renamed symbols (ConstantDefinition, FunctionSymbol, ..) - This is provided in a unified manner via interface com.jogamp.gluegen.cgram.types.AliasedSymbol and its common implementation AliasedSymbolImpl - All JavaConfiguration.shouldIgnore* methods operate w/ 'AliasedSymbol' trying to match all aliases. - Support 'struct NAME [ { ... } ]' w/o typedef's - New GL / CL headers do not use typedef's for anonymous opaque types - Opaque Type handling - JavaConfiguration.typeInfo(..), identifying opaque types, no more back references from target-type -> typedef. Hence the following is possible now: typedef void * Opaque01; // Opaque typedef void * APointerBuffer; // A Buffer - All Logger instances are no more static and derive their warning level from the package's root Logger via Logging.getLogger(..). commit dd2440cbadc642a561d8f92c502fe822b2f11762 Author: Sven Gothel Date: Thu Feb 5 00:19:22 2015 +0100 Refine commit 12feaa7d3b1544098f684d851e3caff1ec88cbc8: Add 'throws SecurityException' decl., remove dead code, remove redundant check. commit 2328173804f78f536b161f31d7c73be16823c7f3 Author: Sven Gothel Date: Thu Feb 5 00:17:23 2015 +0100 build setup script: remove redundant ANT_PATH entry commit 72e348dfcdfe2aa2f0878950d943e738ea94422a Author: Sven Gothel Date: Tue Feb 3 13:33:52 2015 +0100 Fix regression of commit 3caf446e29a3934900b9983dfd72cb8aa0d9e8d7: Win64 is not LP64 commit d8dff4c9f2186749b167195eeb339c33f56864e8 Author: Sven Gothel Date: Tue Feb 3 03:06:57 2015 +0100 Add javadoc arg '-Xdoclint:none' if java >= 1.8 via property 'javadoc.xarg1' avoiding javadoc build failure commit 1a80c33a16594e9a7182887a911ed44c9fbc9f79 Author: Sven Gothel Date: Mon Feb 2 21:40:22 2015 +0100 GlueGen: Adapt APK install scripts for harmonized os.and.arch names, see commit 3b43a223253176731567c6d8b7a67c9a6110782b commit 3b43a223253176731567c6d8b7a67c9a6110782b Author: Sven Gothel Date: Mon Feb 2 20:18:02 2015 +0100 GlueGen AAPT Task: Android APK native-code files shall be named using 'os.and.arch', instead of android.abi for harmonization commit 4621d94cd8081b00bc02929da08eed7258d7d9a4 Author: Sven Gothel Date: Mon Feb 2 13:23:13 2015 +0100 Remove unused armv7 scripts and gluegen piece commit 7db9df61142694965b50f2e0553d4c9e5668439b Author: Sven Gothel Date: Mon Feb 2 00:22:29 2015 +0100 Bug 1126 - Remove static query requirement of MachineDescriptor, find matching StaticConfig at runtime; Fix PPC (Bug 1056) and MIPSLE (Bug 1014) issues. Currently the StaticConfig is being queried via the key[OSType, CPUType ..] as pre-determined by Java properties or the ELF parser. This adds complication to maintain different platforms and the key query might not even be sufficient. The MachineDescriptor's StaticConfig only purpose shall be to speed-up native data size and offset/alignment retrieval. This is done by using the StaticConfig index within all StaticConfig[]s as a lookup-index for the precomputed struct's size and offset tables. +++ Solution: Rename: MachineDescriptor -> MachineDataInfo Rename: MachineDescriptorRuntime -> MachineDataInfoRuntime After having defined os.and.arch (OSType, CPUType and ABIType) w/ the optional help of the now self containing ELF Reader (Bug 1125), the native gluegen-rt library gets loaded enabling JNI methods. It is satisfactory to retrieve MachineDataInfo at runtime w/ JNI and find the matching/compatible StaticConfig. Only in case none is found, the program needs to abort. Otherwise the found MachineDataInfo.StaticConfig and MachineDataInfo are stored for further use (see above). This removes above complication and key to StaticConfig mapping. New platforms simply need to add a new unique entry into the StaticConfig[] table. ++ Also fixes Bug 1056 (PPC), thanks to tmancill [@] debian [.] org, and Bug 1014 (MIPSLE), thanks to Dejan Latinovic. Parts of the patch for Bug 1014 from Dejan Latinovic are included. also solved by this change set. commit 234819d531cdf20842cd0b3302935b187b2012d6 Author: Sven Gothel Date: Sun Feb 1 05:23:42 2015 +0100 Minor Cleanup: Buffers: Remove !JAVA_6 branch; NativeLibrary: Reuse isOSX detection commit a3f2d08801c5a54048faca52f422bcededf81b2a Author: Sven Gothel Date: Sun Feb 1 05:21:39 2015 +0100 Bug 1125 - Make ELF Reader 'jogamp.common.os.elf' Stateless ELF Reader 'jogamp.common.os.elf' currently uses Platform's pre-determined OS_TYPE and CPUType. It also uses the host platforms MachineDescription, hence can not read ELF files from other machines. This also forbids Platform to determine CPUType etc w/o having a valid 'os.arch' property. +++ ElfHeader should be split in - ElfHeaderPart1 (CPUType independent) - ElfHeaderPart2 (CPUType dependent) Fix shall make the ELF Reader self containing by only using ELF CPUType data, etc. This requires customization of struct parsing, where MachineDescription.Static index shall be - defined in ElfHeaderPart1 using e_Ident's CPUType. - used in ElfHeaderPart2 and all its struct types. commit 0deceee37d943faa7c34971388863a27f395d6a5 Author: Sven Gothel Date: Fri Jan 30 21:15:45 2015 +0100 Bug 1122: Refine AArch64 and OSType/32Bit incl. MachineDescription Android: - Detect ABIType.EABI_GNU_ARMHF via 'armeabi-v7a-hard' Platform.CPUType: - contains is32Bit now MachineDescription: - Rename *x86_64_unix* -> *lp64_unix*, reflecting universal __LP64__ mode - Remove is32Bit, which is determined by CPUType commit 12feaa7d3b1544098f684d851e3caff1ec88cbc8 Author: Sven Gothel Date: Fri Jan 30 21:09:17 2015 +0100 Refine Native Library Code: Bulk Permissions, Cleanup DynamicLinker impl. - and fix Android AArch64 BionicDynamicLinker (Bug 1122) - Bulk Permissions ProcAddressTable.reset(..) performs address lookup in one block. Now claiming all permissions upfront once, and releasing them afterwards. - Cleanup DynamicLinker impl. Proper top-down impl. of DynamicLinkerImpl, handling all security code and validations. - Fix Android AArch64 BionicDynamicLinker (Bug 1122) Dalvik uses diff RTLD_* defines for AArch64! commit 3caf446e29a3934900b9983dfd72cb8aa0d9e8d7 Author: Sven Gothel Date: Fri Jan 30 20:50:02 2015 +0100 Bug 1122: Reflect __LP64__ and _aarch64__ in GlueGen's stdint/stddef and Android compilerflags commit 6eba192bec7cc6258fbc0c97b448fe4a4d45de9a Author: Sven Gothel Date: Fri Jan 30 20:46:29 2015 +0100 GlueGen: Cleanup static generated JNI code (fix method names) Symbol could not be found w/ Android: UnixDynamicLinkerImpl_JNI.c::Java_jogamp_common_os_UnixDynamicLinkerImpl_dlerror commit 30933c60156c67a9624fefae2be6504300ce71bb Author: Sven Gothel Date: Fri Jan 30 07:04:39 2015 +0100 Bug 1122: Add AArch64 support (Android, GNU/Linux and in general) - Add AArch64 detection via - Elf Parser - Android properties - Java properties - Android: Validate CPUType.Family _and_ ABIType - MachineDescription - Remove redundant Type ID and its field - Reuse X86_64_UNIX for AArch64 (static config) New ARCH 'aarch64' for ant: armv8a aarch64 New CPUType.ARM64 (ARM): java: os.arch aarch64 arm64 New CPUType.ARMv8_A (ARM): java: os.arch armv8-a arm64-v8a New ABIType: EABI_AARCH64 commit b6e3878d253abab0dc864279eb1ae01fff220acf Author: Sven Gothel Date: Fri Jan 30 06:50:50 2015 +0100 Bug 1122 - Elf Parser: EM_res183 -> EM_AARCH64, detecting AArch64; Updating Shdr and Ehdr via GlueGen commit 0676d6f8b3ddf947b297be4de68517faf334dde0 Author: Sven Gothel Date: Fri Jan 30 06:48:40 2015 +0100 GlueGen: Make const array-length getter static, if constant. commit 89c5a976d86a659bd81ec52aae224ff810fd9b23 Author: Sven Gothel Date: Fri Jan 30 05:49:25 2015 +0100 Bug 1122 - Add Android API 21 jar file and source zip commit ee977a8a773b3461c42f64583d6cfe1ab5322b9e Author: Sven Gothel Date: Wed Jan 28 02:02:23 2015 +0100 Bug 1123 - Android Launcher/ClassLoaderUtil: Fails to work w/ Android 5.* (lollipop/art) Our Android ClassLoaderUtil, used to daisy chain dex ClassLoader using GlueGen, Joal and Jogl APK files, doesn't work on Android 5.* (lollipop) with the art runtime. See below adb log. Seems like this is a known issue https://code.google.com/p/android/issues/detail?id=82122 Workaround mentioned is to copy the APK file(s) to a temp directory .. commit 26c6d2c724ddda48bfbeedffe626f81ab3178ae1 Author: Sven Gothel Date: Wed Jan 28 02:01:32 2015 +0100 Bug 1124 - Android Build: Use SDK >= 24.0.2 (build-tools >= 21.1.2) and NDK >= 10d Adjust build scripts and GlueGen Android tasks for SDK >= 24.0.2 (build-tools >= 21.1.2) and NDK >= 10d commit 8f29378cfcef86b0e7c351e9c5df3c07b15edca9 Author: Sven Gothel Date: Fri Jan 23 22:22:30 2015 +0100 ExceptionUtils.dumpThrowable(..): Also dump all causes of the given Throwable commit 55b9d1a9c22ac2cfba9a876c9860aa3f15199606 Author: Sven Gothel Date: Thu Dec 18 08:02:13 2014 +0100 ProcAddressConfiguration: Allow setting default value for 'GetProcAddressTableExpr' commit 181dc8ae227cd5cbecf60ab8d973bb8eef7c45f0 Author: Sven Gothel Date: Sat Dec 13 06:38:59 2014 +0100 Bug 1108 - Fix difficulties to determine executable access permission on Windows via BATCH file execution Batch file execution test via direct call, i.e.'a.bat', does not work on some Windows machine, not reproducible here! A workaround would be to call the batch file explicit via 'CMD /c a.bat': - works when using 'Software Restriction Policies' (Bug 1015 Comment 2) - does _not_ work when denying ACL "Traverse Folder / Execute File" permission (Bug 1015 Comment 3) Due to this bug, we need to use a native execution: - Performing executable test w/ native exe file instead of batch file on Windows x86 32bit and 64bit, - using [1] TinyPE XP-W8 Compatible - x86 32bit and 64bit - 268 bytes - Tested on: WinXP-32bit, Win7-64bit and Win8-64bit - Author/License: Ange Albertini, BSD Licence, 2010-2013 - On all other Windows machines (ARM, ..), we still use direct execution of 'a.bat' but may add native exe files for missing platforms. +++ This patch injects said binaries within the java jar file and copies it into the 'to be tested' temp folder for execution. [1] TinyPE XP-W8 Compatible - x86 32bit and 64bit - 268 bytes is included within 'src/native/tinype-corkami', build manually and imported as 'src/java/com/jogamp/common/util/bin/exe-windows-i586-268b.bin'. +++ commit f26fcc971dc95ffb7033ac9e539a3c0ebb43025a Author: Sven Gothel Date: Fri Dec 12 17:35:35 2014 +0100 TempFileCache/TempJarCache: Fix NPE in DEBUG mode commit 235a64d1f2354fa15805d1759ff0b46c71338b4f Author: Sven Gothel Date: Fri Dec 12 17:18:42 2014 +0100 test scripts: Bump JRE, add TEMP/TMP settings commit 558d51e384e8c4e2bf3d4f646724c3351101b605 Author: Sven Gothel Date: Thu Dec 11 19:05:26 2014 +0100 GlueGen JavaEmitter: Use proper class access modifiers for emitted classes incl. ProcAddressTable Emitted Java classes as well as optional ProcAddressTable shall use unique generated access modifiers covering all MethodAccess cases. commit 150ea4f231c9629ef9ef354e3f1a92a516d46f91 Author: Sven Gothel Date: Thu Dec 11 18:00:25 2014 +0100 Bug 1108 - IOUtil.getTempDir(..): Difficulties to determine executable access permission on Windows via BATCH file execution Try using explicit call to Windows 'cmd.exe' w/ referencing the BATCH file location, via 'Runtime.getRuntime().exec(new String[] { "cmd", "/c", "a.bat" } );' While the bug itself could not be reproduced here, I could test on Windows 7 (64bit and 32bit), as well as an WindowsXP 32bit that no regression occured. commit 9e13e8c78ed69bb7afcd49abe8bf69340dc06223 Author: Sven Gothel Date: Wed Dec 3 20:30:46 2014 +0100 Bug 1106 - Bitstream: Simplify 'msbFirst' case for bulk operations / Add setting of stream position (optional) - Add setting position entry, optionally supported, e.g. ByteBufferStream and ByteArrayStream - Remove 'msbFirst' parameter on all 'bulk' read/write operations. These methods use LSB-first always, allowing proper stream access of data w/ different bit-sizes. Data is now read/write as little-endian and swapped accordingly. Optimizations are adopted for LSB-first operations. This change removes API confusion/bugs: - removes one decision (parameter) - removes the data reversion case - removes bugs w/ different bit-sizes commit ca4f075aeed16331f0b806ea564ca3d492039336 Author: Sven Gothel Date: Wed Dec 3 20:19:51 2014 +0100 ExceptionUtils.dumpStack(..): Skip self stack entry commit 785af7ed26b18d5c85e40e525859ac65deb37017 Author: Sven Gothel Date: Sun Oct 26 02:16:31 2014 +0100 Refine ExceptionUtils: Shorten method name, dumpThrowable uses dumpStack commit 6f5b67d998b1be9b49584bbb55814d10fe55e813 Author: Sven Gothel Date: Wed Oct 8 08:34:26 2014 +0200 Add ExceptionUtils: Exposing dumpStackTrace(..) and dumpThrowable(..) commit 2afb19885905285399b90f9a489fba8d2a09454e Author: Sven Gothel Date: Sat Oct 4 02:47:13 2014 +0200 SingletonJunitCase: Increase TO 12 -> 15 mins, only sleep for 1 poll period (500 ms) per JVM after test class (cooperative w/ other JVM test instances) commit 0d9efa74b10ea29d33ecc9c2b9f06bb2209d96ca Author: Sven Gothel Date: Fri Oct 3 06:12:51 2014 +0200 SingletonJunitCase: Refine poll and release behavior - Increase poll frequency from every 1000 ms -> 500 ms - After releasing the lock, sleep to 6 x poll period, i.e. 3s commit 773d96584b4edc13eb6ff689eaf891aab09aa5a4 Author: Sven Gothel Date: Fri Oct 3 05:49:57 2014 +0200 SingletonTestCase -> SingletonJunitCase: Accomodate ClassLoader lifecycle of static fields; Change name to avoid testing itself. commit db12572b4f674884c3f7ad8f7e15ba9e97cf865a Author: Sven Gothel Date: Fri Oct 3 04:49:21 2014 +0200 SingletonTestCase: SINGLE_INSTANCE_LOCK_TO (timeout) 6 -> 12 minutes commit 1630bc961747d227d166fa128effcb24e050f6cc Author: Sven Gothel Date: Fri Oct 3 04:45:04 2014 +0200 gitignore: build*/ and build-temp commit fb60db3a633d82a0323f066a98a8a9fadf3ecff5 Author: Sven Gothel Date: Fri Oct 3 04:43:51 2014 +0200 SingletonTestCase: Move singleton test impl. from JOGL's UITestCase, inherit from JunitTracer and use it for all tests. - Certain performance tests don't make sense utilizing several jenkins unit tests on one machine, hence singleton test execution is desired. - JOGL's UITestCase also will derive from this SingletonTestCase commit bd240ebfe09b7c7a21689dee8be0cc673eb7f340 Author: Sven Gothel Date: Fri Oct 3 04:14:10 2014 +0200 MappedByteBufferInputStream: Default CacheMode is FLUSH_PRE_HARD now (was FLUSH_PRE_SOFT) FLUSH_PRE_SOFT cannot be handled by some platforms, e.g. Windows 32bit. FLUSH_PRE_HARD is the most reliable caching mode and it will fallback to FLUSH_PRE_SOFT if no method for 'cleaner' exists. Further, FLUSH_PRE_HARD turns our to be the fastest mode as well. commit f7c2c27234e58371ffbb2b3ec44a0f3e8a373340 Author: Sven Gothel Date: Fri Oct 3 04:09:00 2014 +0200 TestByteBufferInputStream: Reduce FLUSH_SOFT load commit 89831e61dc68b29ceb6c1cc579f6a7bb17a46d70 Author: Sven Gothel Date: Fri Oct 3 03:47:27 2014 +0200 TestByteBufferCopyStream, TestByteBufferInputStream: Reduce load and test time commit 9b4656a2b676bcad43e67e5ee47f4ed00399a83a Author: Sven Gothel Date: Fri Oct 3 03:13:42 2014 +0200 Make Scripts OSX: Remove -java7 script, add -java6 script (default uses java8) commit a7a3d5ab98ee0ad33fdef50bf081afeb8295ebe4 Author: Sven Gothel Date: Fri Oct 3 03:12:42 2014 +0200 MappedByteBuffer*Stream: - Validate active and GC'ed mapped-buffer count in cleanAllSlices() via close() .. - Fix missing unmapping last buffer in notifyLengthChangeImpl(), branch criteria was off by one. - cleanSlice(..) now also issues cleanBuffer(..) on the GC'ed entry, hence if WeakReference is still alive, enforce it's release. - cleanBuffer(..) reverts FLUSH_PRE_HARD -> FLUSH_PRE_SOFT in case of an error. - flush() -> flush(boolean metaData) to expose FileChannel.force(metaData). - Add synchronous mode, flushing/syncing the mapped buffers when in READ_WRITE mapping mode and issue FileChannel.force() if not READ_ONLY. Above is implemented via flush()/flushImpl(..) for buffers and FileChannel, as well as in syncSlice(..) for buffers only. flush*()/syncSlice() is covered by: - setLength() - notifyLengthChange*(..) - nextSlice() Always issue flushImpl() in close(). - Windows: Clean all buffers in setLength(), otherwise Windows will report: - Windows: Catch MappedByteBuffer.force() IOException - Optimization of position(..) position(..) is now standalone to allow issuing flushSlice(..) before gathering the new mapped buffer. This shall avoid one extra cache miss. Hence rename positionImpl(..) -> position2(..). - All MappedByteBufferOutputStream.write(..) methods issue syncSlice(..) on the last written current slice to ensure new 'synchronous' mode is honored. +++ Unit tests: - Ensure test files are being deleted - TestByteBufferCopyStream: Reduced test file size to more sensible values. - commit 00a9ee70054872712017b5a14b19aa92068c8420 Author: Sven Gothel Date: Mon Sep 29 03:57:30 2014 +0200 Bug 1080 - Refine MappedByteBuffer*Stream impl. and API [doc], adding stream to stream copy as well as direct memory mapped ByteBuffer access commit 92a6d2c1476fd562721f231f89afba9342ed8a20 Author: Sven Gothel Date: Fri Sep 26 12:29:04 2014 +0200 Bug 1080 - Add write support for memory mapped big file I/O via specialized OutputStream impl. Added MappedByteBufferOutputStream as a child instance of MappedByteBufferInputStream, since the latter already manages the file's mapped buffer slices. Current design is: - MappedByteBufferInputStream (parent) - MappedByteBufferOutputStream this is due to InputStream and OutputStream not being interfaces, but most functionality is provided in one class. We could redesign both as follows: - MappedByteBufferIOStream (parent) - MappedByteBufferInputStream - MappedByteBufferOutputStream This might visualize things better .. dunno whether its worth the extra redirection. +++ MappedByteBufferInputStream: - Adding [file] resize support via custom FileResizeOp - All construction happens via ctors - Handle refCount, incr. by ctor and getOutputStream(..), decr by close - Check whether stream is closed already -> IOException - Simplify / Reuse code MappedByteBufferOutputStream: - Adding simple write operations commit 95c4a3c7b6b256de4293ed1b31380d6af5ab59d0 Author: Sven Gothel Date: Fri Sep 26 12:13:43 2014 +0200 Bug 1080 - Fix TestByteBufferInputStream: Handle OutOfMemoryError cause in IOException (Add note to FLUSH_NONE); Reduce test load / duration. commit 86541252028e0b2093b87836732924b6746858ca Author: Sven Gothel Date: Fri Sep 26 05:53:39 2014 +0200 Adapt unit tests to commit 1350823035597f784f9cf871aa487f896f3d1840: getTempDir(..) throws IOException commit ae17a5895088e321bc373318cc1e144a2f822f29 Author: Sven Gothel Date: Thu Sep 25 23:51:04 2014 +0200 Bug 1080 - Add read support for memory mapped big file I/O via specialized InputStream impl., incl. mark/reset - ByteBufferInputStream simply impl. InputStream for an arbitrary 2MiB restricted ByteBuffer - Users may only need a smaller implementation for 'smaller' file sizes or for streaming a [native] ByteBuffer. - MappedByteBufferInputStream impl. InputStream for any file size, while slicing the total size to memory mapped buffers via the given FileChannel. The latter are mapped lazily and diff. flush/cache methods are supported to ease virtual memory usage. - TestByteBufferInputStream: Basic unit test for basic functionality and perf. stats. commit 1350823035597f784f9cf871aa487f896f3d1840 Author: Sven Gothel Date: Thu Sep 25 23:45:59 2014 +0200 IOUtil: Fix API doc; getTempDir(..) shall throw IOException instead of RuntimeException for IO failures - Fix API doc - copy*() methods only close stream they open, no need to mention the proper behavior (obvious). - getTempDir(..) shall throw IOException instead of RuntimeException for IO failures - Ease using getTempDir(..), i.e. only handle IOException commit ebe187fca62695b7631bfc67cb415d4e05c37456 Author: Sven Gothel Date: Wed Sep 24 01:16:53 2014 +0200 Bump semver to 0.9.30-SNAPSHOT of jogamp branch, incl. commit 9cdb6bbf6d3248a65aa78ced08211d609c356f91 commit 9cdb6bbf6d3248a65aa78ced08211d609c356f91 fixes the tests of the Class, Field and Method accessor bit for compatibility. commit 3a8515045c906b0174fb74f25b425f532b9cf2d1 Author: Sven Gothel Date: Sun Sep 14 07:54:29 2014 +0200 Bug 1067 - IOUtil.testDirExec(File) needs to preserve SPACE in exetst.getCanonicalPath() command Having a test-executable file with SPACE in it's temporary path, e.g. Unix: /magic temp/user/ Windows XP: C:\Documents and Settings\user\temp results to split up commands if using 'Process.exec(String)', since it utilizes a StringTokenizer to assemble the command String[]. This patch uses 'Process.exec(String[])' avoiding splitting up SPACE in the full command string/path. Major impact is on 'Windows XP', where a SPACE separated TEMP/TMP folder is the default. Note-1: Commit 9bc3d3f78bb2fb1aa0ccfb02ffb5bdda74420cac introduced testing executable permission on Windows (Bug 1015) and rendered this issue visible. To reproduce the issue on Windows: +++ set TEMP=C:\Documents and Settings\jogamp\temp set TMP=C:\Documents and Settings\jogamp\temp "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" +++ Note-2: This bug affects all platforms! commit c97e35377aea70cb293cabdd205bcc5da64b95c6 Author: Sven Gothel Date: Wed Sep 10 07:21:03 2014 +0200 Bug 1063: Uri: Refine API doc; Add create(Encoded ..) ; Provide common impl. for getNormalized(), getDirectory(), getParent() and getRelativeOf() - Refine API doc - Add notion of {@code host} and {@code port} validation - Add create(Encoded ..), allowing creation of variants w/o re-encoding - Provide common impl. for getNormalized(), getDirectory(), getParent() and getRelativeOf() Above feature methods share common goals, hence use same implementation: - If opaque, cut-off query and merge after operation - cleanup path, i.e. /dummy/../test/ -> /test/ - cutoff file, dir - if requested - append optional appendix and cleanup again Return behavior various thought, i.e. null, this or allow exception. Enhanced test of above features. commit 6a466e3f1e92a1e831ea61d1bb72c32f56b2a28d Author: Sven Gothel Date: Mon Sep 8 13:49:45 2014 +0200 Bug 1063: Further Uri completion - As a result of JOGL Uri adoption commit 3e50f103fa49b40f86966877084e0282a8d97ff8 Author: Sven Gothel Date: Mon Sep 8 12:00:18 2014 +0200 Bump 2.3.0 commit dde91a061cb0bc209442fe0e74a532b91d1bb4b8 Author: Sven Gothel Date: Mon Sep 8 05:09:02 2014 +0200 Bug 1063: Complete Uri impl. and adoption throughout GlueGen - Uri: - Add error correction (fix) of path at ctor in case a a contained Uri is requested from an opaque one. The latter might come from URI/URL and is not properly encoded! See Uri.PARSE_HINT_FIX_PATH - Simplify conversion methods: - valueOf(URI/URL): Re-encode only if not opaque - getNativeFilePath() -> toFile() - Move IOUtil Uri related constants to class Uri - Add DEBUG and DEBUG_SHOWFIX - Complete adoption of URI -> Uri changes - IOUtil, JarUtil and TempJarCache still holds some left over deprecated methods, which will be removed after officially starting 2.3.0 (JOGL dependencies) - Otherwise not URI utilization left - Tests - Cleaned ip TestUri01 and TestUri03Resolving - TestUri03Resolving also tests URL -> Uri, and hence mentioned Uri.PARSE_HINT_FIX_PATH commit 6322991799268166e46aeeacb142c11d45950f48 Author: Sven Gothel Date: Sun Sep 7 19:02:48 2014 +0200 Bug 1063 - Refine Uri and Uri.Encode ; Fix unit tests (passing on GNU/Linux, OSX and Windows) - Refine Uri - remove System.err.print* - scheme is of type Encode - Refine Uri.Encode - substring(..) shall return type Encode - Fix unit tests (passing on GNU/Linux, OSX and Windows) commit 2d615932505d4870f3fd0dd37f21fb3d308ab536 Author: Sven Gothel Date: Sun Sep 7 18:15:07 2014 +0200 Bug 1063 - Uri.PATH_LEGAL: Remove reserved 'punct', encoding all reserved chars but '!', allows removal of PATH_MIN_LEGAL ; Add comment for Harmony values for review commit 5205e47e8a2e84e793b26305391b1c4f8648597c Author: Sven Gothel Date: Sun Sep 7 10:20:12 2014 +0200 Bug 1063 - Utilize own Uri and Uri.Encoded class w/ proper encoding and differentiating encoded/decoded variants by type [Part 1] - Add immutable com.jogamp.common.net.Uri class impl. RFC 2396 w/ encoding of RFC 3986 - Class Uri.Encoded is used to represent encoded parts - IOUtil: Remove unused methods (residing in Uri) and mark others deprecated (will move to Uri) - Adopt usage of Uri: This must be completet in follow-up commits!