[jenkins] 01/32: d/patches: Switch to using patch-queue for managing patches.
James Downing Page
jamespage at alioth.debian.org
Tue Aug 13 11:46:53 UTC 2013
This is an automated email from the git hooks/post-receive script.
jamespage pushed a commit to branch master
in repository jenkins.
commit f5c8a4308d6e06bda4c9b0d8515636e1150d352e
Author: James Page <james.page at ubuntu.com>
Date: Sun Aug 11 10:44:57 2013 +0100
d/patches: Switch to using patch-queue for managing patches.
---
debian/changelog | 6 +
debian/patches/build/0001-build.patch | 55 +++
debian/patches/build/0002-openjdk6.patch | 45 ++
.../build/0003-remove-licensing-report.patch | 42 ++
debian/patches/build/0004-disable-plugins.patch | 91 ++++
.../build/0005-apt-stapler-processing.patch | 37 ++
.../build/0006-jenkins-version-number.patch | 501 ++++++++++++++++++++
debian/patches/build/0007-remove-findbugs.patch | 135 ++++++
debian/patches/build/0014-use-stock-jmdns.patch | 30 ++
debian/patches/build/0016-use-stock-asm3.patch | 49 ++
debian/patches/build/0017-use-debian-jbcrypt.patch | 21 +
.../patches/build/0018-ignore-plugin-pom.xml.patch | 20 +
debian/patches/build/0019-fileupload-compat.patch | 33 ++
debian/patches/build/0020-io-compat.pach.patch | 33 ++
.../0013-jnr-posix-upgrade.patch | 86 ++++
.../0008-windows-service-disable.patch | 45 ++
.../0009-filter-native-integrations.patch | 30 ++
.../0010-purge-embedded-su4j.patch | 42 ++
.../native-integration/0011-purge-winp.patch | 120 +++++
.../0012-purge-windows-support.patch | 28 ++
debian/patches/series | 40 +-
debian/patches/ubuntu/0015-ubuntu-font.patch | 30 ++
22 files changed, 1499 insertions(+), 20 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index 8fbec3b..3426b48 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+jenkins (1.480.3+dfsg-1ubuntu1) UNRELEASED; urgency=low
+
+ * d/patches: Switch to using patch-queue for managing patches.
+
+ -- James Page <james.page at ubuntu.com> Sun, 11 Aug 2013 10:44:19 +0100
+
jenkins (1.480.3+dfsg-1) unstable; urgency=low
* Upload to unstable (Closes: #713394, #713423)
diff --git a/debian/patches/build/0001-build.patch b/debian/patches/build/0001-build.patch
new file mode 100644
index 0000000..0b48a06
--- /dev/null
+++ b/debian/patches/build/0001-build.patch
@@ -0,0 +1,55 @@
+From: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
+Date: Sun, 11 Aug 2013 10:41:38 +0100
+Subject: build
+
+---
+ core/pom.xml | 10 ++++++++++
+ pom.xml | 6 ------
+ 2 files changed, 10 insertions(+), 6 deletions(-)
+
+diff --git a/core/pom.xml b/core/pom.xml
+index aeb3ded..f7bef0b 100644
+--- a/core/pom.xml
++++ b/core/pom.xml
+@@ -326,6 +326,16 @@ THE SOFTWARE.
+ <groupId>commons-jelly</groupId>
+ <artifactId>commons-jelly-tags-fmt</artifactId>
+ <version>1.0</version>
++ <exclusions>
++ <exclusion>
++ <groupId>commons-jelly</groupId>
++ <artifactId>commons-jelly</artifactId>
++ </exclusion>
++ <exclusion>
++ <groupId>commons-jexl</groupId>
++ <artifactId>commons-jexl</artifactId>
++ </exclusion>
++ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>commons-jelly</groupId>
+diff --git a/pom.xml b/pom.xml
+index f1823c0..2800795 100644
+--- a/pom.xml
++++ b/pom.xml
+@@ -48,10 +48,7 @@ THE SOFTWARE.
+
+ <modules>
+ <module>core</module>
+- <module>maven-plugin</module>
+- <module>ui-samples-plugin</module>
+ <module>war</module>
+- <module>test</module>
+ <module>cli</module>
+ <module>plugins</module>
+ </modules>
+@@ -581,9 +578,6 @@ THE SOFTWARE.
+ <requireJavaVersion>
+ <version>1.6.0-18</version>
+ </requireJavaVersion>
+- <requireMavenVersion>
+- <version>3.0</version>
+- </requireMavenVersion>
+ </rules>
+ </configuration>
+ </execution>
diff --git a/debian/patches/build/0002-openjdk6.patch b/debian/patches/build/0002-openjdk6.patch
new file mode 100644
index 0000000..af70e59
--- /dev/null
+++ b/debian/patches/build/0002-openjdk6.patch
@@ -0,0 +1,45 @@
+From: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
+Date: Sun, 11 Aug 2013 10:41:38 +0100
+Subject: openjdk6
+
+---
+ core/src/main/java/hudson/DescriptorExtensionList.java | 5 +++--
+ core/src/main/java/hudson/model/AbstractBuild.java | 9 +++++++++
+ 2 files changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/core/src/main/java/hudson/DescriptorExtensionList.java b/core/src/main/java/hudson/DescriptorExtensionList.java
+index 0778c46..8bc6f20 100644
+--- a/core/src/main/java/hudson/DescriptorExtensionList.java
++++ b/core/src/main/java/hudson/DescriptorExtensionList.java
+@@ -81,8 +81,9 @@ public class DescriptorExtensionList<T extends Describable<T>, D extends Descrip
+ * @deprecated as of 1.416
+ * Use {@link #create(Jenkins, Class)}
+ */
+- public static <T extends Describable<T>,D extends Descriptor<T>>
+- DescriptorExtensionList<T,D> createDescriptorList(Hudson hudson, Class<T> describableType) {
++ @SuppressWarnings({"unchecked", "rawtypes"})
++ public static /*<T extends Describable<T>,D extends Descriptor<T>>*/
++ DescriptorExtensionList/*<T,D>*/ createDescriptorList(Hudson hudson, Class/*<T>*/ describableType) {
+ return createDescriptorList((Jenkins)hudson,describableType);
+ }
+
+diff --git a/core/src/main/java/hudson/model/AbstractBuild.java b/core/src/main/java/hudson/model/AbstractBuild.java
+index 26e536d..ffe3898 100644
+--- a/core/src/main/java/hudson/model/AbstractBuild.java
++++ b/core/src/main/java/hudson/model/AbstractBuild.java
+@@ -1276,6 +1276,15 @@ public abstract class AbstractBuild<P extends AbstractProject<P,R>,R extends Abs
+ }
+
+ private static final Logger LOGGER = Logger.getLogger(AbstractBuild.class.getName());
++
++ /**
++ * The project this build is for.
++ */
++ public P getParent() {
++ return (P)super.getParent();
++ }
++
++
+ }
+
+
diff --git a/debian/patches/build/0003-remove-licensing-report.patch b/debian/patches/build/0003-remove-licensing-report.patch
new file mode 100644
index 0000000..87e0681
--- /dev/null
+++ b/debian/patches/build/0003-remove-licensing-report.patch
@@ -0,0 +1,42 @@
+From: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
+Date: Sun, 11 Aug 2013 10:41:38 +0100
+Subject: remove-licensing-report
+
+---
+ core/src/main/resources/hudson/AboutJenkins/index.jelly | 7 -------
+ core/src/main/resources/hudson/AboutJenkins/index.properties | 4 ++--
+ 2 files changed, 2 insertions(+), 9 deletions(-)
+
+diff --git a/core/src/main/resources/hudson/AboutJenkins/index.jelly b/core/src/main/resources/hudson/AboutJenkins/index.jelly
+index ac9a036..21e3d00 100644
+--- a/core/src/main/resources/hudson/AboutJenkins/index.jelly
++++ b/core/src/main/resources/hudson/AboutJenkins/index.jelly
+@@ -31,13 +31,6 @@ THE SOFTWARE.
+ <p>
+ ${%blurb}
+ </p>
+-
+- <p>
+- ${%dependencies}
+- </p>
+- <t:thirdPartyLicenses>
+- <st:include page="/META-INF/licenses.xml" optional="true" />
+- </t:thirdPartyLicenses>
+ </l:main-panel>
+ </l:layout>
+ </j:jelly>
+diff --git a/core/src/main/resources/hudson/AboutJenkins/index.properties b/core/src/main/resources/hudson/AboutJenkins/index.properties
+index 08f9d8a..8b1e58d 100644
+--- a/core/src/main/resources/hudson/AboutJenkins/index.properties
++++ b/core/src/main/resources/hudson/AboutJenkins/index.properties
+@@ -20,7 +20,7 @@
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ # THE SOFTWARE.
+
+-about=About Jenkins {0}
++about=About Jenkins {0} (Debian/Ubuntu distribution)
+ blurb=<a href="http://jenkins-ci.org/">Jenkins</a> is a community-developed open-source continuous integration server.
+
+-dependencies=Jenkins depends on the following 3rd party libraries.
+\ No newline at end of file
++dependencies=Jenkins depends on the following 3rd party libraries.
diff --git a/debian/patches/build/0004-disable-plugins.patch b/debian/patches/build/0004-disable-plugins.patch
new file mode 100644
index 0000000..3e22487
--- /dev/null
+++ b/debian/patches/build/0004-disable-plugins.patch
@@ -0,0 +1,91 @@
+From: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
+Date: Sun, 11 Aug 2013 10:41:38 +0100
+Subject: disable-plugins
+
+---
+ war/pom.xml | 65 +++++--------------------------------------------------------
+ 1 file changed, 5 insertions(+), 60 deletions(-)
+
+diff --git a/war/pom.xml b/war/pom.xml
+index e2eb447..1ba526a 100644
+--- a/war/pom.xml
++++ b/war/pom.xml
+@@ -174,6 +174,11 @@ THE SOFTWARE.
+ <scope>system</scope>
+ <systemPath>/usr/local/yjp/lib/yjp.jar</systemPath>
+ </dependency-->
++ <dependency>
++ <groupId>commons-httpclient</groupId>
++ <artifactId>commons-httpclient</artifactId>
++ <version>3.1-rc1</version>
++ </dependency>
+ </dependencies>
+
+ <build>
+@@ -261,66 +266,6 @@ THE SOFTWARE.
+ <outputDirectory>${project.build.directory}/${project.build.finalName}</outputDirectory>
+ <destFileName>winstone.jar</destFileName>
+ </artifactItem>
+- <!-- bundled plugins -->
+- <artifactItem>
+- <groupId>${project.groupId}</groupId>
+- <artifactId>maven-plugin</artifactId>
+- <type>hpi</type>
+- </artifactItem>
+- <artifactItem>
+- <groupId>org.jenkins-ci.plugins</groupId>
+- <artifactId>ssh-slaves</artifactId>
+- <version>0.21</version>
+- <type>hpi</type>
+- </artifactItem>
+- <artifactItem>
+- <groupId>org.jenkins-ci.plugins</groupId>
+- <artifactId>subversion</artifactId>
+- <version>1.39</version>
+- <type>hpi</type>
+- </artifactItem>
+- <artifactItem>
+- <groupId>org.jenkins-ci.plugins</groupId>
+- <artifactId>cvs</artifactId>
+- <version>1.6</version>
+- <type>hpi</type>
+- </artifactItem>
+- <artifactItem>
+- <groupId>org.jenkins-ci.plugins</groupId>
+- <artifactId>ant</artifactId>
+- <version>1.1</version>
+- <type>hpi</type>
+- </artifactItem>
+- <artifactItem>
+- <groupId>org.jenkins-ci.plugins</groupId>
+- <artifactId>javadoc</artifactId>
+- <version>1.0</version>
+- <type>hpi</type>
+- </artifactItem>
+- <artifactItem>
+- <groupId>org.jenkins-ci.plugins</groupId>
+- <artifactId>translation</artifactId>
+- <version>1.8</version>
+- <type>hpi</type>
+- </artifactItem>
+- <artifactItem>
+- <groupId>org.jenkins-ci.plugins</groupId>
+- <artifactId>external-monitor-job</artifactId>
+- <version>1.1</version>
+- <type>hpi</type>
+- </artifactItem>
+- <artifactItem>
+- <groupId>org.jenkins-ci.plugins</groupId>
+- <artifactId>ldap</artifactId>
+- <version>1.1</version>
+- <type>hpi</type>
+- </artifactItem>
+- <artifactItem>
+- <groupId>org.jenkins-ci.plugins</groupId>
+- <artifactId>pam-auth</artifactId>
+- <version>1.0</version>
+- <type>hpi</type>
+- </artifactItem>
+ </artifactItems>
+ <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/plugins</outputDirectory>
+ <stripVersion>true</stripVersion>
diff --git a/debian/patches/build/0005-apt-stapler-processing.patch b/debian/patches/build/0005-apt-stapler-processing.patch
new file mode 100644
index 0000000..333809a
--- /dev/null
+++ b/debian/patches/build/0005-apt-stapler-processing.patch
@@ -0,0 +1,37 @@
+From: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
+Date: Sun, 11 Aug 2013 10:41:38 +0100
+Subject: apt-stapler-processing
+
+---
+ core/pom.xml | 18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+diff --git a/core/pom.xml b/core/pom.xml
+index f7bef0b..18d777f 100644
+--- a/core/pom.xml
++++ b/core/pom.xml
+@@ -652,6 +652,24 @@ THE SOFTWARE.
+ </executions>
+ </plugin>
+ <plugin>
++ <groupId>org.apache.maven.plugins</groupId>
++ <artifactId>maven-compiler-plugin</artifactId>
++ <version>2.3.2</version>
++ <configuration>
++ <excludes>
++ <exclude>**/os/solaris/*</exclude>
++ <exclude>**/os/windows/*</exclude>
++ <exclude>**/DCOMSandbox.java</exclude>
++ <exclude>**/DotNet.java</exclude>
++ <exclude>**/WindowsSlaveInstaller.java</exclude>
++ <exclude>**/WindowsInstallerLink.java</exclude>
++ </excludes>
++ <testExcludes>
++ <exclude>**/DCOMSandbox.java</exclude>
++ </testExcludes>
++ </configuration>
++ </plugin>
++ <plugin>
+ <groupId>org.kohsuke.stapler</groupId>
+ <artifactId>maven-stapler-plugin</artifactId>
+ <version>1.16</version>
diff --git a/debian/patches/build/0006-jenkins-version-number.patch b/debian/patches/build/0006-jenkins-version-number.patch
new file mode 100644
index 0000000..21856c6
--- /dev/null
+++ b/debian/patches/build/0006-jenkins-version-number.patch
@@ -0,0 +1,501 @@
+From: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
+Date: Sun, 11 Aug 2013 10:41:38 +0100
+Subject: jenkins-version-number
+
+---
+ core/src/main/java/hudson/util/VersionNumber.java | 486 ++++++++++++++++++++++
+ 1 file changed, 486 insertions(+)
+ create mode 100644 core/src/main/java/hudson/util/VersionNumber.java
+
+diff --git a/core/src/main/java/hudson/util/VersionNumber.java b/core/src/main/java/hudson/util/VersionNumber.java
+new file mode 100644
+index 0000000..afa8688
+--- /dev/null
++++ b/core/src/main/java/hudson/util/VersionNumber.java
+@@ -0,0 +1,486 @@
++package hudson.util;
++
++/*
++ * Licensed to the Apache Software Foundation (ASF) under one
++ * or more contributor license agreements. See the NOTICE file
++ * distributed with this work for additional information
++ * regarding copyright ownership. The ASF licenses this file
++ * to you under the Apache License, Version 2.0 (the
++ * "License"); you may not use this file except in compliance
++ * with the License. You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing,
++ * software distributed under the License is distributed on an
++ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
++ * KIND, either express or implied. See the License for the
++ * specific language governing permissions and limitations
++ * under the License.
++ */
++
++import java.math.BigInteger;
++import java.util.ArrayList;
++import java.util.Arrays;
++import java.util.Comparator;
++import java.util.Iterator;
++import java.util.List;
++import java.util.ListIterator;
++import java.util.Locale;
++import java.util.Properties;
++import java.util.Stack;
++
++/**
++ * Immutable representation of a version number based on the Mercury version numbering scheme.
++ *
++ * {@link VersionNumber}s are {@link Comparable}.
++ *
++ * <h2>Special tokens</h2>
++ * <p>
++ * We allow a component to be not just a number, but also "ea", "ea1", "ea2".
++ * "ea" is treated as "ea0", and eaN < M for any M > 0.
++ *
++ * <p>
++ * '*' is also allowed as a component, and '*' > M for any M > 0.
++ *
++ * <p>
++ * 'SNAPSHOT' is also allowed as a component, and "N.SNAPSHOT" is interpreted as "N-1.*"
++ *
++ * <pre>
++ * 2.0.* > 2.0.1 > 2.0.1-SNAPSHOT > 2.0.0.99 > 2.0.0 > 2.0.ea > 2.0
++ * </pre>
++ *
++ * This class is re-implemented in 1.415. The class was originally introduced in 1.139
++ *
++ * @since 1.139
++ * @author Stephen Connolly (stephenc at apache.org)
++ * @author Kenney Westerhof (kenney at apache.org)
++ * @author Hervé Boutemy (hboutemy at apache.org)
++ */
++public class VersionNumber implements Comparable<VersionNumber> {
++ private String value;
++
++ private String canonical;
++
++ private ListItem items;
++
++ private interface Item {
++ public static final int INTEGER_ITEM = 0;
++
++ public static final int STRING_ITEM = 1;
++
++ public static final int LIST_ITEM = 2;
++
++ public static final int WILDCARD_ITEM = 3;
++
++ public int compareTo(Item item);
++
++ public int getType();
++
++ public boolean isNull();
++ }
++
++ /**
++ * Represents a wild-card item in the version item list.
++ */
++ private static class WildCardItem implements Item {
++
++ public int compareTo(Item item) {
++ if (item==null) // 1.* ( > 1.99) > 1
++ return 1;
++ switch (item.getType()) {
++ case INTEGER_ITEM:
++ case LIST_ITEM:
++ case STRING_ITEM:
++ return 1;
++ case WILDCARD_ITEM:
++ return 0;
++ default:
++ return 1;
++ }
++ }
++
++ public int getType() {
++ return WILDCARD_ITEM;
++ }
++
++ public boolean isNull() {
++ return false;
++ }
++
++ @Override
++ public String toString() {
++ return "*";
++ }
++ }
++
++ /**
++ * Represents a numeric item in the version item list.
++ */
++ private static class IntegerItem
++ implements Item {
++ private static final BigInteger BigInteger_ZERO = new BigInteger("0");
++
++ private final BigInteger value;
++
++ public static final IntegerItem ZERO = new IntegerItem();
++
++ private IntegerItem() {
++ this.value = BigInteger_ZERO;
++ }
++
++ public IntegerItem(String str) {
++ this.value = new BigInteger(str);
++ }
++
++ public int getType() {
++ return INTEGER_ITEM;
++ }
++
++ public boolean isNull() {
++ return BigInteger_ZERO.equals(value);
++ }
++
++ public int compareTo(Item item) {
++ if (item == null) {
++ return BigInteger_ZERO.equals(value) ? 0 : 1; // 1.0 == 1, 1.1 > 1
++ }
++
++ switch (item.getType()) {
++ case INTEGER_ITEM:
++ return value.compareTo(((IntegerItem) item).value);
++
++ case STRING_ITEM:
++ return 1; // 1.1 > 1-sp
++
++ case LIST_ITEM:
++ return 1; // 1.1 > 1-1
++
++ case WILDCARD_ITEM:
++ return 0;
++
++ default:
++ throw new RuntimeException("invalid item: " + item.getClass());
++ }
++ }
++
++ public String toString() {
++ return value.toString();
++ }
++ }
++
++ /**
++ * Represents a string in the version item list, usually a qualifier.
++ */
++ private static class StringItem implements Item {
++ private final static String[] QUALIFIERS = {"snapshot", "alpha", "beta", "milestone", "rc", "", "sp"};
++
++ private final static List<String> _QUALIFIERS = Arrays.asList(QUALIFIERS);
++
++ private final static Properties ALIASES = new Properties();
++
++ static {
++ ALIASES.put("ga", "");
++ ALIASES.put("final", "");
++ ALIASES.put("cr", "rc");
++ ALIASES.put("ea", "rc");
++ }
++
++ /**
++ * A comparable for the empty-string qualifier. This one is used to determine if a given qualifier makes the
++ * version older than one without a qualifier, or more recent.
++ */
++ private static String RELEASE_VERSION_INDEX = String.valueOf(_QUALIFIERS.indexOf(""));
++
++ private String value;
++
++ public StringItem(String value, boolean followedByDigit) {
++ if (followedByDigit && value.length() == 1) {
++ // a1 = alpha-1, b1 = beta-1, m1 = milestone-1
++ switch (value.charAt(0)) {
++ case 'a':
++ value = "alpha";
++ break;
++ case 'b':
++ value = "beta";
++ break;
++ case 'm':
++ value = "milestone";
++ break;
++ }
++ }
++ this.value = ALIASES.getProperty(value, value);
++ }
++
++ public int getType() {
++ return STRING_ITEM;
++ }
++
++ public boolean isNull() {
++ return (comparableQualifier(value).compareTo(RELEASE_VERSION_INDEX) == 0);
++ }
++
++ /**
++ * Returns a comparable for a qualifier.
++ * <p/>
++ * This method both takes into account the ordering of known qualifiers as well as lexical ordering for unknown
++ * qualifiers.
++ * <p/>
++ * just returning an Integer with the index here is faster, but requires a lot of if/then/else to check for -1
++ * or QUALIFIERS.size and then resort to lexical ordering. Most comparisons are decided by the first character,
++ * so this is still fast. If more characters are needed then it requires a lexical sort anyway.
++ *
++ * @param qualifier
++ * @return
++ */
++ public static String comparableQualifier(String qualifier) {
++ int i = _QUALIFIERS.indexOf(qualifier);
++
++ return i == -1 ? _QUALIFIERS.size() + "-" + qualifier : String.valueOf(i);
++ }
++
++ public int compareTo(Item item) {
++ if (item == null) {
++ // 1-rc < 1, 1-ga > 1
++ return comparableQualifier(value).compareTo(RELEASE_VERSION_INDEX);
++ }
++ switch (item.getType()) {
++ case INTEGER_ITEM:
++ return -1; // 1.any < 1.1 ?
++
++ case STRING_ITEM:
++ return comparableQualifier(value).compareTo(comparableQualifier(((StringItem) item).value));
++
++ case LIST_ITEM:
++ return -1; // 1.any < 1-1
++
++ case WILDCARD_ITEM:
++ return -1;
++
++ default:
++ throw new RuntimeException("invalid item: " + item.getClass());
++ }
++ }
++
++ public String toString() {
++ return value;
++ }
++ }
++
++ /**
++ * Represents a version list item. This class is used both for the global item list and for sub-lists (which start
++ * with '-(number)' in the version specification).
++ */
++ private static class ListItem extends ArrayList<Item> implements Item {
++ public int getType() {
++ return LIST_ITEM;
++ }
++
++ public boolean isNull() {
++ return (size() == 0);
++ }
++
++ void normalize() {
++ for (ListIterator iterator = listIterator(size()); iterator.hasPrevious(); ) {
++ Item item = (Item) iterator.previous();
++ if (item.isNull()) {
++ iterator.remove(); // remove null trailing items: 0, "", empty list
++ } else {
++ break;
++ }
++ }
++ }
++
++ public int compareTo(Item item) {
++ if (item == null) {
++ if (size() == 0) {
++ return 0; // 1-0 = 1- (normalize) = 1
++ }
++ Item first = (Item) get(0);
++ return first.compareTo(null);
++ }
++
++ switch (item.getType()) {
++ case INTEGER_ITEM:
++ return -1; // 1-1 < 1.0.x
++
++ case STRING_ITEM:
++ return 1; // 1-1 > 1-sp
++
++ case LIST_ITEM:
++ Iterator left = iterator();
++ Iterator right = ((ListItem) item).iterator();
++
++ while (left.hasNext() || right.hasNext()) {
++ Item l = left.hasNext() ? (Item) left.next() : null;
++ Item r = right.hasNext() ? (Item) right.next() : null;
++
++ // if this is shorter, then invert the compare and mul with -1
++ int result = l == null ? -1 * r.compareTo(l) : l.compareTo(r);
++
++ if (result != 0) {
++ return result;
++ }
++ }
++
++ return 0;
++
++ case WILDCARD_ITEM:
++ return -1;
++
++ default:
++ throw new RuntimeException("invalid item: " + item.getClass());
++ }
++ }
++
++ public String toString() {
++ StringBuilder buffer = new StringBuilder("(");
++ for (Iterator<Item> iter = iterator(); iter.hasNext(); ) {
++ buffer.append(iter.next());
++ if (iter.hasNext()) {
++ buffer.append(',');
++ }
++ }
++ buffer.append(')');
++ return buffer.toString();
++ }
++ }
++
++ public VersionNumber(String version) {
++ parseVersion(version);
++ }
++
++ private void parseVersion(String version) {
++ this.value = version;
++
++ items = new ListItem();
++
++ version = version.toLowerCase(Locale.ENGLISH);
++
++ ListItem list = items;
++
++ Stack<Item> stack = new Stack<Item>();
++ stack.push(list);
++
++ boolean isDigit = false;
++
++ int startIndex = 0;
++
++ for (int i = 0; i < version.length(); i++) {
++ char c = version.charAt(i);
++
++ if (c == '.') {
++ if (i == startIndex) {
++ list.add(IntegerItem.ZERO);
++ } else {
++ list.add(parseItem(isDigit, version.substring(startIndex, i)));
++ }
++ startIndex = i + 1;
++ } else if (c == '-') {
++ if (i == startIndex) {
++ list.add(IntegerItem.ZERO);
++ } else {
++ list.add(parseItem(isDigit, version.substring(startIndex, i)));
++ }
++ startIndex = i + 1;
++
++ if (isDigit) {
++ list.normalize(); // 1.0-* = 1-*
++
++ if ((i + 1 < version.length()) && Character.isDigit(version.charAt(i + 1))) {
++ // new ListItem only if previous were digits and new char is a digit,
++ // ie need to differentiate only 1.1 from 1-1
++ list.add(list = new ListItem());
++
++ stack.push(list);
++ }
++ }
++ } else if (c == '*') {
++ list.add(new WildCardItem());
++ startIndex = i + 1;
++ } else if (Character.isDigit(c)) {
++ if (!isDigit && i > startIndex) {
++ list.add(new StringItem(version.substring(startIndex, i), true));
++ startIndex = i;
++ }
++
++ isDigit = true;
++ } else if (Character.isWhitespace(c)) {
++ if (i > startIndex) {
++ if (isDigit) {
++ list.add(parseItem(true, version.substring(startIndex, i)));
++ } else {
++ list.add(new StringItem(version.substring(startIndex, i), true));
++ }
++ startIndex = i;
++ }
++
++ isDigit = false;
++ } else {
++ if (isDigit && i > startIndex) {
++ list.add(parseItem(true, version.substring(startIndex, i)));
++ startIndex = i;
++ }
++
++ isDigit = false;
++ }
++ }
++
++ if (version.length() > startIndex) {
++ list.add(parseItem(isDigit, version.substring(startIndex)));
++ }
++
++ while (!stack.isEmpty()) {
++ list = (ListItem) stack.pop();
++ list.normalize();
++ }
++
++ canonical = items.toString();
++ }
++
++ private static Item parseItem(boolean isDigit, String buf) {
++ return isDigit ? (Item) new IntegerItem(buf) : (Item) new StringItem(buf, false);
++ }
++
++ public int compareTo(VersionNumber o) {
++ return items.compareTo(o.items);
++ }
++
++ public String toString() {
++ return value;
++ }
++
++ public boolean equals(Object o) {
++ return (o instanceof VersionNumber) && canonical.equals(((VersionNumber) o).canonical);
++ }
++
++ public int hashCode() {
++ return canonical.hashCode();
++ }
++
++ public boolean isOlderThan(VersionNumber rhs) {
++ return compareTo(rhs) < 0;
++ }
++
++ public boolean isNewerThan(VersionNumber rhs) {
++ return compareTo(rhs) > 0;
++ }
++
++ public int digit(int idx) {
++ Iterator i = items.iterator();
++ Item item = (Item) i.next();
++ while (idx > 0 && i.hasNext()) {
++ if (item instanceof IntegerItem) {
++ idx--;
++ }
++ i.next();
++ }
++ return ((IntegerItem) item).value.intValue();
++ }
++
++ public static final Comparator<VersionNumber> DESCENDING = new Comparator<VersionNumber>() {
++ public int compare(VersionNumber o1, VersionNumber o2) {
++ return o2.compareTo(o1);
++ }
++ };
++}
diff --git a/debian/patches/build/0007-remove-findbugs.patch b/debian/patches/build/0007-remove-findbugs.patch
new file mode 100644
index 0000000..7b5f0a4
--- /dev/null
+++ b/debian/patches/build/0007-remove-findbugs.patch
@@ -0,0 +1,135 @@
+From: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
+Date: Sun, 11 Aug 2013 10:41:39 +0100
+Subject: remove-findbugs
+
+---
+ core/src/main/java/hudson/WebAppMain.java | 1 -
+ core/src/main/java/hudson/cli/GroovyshCommand.java | 2 --
+ core/src/main/java/hudson/logging/LogRecorderManager.java | 1 -
+ core/src/main/java/hudson/util/PluginServletFilter.java | 1 -
+ core/src/main/java/jenkins/model/Jenkins.java | 2 --
+ core/src/main/java/jenkins/util/ProgressiveRendering.java | 1 -
+ maven-plugin/src/main/java/hudson/maven/MavenUtil.java | 2 --
+ maven-plugin/src/main/java/hudson/maven/reporters/SurefireArchiver.java | 1 -
+ 8 files changed, 11 deletions(-)
+
+diff --git a/core/src/main/java/hudson/WebAppMain.java b/core/src/main/java/hudson/WebAppMain.java
+index 07e679d..d7e38a5 100644
+--- a/core/src/main/java/hudson/WebAppMain.java
++++ b/core/src/main/java/hudson/WebAppMain.java
+@@ -251,7 +251,6 @@ public final class WebAppMain implements ServletContextListener {
+ /**
+ * Installs log handler to monitor all Hudson logs.
+ */
+- @edu.umd.cs.findbugs.annotations.SuppressWarnings("LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE")
+ private void installLogger() {
+ Jenkins.logRecords = handler.getView();
+ Logger.getLogger("hudson").addHandler(handler);
+diff --git a/core/src/main/java/hudson/cli/GroovyshCommand.java b/core/src/main/java/hudson/cli/GroovyshCommand.java
+index 22a20ec..8d13d3b 100644
+--- a/core/src/main/java/hudson/cli/GroovyshCommand.java
++++ b/core/src/main/java/hudson/cli/GroovyshCommand.java
+@@ -87,7 +87,6 @@ public class GroovyshCommand extends CLICommand {
+ private static final long serialVersionUID = 1L;
+
+ @SuppressWarnings("unused")
+- @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS",justification="Closure invokes this via reflection")
+ public Object doCall(Object[] args) {
+ assert(args.length == 1);
+ assert(args[0] instanceof Shell);
+@@ -110,7 +109,6 @@ public class GroovyshCommand extends CLICommand {
+ private static final long serialVersionUID = 1L;
+
+ @SuppressWarnings("unused")
+- @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS",justification="Closure invokes this via reflection")
+ public Object doCall(Object[] args) throws ChannelClosedException {
+ if (args.length == 1 && args[0] instanceof ChannelClosedException) {
+ throw (ChannelClosedException)args[0];
+diff --git a/core/src/main/java/hudson/logging/LogRecorderManager.java b/core/src/main/java/hudson/logging/LogRecorderManager.java
+index 3ceff0a..9e1f22c 100644
+--- a/core/src/main/java/hudson/logging/LogRecorderManager.java
++++ b/core/src/main/java/hudson/logging/LogRecorderManager.java
+@@ -112,7 +112,6 @@ public class LogRecorderManager extends AbstractModelObject {
+ /**
+ * Configure the logging level.
+ */
+- @edu.umd.cs.findbugs.annotations.SuppressWarnings("LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE")
+ public HttpResponse doConfigLogger(@QueryParameter String name, @QueryParameter String level) {
+ Jenkins.getInstance().checkPermission(Jenkins.ADMINISTER);
+ Level lv;
+diff --git a/core/src/main/java/hudson/util/PluginServletFilter.java b/core/src/main/java/hudson/util/PluginServletFilter.java
+index 0decb8f..946cb43 100644
+--- a/core/src/main/java/hudson/util/PluginServletFilter.java
++++ b/core/src/main/java/hudson/util/PluginServletFilter.java
+@@ -58,7 +58,6 @@ public class PluginServletFilter implements Filter, ExtensionPoint {
+ public PluginServletFilter() {
+ }
+
+- @edu.umd.cs.findbugs.annotations.SuppressWarnings("ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD")
+ public void init(FilterConfig filterConfig) throws ServletException {
+ PluginServletFilter.filterConfig = filterConfig;
+ synchronized (LIST) {
+diff --git a/core/src/main/java/jenkins/model/Jenkins.java b/core/src/main/java/jenkins/model/Jenkins.java
+index 97da277..eab0e9c 100755
+--- a/core/src/main/java/jenkins/model/Jenkins.java
++++ b/core/src/main/java/jenkins/model/Jenkins.java
+@@ -730,7 +730,6 @@ public class Jenkins extends AbstractCIBase implements ModifiableTopLevelItemGro
+ * @param pluginManager
+ * If non-null, use existing plugin manager. create a new one.
+ */
+- @edu.umd.cs.findbugs.annotations.SuppressWarnings("SC_START_IN_CTOR") // bug in FindBugs. It flags UDPBroadcastThread.start() call but that's for another class
+ protected Jenkins(File root, ServletContext context, PluginManager pluginManager) throws IOException, InterruptedException, ReactorException {
+ long start = System.currentTimeMillis();
+
+@@ -3019,7 +3018,6 @@ public class Jenkins extends AbstractCIBase implements ModifiableTopLevelItemGro
+ /**
+ * For debugging. Expose URL to perform GC.
+ */
+- @edu.umd.cs.findbugs.annotations.SuppressWarnings("DM_GC")
+ public void doGc(StaplerResponse rsp) throws IOException {
+ checkPermission(Jenkins.ADMINISTER);
+ System.gc();
+diff --git a/core/src/main/java/jenkins/util/ProgressiveRendering.java b/core/src/main/java/jenkins/util/ProgressiveRendering.java
+index c13932e..6be3a13 100644
+--- a/core/src/main/java/jenkins/util/ProgressiveRendering.java
++++ b/core/src/main/java/jenkins/util/ProgressiveRendering.java
+@@ -24,7 +24,6 @@
+
+ package jenkins.util;
+
+-import edu.umd.cs.findbugs.annotations.SuppressWarnings;
+ import hudson.model.Computer;
+ import java.util.concurrent.ExecutorService;
+ import java.util.logging.Level;
+diff --git a/maven-plugin/src/main/java/hudson/maven/MavenUtil.java b/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
+index 65d2a26..f2f40c6 100755
+--- a/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
++++ b/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
+@@ -53,7 +53,6 @@ import org.apache.maven.artifact.versioning.ComparableVersion;
+ import org.apache.maven.project.MavenProject;
+ import org.apache.maven.project.ProjectBuildingException;
+
+-import edu.umd.cs.findbugs.annotations.SuppressWarnings;
+
+ /**
+ * @author Kohsuke Kawaguchi
+@@ -140,7 +139,6 @@ public class MavenUtil {
+ * Creates a fresh {@link MavenEmbedder} instance.
+ *
+ */
+- @SuppressWarnings("RV_RETURN_VALUE_IGNORED_BAD_PRACTICE")
+ public static MavenEmbedder createEmbedder(MavenEmbedderRequest mavenEmbedderRequest) throws MavenEmbedderException, IOException {
+
+
+diff --git a/maven-plugin/src/main/java/hudson/maven/reporters/SurefireArchiver.java b/maven-plugin/src/main/java/hudson/maven/reporters/SurefireArchiver.java
+index 987b311..85fb82e 100644
+--- a/maven-plugin/src/main/java/hudson/maven/reporters/SurefireArchiver.java
++++ b/maven-plugin/src/main/java/hudson/maven/reporters/SurefireArchiver.java
+@@ -170,7 +170,6 @@ public class SurefireArchiver extends MavenReporter {
+ return true;
+ }
+
+- @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD", justification="It's okay to write to static fields here, as each Maven build is started in its own VM")
+ private void markBuildAsSuccess(Throwable mojoError, MavenBuildInformation buildInfo) {
+ if(mojoError == null // in the success case we don't get any exception in Maven 3.0.2+; Maven < 3.0.2 returns no exception anyway
+ || mojoError instanceof MojoFailureException) {
diff --git a/debian/patches/build/0014-use-stock-jmdns.patch b/debian/patches/build/0014-use-stock-jmdns.patch
new file mode 100644
index 0000000..7a66a32
--- /dev/null
+++ b/debian/patches/build/0014-use-stock-jmdns.patch
@@ -0,0 +1,30 @@
+From: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
+Date: Sun, 11 Aug 2013 10:41:39 +0100
+Subject: use-stock-jmdns
+
+---
+ core/src/main/java/hudson/DNSMultiCast.java | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/core/src/main/java/hudson/DNSMultiCast.java b/core/src/main/java/hudson/DNSMultiCast.java
+index 2f187bd..a2cfcdc 100644
+--- a/core/src/main/java/hudson/DNSMultiCast.java
++++ b/core/src/main/java/hudson/DNSMultiCast.java
+@@ -66,12 +66,12 @@ public class DNSMultiCast implements Closeable {
+
+ public void close() {
+ if (jmdns!=null) {
+-// try {
+- jmdns.abort();
++ try {
++ jmdns.close();
+ jmdns = null;
+-// } catch (final IOException e) {
+-// LOGGER.log(Level.WARNING,"Failed to close down JmDNS instance!",e);
+-// }
++ } catch (final IOException e) {
++ LOGGER.log(Level.WARNING,"Failed to close down JmDNS instance!",e);
++ }
+ }
+ }
+
diff --git a/debian/patches/build/0016-use-stock-asm3.patch b/debian/patches/build/0016-use-stock-asm3.patch
new file mode 100644
index 0000000..69f5932
--- /dev/null
+++ b/debian/patches/build/0016-use-stock-asm3.patch
@@ -0,0 +1,49 @@
+From: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
+Date: Sun, 11 Aug 2013 10:41:39 +0100
+Subject: use-stock-asm3
+
+---
+ core/pom.xml | 7 +++++++
+ core/src/main/java/hudson/util/SubClassGenerator.java | 8 ++++----
+ 2 files changed, 11 insertions(+), 4 deletions(-)
+
+diff --git a/core/pom.xml b/core/pom.xml
+index d474892..8596c28 100644
+--- a/core/pom.xml
++++ b/core/pom.xml
+@@ -584,6 +584,13 @@ THE SOFTWARE.
+ </dependency>
+
+ <dependency>
++ <!-- with this, stapler can load parameter names from the debug info -->
++ <groupId>asm</groupId>
++ <artifactId>asm-commons</artifactId>
++ <version>2.2.3</version>
++ </dependency>
++
++ <dependency>
+ <groupId>org.kohsuke</groupId>
+ <artifactId>access-modifier-annotation</artifactId>
+ <version>1.0</version>
+diff --git a/core/src/main/java/hudson/util/SubClassGenerator.java b/core/src/main/java/hudson/util/SubClassGenerator.java
+index d40a9e9..4486a37 100644
+--- a/core/src/main/java/hudson/util/SubClassGenerator.java
++++ b/core/src/main/java/hudson/util/SubClassGenerator.java
+@@ -25,13 +25,13 @@ package hudson.util;
+
+ import hudson.PluginManager.UberClassLoader;
+ import jenkins.model.Jenkins;
+-import org.kohsuke.asm3.ClassWriter;
+-import org.kohsuke.asm3.MethodVisitor;
+-import org.kohsuke.asm3.Type;
++import org.objectweb.asm.ClassWriter;
++import org.objectweb.asm.MethodVisitor;
++import org.objectweb.asm.Type;
+
+ import java.lang.reflect.Constructor;
+
+-import static org.kohsuke.asm3.Opcodes.*;
++import static org.objectweb.asm.Opcodes.*;
+
+ /**
+ * Generates a new class that just defines constructors into the super types.
diff --git a/debian/patches/build/0017-use-debian-jbcrypt.patch b/debian/patches/build/0017-use-debian-jbcrypt.patch
new file mode 100644
index 0000000..d492140
--- /dev/null
+++ b/debian/patches/build/0017-use-debian-jbcrypt.patch
@@ -0,0 +1,21 @@
+From: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
+Date: Sun, 11 Aug 2013 10:41:39 +0100
+Subject: use-debian-jbcrypt
+
+---
+ core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java b/core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java
+index 7c3a242..3f9127c 100644
+--- a/core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java
++++ b/core/src/main/java/hudson/security/HudsonPrivateSecurityRealm.java
+@@ -59,7 +59,7 @@ import org.kohsuke.stapler.HttpResponses;
+ import org.kohsuke.stapler.Stapler;
+ import org.kohsuke.stapler.StaplerRequest;
+ import org.kohsuke.stapler.StaplerResponse;
+-import org.mindrot.jbcrypt.BCrypt;
++import org.mindrot.BCrypt;
+ import org.springframework.dao.DataAccessException;
+
+ import javax.servlet.Filter;
diff --git a/debian/patches/build/0018-ignore-plugin-pom.xml.patch b/debian/patches/build/0018-ignore-plugin-pom.xml.patch
new file mode 100644
index 0000000..e906379
--- /dev/null
+++ b/debian/patches/build/0018-ignore-plugin-pom.xml.patch
@@ -0,0 +1,20 @@
+From: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
+Date: Sun, 11 Aug 2013 10:41:39 +0100
+Subject: ignore-plugin-pom.xml
+
+---
+ pom.xml | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/pom.xml b/pom.xml
+index 2800795..3ddd688 100644
+--- a/pom.xml
++++ b/pom.xml
+@@ -50,7 +50,6 @@ THE SOFTWARE.
+ <module>core</module>
+ <module>war</module>
+ <module>cli</module>
+- <module>plugins</module>
+ </modules>
+
+ <scm>
diff --git a/debian/patches/build/0019-fileupload-compat.patch b/debian/patches/build/0019-fileupload-compat.patch
new file mode 100644
index 0000000..4a824ff
--- /dev/null
+++ b/debian/patches/build/0019-fileupload-compat.patch
@@ -0,0 +1,33 @@
+From: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
+Date: Sun, 11 Aug 2013 10:41:39 +0100
+Subject: fileupload-compat
+
+---
+ core/src/main/java/hudson/model/FileParameterValue.java | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/core/src/main/java/hudson/model/FileParameterValue.java b/core/src/main/java/hudson/model/FileParameterValue.java
+index dd322ab..18d9075 100644
+--- a/core/src/main/java/hudson/model/FileParameterValue.java
++++ b/core/src/main/java/hudson/model/FileParameterValue.java
+@@ -40,6 +40,7 @@ import javax.servlet.ServletException;
+
+ import org.apache.commons.fileupload.FileItem;
+ import org.apache.commons.fileupload.disk.DiskFileItem;
++import org.apache.commons.fileupload.FileItemHeaders;
+ import org.apache.commons.io.FilenameUtils;
+ import org.apache.commons.io.IOUtils;
+ import org.apache.commons.lang.StringUtils;
+@@ -277,5 +278,12 @@ public class FileParameterValue extends ParameterValue {
+ public OutputStream getOutputStream() throws IOException {
+ return new FileOutputStream(file);
+ }
++
++ public void setHeaders(FileItemHeaders headers) {
++ }
++
++ public FileItemHeaders getHeaders() {
++ return null;
++ }
+ }
+ }
diff --git a/debian/patches/build/0020-io-compat.pach.patch b/debian/patches/build/0020-io-compat.pach.patch
new file mode 100644
index 0000000..21fe41e
--- /dev/null
+++ b/debian/patches/build/0020-io-compat.pach.patch
@@ -0,0 +1,33 @@
+From: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
+Date: Sun, 11 Aug 2013 10:41:39 +0100
+Subject: io-compat.pach
+
+---
+ core/src/main/java/hudson/util/IOUtils.java | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/core/src/main/java/hudson/util/IOUtils.java b/core/src/main/java/hudson/util/IOUtils.java
+index 4d046b7..240fda9 100644
+--- a/core/src/main/java/hudson/util/IOUtils.java
++++ b/core/src/main/java/hudson/util/IOUtils.java
+@@ -76,16 +76,18 @@ public class IOUtils extends org.apache.commons.io.IOUtils {
+ *
+ * @since 1.349
+ */
+- public static InputStream skip(InputStream in, long size) throws IOException {
++ public static long skip(InputStream in, long size) throws IOException {
+ DataInputStream di = new DataInputStream(in);
++ long skipped = 0;
+
+ while (size>0) {
+ int chunk = (int)Math.min(SKIP_BUFFER.length,size);
+ di.readFully(SKIP_BUFFER,0,chunk);
+ size -= chunk;
++ skipped += chunk;
+ }
+
+- return in;
++ return skipped;
+ }
+
+ /**
diff --git a/debian/patches/dependency-upgrades/0013-jnr-posix-upgrade.patch b/debian/patches/dependency-upgrades/0013-jnr-posix-upgrade.patch
new file mode 100644
index 0000000..fc0f758
--- /dev/null
+++ b/debian/patches/dependency-upgrades/0013-jnr-posix-upgrade.patch
@@ -0,0 +1,86 @@
+From: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
+Date: Sun, 11 Aug 2013 10:41:39 +0100
+Subject: jnr-posix-upgrade
+
+---
+ core/pom.xml | 5 +++++
+ core/src/main/java/hudson/os/PosixAPI.java | 7 +++----
+ core/src/main/java/hudson/os/PosixException.java | 8 ++++----
+ 3 files changed, 12 insertions(+), 8 deletions(-)
+
+diff --git a/core/pom.xml b/core/pom.xml
+index 4a76cf4..d474892 100644
+--- a/core/pom.xml
++++ b/core/pom.xml
+@@ -118,6 +118,11 @@ THE SOFTWARE.
+ <version>1.0.3</version>
+ </dependency>
+ <dependency>
++ <groupId>org.jruby.extras</groupId>
++ <artifactId>jffi</artifactId>
++ <version>0.6.5</version>
++ </dependency>
++ <dependency>
+ <groupId>org.kohsuke</groupId>
+ <artifactId>trilead-putty-extension</artifactId>
+ <version>1.2</version>
+diff --git a/core/src/main/java/hudson/os/PosixAPI.java b/core/src/main/java/hudson/os/PosixAPI.java
+index 1e893c1..db0aa7a 100644
+--- a/core/src/main/java/hudson/os/PosixAPI.java
++++ b/core/src/main/java/hudson/os/PosixAPI.java
+@@ -1,10 +1,9 @@
+ package hudson.os;
+
+-import org.jruby.ext.posix.JavaPOSIX;
+ import org.jruby.ext.posix.POSIX;
+ import org.jruby.ext.posix.POSIXFactory;
+ import org.jruby.ext.posix.POSIXHandler;
+-import org.jruby.ext.posix.POSIX.ERRORS;
++import com.kenai.constantine.platform.Errno;
+
+ import java.io.File;
+ import java.io.InputStream;
+@@ -35,11 +34,11 @@ public class PosixAPI {
+ * used a fallback java implementation which does not support many operations.
+ */
+ public static boolean supportsNative() {
+- return !(posix instanceof JavaPOSIX);
++ return posix.isNative();
+ }
+
+ private static final POSIX posix = POSIXFactory.getPOSIX(new POSIXHandler() {
+- public void error(ERRORS errors, String s) {
++ public void error(Errno errors, String s) {
+ throw new PosixException(s,errors);
+ }
+
+diff --git a/core/src/main/java/hudson/os/PosixException.java b/core/src/main/java/hudson/os/PosixException.java
+index 93e96ef..b30e33b 100644
+--- a/core/src/main/java/hudson/os/PosixException.java
++++ b/core/src/main/java/hudson/os/PosixException.java
+@@ -1,6 +1,6 @@
+ package hudson.os;
+
+-import org.jruby.ext.posix.POSIX.ERRORS;
++import com.kenai.constantine.platform.Errno;
+
+ /**
+ * Indicates an error during POSIX API call.
+@@ -8,14 +8,14 @@ import org.jruby.ext.posix.POSIX.ERRORS;
+ * @author Kohsuke Kawaguchi
+ */
+ public class PosixException extends RuntimeException {
+- private final ERRORS errors;
++ private final Errno errors;
+
+- public PosixException(String message, ERRORS errors) {
++ public PosixException(String message, Errno errors) {
+ super(message);
+ this.errors = errors;
+ }
+
+- public ERRORS getErrorCode() {
++ public Errno getErrorCode() {
+ return errors;
+ }
+
diff --git a/debian/patches/native-integration/0008-windows-service-disable.patch b/debian/patches/native-integration/0008-windows-service-disable.patch
new file mode 100644
index 0000000..b5518d2
--- /dev/null
+++ b/debian/patches/native-integration/0008-windows-service-disable.patch
@@ -0,0 +1,45 @@
+From: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
+Date: Sun, 11 Aug 2013 10:41:39 +0100
+Subject: windows-service-disable
+
+---
+ core/pom.xml | 26 --------------------------
+ 1 file changed, 26 deletions(-)
+
+diff --git a/core/pom.xml b/core/pom.xml
+index 18d777f..d6934ea 100644
+--- a/core/pom.xml
++++ b/core/pom.xml
+@@ -734,32 +734,6 @@ THE SOFTWARE.
+ </execution>
+ </executions>
+ </plugin>
+- <plugin>
+- <artifactId>maven-dependency-plugin</artifactId>
+- <executions>
+- <execution>
+- <id>winsw</id>
+- <phase>generate-resources</phase>
+- <goals>
+- <!-- we use copy as this is a dependency from outside the reactor -->
+- <goal>copy</goal>
+- </goals>
+- <configuration>
+- <artifactItems>
+- <artifactItem>
+- <groupId>com.sun.winsw</groupId>
+- <artifactId>winsw</artifactId>
+- <version>1.10</version>
+- <classifier>bin</classifier>
+- <type>exe</type>
+- <outputDirectory>${project.build.outputDirectory}/windows-service</outputDirectory>
+- <destFileName>jenkins.exe</destFileName>
+- </artifactItem>
+- </artifactItems>
+- </configuration>
+- </execution>
+- </executions>
+- </plugin>
+ <plugin><!-- set main class -->
+ <artifactId>maven-jar-plugin</artifactId>
+ <!-- version specified in grandparent pom -->
diff --git a/debian/patches/native-integration/0009-filter-native-integrations.patch b/debian/patches/native-integration/0009-filter-native-integrations.patch
new file mode 100644
index 0000000..3f5f619
--- /dev/null
+++ b/debian/patches/native-integration/0009-filter-native-integrations.patch
@@ -0,0 +1,30 @@
+From: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
+Date: Sun, 11 Aug 2013 10:41:39 +0100
+Subject: filter-native-integrations
+
+---
+ core/pom.xml | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/core/pom.xml b/core/pom.xml
+index d6934ea..4a76cf4 100644
+--- a/core/pom.xml
++++ b/core/pom.xml
+@@ -677,6 +677,17 @@ THE SOFTWARE.
+ <configuration>
+ <fork>${staplerFork}</fork><!-- the source code is big enough now that otherwise it fails with OutOfMemoryError -->
+ <maxmem>128m</maxmem>
++ <excludes>
++ <exclude>**/os/solaris/*</exclude>
++ <exclude>**/os/windows/*</exclude>
++ <exclude>**/DCOMSandbox.java</exclude>
++ <exclude>**/DotNet.java</exclude>
++ <exclude>**/WindowsSlaveInstaller.java</exclude>
++ <exclude>**/WindowsInstallerLink.java</exclude>
++ </excludes>
++ <testExcludes>
++ <exclude>**/DCOMSandbox.java</exclude>
++ </testExcludes>
+ </configuration>
+ </plugin>
+ <plugin>
diff --git a/debian/patches/native-integration/0010-purge-embedded-su4j.patch b/debian/patches/native-integration/0010-purge-embedded-su4j.patch
new file mode 100644
index 0000000..ace40e2
--- /dev/null
+++ b/debian/patches/native-integration/0010-purge-embedded-su4j.patch
@@ -0,0 +1,42 @@
+From: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
+Date: Sun, 11 Aug 2013 10:41:39 +0100
+Subject: purge-embedded-su4j
+
+---
+ core/src/main/java/hudson/os/SU.java | 16 ----------------
+ 1 file changed, 16 deletions(-)
+
+diff --git a/core/src/main/java/hudson/os/SU.java b/core/src/main/java/hudson/os/SU.java
+index b254f54..929e7eb 100644
+--- a/core/src/main/java/hudson/os/SU.java
++++ b/core/src/main/java/hudson/os/SU.java
+@@ -23,7 +23,6 @@
+ */
+ package hudson.os;
+
+-import com.sun.solaris.EmbeddedSu;
+ import hudson.Launcher.LocalLauncher;
+ import hudson.Util;
+ import hudson.model.Computer;
+@@ -94,21 +93,6 @@ public abstract class SU {
+ }
+ }.start(listener,rootPassword);
+
+- if(os.equals("SunOS"))
+- return new UnixSu() {
+- protected String sudoExe() {
+- return "/usr/bin/pfexec";
+- }
+-
+- protected Process sudoWithPass(ArgumentListBuilder args) throws IOException {
+- listener.getLogger().println("Running with embedded_su");
+- ProcessBuilder pb = new ProcessBuilder(args.prepend(sudoExe()).toCommandArray());
+- return EmbeddedSu.startWithSu(rootUsername, rootPassword, pb);
+- }
+- // in solaris, pfexec never asks for a password, so username==null means
+- // we won't be using password. this helps disambiguate empty password
+- }.start(listener,rootUsername==null?null:rootPassword);
+-
+ // TODO: Mac?
+
+ // unsupported platform, take a chance
diff --git a/debian/patches/native-integration/0011-purge-winp.patch b/debian/patches/native-integration/0011-purge-winp.patch
new file mode 100644
index 0000000..5697bf2
--- /dev/null
+++ b/debian/patches/native-integration/0011-purge-winp.patch
@@ -0,0 +1,120 @@
+From: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
+Date: Sun, 11 Aug 2013 10:41:39 +0100
+Subject: purge-winp
+
+---
+ core/src/main/java/hudson/util/ProcessTree.java | 82 +------------------------
+ 1 file changed, 1 insertion(+), 81 deletions(-)
+
+diff --git a/core/src/main/java/hudson/util/ProcessTree.java b/core/src/main/java/hudson/util/ProcessTree.java
+index 020978c..da06757 100644
+--- a/core/src/main/java/hudson/util/ProcessTree.java
++++ b/core/src/main/java/hudson/util/ProcessTree.java
+@@ -37,8 +37,6 @@ import hudson.util.ProcessTree.OSProcess;
+ import hudson.util.ProcessTreeRemoting.IOSProcess;
+ import hudson.util.ProcessTreeRemoting.IProcessTree;
+ import org.apache.commons.io.FileUtils;
+-import org.jvnet.winp.WinProcess;
+-import org.jvnet.winp.WinpException;
+
+ import java.io.BufferedReader;
+ import java.io.ByteArrayOutputStream;
+@@ -331,9 +329,6 @@ public abstract class ProcessTree implements Iterable<OSProcess>, IProcessTree,
+ return DEFAULT;
+
+ try {
+- if(File.pathSeparatorChar==';')
+- return new Windows();
+-
+ String os = Util.fixNull(System.getProperty("os.name"));
+ if(os.equals("Linux"))
+ return new Linux();
+@@ -390,81 +385,6 @@ public abstract class ProcessTree implements Iterable<OSProcess>, IProcessTree,
+ }
+ };
+
+-
+- private static final class Windows extends Local {
+- Windows() {
+- for (final WinProcess p : WinProcess.all()) {
+- int pid = p.getPid();
+- super.processes.put(pid,new OSProcess(pid) {
+- private EnvVars env;
+- private List<String> args;
+-
+- public OSProcess getParent() {
+- // windows process doesn't have parent/child relationship
+- return null;
+- }
+-
+- public void killRecursively() {
+- LOGGER.finer("Killing recursively "+getPid());
+- p.killRecursively();
+- }
+-
+- public void kill() throws InterruptedException {
+- LOGGER.finer("Killing "+getPid());
+- p.kill();
+- killByKiller();
+- }
+-
+- @Override
+- public synchronized List<String> getArguments() {
+- if(args==null) args = Arrays.asList(QuotedStringTokenizer.tokenize(p.getCommandLine()));
+- return args;
+- }
+-
+- @Override
+- public synchronized EnvVars getEnvironmentVariables() {
+- if(env==null) env = new EnvVars(p.getEnvironmentVariables());
+- return env;
+- }
+- });
+-
+- }
+- }
+-
+- @Override
+- public OSProcess get(Process proc) {
+- return get(new WinProcess(proc).getPid());
+- }
+-
+- public void killAll(Map<String, String> modelEnvVars) throws InterruptedException {
+- for( OSProcess p : this) {
+- if(p.getPid()<10)
+- continue; // ignore system processes like "idle process"
+-
+- LOGGER.finest("Considering to kill "+p.getPid());
+-
+- boolean matched;
+- try {
+- matched = p.hasMatchingEnvVars(modelEnvVars);
+- } catch (WinpException e) {
+- // likely a missing privilege
+- LOGGER.log(FINEST," Failed to check environment variable match",e);
+- continue;
+- }
+-
+- if(matched)
+- p.killRecursively();
+- else
+- LOGGER.finest("Environment variable didn't match");
+-
+- }
+- }
+-
+- static {
+- WinProcess.enableDebugPrivilege();
+- }
+- }
+-
+ static abstract class Unix extends Local {
+ @Override
+ public OSProcess get(Process proc) {
+@@ -1227,4 +1147,4 @@ public abstract class ProcessTree implements Iterable<OSProcess>, IProcessTree,
+ */
+ public static boolean enabled = !Boolean.getBoolean(ProcessTreeKiller.class.getName()+".disable")
+ && !Boolean.getBoolean(ProcessTree.class.getName()+".disable");
+-}
+\ No newline at end of file
++}
diff --git a/debian/patches/native-integration/0012-purge-windows-support.patch b/debian/patches/native-integration/0012-purge-windows-support.patch
new file mode 100644
index 0000000..4f807c8
--- /dev/null
+++ b/debian/patches/native-integration/0012-purge-windows-support.patch
@@ -0,0 +1,28 @@
+From: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
+Date: Sun, 11 Aug 2013 10:41:39 +0100
+Subject: purge-windows-support
+
+---
+ core/src/main/java/hudson/slaves/SlaveComputer.java | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/core/src/main/java/hudson/slaves/SlaveComputer.java b/core/src/main/java/hudson/slaves/SlaveComputer.java
+index 66dc98e..4099007 100644
+--- a/core/src/main/java/hudson/slaves/SlaveComputer.java
++++ b/core/src/main/java/hudson/slaves/SlaveComputer.java
+@@ -36,7 +36,6 @@ import hudson.util.NullStream;
+ import hudson.util.RingBufferLogHandler;
+ import hudson.util.Futures;
+ import hudson.FilePath;
+-import hudson.lifecycle.WindowsSlaveInstaller;
+ import hudson.Util;
+ import hudson.AbortException;
+ import hudson.remoting.Launcher;
+@@ -389,7 +388,6 @@ public class SlaveComputer extends Computer {
+ channel.pinClassLoader(getClass().getClassLoader());
+
+ channel.call(new SlaveInitializer());
+-// channel.call(new WindowsSlaveInstaller(remoteFs));
+ for (ComputerListener cl : ComputerListener.all())
+ cl.preOnline(this,channel,root,taskListener);
+
diff --git a/debian/patches/series b/debian/patches/series
index cdabed7..90ae41b 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,20 +1,20 @@
-build/build.patch
-build/openjdk6.patch
-build/remove-licensing-report.patch
-build/disable-plugins.patch
-build/apt-stapler-processing.patch
-build/jenkins-version-number.patch
-build/remove-findbugs.patch
-native-integration/windows-service-disable.patch
-native-integration/filter-native-integrations.patch
-native-integration/purge-embedded-su4j.patch
-native-integration/purge-winp.patch
-native-integration/purge-windows-support.patch
-dependency-upgrades/jnr-posix-upgrade.patch
-build/use-stock-jmdns.patch
-ubuntu/ubuntu-font.patch
-build/use-stock-asm3.patch
-build/use-debian-jbcrypt.patch
-build/ignore-plugin-pom.xml
-build/fileupload-compat.patch
-build/io-compat.pach
+build/0001-build.patch
+build/0002-openjdk6.patch
+build/0003-remove-licensing-report.patch
+build/0004-disable-plugins.patch
+build/0005-apt-stapler-processing.patch
+build/0006-jenkins-version-number.patch
+build/0007-remove-findbugs.patch
+native-integration/0008-windows-service-disable.patch
+native-integration/0009-filter-native-integrations.patch
+native-integration/0010-purge-embedded-su4j.patch
+native-integration/0011-purge-winp.patch
+native-integration/0012-purge-windows-support.patch
+dependency-upgrades/0013-jnr-posix-upgrade.patch
+build/0014-use-stock-jmdns.patch
+ubuntu/0015-ubuntu-font.patch
+build/0016-use-stock-asm3.patch
+build/0017-use-debian-jbcrypt.patch
+build/0018-ignore-plugin-pom.xml.patch
+build/0019-fileupload-compat.patch
+build/0020-io-compat.pach.patch
diff --git a/debian/patches/ubuntu/0015-ubuntu-font.patch b/debian/patches/ubuntu/0015-ubuntu-font.patch
new file mode 100644
index 0000000..b616d0e
--- /dev/null
+++ b/debian/patches/ubuntu/0015-ubuntu-font.patch
@@ -0,0 +1,30 @@
+From: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
+Date: Sun, 11 Aug 2013 10:41:39 +0100
+Subject: ubuntu-font
+
+---
+ war/src/main/webapp/css/style.css | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/war/src/main/webapp/css/style.css b/war/src/main/webapp/css/style.css
+index 8504f88..0f6afca 100644
+--- a/war/src/main/webapp/css/style.css
++++ b/war/src/main/webapp/css/style.css
+@@ -29,7 +29,7 @@ body {
+
+ body, table, form, input, td, th, p, textarea, select
+ {
+- font-family: Verdana, Helvetica, sans serif;
++ font-family: Ubuntu, Verdana, Helvetica, sans serif;
+ font-size: 11px;
+ }
+
+@@ -357,7 +357,7 @@ th.pane {
+ padding: 4px 0;
+ margin-left: 0;
+ border-bottom: 1px solid #090;
+- font: bold 12px Verdana, sans-serif;
++ font: bold 12px Ubuntu, Verdana, sans-serif;
+ }
+
+ #foldertab li {
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/jenkins.git
More information about the pkg-java-commits
mailing list