Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 319390 - site.p2 action fails during headless build with "Invalid signature file digest for Manifest"
Summary: site.p2 action fails during headless build with "Invalid signature file diges...
Status: NEW
Alias: None
Product: z_Archived
Classification: Eclipse Foundation
Component: Buckminster (show other bugs)
Version: unspecified   Edit
Hardware: PC Linux
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: buckminster.core-inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-07-09 09:51 EDT by Stefan Sperling CLA
Modified: 2019-02-25 14:41 EST (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Stefan Sperling CLA 2010-07-09 09:51:28 EDT
Build Identifier: org.eclipse.buckminster.cmdline_1.0.350.r11146.jar

I'm building a p2 update-site for an RCP application using buckminster.
The RCP application is a custom Eclipse SDK, realised as an Eclipse feature which requires needed IDE features (e.g. Subversive, Google Web Toolkit, and some other Eclipse plugins).
I can build the update-site fine by invoking the site.p2 action from the Eclipse IDE, using buckminster Core and PDE support installed from http://download.eclipse.org/tools/buckminster/updates-3.5

However, when I try the same with headless Buckminster (installed from the headless update site for 3.5), it fails with the following trace:

Caused by: java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
        at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:221)
        at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:176)
        at java.util.jar.JarVerifier.processEntry(JarVerifier.java:245)
        at java.util.jar.JarVerifier.update(JarVerifier.java:199)
        at java.util.jar.JarFile.initializeVerifier(JarFile.java:323)
        at java.util.jar.JarFile.getInputStream(JarFile.java:388)
        at org.eclipse.buckminster.pde.tasks.GroupConsolidator.getInput(GroupConsolidator.java:135)

while reading the file org.eclipse.wtp.epp.package.jee.intro_1.2.0.20090617-0522.jar
from within buckminster's build output directory.

jarsigner -verify also fails to verify the jar.
The jar seems to be re-packed, and is missing files that are present in the jar downloaded from eclipse.org. Below is a diff between the two unpacked jars.
'jar' is the broken jar, 'jar2' is the jar from eclipse.org (which verifies fine):

diff -urN jar/about.html jar2/about.html
--- jar/about.html	1970-01-01 01:00:00.000000000 +0100
+++ jar2/about.html	2010-07-09 14:50:32.000000000 +0200
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<HTML>
+
+<head>
+<title>About</title>
+<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
+</head>
+
+<BODY lang="EN-US">
+
+<H3>About This Content</H3>
+
+<P>June, 2008</P>
+
+<H3>License</H3>
+
+<P>The Eclipse Foundation makes available all content in this plug-in 
+("Content"). Unless otherwise indicated below, the Content is provided to you 
+under the terms and conditions of the Eclipse Public License Version 1.0 
+("EPL"). A copy of the EPL is available at
+<A href="http://www.eclipse.org/org/documents/epl-v10.php">http://www.eclipse.org/org/documents/epl-v10.php</A>. 
+For purposes of the EPL, "Program" will mean the Content.</P>
+
+<P>If you did not receive this Content directly from the Eclipse Foundation, the 
+Content is being redistributed by another party ("Redistributor") and different 
+terms and conditions may apply to your use of any object code in the Content. 
+Check the Redistributor's license that was provided with the Content. If no such 
+license exists, contact the Redistributor. Unless otherwise indicated below, the 
+terms and conditions of the EPL still apply to any source code in the Content 
+and such source code may be obtained at
+<A href="http://www.eclipse.org/">http://www.eclipse.org/</A>.</P>
+
+</BODY>
+</HTML>
diff -urN jar/.classpath jar2/.classpath
--- jar/.classpath	1970-01-01 01:00:00.000000000 +0100
+++ jar2/.classpath	2010-07-09 14:50:32.000000000 +0200
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path=""/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff -urN jar/META-INF/MANIFEST.MF jar2/META-INF/MANIFEST.MF
--- jar/META-INF/MANIFEST.MF	2010-07-09 14:40:29.000000000 +0200
+++ jar2/META-INF/MANIFEST.MF	2010-07-09 14:50:32.000000000 +0200
@@ -1,6 +1,5 @@
 Manifest-Version: 1.0

 Ant-Version: Apache Ant 1.7.1

-Created-By: 2.3 (IBM Corporation)

 Bundle-Vendor: %pluginProvider

 Bundle-ActivationPolicy: lazy

 Bundle-Localization: plugin

@@ -10,6 +9,7 @@
  true

 Require-Bundle: org.eclipse.ui,org.eclipse.core.runtime,org.eclipse.ui

  .intro,org.eclipse.swt,org.eclipse.jface,org.eclipse.ui.workbench

+Created-By: 2.3 (IBM Corporation)

 Bundle-Version: 1.2.0.20090617-0522

 Bundle-ManifestVersion: 2

 

diff -urN jar/.project jar2/.project
--- jar/.project	1970-01-01 01:00:00.000000000 +0100
+++ jar2/.project	2010-07-09 14:50:32.000000000 +0200
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.wtp.epp.package.jee.intro</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff -urN jar/.settings/org.eclipse.jdt.core.prefs jar2/.settings/org.eclipse.jdt.core.prefs
--- jar/.settings/org.eclipse.jdt.core.prefs	1970-01-01 01:00:00.000000000 +0100
+++ jar2/.settings/org.eclipse.jdt.core.prefs	2010-07-09 14:50:32.000000000 +0200
@@ -0,0 +1,8 @@
+#Wed May 20 09:30:27 EEST 2009
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5

