Search code examples
eclipseeclipse-rcptycho

Info.plist at wrong position building an Eclipse RCP MacOS bundle via tycho


We have an Eclipse RCP product which I just migrated to use Eclipse Tycho/Maven to build the distributions. As we have read that Tycho since 0.24 is able to include the whole product distribution inside a standard MacOS application bundle we wanted to use that too.

However, it turns out that the Info.plist is at the wrong position inside the created MacOS bundle. The structure created is:

  • OurApp.app
    • Contents
      • Eclipse
        • The whole eclipse distribution
      • Eclipse.app
        • Contents
          • Info.plist
      • MacOS
        • The native launcher

As I understand from the discussions around that feature it should be:

  • OurApp.app
    • Contents
      • Info.plist
      • Eclipse
        • The whole eclipse distribution
      • MacOS
        • The native laucher

So the Info.plist is somehow put into a bogus "Eclipse.app/Contents" folder structure, and we have no idea why.

The tycho config inside our pom.xml:

<plugin>
             <groupId>org.eclipse.tycho</groupId>
             <artifactId>tycho-p2-director-plugin</artifactId>
             <version>${tycho.version}</version>
             <executions>
                <execution>
                    <id>materialize-products</id>
                    <goals>
                        <goal>materialize-products</goal>
                    </goals>
                </execution>
                <execution>
                    <id>archive-products</id>
                    <goals>
                        <goal>archive-products</goal>
                    </goals>
                </execution>
                <execution>
                   <id>create-product-distributions</id>
                   <goals>
                      <goal>materialize-products</goal>
                      <goal>archive-products</goal>
                   </goals>
                </execution>
             </executions>
             <configuration>
                <includeAllDependencies>true</includeAllDependencies>
                <profileProperties>
                  <macosx-bundled>true</macosx-bundled>
                </profileProperties>
                <formats>
                    <win32>zip</win32>
                    <linux>tar.gz</linux>
                    <macosx>tar.gz</macosx>
                </formats>
                <products>
                    <product>
                        <id>OurApp</id>
                        <archiveFileName>our-app-${unqualifiedVersion}-${buildQualifier}</archiveFileName>
                        <rootFolders>
                            <macosx>OurApp.app</macosx>
                        </rootFolders>
                    </product>
                </products>
            </configuration>
          </plugin>

Anybody got an idea what could make tycho do this? Thanks!


Solution

  • Ok, I think I figured it out.

    My MyApp.product file had wrong paths to the icon files of the distribution. These would raise exceptions somewhere in the build process which nevertheless continues to provide distribution files.

    Once I corrected those paths the distribution layout suddenly was as expected.

    I assume the wrong paths had killed the task of assembling the distribution somewhere mid-process, so this unfinished state was then packaged.