commit 153ae3ec043a2d69390668533acfa04c0ff148dd Author: Sven Gothel Date: Wed Aug 6 17:23:25 2014 +0200 Bump to 2.2.0 commit 48b97646ad57cda4087c46437ef5f1e1ae6f1b0d Author: Sven Gothel Date: Wed Jul 30 17:27:59 2014 +0200 gluegen-cpptasks's compiler.cfg.linux.*: always "-include make/stub_includes/platform/glibc-compat-symbols.h" ensuring using low versioned GLIBC symbols commit f5c48efcf546ba4e08e197ccced6df83b57e1755 Author: Sven Gothel Date: Fri Jul 11 03:05:41 2014 +0200 Bug 1024: Add fallback for native-jar-file location via classpath In situations, where the native-jar file is not located within the same parent URI as it's java-jar file, our location mechanism fails. This patch adds a classloader based native-jar file location mechanism as a fallback, requiring the native jar file to be included in the users CLASSPATH. Classloader based location algorithm in JNILibLoaderBase.addNativeJarLibsImpl(..): - Extract the 'module-name' from the given classFromJavaJar's package name, i.e. the last package-part: 'jogamp.common.Debug' -> 'common' Hence it is important to pass a 'classFromJavaJar', which last package segment reflects the module-name! - -> , e.g. linux-amd64 -> linux.amd64 (linux/amd64) - Locate class 'jogamp.nativetag...TAG', e.g. 'jogamp.nativetag.common.linux.amd64.TAG' - Use located class's JarFile URI .. continue as usual Injection of above mentioned TAG class via gluegen-cpptasks-base.xml macro 'native.tag.jar': - Creates dummy TAG.java code - Compiles TAG.java - Creates the native-jar file Example: Note that the manifest file uses a matching Extension-Name: Extension-Name: jogamp.nativetag.common commit be61c7f33ec8e4f3214e8d2969ee88cd327fce9d Author: Sven Gothel Date: Fri Jul 11 02:44:04 2014 +0200 Cleanup JNILibLoaderBase: Use Platform NEWLINE, remove obsolete notice of '[-noawt,-mobile,-core,-android]?' in API-doc, ... - rename addNativeJarLibsWhenInitialized(..) -> addNativeJarLibsWithTempJarCache(..) to fix grammar and expose proper semantics. commit a84509b7045f4f9cae5a75e1dd1be77bab0da372 Author: Sven Gothel Date: Fri Jul 11 02:39:12 2014 +0200 Debug: Use JogAmp license, since we re-modelled it using PropertyAccess, commit GlueGen f4ac27e177f6deb444280d3b375e7d343e38bd08 commit 5d9b42b83b45401d522e13cfe6189c1640d351e9 Author: Sven Gothel Date: Fri Jul 11 02:37:18 2014 +0200 PlatformPropsImpl.getOSAndArch(..): Cleanup, use final String instances to ease review commit ce29395e6d0515156859e78fbf7336db2ff34dbc Author: Sven Gothel Date: Thu Jul 10 17:31:35 2014 +0200 Bug 1023/Bug 1024: Create native jar files for different configurations due to non-native-jar aliasing commit 629814e1b5dcbf28af7e5f7d8e872e8c5cc4805b Author: Sven Gothel Date: Wed Jul 9 22:29:32 2014 +0200 Remove @deprecated methods commit 37f76d17cdf90a8dded8beba99651b19a8795c54 Author: Harvey Harrison Date: Mon Jul 7 07:36:37 2014 -0700 gluegen: relax private variable access to package-private for members accessed from inner class Otherwise the compiler has to fill in a wrapping access function for the inner class to call, which is less efficient. commit 908822aa64c03ec4e8ca9fd3202f740c3e844bbd Author: Harvey Harrison Date: Mon Jul 7 07:26:05 2014 -0700 gluegen: remove the unused reverse map from TypeDictionary commit e774abd1a18ee53caa2c550718179f0567d45323 Author: Harvey Harrison Date: Mon Jul 7 07:25:19 2014 -0700 gluegen: remove unused imports, unneeded semicolons, add missing @Override annotations commit df9ff7f340a5ab4e07efc613f5f264eeae63d4c7 Author: Sven Gothel Date: Thu Jul 3 16:06:47 2014 +0200 Code Clean-Up based on our Recommended Settings (jogamp-scripting c47bc86ae2ee268a1f38c5580d11f93d7f8d6e74) Code Clean-Up based on our Recommended Settings (jogamp-scripting c47bc86ae2ee268a1f38c5580d11f93d7f8d6e74) - Change non static accesses to static members using declaring type - Change indirect accesses to static members to direct accesses (accesses through subtypes) - Add final modifier to private fields - Add final modifier to method parameters - Add final modifier to local variables - Remove unnecessary casts - Remove unnecessary '$NON-NLS$' tags - Remove trailing white spaces on all lines commit dc1fee7a307ed24c1b6b02fa0936641450c24984 Author: Mark Raynsford Date: Mon Jun 30 13:20:36 2014 +0000 Do not keep re-indexing into the same array. commit 46430b8202c3fde3ee60f72c38c621729bac52ec Author: Mark Raynsford Date: Mon Jun 30 13:17:53 2014 +0000 StringBuilder message parameter was unused. commit 46faa59d439ef235d7691fc64d56eedc600ffa1a Author: Mark Raynsford Date: Mon Jun 30 12:49:39 2014 +0000 Clean up native library loading and remove the ability to strip prefixes. Bug: 1023 Bug: 1024 commit eb47aaba63e3b1bf55f274a0f338f1010a017ae4 Author: Sven Gothel Date: Sat Jun 28 15:59:26 2014 +0200 Fix 'typo' in messages: 'Catched' -> 'Caught' commit 3bfc1e484ae247214d47f25fcc9b9da223f51fe1 Author: Sven Gothel Date: Fri Jun 27 10:26:25 2014 +0200 Buffers: Split slice2Float(..) into dedicated methods for FloatBuffer and float[] backing-array - refine API doc w/ backing-array semantics commit 3901130f7fa4b3484a202f5db3a541f1edf9d6e8 Author: Mark Raynsford Date: Thu Jun 26 11:18:01 2014 +0000 Remove unused addNativeJarLibs() method; the only consumer was a unit test of the method. commit 41ce139251fb63c9b969228d11246281de547793 Author: Sven Gothel Date: Wed Jun 25 12:36:49 2014 +0200 CMethodBindingEmitter: Suppress compiler warning in NewDirectByteBuffer usage (cast to void*) commit 8f571b2c0008df1b6554fa8fa754440c0f024052 Author: Sven Gothel Date: Wed Jun 25 11:38:44 2014 +0200 Bug 1025 - GlueGen: Fix regression of single non-native sized compound fields Single non-native sized compound fields, if an opaque array/pointer, must utilized the native size StructAccessor get/set method. commit 679d484d4d8c3528aacc5b98dca644086948fcc5 Author: Sven Gothel Date: Wed Jun 25 10:32:37 2014 +0200 Bug 1025 - GlueGen: Fix test case (gcc compiler regression due to redefined types / removed them) commit 9ee44e1a289ecbac024662dd5a2ffc42e8add023 Author: Sven Gothel Date: Wed Jun 25 10:16:01 2014 +0200 Bug 1025 - GlueGen: Add accessor for compound fields of type array, pointer and string (code generation) Enhance compound access as delivered by Bug 1022, to also generate accessors (getter and setter) for array, pointer and string types. Allow configuration of array length either via their internal size (c-header) or config 'ReturnedArrayLength'. 'ReturnedArrayLength' allows specifying a java expression. Canonical field names of compounds are _now_ specified as follows for configuration entries: COMPOUND.FIELD e.g. StructA.fieldB Also allow configuration of pointer fields to be treated as referenced arrays via 'ReturnedArrayLength'. Further, allow specifying 'pointer fields' as String values via 'ReturnsString' configuration. ++++ Implementation details: - handle above described accessor features - enhance JavaDoc for generated accessors - generate native JNI compound and string accessor on demand - encapsule accessor code generation in their own methods - enhance exception messages - enhance type verbosity in debug mode - verbose debug output via GlueGen.debug() Tests: - Features covered by test1.[ch] and Test1p1JavaEmitter and Test1p2ProcAddressEmitter - Validated compilation and unit tests for modules: - joal - jogl (minor config changes req.) - jocl (minor config changes req.) commit 6cb643671578aa912d16dd17e773d92f4667118b Author: Sven Gothel Date: Thu Jun 19 06:12:10 2014 +0200 GlueGen: Add support for compound-array in structs (accessors) ; Allow using C-Enum values for array length - Parser (HeaderParser.g): Support using C-Enum values for array length specification - Will throw an exception if enum identifier is unknown or exceeds int-size - Add StructEmitter supports for compound-arrays - Add Debug stderr verbose info: - Struct Emitter prefix 'SE.' - to analyze emitting struct fields (offset+size and accessors) - Struct Layout prefix 'SL.' - to analyze memory layout (based on MachineDescription.StaticConfig.X86_64_UNIX) Tested via test1.[ch] BaseClass .. commit 0b0f6f4d17f1ace3d3856428194126b4e3f06df0 Author: Sven Gothel Date: Wed Jun 18 20:18:18 2014 +0200 Bump cpptasks.jar to commit 9a66c005a3cd304c4b47abd9a287a60e3545b9da commit 2f6586292cd298bbc19d8acda0f7cf303c82078b Author: Sven Gothel Date: Wed Jun 18 03:46:38 2014 +0200 GlueGen: Refine compound [array] call-by-value native code injection and initialization Follow-up of commit 1eadaf928f4f61aae4de1c8bf33c5b77bdfa882f - Refine MethodBinding detection for 'requiresStaticInitialization', i.e. return type is a "compound type" and not a pointer - JVMUtil_NewDirectByteBufferCopy: Throw FatalError if initializeImpl() has not been called commit 1eadaf928f4f61aae4de1c8bf33c5b77bdfa882f Author: Sven Gothel Date: Wed Jun 18 01:49:08 2014 +0200 GlueGen: Refine compound [array] call-by-value native code injection and initialization Follow-up of commit 9843e983a4fc71a64eb3de9cb364a1f4ffa56b3a Only add static initialization code (java, native) and hence native code 'JVMUtil_NewDirectByteBufferCopy(..)' if either required _or_ forced via configuration. This shall reduce possible sideffects and dead code. Add JavaConfiguration: /** * Returns true if the static initialization java code calling initializeImpl() * for the given class will be manually implemented by the end user * as requested via configuration directive ManualStaticInitCall 'class-name'. */ public boolean manualStaticInitCall(String clazzName); /** * Returns true if the static initialization java code implementing initializeImpl() * and the native code implementing: *
     *   static jobject JVMUtil_NewDirectByteBufferCopy(JNIEnv *env, void * source_address, jlong capacity);
     * 
* for the given class will be included in the generated code, always, * as requested via configuration directive ForceStaticInitCode 'class-name'. *

* If case above code has been generated, static class initialization is generated * to call initializeImpl(), see {@link #manualStaticInitCall(String)}. *

*/ public boolean forceStaticInitCode(String clazzName); commit 9843e983a4fc71a64eb3de9cb364a1f4ffa56b3a Author: Sven Gothel Date: Tue Jun 17 23:05:42 2014 +0200 Fix commit f4e753ff1f39be381307ffdb0fb6bb7a2d323eff: 'compound array call-by-value' JavaMethodBindingEmitter, array may still require NIO handling, also consider NIO array length. commit f4e753ff1f39be381307ffdb0fb6bb7a2d323eff Author: Sven Gothel Date: Tue Jun 17 08:26:36 2014 +0200 GlueGen: Add support for 'compound array call-by-value' Completing commit c3054a01990e55ab35756ea23ab7d7c05f24dd37 by allowing passing compound arrays via 'call-by-value. - Creating linear temp heap, copying NIO values into it and passing to C function. Copy-back if not 'const', see below. - Respect 'const' qualifier to skip write-back of temp heap passed to C function - See tag: // FIXME: Compound and Compound-Arrays for code changes and validation of completeness - triggers for compound arrays are: - javaType.isArrayOfCompoundTypeWrappers() - type.isArray() - simplified const query by c-type: FunctionEmitter.isBaseTypeConst(ctype) +++ Tests: Added call-by-value to test1.[ch] binding test! commit a75276408c9bcff77f568cf72b6c71e421a07552 Author: Sven Gothel Date: Tue Jun 17 03:20:28 2014 +0200 TestVersionSemantics: No more expecting BACKWARD_COMPATIBLE* (Due to bumping to 2.2.0) commit 1ee6e77f731b1254792ecd23c8f4b6a8affc6375 Author: Sven Gothel Date: Tue Jun 17 03:19:54 2014 +0200 complete commit 33eb9484c4675423431521f2271e3e9d8d38f3b2 commit 33eb9484c4675423431521f2271e3e9d8d38f3b2 Author: Sven Gothel Date: Tue Jun 17 03:19:29 2014 +0200 gluegen: move all antlr grammars to a top-level directory (refine commit e8bc9edd3c39170af038ab23b8cdca9ffd6f2d56): src/antlr (IMHO no need for 'main') /src/main/antlr/ -> /src/antlr/ commit c3054a01990e55ab35756ea23ab7d7c05f24dd37 Author: Sven Gothel Date: Tue Jun 17 01:35:28 2014 +0200 GlueGen: Add support for 'compound call-by-value', i.e. passing and returning struct instance 'compound call-by-value' is not efficient. However, to allow mapping APIs utilizing passing small structs as arguments and return values - this feature has been added. +++ To return the struct value, native code needs to allocate a NIO ByteBuffer and copy the data. The stack return value can be dismissed afterwards and the NIO buffer is returned. We include this functionality for all generated [impl] classes, native method: 'static jobject JVMUtil_NewDirectByteBufferCopy(JNIEnv *env, void * source_address, jlong capacity)' (See: 'JavaEmitter.initClassAccessCode') Since this code requires knowledge of java classes and methods, for which a reference needs to be acquired, a static initialization method has been introduced for all generated [impl] classes: 'private static native boolean initializeImpl();' Per default the this method will be called in the new static initializer block of the class, which can be supressed via the configuration element: 'ManualStaticInit ' 'ManualStaticInit' can be used to issue the 'initializeImpl()' call in a custom static initializer written by the user. However, at the time 'initializeImpl()' gets called the JNI native library must have been loaded, of course! +++ - See tag: // FIXME: Compound call-by-value for code changes and validation of completeness Trigger for compond call-by-value in CMethodBindingEmitter is: !cArgType.isPointer() && javaArgType.isCompoundTypeWrapper() Trigger for compond call-by-value in JavaEmitter is: t.isCompound() +++ Further more we do tolerate 'javaType.isCPrimitivePointerType()', i.e. adding comments for offset/size and field entries, which are all NOP. This allows to utilize the remaining fields of the native structure. +++ Tests: Added call-by-value to test1.[ch] binding test! commit 9d857ea3575ee263801741a95711d9214c156276 Author: Sven Gothel Date: Tue Jun 17 01:16:51 2014 +0200 ReflectionUtil.getConstructor: Add 'initializeClazz' argument, allowing to defer static class initialization commit 56a22f2937c334320637557ef6cd9b38c4b03022 Author: Sven Gothel Date: Tue Jun 17 01:15:13 2014 +0200 Minor edits: space, final qualifier; setenv-build-*: Add generic JDK location commit d3e2cd6432b3383d4589350d60170e02db469343 Author: Sven Gothel Date: Mon Jun 16 01:16:46 2014 +0200 JavaEmitter.typeToJavaType: Simplify if-else block ; JavaType.getDumpString(): Add more info .. commit 65cbb89d04936df2f385d32d1649abaa4da4581c Author: Sven Gothel Date: Wed Jun 11 00:26:31 2014 +0200 OSX Build: Default gcc.compat.compiler=xcode.clang ; Remove explicit xcode.clang property files commit addb639e6dde90519f772a66222eb86107b35176 Author: Sven Gothel Date: Tue Jun 10 19:28:51 2014 +0200 Fix glibc-compat-symbols.h: Distinguish clang and gcc (Aligned w/ openal-soft commit adc3413dda197bbd6b879ff98e897b8fbc66cc39) commit 5d802fb8dd4004039d4597253712d24fffb90a36 Author: Harvey Harrison Date: Sat May 31 15:08:41 2014 -0700 gluegen: update HeaderParser grammar to annotation EnumType map and functions list Signed-off-by: Harvey Harrison commit d6a5fa9169cc3f7abdb7a23068ddd76f632eec26 Author: Harvey Harrison Date: Sat May 31 15:08:25 2014 -0700 gluegen: remove some unused imports Signed-off-by: Harvey Harrison commit 38e34f378a97f3653ad160e49677a005b6f7a32f Author: Harvey Harrison Date: Sat May 31 14:46:01 2014 -0700 gluegen: update the target names for generating java code Also move the antlr-wrapping targets to be near the one place they are used. Signed-off-by: Harvey Harrison commit 0e54f57338e888e9835069776de32dcb47c54a17 Author: Harvey Harrison Date: Sat May 31 13:59:05 2014 -0700 gluegen: pair the grammer input folder with an out.dir value Signed-off-by: Harvey Harrison commit e8bc9edd3c39170af038ab23b8cdca9ffd6f2d56 Author: Harvey Harrison Date: Sat May 31 13:39:08 2014 -0700 gluegen: move all antlr grammars to a top-level directory /src/main/antlr/.. This gets the .g files unmixed from the non-generated java files for the cgram/jgram packages. Signed-off-by: Harvey Harrison commit b8d85c035bbd2d6fa8a37f957bcf80acab18015e Author: Harvey Harrison Date: Sun May 18 10:15:20 2014 -0700 gluegen: update antlr grammer to produce annotated enum and functionName sets The annotations are all commented out, uncomment them and reduce the type warnings during the build. Signed-off-by: Harvey Harrison commit 5a9bee7ad9085cfd71053041aff3cabce2325f22 Author: Harvey Harrison Date: Sun May 18 10:03:43 2014 -0700 gluegen: remove an unreferenced writer variable Signed-off-by: Harvey Harrison commit 775ec79d5d719c1eba9c4687ae066f6b82696e4f Author: Harvey Harrison Date: Sun May 18 10:01:56 2014 -0700 gluegen: avoid a suppressed warning annotation by using the ArrayList copy constructor clone() can't be used without warnigns and is no more efficient that the copy constructor, replace the call and kill the suppressed warning annotation. While here, mark the modifier list as private final. Signed-off-by: Harvey Harrison commit 274dbc38e4b671579a07cce8bf7ecab6520e22d6 Author: Harvey Harrison Date: Sat May 17 08:33:54 2014 -0700 gluegen: avoid appending Strings in a loop, pull out a Stringbuilder we can reuse Reuse a single stringbuilder to build all the comment strings and emit them if required. Signed-off-by: Harvey Harrison commit 0f9fb62d90c27312dfd6e98acbf78a2f70061d1a Author: Harvey Harrison Date: Sat May 17 08:24:01 2014 -0700 gluegen: use parseInt, parseLong to avoid boxing unboxing an Integer/Long Signed-off-by: Harvey Harrison commit 6b0554b658d656aa2fb7d3696dd2f75ca25304d3 Author: Sven Gothel Date: Wed May 14 01:07:50 2014 +0200 Bump semver to 9ec2e5329780214d317b026f7c0b086972a94a5c - Using Dumper.dumpFullStats(..) commit 761667cd9bdf325431bb083d1e3178ff7b681309 Author: Sven Gothel Date: Wed May 14 00:21:08 2014 +0200 VersionSemanticsUtil: Produce diff stat per-class w/ diff-type-count and dump diffs per diff-type commit 044a71481b42eef02e296c92394cbdac756dede6 Author: Sven Gothel Date: Wed May 14 00:20:16 2014 +0200 Bump semver 174953022b62681653db1f57b087581e29313f5b commit 0d085ac230506222d6ae2c3aacd1bbc624554a88 Author: Sven Gothel Date: Tue May 13 23:20:35 2014 +0200 Bump semver.jar to new rebased c4930f9d23ae7515434942836f628f767411876c (0.9.25-SNAPSHOT) commit 1a504fa682e6f28c5543da4d5885c7f2ff4ed3f1 Author: Sven Gothel Date: Tue May 13 16:33:16 2014 +0200 Bump semver.jar to 731db3566b4096ecf6a08a9d33991400e66c5021 (sgothel/jogamp branch): Using direct regexp for excludes commit 64615f17a8c63f692159235e169dbdd14d30b737 Author: Sven Gothel Date: Tue May 13 13:06:19 2014 +0200 Unit Test: Modularize Semantic Version Test / Fix 'excludes' Refactor base semjar unit test class into com.jogamp.junit.util.VersionSemanticsUtil, part of new gluegen-test-util.jar. The new gluegen-test-util.jar shall be used by all other modules to test versioning. commit c06288d2a12586ab8df3715cf130549fdd7499fb Author: Sven Gothel Date: Tue May 13 09:16:32 2014 +0200 Unit Test: Added Semantic Version Test (Current version agains v2.1.5) TestVersionSemantics adds testing of semantic versioning of 2.1.5 gluegen-rt.jar against the current version within a unit test. Currently we expect BACKWARD_COMPATIBLE_USER and need to toggle this to NON_BACKWARD_COMPATIBLE, if actually perfoming non compatible major or minor version changes. The latter is allowed right now, since we increment from 2.1 -> 2.2! - Added https://github.com/jeluard/semantic-versioning semver.jar (Apache License Version 2.0) commit f39100b35d0833764f2220e487ea7ea05ed87352 Author: Sven Gothel Date: Sun May 11 23:36:48 2014 +0200 RunnableTask: Add static method 'invokeOnNewThread(..)' for convenience (Used in JOGL to mitigate Bug 1004) commit d2b21db6b0a6c7cb7dc12dbaa32ff47c579273bc Author: Sven Gothel Date: Sun May 11 03:04:19 2014 +0200 Eclipse .classpath: Add 'src' 'test/junit' commit 1e53a38eb06aa8ff50660fdf7bd8570b27f27c56 Author: Sven Gothel Date: Sun May 11 03:03:36 2014 +0200 Bug 923: Remove dependency of CStruct annotation processor _generation_ and generated_class_user due to Java8 issues. Java8's annotation processor as embedded within javac does not allow referencing not-yet existing generated classes in a class source code which will produce these generated classes via the annotation process. Example: +++ import com.jogamp.gluegen.structgen.CStruct; public class Lala { @CStruct(name="RenderingConfig", header="TestStruct01.h") public RenderingConfig config; } +++ Above example illustrates that the type 'RenderingConfig' does not exist at time of processing the annotation. The type will be created via the annotation process itself. Even though we pass '-proc:only', i.e. skip java compilation, Java8's annotation processing via javac fails in such case. We see this as a bug within javac's annotation processing itself! +++ This workaround splits the annotation process and using the class as generated by the former. To allow this to work, CStruct receives a new field 'jname' allowing to enforce the java-name of the structure using a dummy field type like boolean. @CStruct(name="RenderingConfig", jname="RenderingConfig", header="TestStruct01.h") public boolean dummy; Further more CStruct can be annotated on the package, i.e. 'package-info.java', avoiding the dependency problem altogether. To support multiple header files and types, 'CStructs' has been introduced using an array of 'CStruct'. @CStructs({@CStruct(name="RenderingConfig", header="TestStruct01.h"), @CStruct(name="Pixel", header="TestStruct02.h")}) package com.jogamp.gluegen.test.junit.structgen; Tests: - Build w/ Java7 and Java8 - Validated 'major version 50' (Java 6) class files (OK) commit 598da96b3d2ffc3e0915f73749cbafa5fa5cea90 Author: Sven Gothel Date: Fri May 9 23:31:08 2014 +0200 unit test: preserve hs_err_pid*.log files (move to results folder for archive) commit 3ebfe26810ca1bebde58ca70b083cd48e9b335bb Author: Sven Gothel Date: Fri May 9 09:43:53 2014 +0200 UnixDynamicLinkerImpl_JNI.c: Add (inactive) dlopen debug code (helper to analyze llvm-vmkit libGL loading issue) commit 6c04000e9921dfe27f0b1eb02c853b71fef2d1a9 Author: Sven Gothel Date: Fri May 9 09:42:55 2014 +0200 PosixDynamicLinkerImpl: cleanup uncommented enums's intendation commit db5bdd94d004038146a0f9f09caf2e0f1866d67a Author: Sven Gothel Date: Fri May 9 09:41:57 2014 +0200 build/test: Add ant-junit4.jar to classpath; Add experimental gluegen-rt-alt recipe (inactive); Misc .. commit 075471df41497e07891ad3e3944ee8e8e754199a Author: Harvey Harrison Date: Fri Apr 11 10:37:11 2014 -0700 gluegen: avoid bugs with sign-extension in readUInt16 Signed-off-by: Harvey Harrison commit 1fd1258aa4f12aea2c2d6aa445cb881fdbd84418 Author: Sven Gothel Date: Tue Mar 11 07:10:36 2014 +0100 Bump to 2.2-rc