[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