summaryrefslogtreecommitdiffstats
path: root/make/build-test.xml
Commit message (Collapse)AuthorAgeFilesLines
* Bug 752: Review Code Vulnerabilities (Permission Checks of new exposed code ↵Sven Gothel2013-06-111-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | and privileged access) This review focuses on how we perform permission checks, or better - do we circumvent some assuming full privileges ? Some native methods do need extra permission validation, i.e. loading native libraries. Further more AccessController.doPrivileged(..) shall not cover generic code exposing a critical feature to the user. Further more .. we should rely on the SecuritManager, i.e. AccessControlContext's 'checkPermission(Permission)' code to comply w/ fine grained permission access. It is also possible to have full permission w/o having any certificates (-> policy file). +++ We remove implicit AccessController.doPrivileged(..) from within our trusted code for generic methods, like Property access, temp. files. +++ SecurityUtil: - Remove 'getCommonAccessControlContext(Class<?> clz)', which returned a local AccessControlContext for later restriction if the passed class contains all certificates as the 'trusted' GlueGen class has. - Simply expose convenient permission check methods relying on SecurityManager / AccessControlContext. PropertyAccess: - 'protected static void addTrustedPrefix(..)' requires AllPermissions if SecurityManager is installed. - Remove implicit doPrivileged(..) triggered by passed AccessControlContext instance, only leave it for trusted prefixes. IOUtil: - Remove all doPrivileged(..) - Elevation shall be performed by caller. DynamicLinker: - 'public long openLibraryLocal(..)' and 'public long openLibraryGlobal(..)' may throw SecurityException, if a SecurityManager is installed and the dyn. link permission is not granted in the calling code. Implemented in their respective Unix, OSX and Windows manifestation. Caller has to elevate privileges via 'doPrivileged(..) {}' ! +++ Tests: - Property access - File access - Native library loading Manual Applet test (unsigned, but w/ SecurityManager and policy file): > gluegen/test/applet Applet has been tested w/ signed JAR w/ Firefox and Java7 on GNU/Linux as well. Manual Application test (unsigned, but w/ SecurityManager and policy file): com.jogamp.junit.sec.TestSecIOUtil01 - Run w/ SecurityManager and policy file: - gluegen/scripts/runtest-secmgr.sh - Run w/o SecurityManager: - gluegen/scripts/runtest.sh
* Align integer version property name .. jogamp_int_version -> jogamp.version.intSven Gothel2013-03-281-1/+1
|
* Bug 588: Adding jogamp.version property, i.e. 2.0.2-rc-<TIMESTAMP> used for ↵Sven Gothel2013-03-281-2/+2
| | | | | | | | | | | | Manifest ; Common jogamp_int_version for Android. Until 2.0.2 gets released, the version string is 2.0.2-rc-<TIMESTAMP> and used in the Manifest for IMPLEMENTATION_VERSION. The previous build version name of IMPLEMENTATION_VERSION goes into the new tag IMPLEMENTATION_BUILD. Further more, we use a common jogamp_int_version for Android, to make life more easy.
* Unit Tests: OSX/Java7 w/o 32bit tests ; Reliable Test1p*JavaEmitter JNI ↵Sven Gothel2013-02-281-3/+4
| | | | | | | | | | | | | | binding initialization - OSX/Java7 w/o 32bit tests OSX/Java7 has no 32bit JVM, disable d32 tests for such, using property 'use.macosx32' - Reliable Test1p*JavaEmitter JNI binding initialization Load libs and init JNI binding statically w/ @BeforeClass, since OSX/Java7 for some reason gets confused (?) w/ init sequence. This is no issue for JOGL etc .. as far we have observed.
* GlueGen: NativeLibrary Fix, JNILibLoaderBase EnhancementSven Gothel2013-01-301-2/+2
| | | | | | | | | | | | | | | | | | | - NativeLibrary Fix - enumerateLibraryPaths(..): - Properly iterate through all prefix _and_ suffix. - Make public for JNILibLoaderBase.loadLibraryInternal(..) - isValidNativeLibraryName(..): - Stop iterating through prefix, if previously found but suffix doesn't match. - JNILibLoaderBase.loadLibraryInternal(..) Enhancement - Mark customLibLoader FIXME: remove (we will get rid of jnlp.launcher.class) - If System.load(TempJarCache) and System.loadLibrary(plainLibName) fails, use NativeLibrary.enumerateLibraryPaths() w/ System.load(..) as last resort. Tested on Linux x86_64 Java6 and OSX Java7 manually, no regressions expected.
* Change/Lower ARM Requierements for GNU/Linux & Android-GNU/Linux ARM: ↵Sven Gothel2012-08-161-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ARMv7hf -> ARMv6hf, ARMv7-soft -> ARMv5te/ARMV6 (soft) platform build config files: lib/gluegen-cpptasks-linux-armv7.xml -> lib/gluegen-cpptasks-linux-armv6.xml lib/gluegen-cpptasks-linux-armv7hf.xml -> lib/gluegen-cpptasks-linux-armv6hf.xml properties: isLinuxARMv7 -> isLinuxARMv6 isLinuxARMv7Armel -> isLinuxARMv6Armel isLinuxARMv7Armhf -> isLinuxARMv6Armhf isAndroidARMv7 -> isAndroidARMv6 isAndroidARMv7Armel -> isAndroidARMv6Armel isAndroidARMv7Armhf -> isAndroidARMv6Armhf targets: compiler.cfg.linux.armv7 -> compiler.cfg.linux.armv6 linker.cfg.linux.armv7 -> linker.cfg.linux.armv6 compiler.cfg.linux.armv6: <compilerarg value="-fpic" /> <compilerarg value="-march=armv5te" /> <compilerarg value="-marm" /> <compilerarg value="-mfloat-abi=softfp" /> <linkerarg value="-fpic" /> <linkerarg value="-march=armv5te" /> <linkerarg value="-marm" /> <linkerarg value="-mfloat-abi=softfp" /> <linkerarg value="-nostdlib" /> <linkerarg value="-Bdynamic" /> compiler.cfg.linux.armv6hf: <compilerarg value="-fpic" /> <compilerarg value="-march=armv6" /> <compilerarg value="-marm" /> <compilerarg value="-mfloat-abi=hard" /> <linkerarg value="-fpic" /> <linkerarg value="-march=armv6" /> <linkerarg value="-marm" /> <linkerarg value="-mfloat-abi=hard" /> <linkerarg value="-nostdlib" /> <linkerarg value="-Bdynamic" /> gluegen-cpptasks-android-armv6.xml: <compilerarg value="-fpic" /> <compilerarg value="-march=armv6" /> <compilerarg value="-mfloat-abi=softfp" /> <compilerarg value="-marm" /> <linkerarg value="-march=armv6" /> <linkerarg value="-mfloat-abi=softfp" /> <linkerarg value="-marm" /> <linkerarg value="-nostdlib" /> <linkerarg value="-Bdynamic" />
* Implement Bug #598 - JOGL ALL JAR File Change incl. it's Native Jar URL ↵Sven Gothel2012-06-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Derivation +++ JNILibLoaderBase.addNativeJarLibs(..): Add API doc JNILibLoaderBase: "addNativeJarLibs(Class<?> classFromJavaJar, String allNativeJarBaseName, String[] atomicNativeJarBaseNames)" -> "addNativeJarLibs(Class<?>[] classesFromJavaJars, String singleJarMarker, String[] stripBasenameSuffixes)" Derive the 'all' (1st choice) native JAR URL solely on the given class's JAR URL. Examples: JOCL: // only: jocl.jar -> jocl-natives-'os.and.arch'.jar addNativeJarLibs(new Class<?>[] { JOCLJNILibLoader.class }, null, null ); JOGL: final ClassLoader cl = GLProfile.class.getClassLoader(); // either: [jogl-all.jar, jogl-all-noawt.jar, jogl-all-mobile.jar] -> jogl-all-natives-<os.and.arch>.jar // or: nativewindow-core.jar -> nativewindow-natives-<os.and.arch>.jar, // jogl-core.jar -> jogl-natives-<os.and.arch>.jar, // (newt-core.jar -> newt-natives-<os.and.arch>.jar)? (if available) final String newtFactoryClassName = "com.jogamp.newt.NewtFactory"; final Class<?>[] classesFromJavaJars = new Class<?>[] { NWJNILibLoader.class, GLProfile.class, null }; if( ReflectionUtil.isClassAvailable(newtFactoryClassName, cl) ) { classesFromJavaJars[2] = ReflectionUtil.getClass(newtFactoryClassName, false, cl); } JNILibLoaderBase.addNativeJarLibs(classesFromJavaJars, "-all", new String[] { "-noawt", "-mobile", "-core" } ); Efficiency / Performance: - Reduced JAR URL lookup calls JarUtil.getJarURL(..) - JNILibLoaderBase, Platform, JarUtil - Attempt loading Jar files (native, class, ..) only once - TempJarCache Code Cleanup (IOUtil, JarUtil, : - IOException if not found - IllegalArgumentException if null argument +++ jogamp.android-launcher.jar -> jogamp-android-launcher.jar +++
* Fix Android Remote Test: gluegen-rt.apk -> gluegen-rt-android-${android.abi}.apkSven Gothel2012-06-151-1/+1
|
* Fix Bug 583 (2): Remove Android compile-time dependencies and exclude ↵Sven Gothel2012-06-151-1/+1
| | | | | | | | | | | | | | Android specific classes for non Android platforms Ensure same Java JAR content regardless of build target (fix). Separate Android compilation results to gluegen-rt-android.jar, avoiding generating different content of gluegen-rt.jar w/ non android builds. aapt.signed: @{android.abi} argument is 'generic' by default. Adding ${android.abi} to APK target name (gluegen-rt-android-armeabi-v7a.apk) if not generic.
* Dump Local Info on build machine during junit.compileSven Gothel2012-03-281-1/+7
|
* Add 'asset' URLConnection; IOUtil uses URLConnection / incr. effeciency; ↵Sven Gothel2012-03-171-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Android ClassLoaderUtil cleanup; - Add 'asset' URLConnection - Please read API doc 'PiggybackURLConnection' and 'AssetURLConnection' - Solves generic resource handling where platform locations may differ, ie ClassLoader lookup on Android in the 'assets/' subfolder. - New Android 'AssetDexClassLoader' uses 'assets/' folder for findResource(..) - aapt.signed (our APK ant task) - uses 'assets/' folder - adds the 'assetsdir' attribute allowing to copy other assets into the APK - IOUtil uses URLConnection / incr. effeciency - using URLConnection on all getResource(..) since URL is connected anyways for validation and URLConnection can be used by caller right away - String getRelativeOf(URL, String) -> URL getRelativeOf(URL, String) - preserves scheme, authority, etc - simple parentOf handling, more efficient - reusing new 'asset' protocol impl. - Android ClassLoaderUtil cleanup; - Use createClassLoader(..) impl for build-in static jogamp and user APKs, which removes code redundancy Tests: New code path, especially 'assets' are covered by new unit tests, no regressions on Linux.
* Android: New ActivityLauncher (jogamp.android-launcher.apk)Sven Gothel2012-03-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ActivityLauncher provides delegating Activities, allowing the user to: - daisy chain custom APK classes and native libraries to the classpath - name one custom activity which gets delegated to, the downstream activity Overview: [User:a1] -- (usr-data) --> [Launcher] -> [User:a2] + using [other packages..] [User APK] - The user provided APK [JogAmp APK] - JogAmp APKs [User:a1] - The initial user activity, which starts the [Launcher]. Providing data to [Launcher]: [User:a2], [User APK] Resides in [User APK] [User:a2] - The actual downstream 'real' activity, spoiled w/ full fledged ClassLoader having access to all packages as requested, ie. [User APK], .. Resides in [User APK] [Launcher] - The launcher activity. Gets called by [User:a1]. Creates a new ClassLoader, daisy chainging all requested APKs. Instantiates [User:a2] w/ new ClassLoader. Delegates all calls to [User:a2]. Resides in [JogAmp APK].
* android remote adb test fixes: (1) Add connect; (2) Remove overriding ↵Sven Gothel2012-03-101-1/+3
| | | | | | | | | | explicit BOOTCLASSPATH, use default. (2) Android 4.0.3 LEB 12.02 / Pandaboard requires the original BOOTCLASSPATH, otherwise dependencies are broken and dalvikvm crashes. Adding 'our' ant-junit-all.apk to 'complete' the set of our required junit/ant classes seems to work well on V. 2.3.6 (Samsung Galaxy S) and V. 4.0.3.
* Don't build and use gluegen.apk (compile time only) ; Don't test classloader ↵Sven Gothel2012-03-071-1/+1
| | | | | | -> JarURL on Android All [remaining] tests passed on Android!
* android test: Specify 'java.io.tempdir' and add TestJarsInJar.apk / Disable ↵Sven Gothel2012-03-071-1/+3
| | | | most of tests in TestJarUtil
* android build/test fixes and refinementSven Gothel2012-03-071-4/+18
| | | | | | | | | | | | | | | | | | | | | remote test fix: - run targetcommand w/ explicit root via 'su' - rsync: more excludes, only use '-rt' - explicit chmod 644 on results - adb commands include naming of remote machine: -s ${env.TARGET_IP}:${env.TARGET_ADB_PORT} GlueGen-cpptasks-android-armv7: - use unique project name (warning) - gcc + -fpic -D__unix__ - ld + -fpic -nostdlib -Bdynamic -Wl,-dynamic-linker,/system/bin/linker -Wl,-z,nocopyreloc explicit add 'dl' to list of libs
* Changes to make gluegen build with NDK r7Edwin Vane2012-02-281-1/+3
| | | | | | | | | | | | | | | | | | | | - A bug in cpptasks was getting in the way of a working build with NDK r7. A local patch to cpptasks fixed the bug. - The patch is added as make/lib/cpptasks_gcclinker.patch and applies cleanly to cpptasts @ revision 177. - The result of building cpptasks r177 with this patch is part of the commit as well. - Cleaned up and simplified the android cross-compile script in make/scripts. - Cleaned up arguments passed to gcc for compiling and linking to look more like the command lines used for building NDK samples. - Some differences are necessary as cpptasks won't let us specify any binary other than 'gcc' for building. See gluegen-cpptasks-android-armv7.xml for comments on the matter. - Thinking forward to x86 support, generalized jogamp-androidtasks.xml to install the gluegen shared library in a subdirectory of image/lib named for the targetted ABI for packaging with aapt. This file is no-longer ARM-specific.
* If junit.is.disabled, copy a dummy TEST xml file, otherwisa Jenkins claims ↵Sven Gothel2012-02-241-1/+4
| | | | failure.
* Even if 'junit.is.disabled', we need to produce the test archive (7z), ↵Sven Gothel2012-02-241-1/+4
| | | | otherwise the jenkins build fails.
* Introduce environment-var/property to disable unit tests (per node)Sven Gothel2012-02-241-4/+5
| | | | JUNIT_DISABLED -> junit.is.disabled
* minor: verbose outputSven Gothel2012-02-241-2/+2
|
* Add gluegen.basename property, allowing to pass the JOB_NAME to the find ↵Sven Gothel2012-02-241-9/+15
| | | | location
* Add required NODE_LABEL, ie label/linux-armv7-img, allowing to find the ↵Sven Gothel2012-02-241-7/+7
| | | | proper path for jenkins builds
* fix targetcommand.sh name on targetSven Gothel2012-02-241-4/+4
|
* Exposing custom gluegen-cpptask.file for crosscompilation presets, adding ↵Sven Gothel2012-02-241-4/+4
| | | | | | gluegen-cpptasks-linux-armv7.xml Env: GLUEGEN_CPPTASKS_FILE -> property: gluegen-cpptasks.file
* Passing environment-vars and ant-properties to junit tests, enabling fine ↵Sven Gothel2012-02-231-1/+6
| | | | | | | | | | | grained controll of test behavior. Environment vars, mapped to properties: JUNIT_RUN_ARG0 -> junit.run.arg0 JUNIT_RUN_ARG1 -> junit.run.arg1 This allows us to disable ScreenMode on Linux-ARM-Omap4 for example, where XRandR calls consume up to 3s per test.
* Fix crosstests (TestJarUtil and PCPP)Sven Gothel2012-02-191-2/+2
|
* Fix linux-armv7 crosscompilationSven Gothel2012-02-191-1/+0
|
* javac - setup encoding to UTF-8Sven Gothel2012-01-231-0/+1
|
* Fix Bug 516 (Determine Java Version); Minor fixes (jogamp/common/** ..)Sven Gothel2012-01-221-9/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Current minimum requirements are: - Java 1.6 (Level 6.0) - Android SDK API Level 9 (Version 2.3 Gingerbread) Official production builds are performed w/ Java 1.6. - Java 1.6 (Level 6.0) - Android SDK API Level 9 (Version 2.3 Gingerbread) Android supports Java language level 6.0. Nevertheless, it cannot be guaranteed whether the Android API supports all classes and methods of Java 1.6. It is required for JogAmp developers to validate Android compatibility by an Android crosscompilation build. Current GlueGen code utilizes some minor Java 1.6 features which could be replaced, however it's not desired at this point since we have no mode hard Java 1.5 constraints. Notes: - On OS X 10.5.8, only the 64bit version of Java6 is available and hence the only supported one on Leopard. +++ Pushing determination of host (compiletime) and target (runtime) Java version to 'jogamp-env.xml'. jogamp-env.xml uses: env: SOURCE_LEVEL -> propery: target.sourcelevel def.: ${ant.java.version} >=1.6 (!) env: TARGET_LEVEL -> propery: target.targetlevel def.: ${ant.java.version} >=1.6 (!) env: TARGET_RT_JAR -> propery: target.rt.jar def.: ${java.home}/lib/rt.jar Either all above values are set, or none at all (default), otherwise a build error is being thrown. Further more we have the compiletime properties: host.sourcelevel def.: ${ant.java.version} >= 1.6 (!) host.targetlevel def.: ${ant.java.version} >= 1.6 (!) host.rt.jar def.: ${java.home}/lib/rt.jar +++ - 'javac.memorymax' defaults to 1024m now.
* junit.run: Add 32bit tests for OSX (fat binaries)v2.0-rc5Sven Gothel2011-12-181-4/+24
|
* Add 'TestJarsInJar.jar' test JAR file for upcoming JarUtil tests (Jar in Jar).Sven Gothel2011-11-291-2/+4
|
* Generalize jvm-data-model-arg 'jvmDataModel.arg', set do -d64, -d32 or ↵Sven Gothel2011-10-181-6/+2
| | | | dummy-value properly
* Fix Solaris gcc args ; Adding JVM arch flags (-d32/-d64)Sven Gothel2011-10-181-0/+5
|
* crosstest rsync, drop src zipSven Gothel2011-08-051-2/+2
|
* crosstest: exclude .git as wellSven Gothel2011-08-051-2/+2
|
* crosstest: add rsync excludesSven Gothel2011-08-051-2/+8
|
* aapt.signed: add androidresources.path argument ; sdk >= 9 ; test ↵Sven Gothel2011-08-051-0/+1
| | | | uses-library com.jogamp.common
* Android: Drop android.jar ; Simplify 'aapt.signed' ; Move our android ↵Sven Gothel2011-08-021-1/+1
| | | | | | | | | | | | | | | | resources -> make/resources Drop android.jar - version 8 and 9 - license: apache v2 (NOTICE.txt included) - allows compilation using Android API on all platforms Simplify 'aapt.signed' - removed 'jarclasspathrefid', seems to be not needed (commented out) Move our android resources make/lib/android -> make/resources/android - make/lib is for 3rd party stuff only
* Fix Android apk activity; Add apk VersionName; Add jar manifest to apkSven Gothel2011-07-281-1/+1
| | | | | | | | | | | | | | | | - build: - exclude android packages if !isAndroid - aapt: - Use individual AndroidManifest xml files - optional: incl. our JAR manifest file to support detailed version info - use def. GluegenVersionActivity - APK VersionName: Retrieve and show - package/extension names: - gluegen.jar/apk: com.jogamp.gluegen - gluegen-rt.jar/apk: com.jogamp.common
* Fix android build/unit-test ; Generalize aapt packaging (macro) ; Use jogamp ↵Sven Gothel2011-07-281-6/+9
| | | | | | | | | | | | | | | | icons make/scripts/make.gluegen.all.android-armv7-cross.sh - make Rami and me happy :) - 3 default locations plus recognize user provided android toolkit path - fixes using ant targets as arguments make/jogamp-androidtasks.xml - macro aapt.signed: create signed apk file from jar - incl. adding native libraries - see macro doc. adding generic jogamp icons/images
* Cross JUnit Tests - All Passed: Android+Linux armv7Sven Gothel2011-07-251-79/+74
| | | | | | | | | | | - junit.cross targets: - use scripting to save time, ie write all target commands to script, xfer, exec - junit: delete result folder just before junit.run - Test BuildEnvironment.java: Simplify path config via properties (for android) - AndroidVersion: No annoying exception dump if Build$VERSION* is not found (not android) - launch scripts: use absolute TARGET_ROOT path for dynamic linker env.
* Complete android apk creation and cont. unit test launch. Need to write unit ↵Sven Gothel2011-07-241-32/+24
| | | | test commands to file - too long for single adb shell command
* Android integration / cross-test ; Enhance PlatformSven Gothel2011-07-241-0/+59
| | | | | | | | | | | - android minor build fix - started dex'ing (gluegen-rt.apk, more to come for full junit tests) - android remote dalvikvm launch works (crosstest-java-android-armv7-rel.sh) - android detection, incl version (reflection) - Platform: - Add JAVA_VM_NAME and JAVA_VM_RUNIME - OSType maybe ANDROID, where the OS name (String) is Linux ! (ok ?)
* fix cross test: Test* -> *Test* ; Reduce iterations further for ARM to ↵Sven Gothel2011-07-231-1/+1
| | | | speedup test
* Enable cross-testing on linux-armv7Sven Gothel2011-07-231-4/+92
|
* GlueGen proper size / alignment of primitive and compound types usage [1/2] ↵Sven Gothel2011-07-171-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Preparation. Currently GlueGen fails for type long (size) and some alignments (see package.html). - The size and alignment values shall be queried at runtime. - Compound alignment needs to follow the described natural alignment (also @runtime). - - Build - add Linux Arm7 (EABI) - junit test - added compound/struct tests, pointing out the shortcomings of current impl. - package.html - Added alignment documentation - remove intptr.cfg - add GluGen types int8_t, int16_t, uint8_t, uint16_t - move MachineDescription* into runtime - Platform - has runtime MachineDescription - moved size, .. to MachineDescription - use enums for OSType, CPUArch and CPUType defined by os.name/os.arch, triggering exception if os/arch is not supported. This avoids Java String comparison and conscious os/arch detection. - MachineDescription: - compile time instances MachineDescription32Bits, MachineDescription64Bits - runtime queried instance MachineDescriptionRuntime - correct size, alignment, page size, ..
* test ant: using target.sourcelevel, host.sourcelevel, javacdebug and ↵Sven Gothel2011-04-201-2/+11
| | | | javacdebuglevel for compilation
* Fix archive.7z: unset property destfile.path. gluegen-archivetasks.xml -> ↵Sven Gothel2011-02-241-1/+1
| | | | jogamp-archivetasks.xml
* fix jogamp-env.xml ; uses env vars BUILD_ARCHIVE=true|yes and NODE_NAME if setSven Gothel2011-02-231-1/+2
|