Question

I have a cross-platform Tycho build running on Mac OS X that produces Windows, Mac and a p2 repo outputs.

Generally all is fine except that the Windows RCP does NOT get configured with the update repo URL details from my p2.inf addRepository instructions (and so p2 update fails) - it DOES for the Mac OS X app... which seems suspicious... why one and not the other?!

Is this a Tycho bug anyone might've come across? (I'm currently using Tycho 0.13.0, nervous about switching versions..) Or do I need explicit instructions for this to get applied to the Windows build?

It'll probably help to include some POMs here...

Here's the POM from the product project:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<artifactId>com.myapp.main.product</artifactId>

<packaging>eclipse-repository</packaging>

<name>my product</name>

<parent>
    <groupId>com.myapp</groupId>
    <artifactId>parent</artifactId>
    <version>1.9.0-SNAPSHOT</version>
    <relativePath>../com.myapp.parent</relativePath>
</parent>

<build>
    <plugins>
        <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>
            </executions>
        </plugin>

<!-- SEE: http://dev.eclipse.org/mhonarc/lists/tycho-user/msg00362.html
     SEE: https://issues.sonatype.org/browse/TYCHO-300 -->

        <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.5</version>
        <executions>
          <execution>
            <id>copy-resources</id>
            <phase>generate-resources</phase>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/products/com.myapp.main.product/icons</outputDirectory>
              <resources>
                <resource>
                  <directory>icons</directory>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>
  </plugins>
</build>

<version>1.9.0-SNAPSHOT</version>
</project>

And the parent POM:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.myapp</groupId>
<artifactId>parent</artifactId>
<version>1.9.0-SNAPSHOT</version>

<packaging>pom</packaging>

<modules>
    <module>../com.myapp.doc</module>

    <module>../com.myapp.lots.of.plugins</module>

    <module>../com.myapp.main</module>
    <module>../com.myapp.main.nl</module>
    <module>../com.myapp.branding</module>
    <module>../com.myapp.branding.nl</module>

    <module>../com.myapp.feature.platform</module>
    <module>../com.myapp.feature.core</module>
    <module>../com.myapp.main.product</module>
</modules>

<properties>
    <tycho-version>0.13.0</tycho-version>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-maven-plugin</artifactId>
            <version>${tycho-version}</version>
            <extensions>true</extensions>
        </plugin>

        <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>target-platform-configuration</artifactId>
            <version>${tycho-version}</version>
            <configuration>
                <resolver>p2</resolver>
                <environments>
                    <environment>
                         <os>win32</os>
                        <ws>win32</ws>
                        <arch>x86</arch>
                    </environment>
                     <environment>
                        <os>macosx</os>
                        <ws>cocoa</ws>
                        <arch>x86</arch>
                    </environment>
                     <environment>
                        <os>macosx</os>
                        <ws>carbon</ws>
                        <arch>x86</arch>
                    </environment>
<!-- 64 bit platforms
                    <environment>
                        <os>win32</os>
                        <ws>win32</ws>
                        <arch>x86_64</arch>
                    </environment>
-->
                     <environment>
                        <os>macosx</os>
                        <ws>cocoa</ws>
                        <arch>x86_64</arch>
                    </environment>
                </environments>
            </configuration>
        </plugin>
    </plugins>
</build>

<profiles>

    <!-- MacOS specific vm arguments for UI testing -->
    <profile>
        <id>osx</id>
        <activation>
            <property>
                <name>java.vendor.url</name>
                <value>http://www.apple.com/</value>
            </property>
        </activation>
        <build>
            <pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.eclipse.tycho</groupId>
                        <artifactId>tycho-surefire-plugin</artifactId>
                        <version>${tycho-version}</version>
                        <configuration>
                            <appArgLine>-XstartOnFirstThread</appArgLine>
                        </configuration>
                    </plugin>
                </plugins>
            </pluginManagement>
        </build>
    </profile>

    <profile>
      <id>coverage</id>
        <activation>
            <property>
                <name>coverage</name>
            </property>
        </activation>
        <properties>
            <emma.session.out.file>${project.build.directory}/emma/${project.artifactId}.es</emma.session.out.file>
            <emma.filter>com.myapp.*</emma.filter>
            <eclemma.instrument.bundles>com.myapp.backup.tests,com.myapp.common.tests,com.myapp.model.tests</eclemma.instrument.bundles>
        </properties>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>1.5</version>
                    <executions>
                        <execution>
                            <id>attach-artifacts</id>
                            <phase>package</phase>
                            <goals>
                                 <goal>attach-artifact</goal>
                            </goals>
                            <configuration>
                                <artifacts>
                                    <artifact>
                                        <file>${emma.session.out.file}</file>
                                        <type>es</type>
                                    </artifact>
                                </artifacts>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>

                <plugin>
                    <groupId>org.sonatype.tycho</groupId>
                    <artifactId>maven-osgi-test-plugin</artifactId>
                    <version>${tycho-version}</version>
<!--
                     <configuration>
                        <systemProperties combine.children="append">
                            <eclemma.help>true</eclemma.help>
                            <emma.session.out.file>${emma.session.out.file}</emma.session.out.file>
                            <emma.filter>${emma.filter}</emma.filter>
                            <eclemma.instrument.bundles>${eclemma.instrument.bundles}</eclemma.instrument.bundles>
                        </systemProperties>
                        <frameworkExtensions>
                            <frameworkExtension>
                                <groupId>org.eclemma.runtime.equinox</groupId>
                                <artifactId>org.eclemma.runtime.equinox</artifactId>
                                <version>1.1.0.200908261008</version>
                            </frameworkExtension>
                        </frameworkExtensions>
                    </configuration>
 -->
                     <configuration>
                        <skip>${skipFunctional}</skip>
                        <useUIHarness>true</useUIHarness>
                        <useUIThread>false</useUIThread>
                        <product>org.eclipse.sdk.ide</product>
                        <application>org.eclipse.ui.ide.workbench</application>
                        <argLine>-Xmx512M</argLine>
                        <systemProperties combine.children="append">
                            <emma.session.out.file>${emma.session.out.file}</emma.session.out.file>
                            <emma.filter>${emma.filter}</emma.filter>
                            <eclemma.instrument.bundles>${emma.instrument.bundles}</eclemma.instrument.bundles>
                        </systemProperties>
                        <frameworkExtensions>
                            <frameworkExtension>
                                <groupId>org.eclemma.runtime.equinox</groupId>
                                <artifactId>org.eclemma.runtime.equinox</artifactId>
                                <version>1.1.0.200908261008</version>
                            </frameworkExtension>
                        </frameworkExtensions>
                        <application>org.eclipse.ui.ide.workbench</application>
                        <dependencies>
                            <dependency>
                                <type>p2-installable-unit</type>
                                <artifactId>org.eclipse.sdk.ide</artifactId>
                                <version>0.0.0</version>
                            </dependency>
                        </dependencies>
                    </configuration>

                 </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

<repositories>
    <repository>
        <id>helios-platform</id>
        <layout>p2</layout>
        <url>${project.baseUri}../../../../targetplatform/org.eclipse.platform-3.7.1</url>
    </repository>
    <repository>
        <id>myapp-targetplatform</id>
        <layout>p2</layout>
        <url>${project.baseUri}../../../../targetplatform/myapp-targetplatform</url>
    </repository>
</repositories>

</project>
Was it helpful?

Solution

Upgraded Tycho to 0.17.0 but it turns out the issue indeed has nothing to do with Tycho - I realized I've tweaked the location properties on Windows in an attempt to prepare to support installation into c:\Program Files post-XP with UAC:

-Dosgi.instance.area=@user.home/Application Data/myapp
-Dosgi.configuration.area=@user.home/Application Data/myapp/.configuration

However moving the osgi.configuration.area out of the installation folder (which defaults to c:\myapp :P) is what causes my p2 problem.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top