This looks like a bug so I am reporting it here.

Is there anything I can do to prevent the headless build from changing the jar file? We would like to build the Eclipse SDK with hudson, but are forced to perform the site.p2 action from within the Eclipse IDE because of this problem. Thanks.

Reproducible: Always
Comment 1 Stefan Sperling CLA 2010-07-09 10:16:09 EDT
Here's the full stack trace from the entry point of getInput() (shortly before the corrupt jar file is opened):

  [1] org.eclipse.buckminster.pde.tasks.GroupConsolidator.getInput (GroupConsolidator.java:135)
  [2] org.eclipse.buckminster.pde.tasks.GroupConsolidator.<init> (GroupConsolidator.java:227)
  [3] org.eclipse.buckminster.pde.tasks.FeatureConsolidator.<init> (FeatureConsolidator.java:42)
  [4] org.eclipse.buckminster.pde.ant.FeatureConsolidatorTask.execute (FeatureConsolidatorTask.java:99)
  [5] org.apache.tools.ant.UnknownElement.execute (UnknownElement.java:288)
  [6] sun.reflect.NativeMethodAccessorImpl.invoke0 (native method)
  [7] sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39)
  [8] sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
  [9] java.lang.reflect.Method.invoke (Method.java:597)
  [10] org.apache.tools.ant.dispatch.DispatchUtils.execute (DispatchUtils.java:106)
  [11] org.apache.tools.ant.Task.perform (Task.java:348)
  [12] org.apache.tools.ant.Target.execute (Target.java:357)
  [13] org.apache.tools.ant.Target.performTasks (Target.java:385)
  [14] org.apache.tools.ant.Project.executeSortedTargets (Project.java:1,337)
  [15] org.apache.tools.ant.Project.executeTarget (Project.java:1,306)
  [16] org.apache.tools.ant.helper.DefaultExecutor.executeTargets (DefaultExecutor.java:41)
  [17] org.eclipse.ant.internal.core.ant.EclipseDefaultExecutor.executeTargets (EclipseDefaultExecutor.java:32)
  [18] org.apache.tools.ant.Project.executeTargets (Project.java:1,189)
  [19] org.eclipse.ant.internal.core.ant.InternalAntRunner.run (InternalAntRunner.java:662)
  [20] org.eclipse.ant.internal.core.ant.InternalAntRunner.run (InternalAntRunner.java:495)
  [21] sun.reflect.NativeMethodAccessorImpl.invoke0 (native method)
  [22] sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39)
  [23] sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
  [24] java.lang.reflect.Method.invoke (Method.java:597)
  [25] org.eclipse.buckminster.ant.AntRunner.run (AntRunner.java:344)
  [26] org.eclipse.buckminster.ant.actor.AntActor.internalPerform (AntActor.java:281)
  [27] org.eclipse.buckminster.core.actor.AbstractActor.perform (AbstractActor.java:201)
  [28] org.eclipse.buckminster.core.internal.actor.PerformManager$DirectActionInvocation.execute (PerformManager.java:151)
  [29] org.eclipse.buckminster.core.internal.actor.PerformManager.internalPerform (PerformManager.java:507)
  [30] org.eclipse.buckminster.core.internal.actor.PerformManager.perform (PerformManager.java:335)
  [31] org.eclipse.buckminster.core.internal.actor.PerformManager.perform (PerformManager.java:350)
  [32] org.eclipse.buckminster.core.commands.Perform.internalRun (Perform.java:118)
  [33] org.eclipse.buckminster.core.commands.WorkspaceCommand.run (WorkspaceCommand.java:191)
  [34] org.eclipse.buckminster.cmdline.AbstractCommand.basicRun (AbstractCommand.java:155)
  [35] org.eclipse.buckminster.cmdline.Headless.run (Headless.java:341)
  [36] org.eclipse.buckminster.cmdline.Headless.run (Headless.java:135)
  [37] org.eclipse.buckminster.cmdline.Headless.start (Headless.java:189)
  [38] org.eclipse.equinox.internal.app.EclipseAppHandle.run (EclipseAppHandle.java:194)
  [39] org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication (EclipseAppLauncher.java:110)
  [40] org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start (EclipseAppLauncher.java:79)
  [41] org.eclipse.core.runtime.adaptor.EclipseStarter.run (EclipseStarter.java:368)
  [42] org.eclipse.core.runtime.adaptor.EclipseStarter.run (EclipseStarter.java:179)
  [43] sun.reflect.NativeMethodAccessorImpl.invoke0 (native method)
  [44] sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39)
  [45] sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
  [46] java.lang.reflect.Method.invoke (Method.java:597)
  [47] org.eclipse.equinox.launcher.Main.invokeFramework (Main.java:559)
  [48] org.eclipse.equinox.launcher.Main.basicRun (Main.java:514)
  [49] org.eclipse.equinox.launcher.Main.run (Main.java:1,311)
  [50] org.eclipse.equinox.launcher.Main.main (Main.java:1,287)
Comment 2 Thomas Hallgren CLA 2010-07-13 03:59:26 EDT
A lot of issues related to signing was fixed in Buckminster 3.6. Can you please try that and see if the problem persists?