Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

merging jdk12 branch (2.3.10-SNAPSHOT) into master #473

Merged
merged 80 commits into from
Apr 17, 2020
Merged

merging jdk12 branch (2.3.10-SNAPSHOT) into master #473

merged 80 commits into from
Apr 17, 2020

Conversation

dkimitsa
Copy link
Contributor

Request to merge JDK12 branch into master.
It is in wild few month already and there was no complains.
This branch delivers:

Source tree: migrating to jdk12

  • maven project structure reformated;
  • removed sonatype root parent pom;
  • improved dependency management (moved to root pom);
  • plugin versions/dependencies updated to recent where possible;
  • unit tests fixed to run on jdk9+/openjdk.

Bindings

Compiler changes (fixes and new tricks)

Idea plugin

Framework target

  • support for direct instantiation of Java object from objc world

…ogic of finding out if it was relative or not. also this breaks UT on java9+ as getAbsolute not checking `user.dir` on every call but picks it from static singleton.
…t absoluted to initial location and it is not sharing common part of wdPrefix. logic changed to differentiate absolute and relative paths
…or sun.boot.class.path anymore, switched to modified soot that has same support
…Trace()` using `assertArrayEquals` anymore as these are loaded by different ClassLoaders and StackTraceElement.equals also compares CL name
…ist, compiling without JDK bootclass but using RoboVM RT)
- oss-parent is not used anymore as it is not being maintained anymore and forces outdated plugins
- most of dependencies and plugins are declared in corresponding management section (all child poms shell not specify dependency/plugin version)
- reformatted to 4 char tab intend
… sources/javadocs, simplified pom, formatted to 4 wide intend
- migrated back to shade plugin instead of jarjar (to be tested, there were issue long time ago robovm/robovm#45)
- updated to compile without boot class
- reformatted
dkimitsa and others added 28 commits November 16, 2019 15:41
* * jetbrains intellij plugin for gradle version updated

* * intellij maven pom reworked into stand-alone. as mvn:version is not able to update parent version number

* * added sonatype repo for snapshot dependencies

* * eclipse plugin's maven.pom switched into standalone (without) as tyho plugin is not able update parent's version during release

* * release script reworked to properly pick up new idea artifact and update it gradle version

* * Idea: release script updated to use property to specify the dependencies. otherview version:commit failed to pick up non existing dependencies (for future version)
* * jetbrains intellij plugin for gradle version updated

* * intellij maven pom reworked into stand-alone. as mvn:version is not able to update parent version number

* * added sonatype repo for snapshot dependencies

* * eclipse plugin's maven.pom switched into standalone (without) as tyho plugin is not able update parent's version during release

* * release script reworked to properly pick up new idea artifact and update it gradle version

* * Idea: release script updated to use property to specify the dependencies. otherview version:commit failed to pick up non existing dependencies (for future version)

* * version set to 2.3.10-SNAPSHOT

* * java doc and source plugins are now always (was only for release) as these files are needed for snapshot builds

* * update commons-compress due to security vulnerability
* * jetbrains intellij plugin for gradle version updated

* * intellij maven pom reworked into stand-alone. as mvn:version is not able to update parent version number

* * added sonatype repo for snapshot dependencies

* * eclipse plugin's maven.pom switched into standalone (without) as tyho plugin is not able update parent's version during release

* * release script reworked to properly pick up new idea artifact and update it gradle version

* * Idea: release script updated to use property to specify the dependencies. otherview version:commit failed to pick up non existing dependencies (for future version)

* * version set to 2.3.10-SNAPSHOT

* * java doc and source plugins are now always (was only for release) as these files are needed for snapshot builds

* * update commons-compress due to security vulnerability

* * upgraded deprecated code, as Idea 2019.3 removed old classes

* * ignore gradle files that are created once build with gradle

* * reworked to @NotNull to minimize warnings

* * optimized imports
* Dialog().show() to setVisible() as outdated
* still keeping ApplicationComponent as need it to act as it is now (require some amount of rework)

* * added RoboFileUtils to handle false result of file api into exceptions
* using try with resource where applicable
* CompileTask is not added using extensions in plugin.xml

* * readme updated with detailed instructions

* * xcode setup dialog is not blocking now. as if something went wrong it was blocking idea completely

* * reworked to gracefully handle cases when there is no simulators in place (was crashing previously)

* * updated to recent org.jetbrains.intellij

* * added check for GraphicsEnvironment.isHeadless() as during plugin build using gradle it runs plugin as part of sanity and it will crash as it being run in Headless mode

* * source code polish: fixes all lint warning, applied suggestions (like anonymous classes to lambda)
* * jetbrains intellij plugin for gradle version updated

* * intellij maven pom reworked into stand-alone. as mvn:version is not able to update parent version number

* * added sonatype repo for snapshot dependencies

* * eclipse plugin's maven.pom switched into standalone (without) as tyho plugin is not able update parent's version during release

* * release script reworked to properly pick up new idea artifact and update it gradle version

* * Idea: release script updated to use property to specify the dependencies. otherview version:commit failed to pick up non existing dependencies (for future version)

* * version set to 2.3.10-SNAPSHOT

* * java doc and source plugins are now always (was only for release) as these files are needed for snapshot builds

* * update commons-compress due to security vulnerability

* * upgraded deprecated code, as Idea 2019.3 removed old classes

* * ignore gradle files that are created once build with gradle

* * reworked to @NotNull to minimize warnings

* * optimized imports
* Dialog().show() to setVisible() as outdated
* still keeping ApplicationComponent as need it to act as it is now (require some amount of rework)

* * added RoboFileUtils to handle false result of file api into exceptions
* using try with resource where applicable
* CompileTask is not added using extensions in plugin.xml

* * readme updated with detailed instructions

* * xcode setup dialog is not blocking now. as if something went wrong it was blocking idea completely

* * reworked to gracefully handle cases when there is no simulators in place (was crashing previously)

* * updated to recent org.jetbrains.intellij

* * added check for GraphicsEnvironment.isHeadless() as during plugin build using gradle it runs plugin as part of sanity and it will crash as it being run in Headless mode

* * source code polish: fixes all lint warning, applied suggestions (like anonymous classes to lambda)

* * reworked simulator device types. it doesn't depend today on SDK versions available
* * jetbrains intellij plugin for gradle version updated

* * intellij maven pom reworked into stand-alone. as mvn:version is not able to update parent version number

* * added sonatype repo for snapshot dependencies

* * eclipse plugin's maven.pom switched into standalone (without) as tyho plugin is not able update parent's version during release

* * release script reworked to properly pick up new idea artifact and update it gradle version

* * Idea: release script updated to use property to specify the dependencies. otherview version:commit failed to pick up non existing dependencies (for future version)

* * fixed `error code -34018` when using SecItemAdd api and running on simulator, by :
- signing simulator binary (as xcode does), actually not required ;
- adding __TEXT __entitlement section (same as xcode) which declares `application-identifier` required for Security framework api
* * jetbrains intellij plugin for gradle version updated

* * intellij maven pom reworked into stand-alone. as mvn:version is not able to update parent version number

* * added sonatype repo for snapshot dependencies

* * eclipse plugin's maven.pom switched into standalone (without) as tyho plugin is not able update parent's version during release

* * release script reworked to properly pick up new idea artifact and update it gradle version

* * Idea: release script updated to use property to specify the dependencies. otherview version:commit failed to pick up non existing dependencies (for future version)

* * reverted back to deprecated api, as moduleFile.getParent() returns path to iml file which is now in .idea folder (not module one)

* * forces disabled "module per source set" for gradle module that uses robovm plugin. added tooling support in plugin to detect robovm activated module
* * jetbrains intellij plugin for gradle version updated

* * intellij maven pom reworked into stand-alone. as mvn:version is not able to update parent version number

* * added sonatype repo for snapshot dependencies

* * eclipse plugin's maven.pom switched into standalone (without) as tyho plugin is not able update parent's version during release

* * release script reworked to properly pick up new idea artifact and update it gradle version

* * Idea: release script updated to use property to specify the dependencies. otherview version:commit failed to pick up non existing dependencies (for future version)

* * as result of #422 covariant return type methods annotated by @bridge is able to build now. But it crashes runtime as CLASS INFO structure is corrupted.
Root case for this: bridge pointer is not added(as result of #422) but MI_BRO_BRIDGE is added to method flags. This flags makes runtime to expect the pointer but it missing and entire class struct is shifted and missread into crash
* * jetbrains intellij plugin for gradle version updated

* * intellij maven pom reworked into stand-alone. as mvn:version is not able to update parent version number

* * added sonatype repo for snapshot dependencies

* * eclipse plugin's maven.pom switched into standalone (without) as tyho plugin is not able update parent's version during release

* * release script reworked to properly pick up new idea artifact and update it gradle version

* * Idea: release script updated to use property to specify the dependencies. otherview version:commit failed to pick up non existing dependencies (for future version)

* * added code to synthesize `offsetOf` method in struct classes
* * jetbrains intellij plugin for gradle version updated

* * intellij maven pom reworked into stand-alone. as mvn:version is not able to update parent version number

* * added sonatype repo for snapshot dependencies

* * eclipse plugin's maven.pom switched into standalone (without) as tyho plugin is not able update parent's version during release

* * release script reworked to properly pick up new idea artifact and update it gradle version

* * Idea: release script updated to use property to specify the dependencies. otherview version:commit failed to pick up non existing dependencies (for future version)

* * fixes for Network.framework:
- All object annotations reverted from @NativeProtocolProxy to @nativeclass. As most of protocols declared in framework doesn't exist runtime. That fixes exceptions like `ObjCClassNotFoundException: OS_nw_path_monitor`
- creator static methods converted into object constructors
- added ansi string marshallers were applicable. Sadly lot of places like @blocks is not possible to properly marshal (without extra class wrapper) due compilator limitations

* * network framework regenerated using bro-gen with recent fixes
* * jetbrains intellij plugin for gradle version updated

* * intellij maven pom reworked into stand-alone. as mvn:version is not able to update parent version number

* * added sonatype repo for snapshot dependencies

* * eclipse plugin's maven.pom switched into standalone (without) as tyho plugin is not able update parent's version during release

* * release script reworked to properly pick up new idea artifact and update it gradle version

* * Idea: release script updated to use property to specify the dependencies. otherview version:commit failed to pick up non existing dependencies (for future version)

* * ios13.2 bindings: foundation updated

* * ios13.2 bindings: addressbook updated

* * ios13.2 bindings: arkit updated

* * ios13.2 bindings: assetslibrary updated

* * ios13.2 bindings: uikit updated

* * ios13.2 bindings: authservices updated

* * ios13.2 bindings: audio toolbox processed. Fixed bug -- structs are packed

* * ios13.2 bindings: avfoundation updated

* * ios13.2 bindings: callkit updated

* * ios13.2 bindings: cloudkit updated

* * ios13.2 bindings: coreaudio updated

* * ios13.2 bindings: corebluetooth updated

* * ios13.2 bindings: corelocation updated

* * ios13.2 bindings: coremedia updated

* * ios13.2 bindings: corefoundation updated

* * ios13.2 bindings: coretelephony updated

* * ios13.2 bindings: coretext updated

* * ios13.2 bindings: fileprovider, gamecontroller, gamekit updated

* * ios13.2 bindings: healthkit, homekit updated

* * ios13.2 bindings: imagecapturecore updated

* * ios13.2 bindings: intents updated

* * ios13.2 bindings: imagio updated

* * ios13.2 bindings: metal updated

* * ios13.2 bindings: metalps updated

* * ios13.2 bindings: network extension, passkit updated

* * ios13.2 bindings: pushkit, replaykit, scenekit, security updated

* * ios13.2 bindings: storekit updated

* * ios13.2 bindings: vision updated

* * deleted not required anymore status file

* * glkit: implemented functions that are now inline. implementation expected to be slower than native (TODO: rework if required)
…than child case) (#442)

* * jetbrains intellij plugin for gradle version updated

* * intellij maven pom reworked into stand-alone. as mvn:version is not able to update parent version number

* * added sonatype repo for snapshot dependencies

* * eclipse plugin's maven.pom switched into standalone (without) as tyho plugin is not able update parent's version during release

* * release script reworked to properly pick up new idea artifact and update it gradle version

* * Idea: release script updated to use property to specify the dependencies. otherview version:commit failed to pick up non existing dependencies (for future version)

* * added handling of situation, when parent class is using higher version of iOS than child. before the fix it fails with ObjCClassNotFoundException when running on iOS where parent class is not present.

* * comments + few cleanups
* * jetbrains intellij plugin for gradle version updated

* * intellij maven pom reworked into stand-alone. as mvn:version is not able to update parent version number

* * added sonatype repo for snapshot dependencies

* * eclipse plugin's maven.pom switched into standalone (without) as tyho plugin is not able update parent's version during release

* * release script reworked to properly pick up new idea artifact and update it gradle version

* * Idea: release script updated to use property to specify the dependencies. otherview version:commit failed to pick up non existing dependencies (for future version)

* * fixed bunch of lint messages

* * implemented formal support for bitcode:
- runtime compiled with emitBitcode (and now will take lot of space)
- robovm compiler modified to emit `__LLVM,__asm` seciton
- robovm.xml extended with enableBitcode parameter
- maven and gradle plugins extended with `robovm.enableBitcode` parameter

* * fix to eclipse plugin due removed IOException from config builder
* * fixed: removed left by mistake @bridge annotations on non native methods, also removed not required @MachineSized and @ByRef/@byval (as methods are not native)

* * compiling VM using 6 process to utilize 4x CPU configuration (even on 2x it will speed up)

* * updated readme for Idea to include gradle-api to compile with recent gradle-instrumentation changes

* * reverted back missing eclipse plugin modules required for update-site structure generation

* * reverted one process for VM build as it breaks dependency order (compilation fails)
* * ios13.4: AuthenticationServices updated

* * ios13.4: AutomaticAssessmentConfiguration (new framework)

* * ios13.4: AVFoundation updated

* * ios13.4: CallKit updated

* * ios13.4: CarPlay updated

* * ios13.4: ClassKit updated

* * ios13.4: CoreBluetooth updated

* * ios13.4: CoreGraphics updated

* * ios13.4: CoreLocation updated

* * ios13.4: CoreMedia updated

* * ios13.4: CoreText updated

* * ios13.4: GameKit updated

* * ios13.4: CoreLocatio/CoreMedia missing yaml files

* * ios13.4: ImageCaptureCore updated

* * ios13.4: Intents updated

* * ios13.4: LocalAuthentication updated

* * ios13.4: Foundation -- added required for MPS vector types

* * ios13.4: MetalPerformanceShaders updated. Added lot of missing API from previous version

* * ios13.4: NetworkExtension updated

* * ios13.4: PassKit updated

* * ios13.4: StoreKit updated

* * ios13.4: UIKit updated

* * ios13.4: WebKit updated
* * FrameworkTarget: exporting OBJC_CLASS to allow instantiation of CustomClass java object natively from objc/swift.
It was not possible as to use class its metadata have to be available as OBJC_CLASS_$_{class_name}. Otherwise compilation fails on linkage stage.
RoboVM doesn't generate static metadata. Instead it creates ObjC classes dynamically runtime.

To achieve following was done:
- for each CustomClass OBJC_CLASS_$_{class_name} structure is allocated compilation time;
- OBJC_CLASS_$_{class_name} structs being filled with data once Java class is loaded and corresponding ObjC class is created;
- framework support is modified to preload all CustomClasses exposed by Framework when framework loads

ObjCMemberPlugin:
- <cinit> modified to copy ObjCClass.getHandle into OBJC_CLASS_$_{class_name}
- also it replaces the handle in ObjCClass. with pointer to OBJC_CLASS_$_{class_name} (so both Java and native side will have same Class pointer)

FrameworkTarget:
- all  OBJC_CLASS_$_{class_name} added to exported symbols

ClassCompiler:
- added compiler for $publishObjClass in CustomClass

Linker:
- added functionality to embed global symbols. In particular this is required to export list of classes to preload in _bcFrameworkPreloadClasses

Frameworksupport:
- now it starts VM once framework is loaded
- also it preload required custom classes
- old functionality maintained to allow old code that was using rvmInstantiateFramework to work

* * FrameworkTarget: template updated to match ObjC changes

* * FrameworkTarget: idea -- removed main class from wizard as there is no such item anymore in framework target

* * FrameworkTarget: template -- fixed imageName, otherwise if framework.name and  framework.executable are different broken framework was produced

* * FrameworkTarget: template -- fixed imageName, otherwise if framework.name and  framework.executable are different broken framework was produced

* * fixed typos
* * fixed: using internal JDK for gradle(otherwise RoboVM sdk was used and gradle was not working with it) and forcing java 8 for robovm module

* * removed ldid tool for "dont code sign case". if this option is needed adhoc signature will be added

* * cosmetic: fixed Process finished with exit code -559038737 when simulator is interrupted from Idea

* * fixed: added support for `Apple Development` certificates in case auto lookup for signing identity is used

* * big rework to Idea "run configuration" to solve main issue: configuration is not valid anymore (due simulator not available or signing identity is outdated) but edit configuration dialog doesn't show it has error and instead changes values to something that is valid now. But Idea doesn't see that there was any changes (and user sees the dialog as valid). As Idea doesn't see changes -- apply button is not valid and to apply (and replace broken config) user has to touch and do changes in dialogue.
this rework includes:
- now if value is not valid (not available anymore) it will be displayed as empty value in combobox (and configuration will be not valid)
- changed concept: together with valud (like signing identity) now kind of identity saved: either explicit or auto (before string was compared against special template to detect auto)
- when explicit value is used -- not name but its id/uuid|footprint is saved for explicit match
- simulator combo box now has two auto options: auto iPad and auto iPhone. It introduces auto functionality similar to one we have with gradle and also allows to recover broken configuration when no any simulator is not available at all in system (for this ComboBox shall contain any value and auto just work great for this)
- remove "don't sign" option as not used. also removed ldid tool for stub signature. instead if don't sign triggered by gradle binary will be signed with adhoc signature;
- arm64 is now default target for Device deployment;
- if simulator version >=11 it doesn't provide 32 bit version anymore
- preferred iphone device changed to from "iPhone 6" to "iPhone 8" as iPhone6 is not in recent simulators anymore

* * fixed typos
…p if destination is sp` when compiling with xcode 11.4 (#461)
* * breakpoints should be checked before spepping (even if stepping) otherwise breakpoint in one line loops will not fire while stepping. Code sample
while(true)
   foo(); // breakpoint here

* * debugger: fixed bug when debugger was crashing on resolving Thread objects

* * debugger: method line table handler updated to return only lines that were instrumented with hooks and where breakpoint can be set.
This improves usability and IDE will mark breakpoint as invalid if debugger can't stop there. To support this bptable now filled with values, where bits set to 1 (bp enabled) at lines that not being instrumented. during runtime this will not have affect as there was not hook code injected for these lines, but debugger will read bptable from executable to find out what lines are available

* * debugger: adding to debugger stepping configuration filter to not stop in dalvik.*, libcore.* classes when stepping. user might disable these settings in preferences.

* debugger: added filter to skip synthetic bridges and callbacks in back stack as these provide no information or source code location

* * debugger: fixed not working step-out in case back stack contained classes configured to be ignored (this class was picked as target for back stack and then event was dropped and not delivered to JDWP client)
* Fixes min OS version checks and removes hardcoded values

* Use getInfoPlist(9 on FrameworkTarget

* Use getMinimumIosVersion()

(cherry picked from commit ddb8c0a)

Co-authored-by: Tomski <tomwojciechowski@asidik.com>
* * ios13.4: AutomaticAssessmentConfiguration updated to Beta3

* * ios13.4: AutomaticAssessmentConfiguration updated to Beta3

* * ios13.4: PassKit updated to Beta3

* * ios13.4: coregraphics, gamekit, networkextension, uikit, webkit: minor changes and updated to Beta3

* * bro-gen run against Xcode 11.4 beta 3, picked missing api, comments and modifications
* * simlauncher stopped working with ios13. switching to apple's simctl instead. (#402)

* * xcode11 fix. swift libraries not in /swift/ directory anymore but in swift-5.0. it is not a perfect fix but dirty workaround but it allows to use swift based frameworks with xcode11 (#405)

* Ios13 switch to simctl -- starting simulator (#410)

* * simlauncher stopped working with ios13. switching to apple's simctl instead.

* * added 'open Simulator' as simctl boot doesn't show the simulator and it has to be opened either using spotlight or open cmd

* #414 fix (libimobiledevice affected) (#416)

* updated to recent master of libimobiledevice which should fix the issue:
- removed libxml as it not required anymore by libplist v2.0.0
- libusbmuxd is picked from master, as version 1.1.0 is not available in releases
- added openssl as dependency as it is not part of MacOSX anymore (probably LibreSSL might be used)

* * fixed libmobiledevice to allow bypass ssl termination when required

* * libimobiledevice: bindings re-generated to recent version with ssl  passthrough and debug server

* * libimobiledevice: added handling of introduced time-out

* * libimobiledevice: added patch to provide timeout error through debugserver client

* * libimobiledevice: added patch to provide timeout error through debugserver client

* * libimobiledevice: removed unused debugserver api, fixed unix permissions for all other files

* * libimobiledevice: switched to use DebugServerClient to interact with GDB server, cleaned up some if lint warnings in AppLauncher and fixed to dev image lookup to allow using older one available (for example to use 13.0 with 13.1 device)

* * libimobiledevice: reverted back companion to byte[] parameter `count` argument. As usually byte array buffer contains less useful bytes than its length (this broke upload of app)

* update libimobiledevice lib

* * fixed broken reg-exp for version matching (development image lookup), added testcases for new code (#427)

* * fixed #408 by adding @MarshalsValue to toNative methods. Otherwise compiler was not able to resolve to native marshaller for enum and went to parent class where it picked up default marshaller from ValuedEnum. This results in type difference in case type of enum data is not int and caused following exception: (#409)

> java.lang.IllegalArgumentException: Duplicate @StructMember(1) in @PACKED structs (union in packed structs is not supported

* Add bool declarations for non Darwin systems (#425)

* [maven-release-plugin] prepare release robovm-2.3.8

* [maven-release-plugin] prepare for next development iteration

* Set release version of Eclipse plugin, 2.3.8

* Set next development version of Eclipse plugin, 2.3.9

* Set release version of IDEA plugin, 2.3.8

* Set next development version of IDEA plugin, 2.3.9

* Set release version of Gradle plugin, 2.3.8

* Set next development version of Gradle plugin, 2.3.9-SNAPSHOT

* Update commons-compress due to security vulnerability

* * reworked simulator device types. doesn't depend on SDK versions available (#436)

* Switch use of maven http to https since http is no longer supported. (#452)

* Fixes min OS version checks and removes hardcoded values (#463)

* Fixes min OS version checks and removes hardcoded values

* Use getInfoPlist(9 on FrameworkTarget

* Use getMinimumIosVersion()

* [maven-release-plugin] prepare release robovm-2.3.9

* [maven-release-plugin] prepare for next development iteration

* Set release version of Eclipse plugin, 2.3.9

* Set next development version of Eclipse plugin, 2.3.10

* Set release version of IDEA plugin, 2.3.9

* Set next development version of IDEA plugin, 2.3.10

* Set release version of Gradle plugin, 2.3.9

* Set next development version of Gradle plugin, 2.3.10-SNAPSHOT

Co-authored-by: Tom-Ski <tomwojciechowski@asidik.com>
Co-authored-by: legion151 <42674335+legion151@users.noreply.github.com>
Co-authored-by: Justin Shapcott <justin@mobidevelop.com>
Co-authored-by: Eric Nondahl <ericnondahl@users.noreply.github.com>
@Tom-Ski Tom-Ski merged commit e0847ce into master Apr 17, 2020
@Tom-Ski Tom-Ski deleted the jdk12 branch April 17, 2020 12:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants