Uploaded image for project: 'Red Hat Fuse'
  1. Red Hat Fuse
  2. ENTESB-10331

PME adjustments break PNC build

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Blocker Blocker
    • fuse-7.3
    • None
    • Prod
    • % %
    • Fuse 7.3 Sprint 44 - Prod CR2

      When analyzing failing build of camel in PNC I saw:

      [WARNING] Manifest org.apache.camel:camel-bonita:jar:2.21.0.fuse-730065-redhat-00001 : No translation found for macro: range;[==,+)
      

      When checking this tag done by PNC/PME, when building locally with -X, I saw:

      [DEBUG] Final Manifest:
      #-----------------------------------------------------------------------
      Manifest-Version: 1.0
      Bnd-LastModified: 1552395594841
      Build-Jdk: 1.8.0_202
      Built-By: ggrzybek
      Bundle-Description: Camel Bonita support
      Bundle-DocURL: https://www.apache.org/
      Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt, https://
       opensource.org/licenses/MIT, https://opensource.org/licenses/BSD-3-Clau
       se, https://opensource.org/licenses/AFL-3.0, https://www.w3.org/Consort
       ium/Legal/copyright-software-19980720
      Bundle-ManifestVersion: 2
      Bundle-Name: camel-bonita
      Bundle-SymbolicName: org.apache.camel.camel-bonita
      Bundle-Vendor: The Apache Software Foundation
      Bundle-Version: 2.21.0.fuse-730065-redhat-00001
      Created-By: Apache Maven Bundle Plugin
      Export-Package: ${camel.osgi.export.pkg};version="2.21.0.fuse-730065-red
       hat-00001"
      Implementation-Title: Camel :: Bonita
      Implementation-URL: http://camel.apache.org/camel-parent/components/came
       l-bonita
      Implementation-Vendor: The Apache Software Foundation
      Implementation-Vendor-Id: org.apache.camel
      Implementation-Version: 2.21.0.fuse-730065-redhat-00001
      Import-Package: 
       org.apache.camel;version="[2.21,2.22)",
       org.apache.camel.impl;version="[2.21,2.22)",
       org.apache.camel.spi;version="[2.21,2.22)",
       org.apache.camel.util;version="[2.21,2.22)",
       org.apache.cxf.jaxrs.ext.multipart;version="[3.2,4.0)",
       com.fasterxml.jackson.annotation;version="[2.8,3)",
       com.fasterxml.jackson.jaxrs.json;version="[2.8,3)",
       javax.ws.rs.client;version="${range;[==,+)}",
       javax.ws.rs.core;version="${range;[==,+)}",
       org.osgi.framework;version="[1.5,2)",
       org.osgi.framework.wiring;version="[1.0,2)"
      Java-Vendor: Oracle Corporation
      Java-Version: 1.8.0_202
      Karaf-Info: Camel;camel-bonita=2.21.0.fuse-730065-redhat-00001
      Os-Arch: amd64
      Os-Name: Linux
      Os-Version: 4.20.13-200.fc29.x86_64
      Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))"
      Scm-Connection: scm:git:http://gitbox.apache.org/repos/asf/camel.git/cam
       el-parent/components/camel-bonita
      Scm-Revision: d4505ad3c502e81780e7db8160caedb52a3b93cc
      Scm-Url: https://gitbox.apache.org/repos/asf?p=camel.git;a=summary/camel
       -parent/components/camel-bonita
      Specification-Title: Camel :: Bonita
      Specification-Vendor: The Apache Software Foundation
      Specification-Version: 2.21.0.fuse-730065-redhat-00001
      Tool: Bnd-3.5.0.201709291849
      

      The problem is:

       javax.ws.rs.client;version="${range;[==,+)}",
       javax.ws.rs.core;version="${range;[==,+)}",
      

      so I checked what's the problem with javax.ws.rs API jar. The PME commit has:

      -    <javax.ws.rs-api-version>2.1.1</javax.ws.rs-api-version>
      +    <javax.ws.rs-api-version>2.1.1.redhat-00002</javax.ws.rs-api-version>
      

      So I looked at the difference.

      2.1.1 has in MANIFEST.MF:

      Export-Package: javax.ws.rs.client;uses:="javax.net.ssl,javax.ws.rs,ja
       vax.ws.rs.core";version="2.1.99",javax.ws.rs.core;uses:="javax.ws.rs,
       javax.xml.bind.annotation,javax.xml.bind.annotation.adapters,javax.xm
       l.namespace";version="2.1.99",javax.ws.rs;uses:="javax.ws.rs.core";ve
       rsion="2.1.99",javax.ws.rs.ext;uses:="javax.ws.rs,javax.ws.rs.core";v
       ersion="2.1.99",javax.ws.rs.container;uses:="javax.ws.rs.core";versio
       n="2.1.99",javax.ws.rs.sse;uses:="javax.ws.rs.client,javax.ws.rs.core
       ";version="2.1.99"
      Extension-Name: javax.ws.rs
      Implementation-Version: 2.1.1
      Import-Package: javax.net.ssl,javax.ws.rs,javax.ws.rs.client,javax.ws.
       rs.core,javax.ws.rs.ext,javax.xml.bind.annotation,javax.xml.bind.anno
       tation.adapters,javax.xml.namespace
      Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))"
      Specification-Vendor: Oracle Corporation
      Specification-Version: 2.1.99.01
      

      2.1.1.redhat-00002 has in MANIFEST.MF:

      Export-Package: javax.ws.rs.container;uses:="javax.ws.rs.core";version
       ="",javax.ws.rs.client;uses:="javax.net.ssl,javax.ws.rs,javax.ws.rs.c
       ore";version="",javax.ws.rs.core;uses:="javax.ws.rs,javax.xml.bind.an
       notation,javax.xml.bind.annotation.adapters,javax.xml.namespace";vers
       ion="",javax.ws.rs.ext;uses:="javax.ws.rs,javax.ws.rs.core";version="
       ",javax.ws.rs;uses:="javax.ws.rs.core";version="",javax.ws.rs.sse;use
       s:="javax.ws.rs.client,javax.ws.rs.core";version=""
      Import-Package: javax.net.ssl,javax.ws.rs,javax.ws.rs.client,javax.ws.
       rs.core,javax.ws.rs.ext,javax.xml.bind.annotation,javax.xml.bind.anno
       tation.adapters,javax.xml.namespace
      Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))"
      Specification-Vendor: Oracle Corporation
      Tool: Bnd-3.3.0.201609221906
      

      Mind that there's no Specification-Version header in productized jar.

      original POM has:

      <plugin>
          <groupId>org.apache.felix</groupId>
          <artifactId>maven-bundle-plugin</artifactId>
          <version>${maven.bundle.plugin.version}</version>
          <extensions>true</extensions>
          <configuration>
              <instructions>
      ...
                  <Specification-Version>${spec.specification.version}</Specification-Version>
                  <specversion>${spec.specification.version}</specversion>
      

      This property (spec.specification.version) is never used in other places and my guess is that Oracle (or whatever subcontractor) builds this jar using:

      mvn clean install -Dspec.specification.version=2.1.99.01
      

      I don't think our productization is doing that.

      I wonder how many more such cases will find among deps automatically injected by PME...

              janstey@redhat.com Jonathan Anstey
              ggrzybek Grzegorz Grzybek
              Viliam Kasala Viliam Kasala
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

                Created:
                Updated:
                Resolved: