One of my customers is still working with a Luna target platform on Windows (they have lots of divisions and need to coordinate a standard target platform among all of them, which is why the process of updating to a newer version is always a bit slow). Recently, they have switched their IDE provisioning to a custom Oomph-based setup.
As I often do remote development for them, I wanted to install the provided IDE with all the team-wide settings as well on my own laptop. So I liked the idea of taking the Oomph setup model and install the IDE with it on my Mac. But I didn’t come far. The Eclipse Installer opened (in advanced mode), the (custom) product was displayed, but I was not able to select it. The installer showed me this message:
The selected product has no versions that can be installed on this platform.
Ok, I thought, maybe the p2 repositories configured for the product did not contain Mac-specific artifacts. But they did.
Finally, I found the reason in the source code of Oomph (see this Git commit) in the form of a comment:
// Filter out the older releases because the latest p2, with it's layout changes for the Mac,
// can't install a correct image from older repositories.
The reason for the error message is that before Mars, Oomph did not install Eclipse in a nice way. On the Mac, an App is, in fact, just a folder which conforms to some conventions (name ends with .app, contains a manifest-like Info.plist
file, etc.).
Before Mars, the p2 director obviously did not materialize an Eclipse product in a conforming way. Therefore, if Oomph installed an Eclipse version earlier than Mars, the layout would be unusable out of the box.
But since I needed the Luna-based install, I tried to work around the restriction. This proved to be rather easy: Change the product label, so it does not contain the word Luna. (The disabling of versions is done via label.contains("Luna")
– so product developers beware: if you want to create an Eclipse product and name it, e.g., Lunatic, don’t expect that it will be installable on a Mac – even though it is based on Mars or Neon ;-)). Anyway, I edited my products.setup
model and changed the product name from Luna to Luno…
After this change, the product showed up in the Eclipse Installer, I could select my Luno-version and it was resolved and installed without error. Of course, the product can not be launched right away, therefore, while installing, I unchecked the launch automatically checkbox.
After the installation, I had to adjust the layout manually:
# go to installation folder (there is an Eclipse.app subfolder here) cd <install_folder> # In that folder, there is a second .app bundle located in Contents/Eclipse/Eclipse.app # we move that bundles contents into the „outer“ bundle mv Eclipse.app/Contents/Eclipse/Eclipse.app/Contents/* Eclipse.app/Contents/ # and remove the now empty bundle directory rm -r Eclipse.app/Contents/Eclipse/Eclipse.app/ # Now we need to move the eclipse.ini file so it is next to the eclipse executable and can be found mv Eclipse.app/Contents/Eclipse/eclipse.ini Eclipse.app/Contents/MacOS/
And voilà: there is our installation ready to be launched.
Special thanks to Tim, who originally found the Git commit containing the comment.