commit e5aaa05c071e311f1f0d8298dce268a3b44d32ea Author: Sven Gothel Date: Fri Dec 2 02:57:18 2011 +0100 TestTracer -> JunitTracer commit 28f9b90a728ef1d683fa53d9c521af27a389baaf Author: Sven Gothel Date: Fri Dec 2 02:38:12 2011 +0100 Fix Test1p2ProcAddressEmitter (static var); Add TestTracer commit 2a461c6dc4e4ce01bdfe114e72cc69ec08fb2390 Author: Sven Gothel Date: Thu Dec 1 21:19:11 2011 +0100 NativeLibrary DEBUG: stack trace @ close() commit 2e80e7e60a48d3121feb20a237df304b2bf834d4 Author: Sven Gothel Date: Thu Dec 1 20:18:27 2011 +0100 TempJarCache/JNILibLoaderBase: Identify the Jar files by their URL within our lifecycle. JarFile's hash almost always differs. commit 50084db95e9dfc842a64f11db6ce8014a54b2057 Author: Sven Gothel Date: Thu Dec 1 16:26:33 2011 +0100 Test: Add unload of libraries as last test. commit 96c023bdf68d2e14d402c34a83e44fe8532d18cd Author: Sven Gothel Date: Thu Dec 1 16:25:57 2011 +0100 JVMUtil: Remove Platform dependency - It's being called by Platform and is private API. commit 5850e04ea8959cf1591db6788635df5645ab44ad Author: Sven Gothel Date: Thu Dec 1 16:24:32 2011 +0100 Minor edits / Put gluegen-rt 'libBaseName' static. commit 644eb1c3157ba3a18e4aec0f7bcb55081a9a3320 Author: Sven Gothel Date: Thu Dec 1 16:19:59 2011 +0100 DynamicLibraryBundle/NativeLibrary: Add destroy() to bundle, causing unloading of native library. commit 7e6cf46ed2e0e9772f79e06437596056efa8c682 Author: Sven Gothel Date: Thu Dec 1 16:18:34 2011 +0100 Refine TempJarCache/JNILibLoaderBase ; Add TempFileCache destroy() for instance. JNILibLoaderBase's 'addNativeJarLibs(Class classFromJavaJar, String allNativeJarBaseName, String[] atomicNativeJarBaseNames)' now just attempts to load the 'all' variant, and will continue w/ atomics if not successful (ie not available). It skips the validation of a 'allJavaJarPrefix', ie validating the 'classFromJavaJar holding JAR file, which allows GLUEGEN/JOGL classes to be contained in JAR files other than the original. commit ae8f6b7ed095abe2ff2284211b40ba8720e2446f Author: Sven Gothel Date: Thu Dec 1 02:42:34 2011 +0100 Bump to 6u29 commit d8a6e21507d93ecf393a7162b02db9f0064d27b5 Author: Sven Gothel Date: Tue Nov 29 13:57:21 2011 +0100 Fix regression (#2) of commit 04391a3f417e10e1b6dafbd8becc63659af633c30 (remove isDirectory(), which requires extra permissions) commit 1cdbadd0d2ad5509d970bed2fc388327ec2c4521 Author: Sven Gothel Date: Tue Nov 29 08:15:11 2011 +0100 Fix TempJarCache's Multi-User Bug (Reported by Martin Hegedus) It turns out that Java's File mkdir() only makes the directory writable for the current user, I have missed this fact. Great catch. 1. Fix TempJarCache.isInitialized(): Return false if not successfully initialized. It merely returned if it has passed 'initSingleton()' and ignored the staticInitError. 2. Fix TempFileCache pattern of determining the temp base directory We cannot just use a static directory name, due to the multi user environment and user write permissions on File.mkdir(). IOUtil has a new 'getTempDir(..)' methods, which iterates through integers [000000-999999] until a writeable directory could be found or created. TempFileCache initializes this temp base dir in the static block ensuring the value is final for the JVM / ClassLoader. Updated comments/docs in TempFileCache. commit 9596ef22ae2e8ed0622697afdd3e7a1a1c2934ec Author: Sven Gothel Date: Tue Nov 29 06:27:18 2011 +0100 Fix regresseion of commit 04391a3f417e10e1b6dafbd8becc63659af633c3 (forced pending '/' to filename) commit c6091024864e0fc9069683534370306838eb371a Author: Sven Gothel Date: Tue Nov 29 05:23:41 2011 +0100 JarUtil (Fix Bug 522): Handle case where given URL doesn't contain any '/' (eg. Eclipse 'rsrc:' case) - Use ':' as 'path' delimiter in case no path via '/' is given. +++ Manual tested w/ Eclipse: Preparations: =============== 1) Set up a vanilla eclipse (3.7.0) workspace 2) Add the JOGL User Library: - Window.Preference - Java.Build_Path.User_Libraries: + JOGL + gluegen-rt.jar + jogl.all.jar + gluegen-rt-natives-linux-amd64.jar + jogl-all-natives-linux-amd64.jar You may add all other native JARs here. Note that these are not required in the CLASSPATH by JOGL, however, they are required by Eclipse to export your project as a Runnable JAR File. 3) New test project - Right-click your project in the Package Explorer and click "Properties". - Select "Java Build Path" and click the "Libraries" tab. + JOGL - Add some simple code .. - Run as Java Application .. Test-1: ========= Export - Right-click your project in the Package Explorer and click "Export" - Select Java.Runnable_JAR_file + Launch configuration + some destination path + Library handling: Copy required libraries into a sub-folder next to the generated JAR Result: Works! ./lala01.jar ./lala01_lib/jogl.all.jar ./lala01_lib/jogl-all-natives-linux-amd64.jar ./lala01_lib/... etc .. Test-2: ========= Export - Right-click your project in the Package Explorer and click "Export" - Select Java.Runnable_JAR_file + Launch configuration + some destination path + Library handling: Package required libraries into generated JAR Result: Works! ./lala02.jar: Manifest-Version: 1.0 Rsrc-Class-Path: ./ gluegen-rt-natives-linux-amd64.jar gluegen-rt.jar jogl-all-natives-linux-amd64.jar jogl.all.jar Class-Path: . Rsrc-Main-Class: Test01 Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader commit 04391a3f417e10e1b6dafbd8becc63659af633c3 Author: Sven Gothel Date: Tue Nov 29 04:59:42 2011 +0100 JarUtil: Improve Robustness (Bug 522) and API doc, prepare for Jar-In-Jar. Add unit test. Misc.: - IOUtil: Add toURL* methods - TempJarCache: Add 'URL getResource(String)' commit 60ea6727f1a089f6afd17fcea3bd7d29353af9b4 Author: Sven Gothel Date: Tue Nov 29 04:50:16 2011 +0100 Add 'TestJarsInJar.jar' test JAR file for upcoming JarUtil tests (Jar in Jar). commit b3d5e20c04af353b246c9b2607c145f7dbd508dd Author: Sven Gothel Date: Sat Nov 26 18:16:32 2011 +0100 cpptasks MacOSX 10.5 support (bug 528): Use '-mmacosx-version-min=10.5' flag for compiler/linker. As Wade Walker suggests, use '-mmacosx-version-min=10.5' compiler/linker flag, which doesn't break 10.6 nor 10.7 builds, still need confirmation whether it works on 10.5! commit c964517ebf2496b6eec0fb3d688d41b3a3ba626b Author: Sven Gothel Date: Sat Nov 26 06:21:49 2011 +0100 Move TRACE_LOCK from RecursiveLock -> Lock commit 2bad18b9af99a7e073535e15f9cace6503625587 Author: Sven Gothel Date: Thu Nov 24 17:25:56 2011 +0100 ReflectionUtil: Catch NoClassDefFoundError @ getMethod() for robustness commit 1467d813c86d2c7c3d2dfbbb94a872aeceffe331 Author: Sven Gothel Date: Tue Nov 22 12:32:35 2011 +0100 Add assertion to RunnableTask test case (forgot in commit: 43b7675259eb76c570b6cc3a44fec2b9f6410697) commit 43b7675259eb76c570b6cc3a44fec2b9f6410697 Author: Sven Gothel Date: Tue Nov 22 12:23:07 2011 +0100 RunnableTask: Add documentation, incl. unit test. Add ReflectionUtil.MethodAccess, a convenient Method instance accessor. commit 9f14ad29bf2d652c11328479ccb11030408c0543 Author: Sven Gothel Date: Tue Nov 8 04:52:40 2011 +0100 Platform: Add 'getCurrentSleepJitter()' commit e4b3cbde5bf59521ed8bf1f15f3378a7c14b4391 Author: Sven Gothel Date: Sat Nov 5 05:33:15 2011 +0100 gluegen/OSX: Add property java.osx.frameworks.dir commit ef30b77fab27262f8b5ef3f98880c0caec30bab5 Author: Sven Gothel Date: Thu Oct 27 04:59:48 2011 +0200 Fix VersionNumber cstr w/ string parsing: cutt-off non-digit-parts, suppress exceptions commit fa5969168440a01fab814df78a3d23d10c27f72d Author: Sven Gothel Date: Wed Oct 26 12:52:09 2011 +0200 Platform: Add OS_VERSION_NUMBER / getOSVersionNumber() commit a19f98767da194ba468f53f56c2dcdb9d1d34ac8 Author: Sven Gothel Date: Mon Oct 24 10:29:34 2011 +0200 Update documentation (size/alignment) for MacOSX-32bit-gcc4 0bafac07b61f10c1a24e8c052937607bbfcb39ec commit 0bafac07b61f10c1a24e8c052937607bbfcb39ec Author: Sven Gothel Date: Mon Oct 24 10:11:03 2011 +0200 MachineDescriptor Static: Add Mac-OsX 32bit gcc4 special case with sizeof(long double) == 8 commit 6ea352bea79ed74a51ee4f63833b7f4b25b00ffc Author: Sven Gothel Date: Tue Oct 18 17:04:59 2011 +0200 Generalize jvm-data-model-arg 'jvmDataModel.arg', set do -d64, -d32 or dummy-value properly commit 57c6991edb18e70e72a54068420b000d5bcc0772 Author: Sven Gothel Date: Tue Oct 18 07:04:34 2011 +0200 Add solaris 64bit JVM comment commit 13488392fcd8f9253f82557158cd1e7c45c36e41 Author: Sven Gothel Date: Tue Oct 18 07:00:46 2011 +0200 Fix Solaris gcc args ; Adding JVM arch flags (-d32/-d64) commit f818817f3c0b14fe8317eaf5e1e1fff0a19884d0 Author: Sven Gothel Date: Tue Oct 18 06:59:53 2011 +0200 Android: Use NDK default gcc settings commit 24eefae081d08920989f123976e6754dc6d0793b Author: Sven Gothel Date: Fri Oct 7 06:17:33 2011 +0200 Add some warning supression tags commit e388426759e02e15ccc93b9df2e5c0400590d057 Author: Sven Gothel Date: Thu Oct 6 02:05:22 2011 +0200 Enhance ReleasePrimitiveArrayCritical: Use mode-flag JNI_ABORT if array is const, ie no write-back We shall consider the C header declaration as being correct and no modification shall happen on const arrays. Tested w/ unit tests and JOGL +++ Cleanup JavaType: final immutable fields, proper CVoidPointer name commit 2fdff368a5e77c31fff242f286c61edabae2669e Author: Sven Gothel Date: Sat Oct 1 03:03:30 2011 +0200 Android: no verbose commit 9d7a9a6b6c11f3affe850da4ea01a55af6d14b16 Author: Sven Gothel Date: Fri Sep 30 20:50:54 2011 +0200 Enhance ReflectionUtil getConstructor(..) w/ 2nd attempt of cstr look-up w/ assignable types commit 774b7196b6d3a7787e37703fa161e565afa380e0 Author: Sven Gothel Date: Fri Sep 30 20:43:41 2011 +0200 IOUtil's getTempRoot()'s Fix chicken-egg problem ; Adding proper API doc IOUtil's getTempRoot(): - Fix chicken-egg problem w/ Platform init, using Android.isavailable; commit 16bae378d3ff39d624cab44712c47b099c491934 Author: Sven Gothel Date: Fri Sep 30 14:47:05 2011 +0200 IOUtil: Generalize w/ getTempRoot() commit 3b52b7adafeda64730fb0070ab16655aa706b254 Author: Sven Gothel Date: Wed Sep 28 17:03:32 2011 +0200 IOUtil/Android: Convenient createTempFile wrapper for Android, using the context's directory + '/temp' (if stored at StaticContext) commit e70d4a081750fc1386435f37c86d66fadb66d988 Author: Sven Gothel Date: Wed Sep 28 13:17:51 2011 +0200 Android apk's jarsrcdir: exclude all sources. TODO: need better custom resources inclusion commit 110235691f8fda62b61256893d74f952dc596223 Author: Sven Gothel Date: Wed Sep 28 12:56:54 2011 +0200 Don't default to USE_TEMP_JAR_CACHE:=true on Android commit 3a323e52f92985f28ed44bf78557d5dfc38ab62e Author: Sven Gothel Date: Wed Sep 28 12:56:20 2011 +0200 Android aapt.signed: add jarsrcdir to add non java files (resources) to the apk commit 7c0bb4080a6dfb86ab6061cc24d17c133b1dd731 Author: Sven Gothel Date: Tue Sep 27 11:53:58 2011 +0200 minor: test/build scripts commit 6e7ba5a27141b350a8fb7763103dff0d9dd8875a Author: Sven Gothel Date: Tue Sep 27 11:53:37 2011 +0200 RunnableTask: Allow validation whether invoking thread intends to wait for the result commit e4baba27507ce78e64a150ec6f69fb96f5721a34 Author: Sven Gothel Date: Tue Sep 27 11:52:53 2011 +0200 Lock ChangeSet (fin): Cleanup, fix and enhance RecursiveLock implementation - RecursiveLock _is_ interface. - Use LockFactory to create a RecursiveLock. - Impl: RecursiveLockImpl01Unfairish - just using notify w/o any queue: fast - still enqueuing new lock-applicants if queue full (nice) - lock's sync extends AbstractOwnableSynchronizer and uses it (monitor) - Impl: RecursiveLockImpl01CompleteFair - using queue and interrupt for correctness (slow) - lock's sync extends AbstractOwnableSynchronizer and uses it (monitor) - Impl: RecursiveLockImplJava5 for using Java5's concurrency impl. - to verify correctness, performance and deviation of locking time TestRecursiveLock01 new performance measurements incl. simple avrg and deviation shows best combined performance-deviation w/ our RecursiveLockImpl01Unfairish os Linux and MacOSX. RecursiveLockImpl01Unfairish is the default in LockFactory. Adding 'private' LockDebugUtil, allowing validating all holdings locks of one thread as stack traces (Throwable). Besides the AbstractOwnableSynchronizer utilization, this helps debugging deadlocks and starvation very well. commit 73ac81eefce6b0dbf6922d2475c4b9eb9ed8a819 Author: Sven Gothel Date: Tue Sep 27 11:35:01 2011 +0200 Lock ChangeSet: New RecursiveLock interface. Minor API change to of tryLock throws declaration commit 4ba2f8304d8e557fff9874f9e214d476f44e40e0 Author: Sven Gothel Date: Tue Sep 27 11:33:02 2011 +0200 Lock ChangeSet: Prepare RecursiveLock to be an implementation of it's new interface commit 7df49ff336ce1cfe3280de66c840681c21987bfb Author: Sven Gothel Date: Sun Sep 25 04:24:13 2011 +0200 SingletonInstanceServerSocket: composite thread name w/ leading original one commit 7d7b08a246a3173b204ecbb467f9d11d3f1c394f Author: Sven Gothel Date: Sat Sep 24 02:57:47 2011 +0200 JNILibLoaderBase: Add convenient method to addNativeJarLibs for 'all' and 'atomic' variants commit b669435d277a10e6163034aba286ecccce013f69 Author: Sven Gothel Date: Sat Sep 24 00:23:00 2011 +0200 NativeLib: Fix OSX lib name detection; JarUtil extract: at copy entry, mkdir of parent if !exist commit c8cd39fbe077ebf0a4785750752135f26e4a94ab Author: Sven Gothel Date: Fri Sep 23 15:35:38 2011 +0200 Better DEBUG output commit 609e649443f900116039cda7a1bc7c9359b0242f Author: Sven Gothel Date: Fri Sep 23 14:08:13 2011 +0200 Add boolean system property 'jogamp.gluegen.UseTempJarCache', defaults to 'true' - allowing to disable usage of TempJarCache. commit 0a54e4b8e2923d1c4eb5847a397906fb783a10d3 Author: Sven Gothel Date: Fri Sep 23 13:32:18 2011 +0200 Moved JVMUtil to private package; Invoke JVMUtil.initSingleton() from Platform static init after loading native library. commit 9da5bc1fe999caa924bd8dceafeff93ddf9d16a0 Author: Sven Gothel Date: Fri Sep 23 13:17:36 2011 +0200 TempJarCache/JNILibLoaderBase: Validate the to be loader JarFile's Certificates if caller has any. Add Convenient JNILibLoaderBase.addNativeJarLibs(..) method. commit 675ea2c9ee6308d439b2429d0863a634ba673eff Author: Sven Gothel Date: Thu Sep 22 01:40:40 2011 +0200 test script commit a258a199da9ba1351d946ad0379c54e8481e931b Author: Sven Gothel Date: Thu Sep 22 01:40:28 2011 +0200 gluegen-rt lib loading: Moved to Platform static init incl. TempJarCache.bootstrapNativeLib(..) usage - Moving to Platform solves former interdependencies between GlueGenJNILibLoader/Platform - TempJarCache is being setup w/ bootstraping the gluegen-rt native lib jar file. Interesting here is that when using Oracle's JRE w/ Applets/JNLP the current dbg output is: gluegen-rt: url-root http://risa/deployment/test/jau02s/jar/ gluegen-rt: nativeJarURL jar:http://risa/deployment/test/jau02s/jar/gluegen-rt-natives-linux-amd64.jar!/ gluegen-rt: nativeJar /home/sven/.java/deployment/cache/6.0/49/3c6d1e31-2c90f42e IE the JRE implementation already deduces the online link to the Applet/JNLP cache. This makes the implementation much simpler, ie. same for application and Applets/JNLP. Have to verify w/ other Java impl. sure - and add same logic for the JOGL part. commit 0a45d6ca9b9a8d92b5e4c147be94fad8de344816 Author: Sven Gothel Date: Thu Sep 22 00:29:59 2011 +0200 JNILibLoaderBase/TempJarCache: Prepare for loadLibrary(..) out of cached JARs - JNILibLoaderBase: If TempJarCache is active, try find native library in cached JARs - TempJarCache: Add bootstrabNativeLib(..) allowing bootstraping gluegen-rt from JAR w/o needing it - JARUtil: minor edits (final) commit def691b009132463f8ec8efabd0d72768235dcf5 Author: Sven Gothel Date: Wed Sep 21 20:52:10 2011 +0200 Unify JNI Library Loading into JNILibLoaderBase and use it for the gluegen-rt native lib as well - removed redundance - move proper JNLPAppletLauncher custom libloader code into JNILibLoaderBase - prepares for new JAR temp cache .. commit 0e44b330403011558391c732a0b6240694ecb6a1 Author: Sven Gothel Date: Wed Sep 21 11:01:12 2011 +0200 LICENSE.txt: Removed 'may be used'. Added Emphasized multiple licenses commit 61d3b2f9b60cbea2e9454b86cc559347943a578e Author: Sven Gothel Date: Tue Sep 20 05:49:36 2011 +0200 Temp Cache: More control over the lifecycle, explicit TempJarCache initialization/usage only commit b12fe7f98a9b523129c310d46698f430d17a8138 Author: Sven Gothel Date: Tue Sep 20 04:58:01 2011 +0200 Remove redundant: NativeLibrary.ensureNativeLibLoaded() commit f357a00e511f0049865392adecc4d042663da6e6 Author: Sven Gothel Date: Mon Sep 19 13:55:06 2011 +0200 Enhancements / New utils: JarUtil, TempFileCache and TempJarCache JarUtil: Utility to handle Jar files and it's content, incl. extracting it's entries TempFileCache: Utility to have a save temporary file cache per JVM and per instance, eg. per ClassLoader. The temp cache is cleaned up with the next usage of TempFileCache, which solves the troubles of JVM bugs and situations where the JVM is not able to close and delete open temp files. TempJarCache: Utility to cache Jar files temporary (using TempFileCache) and access it's content. This class is suitable to implement a URLClassLoader or similar resource loading facilities. All tested w/ TestTempJarCache commit 69d537e4f9e6e5d206719723094ea192ab51ef43 Author: Sven Gothel Date: Mon Sep 19 13:48:45 2011 +0200 Enhancement/GenericStyle: - NativeLibrary: - add isValidNativeLibraryName(..) - generic style - Platform - add getOSAndArch(), getOSAndArch(..) - IOUtil - add getClassFileName(..) - add getBasename(..) - add getDirname(..) - added doc - ReflectionUtil - generic style