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

Add MacOS support for detecting VM installs at start up #276

Merged
merged 1 commit into from
Jul 24, 2023

Conversation

jjohnstn
Copy link
Contributor

@jjohnstn jjohnstn commented Jul 6, 2023

  • fixes Detect JVM installs at startup on Mac #265
  • for Mac, don't bother looking in a default file directory in computeCandidateVMs() as a special command is required
  • use MacInstalledJREs.getInstalledJREs() to get a list of all system installed VMs and remove any known VMs

What it does

Adds Mac OS support for detect VM installs at start up feature

How to test

Install a number of JREs and SDKs to a Mac system. Also use SDKMan to install a JRE. Start up Eclipse and go to JRE preferences. The installed JREs and SDKs should show up without needing to be added.

Author checklist

@jjohnstn jjohnstn added the enhancement New feature or request label Jul 6, 2023
@jjohnstn jjohnstn self-assigned this Jul 6, 2023
@jjohnstn jjohnstn requested a review from gayanper July 21, 2023 18:42
@jjohnstn
Copy link
Contributor Author

Hi @gayanper I don't have access to Mac for testing. Is there any chance you could try this out? The patch adds searching for JREs/JDKs at startup, including sdkman support.

Copy link
Contributor

@gayanper gayanper left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Works as Expected. LGTM

@jjohnstn
Copy link
Contributor Author

Thanks @gayanper

@jjohnstn jjohnstn merged commit 217ba1f into eclipse-jdt:master Jul 24, 2023
8 of 9 checks passed
@jjohnstn jjohnstn added this to the 4.29 M2 milestone Jul 24, 2023
@jjohnstn jjohnstn deleted the macsupport branch July 24, 2023 17:59
SarikaSinha added a commit that referenced this pull request Aug 1, 2023
* Remove use of OPTION_JdtDebugCompileMode with
OPTION_IgnoreUnnamedModuleForSplitPackage

This change replaces use of OPTION_JdtDebugCompileMode with
OPTION_IgnoreUnnamedModuleForSplitPackage, since the latter does what we
need better and doesn't cause the side effects that the first option
causes. Goal is to later on remove OPTION_JdtDebugCompileMode in JDT
core.

Fixes: #260
Signed-off-by: Simeon Andreev <simeon.danailov.andreev@gmail.com>

