Dr. Stefan Winkler
freier Softwareentwickler und IT-Berater

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.