* Detect JVM installs at startup (#231)

* Detect JVM installs at startup

Fixes #230

* Delete classpath argument files upon shutdown. Fixes #240 (#242)

Store classpath argument files in bundle state location, not in workspace

- Avoids that workspace is contaminated with temporary files.
- Delete classpath argument files upon shutdown.
- Version bump org.eclipse.jdt.launching.

See https://github.com/eclipse-platform/eclipse.platform.debug/issues/84
Fixes #240

* Avoid reusing of not thread-safe SimpleDateFormat

  SimpleDateFormat.format(new Date());
returns same string as immutable and thread-safe
  DateTimeFormatter.format(new Date().toInstant())

* Avoid potential Threadlocal.set(null) memory leak (#249)

Threadlocal.set(null) keeps a reference to ThreadLocal.this
see https://rules.sonarsource.com/java/RSPEC-5164

Co-authored-by: Jörg Kubitz <jkubitz-eclipse@gmx.de>

* Change how JrtPackageFragmentRoots are printed in Source tab (#266)

- currently all JrtPackageFragmentRoots are printed using the
  path which is the same for all modules extracted from a jrt-fs.jar
- change this to print the module name followed by the full
  jrt-fs.jar path
- fixes #633

* JavaSnippetEditor: fix missing synchronize (#259)

* JavaSnippetEditor: fix missing synchronize

* JavaSnippetEditor: Adding "this." for non static field access

---------

Co-authored-by: Jörg Kubitz <jkubitz-eclipse@gmx.de>

* LaunchingPlugin: use try-with-resource (#252)

to close streams in case of Exceptions.

Co-authored-by: Jörg Kubitz <jkubitz-eclipse@gmx.de>

* Add missing "static" modifier for constants (#256)

To reduce memory per instance

Co-authored-by: Jörg Kubitz <jkubitz-eclipse@gmx.de>

* [trivial] Fixed "Redundant specification of type arguments" warnings

Reported by official SDK build since 4.29 for whatever reason

See for example
https://download.eclipse.org/eclipse/downloads/drops4/I20230621-1800/compilelogs/plugins/org.eclipse.jdt.debug.jdi.tests_1.1.0.v20230328-1614/@dot.html#OTHER_WARNINGS

* Records with inner records breaks breakpoint toggling
fixes #270

Boundary for Breakpoint should be checked

* Touch bundles affected by the new ecj version

See eclipse-platform/eclipse.platform.releng.aggregator#1184

* Fix html links in VMInstall(Type) Extension-Point documentation

* Re-throw underlying exceptions in OpenFromClipboardTests #27 (#279)

Replace call to Display::syncExec with call to Display::syncCall in the
private method getJavaElementMatches. snycCall does not hide exceptions,
it re-throws them to the calling thread (which helps debugging).

Don't catch exceptions in the helper class "Accessor", re-throw them so
the calling tests can show a more meaningful stack-trace when they fail.

* Use typed for-each loop

Avoiding type-casts makes code easier to read.

* Avoid wrapping primitives for toString()

see https://rules.sonarsource.com/java/RSPEC-2131

* ReferenceTypeImpl: compare Array content

instead of instance comparison.
https://stackoverflow.com/questions/8777257/equals-vs-arrays-equals-in-java

* VMInstallTests: fix random ConcurrentModificationException #202

by using threadsafe datastructures.

* Set console stream encoding for java >= 19 - eclipse.platform.debug#124

https://github.com/eclipse-platform/eclipse.platform.debug/issues/124

* FileHashing: avoid getCanonicalFile()

getCanonicalFile() is slow on windows / JDK17 - can costs even more then
calculating the SHA1 of the file content, which it is supposed to avoid.

* Instead use normalized path. It does not matter that multiple files
could be the same due to symbolic links, it will just recalculate their
SHA1 for all of them - which is still faster.
* Also read all file attributes at once.

* Refactor XML parsing

* Fix path decoding of URL to File containing space (fixes #64)

A space in an URL is encoded as "%20" and has to be decoded to " ".

Otherwise a debugged JAR rooted in a path containing space is not
opening class file but java file editor.

* Add MacOS support for detecting VM installs at start up (#276)

- fixes #265

* require org.eclipse.core.runtime 3.29.0

---------

Signed-off-by: Simeon Andreev <simeon.danailov.andreev@gmail.com>
Co-authored-by: Simeon Andreev <simeon.danailov.andreev@gmail.com>
Co-authored-by: Mickael Istria <mistria@redhat.com>
Co-authored-by: Diethard Ohrt <130975899+diti0023@users.noreply.github.com>
Co-authored-by: Jörg Kubitz <jkubitz-eclipse@gmx.de>
Co-authored-by: Jörg Kubitz <51790620+jukzi@users.noreply.github.com>
Co-authored-by: Jeff Johnston <jjohnstn@redhat.com>
Co-authored-by: Andrey Loskutov <loskutov@gmx.de>
Co-authored-by: Hannes Wellmann <wellmann.hannes1@gmx.net>
Co-authored-by: Federico Jeanne <2205684+fedejeanne@users.noreply.github.com>
SarikaSinha added a commit that referenced this pull request Aug 1, 2023
* Remove use of OPTION_JdtDebugCompileMode with
OPTION_IgnoreUnnamedModuleForSplitPackage

This change replaces use of OPTION_JdtDebugCompileMode with
OPTION_IgnoreUnnamedModuleForSplitPackage, since the latter does what we
need better and doesn't cause the side effects that the first option
causes. Goal is to later on remove OPTION_JdtDebugCompileMode in JDT
core.

Fixes: #260
Signed-off-by: Simeon Andreev <simeon.danailov.andreev@gmail.com>

* Detect JVM installs at startup (#231)

* Detect JVM installs at startup

Fixes #230

* Delete classpath argument files upon shutdown. Fixes #240 (#242)

Store classpath argument files in bundle state location, not in workspace

- Avoids that workspace is contaminated with temporary files.
- Delete classpath argument files upon shutdown.
- Version bump org.eclipse.jdt.launching.

See https://github.com/eclipse-platform/eclipse.platform.debug/issues/84
Fixes #240

* Avoid reusing of not thread-safe SimpleDateFormat

  SimpleDateFormat.format(new Date());
returns same string as immutable and thread-safe
  DateTimeFormatter.format(new Date().toInstant())

* Avoid potential Threadlocal.set(null) memory leak (#249)

Threadlocal.set(null) keeps a reference to ThreadLocal.this
see https://rules.sonarsource.com/java/RSPEC-5164

Co-authored-by: Jörg Kubitz <jkubitz-eclipse@gmx.de>

* Change how JrtPackageFragmentRoots are printed in Source tab (#266)

- currently all JrtPackageFragmentRoots are printed using the
  path which is the same for all modules extracted from a jrt-fs.jar
- change this to print the module name followed by the full
  jrt-fs.jar path
- fixes #633

* JavaSnippetEditor: fix missing synchronize (#259)

* JavaSnippetEditor: fix missing synchronize

* JavaSnippetEditor: Adding "this." for non static field access

---------

Co-authored-by: Jörg Kubitz <jkubitz-eclipse@gmx.de>

* LaunchingPlugin: use try-with-resource (#252)

to close streams in case of Exceptions.

Co-authored-by: Jörg Kubitz <jkubitz-eclipse@gmx.de>

* Add missing "static" modifier for constants (#256)

To reduce memory per instance

Co-authored-by: Jörg Kubitz <jkubitz-eclipse@gmx.de>

* [trivial] Fixed "Redundant specification of type arguments" warnings

Reported by official SDK build since 4.29 for whatever reason

See for example
https://download.eclipse.org/eclipse/downloads/drops4/I20230621-1800/compilelogs/plugins/org.eclipse.jdt.debug.jdi.tests_1.1.0.v20230328-1614/@dot.html#OTHER_WARNINGS

* Records with inner records breaks breakpoint toggling
fixes #270

Boundary for Breakpoint should be checked

* Touch bundles affected by the new ecj version

See eclipse-platform/eclipse.platform.releng.aggregator#1184

* Fix html links in VMInstall(Type) Extension-Point documentation

* Re-throw underlying exceptions in OpenFromClipboardTests #27 (#279)

Replace call to Display::syncExec with call to Display::syncCall in the
private method getJavaElementMatches. snycCall does not hide exceptions,
it re-throws them to the calling thread (which helps debugging).

Don't catch exceptions in the helper class "Accessor", re-throw them so
the calling tests can show a more meaningful stack-trace when they fail.

* Use typed for-each loop

Avoiding type-casts makes code easier to read.

* Avoid wrapping primitives for toString()

see https://rules.sonarsource.com/java/RSPEC-2131

* ReferenceTypeImpl: compare Array content

instead of instance comparison.
https://stackoverflow.com/questions/8777257/equals-vs-arrays-equals-in-java

* VMInstallTests: fix random ConcurrentModificationException #202

by using threadsafe datastructures.

* Set console stream encoding for java >= 19 - eclipse.platform.debug#124

https://github.com/eclipse-platform/eclipse.platform.debug/issues/124

* FileHashing: avoid getCanonicalFile()

getCanonicalFile() is slow on windows / JDK17 - can costs even more then
calculating the SHA1 of the file content, which it is supposed to avoid.

* Instead use normalized path. It does not matter that multiple files
could be the same due to symbolic links, it will just recalculate their
SHA1 for all of them - which is still faster.
* Also read all file attributes at once.

* Refactor XML parsing

* Fix path decoding of URL to File containing space (fixes #64)

A space in an URL is encoded as "%20" and has to be decoded to " ".

Otherwise a debugged JAR rooted in a path containing space is not
opening class file but java file editor.

* Add MacOS support for detecting VM installs at start up (#276)

- fixes #265

* require org.eclipse.core.runtime 3.29.0

---------

Signed-off-by: Simeon Andreev <simeon.danailov.andreev@gmail.com>
Co-authored-by: Simeon Andreev <simeon.danailov.andreev@gmail.com>
Co-authored-by: Mickael Istria <mistria@redhat.com>
Co-authored-by: Diethard Ohrt <130975899+diti0023@users.noreply.github.com>
Co-authored-by: Jörg Kubitz <jkubitz-eclipse@gmx.de>
Co-authored-by: Jörg Kubitz <51790620+jukzi@users.noreply.github.com>
Co-authored-by: Jeff Johnston <jjohnstn@redhat.com>
Co-authored-by: Andrey Loskutov <loskutov@gmx.de>
Co-authored-by: Hannes Wellmann <wellmann.hannes1@gmx.net>
Co-authored-by: Federico Jeanne <2205684+fedejeanne@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Detect JVM installs at startup on Mac
2 participants