[SCM] jenkins packaging branch, master, updated. debian/1.447.2+dfsg-2-4-g3bd9721

James Page james.page at ubuntu.com
Wed Nov 21 09:54:35 UTC 2012


The following commit has been merged in the master branch:
commit adc37068868d534723c0a1557252ef004e69dd04
Merge: bd0313647ba8244c73fdc595725cab6c2f5d39e1 8597f5883423cd0c74d8b8fbe46b190f3478a486
Author: James Page <james.page at ubuntu.com>
Date:   Wed Sep 19 13:00:20 2012 +0100

    Imported Debian patch 1.466.2+dfsg-0ubuntu1

diff --combined debian/README.source
index e3c6a87,0000000..6d8f091
mode 100644,000000..100644
--- a/debian/README.source
+++ b/debian/README.source
@@@ -1,27 -1,0 +1,37 @@@
 +Information about jenkins 
 +-------------------------
 +
 +This package was debianized using the mh_make command
 +from the maven-debian-helper package.
 +
 +The build system uses Maven but prevents it from downloading
 +anything from the Internet, making the build compliant with
 +the Debian policy.
 +
 +Upstream Plugin Compatiblity
 +----------------------------
 +
 +Jenkins for Debian retains compatibility with plugins distributed by
 +Jenkins upstream through the Jenkins Updates Site.  These plugins are 
 +signed to allow them to be verified by Jenkins prior to installation.
 +
 +This signature is verified through the use of the a root Certificate
 +that is distributed as part of the source code and resulting binary
 +package:
 +
 + war/src/main/webapp/WEB-INF/update-center-rootCAs/hudson-community
 +
 +This file is generated from the Private key held by Jenkins upstream and
 +as a result cannot be re-created from the source tree.
 +
 +Note that it is superceeded with a new key in later versions of jenkins.
++
++stapler-adjunct-zeroclipboard
++-----------------------------
++
++This dependency is currently ignored during the build of jenkins.
++
++This library provides a flash based way on copying text to the clipboard.
++
++The supporting code in Jenkins has been left in place as it appears to 
++be unused in 1.466.1.
diff --combined debian/changelog
index be948da,0000000..71749eb
mode 100644,000000..100644
--- a/debian/changelog
+++ b/debian/changelog
@@@ -1,199 -1,0 +1,218 @@@
- jenkins (1.447.2+dfsg-2) unstable; urgency=low
++jenkins (1.466.2+dfsg-0ubuntu1) quantal; urgency=low
 +
-   * Fix multiple security issues in Jenkins core (Closes: #688298):
-     - d/p/security/CVE-2012-4438_CVE-2012-4439.patch: Cherry picked
-       fixes from 1.466.2 release to resolve remote code execution
-       and XSS security vulnerabilities.
-     - d/rules: Tweaked handling of groovy -> java source file copy to
-       accommodate the file created by the above patch.
-     - Fixes: CVE-2012-4438, CVE-2012-4439
++  * New upstream bug fix release.
++  * d/rules: Updated handling of java files in groovy source folder.
 +
-  -- James Page <james.page at ubuntu.com>  Tue, 25 Sep 2012 11:01:53 +0100
++ -- James Page <james.page at ubuntu.com>  Wed, 19 Sep 2012 13:00:20 +0100
++
++jenkins (1.466.1+dfsg-0ubuntu2) quantal; urgency=low
++
++  * Fix maven based builds in slave mode (LP: #1045795):
++    - d/rules: Copy all java files incorrectly located in groovy src
++      folder to the correct location to fixup problem with missing
++      class MarkFindingOutputStream.
++
++ -- James Page <james.page at ubuntu.com>  Wed, 05 Sep 2012 09:41:33 +0100
++
++jenkins (1.466.1+dfsg-0ubuntu1) quantal; urgency=low
++
++  * New upstream release:
++    - d/p/dependency-upgrades/asm3-upgrade.patch,
++      d/p/animal-sniffer-upgrade.patch: Dropped - upgrades now in upstream.
++    - d/maven.ignoreRules: Ignore new stapler-adjunct-zeroclipboard and
++      windows-package-checker dependencies; not required for Debian.
++    - d/maven.rules,d/p/use-stock-asm3.patch: Don't use Jenkins jarjar of
++      asm3; we have a consistent asm3 dependency chain in Debian/Ubuntu.
++    - d/p/remove-findbugs.patch: Updated with new annotations to remove.
++    - d/control: Bumped minimum versions of libjenkins-remoting-java and
++      libstapler-java inline with upstream.
++
++ -- James Page <james.page at ubuntu.com>  Fri, 27 Jul 2012 15:53:57 +0100
 +
 +jenkins (1.447.2+dfsg-1) unstable; urgency=low
 +
 +  * New upstream release. 
 +  * Ensure jenkins keeps logging after log rotation (LP: #993065).
 +    - d/*.logrotate: Switch to copytruncate so jenkins does not lose
 +      the original file handle.
 +
 + -- James Page <james.page at ubuntu.com>  Thu, 21 Jun 2012 09:47:58 +0100
 +
 +jenkins (1.447.1+dfsg-1) unstable; urgency=low
 +
 +  * New upstream release:
 +    - d/patches/dependency-upgrade/groovy-upgrade.patch: Dropped - now
 +      aligned to upstream version.
 +    - d/patches/build/jenkins-version-number.patch: Patch in small version
 +      handling library from Jenkins project rather than package separately.
 +    - d/patches/build/use-stock-jmdns.patch, d/maven.rules: Revert upstream 
 +      use of minor fork of JmDNS.
 +    - d/patches/build/build.patch: Allow building with Maven 2, this works 
 +      OK for this package as Maven 3 features are not used by the package
 +      build process at the moment.
 +    - d/patches/build/remove-findbugs.patch: Drop findbugs annotations from
 +      the codebase as this tool is not packaged for Debian.
 +    - Refreshed all other patches.
 +    - d/maven.ignoreRules, d/maven.properties: Disable unit testing and ignore
 +      powermock dependencies until powermock is packaged.
 +    - d/maven.ignoreRules, d/NEWS: Ignore jenkins sshd module until it gets
 +      packaged and let users know this feature is missing.
 +    - d/control: Added new dependencies on libsisu-guice-java, libmockito-java.
 +
 + -- James Page <james.page at ubuntu.com>  Wed, 02 May 2012 15:12:45 +0100
 +
 +jenkins (1.424.6+dfsg-1) unstable; urgency=low
 +
 +  * New upstream release, fixing XSS security vulnerability (Closes: #664057):
 +    - d/control: Add new dependency on libowasp-java-html-sanitizer-java.
 +    - d/maven.rules: Add new rule to use artifacts 
 +      from libowasp-java-html-sanitizer-java.
 +  * Switch upstart configurations to use start-stop-daemon to allow
 +    desktop systems to shutdown.
 +  * d/jenkins-slave.upstart.in: Ensure /var/run/jenkins exists before
 +    trying to download the jenkins slave.jar file to it.
 +    Thanks to Al Stone for providing this fix.
 +
 + -- James Page <james.page at ubuntu.com>  Tue, 27 Mar 2012 09:17:51 +0100
 +
 +jenkins (1.424.3+dfsg-1) unstable; urgency=low
 +
 +  * New upstream bugfix release.
 +  * Refreshed patches:
 +    - Dropped disable-avalon-frawework.patch - no longer required.
 +  * Bumped Standards-Version: 3.9.3; no changes required.
 +  * Enable use of jenkins-instance-identity and jenkins-ssh-cli-auth to 
 +    support use of public/private keypairs when using the jenkins remote
 +    cli tool. 
 +  * Dropped jcaptcha-slf4j.patch; no longer required as library not used.
 +  * Updated plugin parent pom file to specifiy default source/target for
 +    maven-compiler-plugin as Java 1.5.
 +  * Ensure that jenkins group exists and that its the primary group for
 +    the jenkins user to help deal with transition from upstream packaging 
 +    (Closes: #661203).
 +
 + -- James Page <james.page at ubuntu.com>  Tue, 28 Feb 2012 16:51:50 +0000
 +
 +jenkins (1.424.2+dfsg-2) unstable; urgency=low
 +
 +  * Enable Jenkins plugin components to support building plugins and 
 +    modules (Closes: #658071):
 +    - d/control: Enabled libjenkins-plugin-parent-java, updated dependencies.
 +    - d/plugin-debian.pom.in,rules: Install pom file to act as parent POM for 
 +      plugin development based on upstream plugin pom file.
 +    - d/libjenkins-plugin-parent-java.poms: Dropped - no longer required.
 +    - d/patches/build/plugin.patch: Dropped - no longer required.
 +  * Switch to using libservlet2.5-java (Closes: #658805)
 +
 + -- James Page <james.page at ubuntu.com>  Fri, 10 Feb 2012 14:20:19 +0000
 +
 +jenkins (1.424.2+dfsg-1) unstable; urgency=low
 +
 +  [ Miguel Landaeta ]
 +  * Replace dependencies on Spring Framework 2.5 libraries with 3.0 ones.
 +    (Closes: #655906).
 +
 +  [ James Page ]
 +  * New upstream release.
 +    - d/control: Add new dependencies on libjenkins-remoting-java, 
 +      libstapler-adjunct-codemirror-java and libmaven-hpi-plugin-java.
 +    - d/control: Dropped libjcaptcha-java; no longer needed.
 +  * d/control: Switch to using packaged animal-sniffer.
 +  * Refreshed patches:
 +    - d/patches/build/{debianize-antrun-war,animal-sniffer-annotation}.patch:
 +      dropped as no longer required.
 +
 + -- James Page <james.page at ubuntu.com>  Tue, 31 Jan 2012 10:33:56 +0000
 +
 +jenkins (1.409.3+dfsg-2) unstable; urgency=low
 +
 +  [ James Page ]
 +  * http://www.cloudbees.com/jenkins-advisory/jenkins-security-advisory-2012-01-10.cb
 +    - Rebuild to pickup new versions of jenkins-winstone (>= 0.9.10-jenkins-31)
 +      and jenkins-executable-war (>= 1.25) to fix Hash DoS vulnerability in
 +      jenkins when running standalone.
 +
 +  [ Damien Raude-Morvan ]
 +  * Add DM-Upload-Allowed flag for James Page.
 +
 + -- James Page <james.page at ubuntu.com>  Sat, 14 Jan 2012 18:41:37 +0100
 +
 +jenkins (1.409.3+dfsg-1) unstable; urgency=low
 +
 +  * Initial Debian release (Closes: #561963):
 +    - Repack for DFSG compliance.
 +  * Disabled build of libjenkins-plugin-parent-java as not currently
 +    installable due to broken upstream maven-hpi-plugin.
 +  * Added Debian init scripts and default configuration for jenkins 
 +    and jenkins-slave packages and updated rules to switch in upstart 
 +    configuration for Ubuntu builds.
 +  * d/bin/dowload-slave.sh: Updated to use parameter rather than 
 +    environment variable when locating Jenkins master server.
 +
 + -- James Page <james.page at ubuntu.com>  Fri, 09 Dec 2011 12:04:59 +0000
 +
 +jenkins (1.409.3-0ubuntu1) precise; urgency=low
 +
 +  * New upstream release:
 +    - Refreshed patches.
 +    - d/maven.rules: Updated jenkins version to 1.409.3.
 +  * Pickup new version of jenkins-winstone resolving XSS security 
 +    vulnerability (LP: #889181).
 +  * d/patches/build/apt-stapler-processing.patch: Temporary patch to fix
 +    build when using later versions of stapler which use standard  
 +    Java annotation processing.
 +
 + -- James Page <james.page at ubuntu.com>  Tue, 22 Nov 2011 08:31:53 +0000
 +
 +jenkins (1.409.2-0ubuntu1) precise; urgency=low
 +
 +  * New upstream release:
 +    - d/control: Added new BDI's - libjtidy-java, libjenkins-htmlunit-java
 +    - Refreshed patches.
 +    - d/maven.rules: Updated jenkins version to 1.409.2.
 +  * Updated upstart configuration to start on runlevel [2345].
 +  * Revised patches to filter on compile/test surplus native integrations 
 +    rather than patchout complete files.
 +  * Re-organised patches by type.
 +  * Fixed issue with projects with spaces in names with jenkins-monitor-job
 +    (LP: #880786).
 +
 + -- James Page <james.page at ubuntu.com>  Sat, 22 Oct 2011 11:57:35 +0100
 +
 +jenkins (1.409.1-0ubuntu4) oneiric; urgency=low
 +
 +  * Resolve conflict between winstone and libservlet2.5-java (LP: #862272):
 +    - debian/jenkins.upstart: Use java.net.URLClassLoader instead of
 +      standard WebAppClassloader to ensure the winstone classes are used.
 +
 + -- James Page <james.page at ubuntu.com>  Tue, 11 Oct 2011 08:53:33 +0100
 +
 +jenkins (1.409.1-0ubuntu3) oneiric; urgency=low
 +
 +  * Fix FTBFS with asm3 >= 3.3 (LP: #851659):
 +    - d/maven.rules: Use asm-all instead of asm to align to restructure
 +      of jar files.
 +
 + -- James Page <james.page at ubuntu.com>  Fri, 16 Sep 2011 09:32:28 +0100
 +
 +jenkins (1.409.1-0ubuntu2) oneiric; urgency=low
 +
 +  * Resolved issue with specific group being set in upstart
 +    configuration (LP: #820938).
 +  * Rebuild to pickup new versions of jenkins-xstream to enable ARM
 +    compatibility (LP: #827463).
 +  * Rebuild to pickup new versions of jcaptcha and jenkins-winstone to
 +    resolve compatibiltiy issues with libservlet2.5-java (LP: #827651).
 +  * Fix FTBFS due to missing fonts causing test failure in Jenkins core:
 +     - debian/control: added ttf-dejavu-core to Build-Depends-Indep.
 +  * Fix FTBFS due to change in location of jtidy maven artifact:
 +     - debian/maven.rules: switch jtidy -> net.sf.jtidy to pickup new
 +       location.
 +
 + -- James Page <james.page at ubuntu.com>  Tue, 06 Sep 2011 16:53:57 +0100
 +
 +jenkins (1.409.1-0ubuntu1) oneiric; urgency=low
 +
 +  * Initial release.
 +
 + -- James Page <james.page at ubuntu.com>  Wed, 20 Jul 2011 11:11:18 +0100
diff --combined debian/control
index c2ee29d,0000000..61e4107
mode 100644,000000..100644
--- a/debian/control
+++ b/debian/control
@@@ -1,339 -1,0 +1,340 @@@
 +Source: jenkins
 +Section: java
 +Priority: optional
- Maintainer: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
++Maintainer: Ubuntu Developers <ubuntu-devel-discuss at lists.ubuntu.com>
++XSBC-Original-Maintainer: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
 +Uploaders: James Page <james.page at ubuntu.com>
 +Build-Depends:
 + cdbs,
 + debhelper (>= 7),
 + default-jdk (>= 1:1.6),
 + javahelper,
 + maven-debian-helper,
 + unzip
 +Build-Depends-Indep:
 + ant,
 + ant-optional,
 + glassfish-activation,
 + glassfish-mail,
 + groovy,
 + jenkins-crypto-util,
 + jenkins-executable-war (>= 1.25),
 + jenkins-instance-identity,
 + jenkins-memory-monitor,
 + jenkins-ssh-cli-auth,
 + jenkins-task-reactor,
 + jenkins-test-annotations,
 + junit (>= 3.8.2),
 + junit4,
 + libaccess-modifier-checker-java,
 + libacegi-security-java,
 + libakuma-java (>= 1.8),
 + libanimal-sniffer-java,
 + libannotation-indexer-java,
 + libantlr-java,
 + libantlr-maven-plugin-java,
 + libaopalliance-java,
 + libargs4j-java,
 + libasm3-java,
 + libbridge-method-injector-java,
 + libclassworlds-java,
 + libcommons-beanutils-java,
 + libcommons-codec-java,
 + libcommons-collections3-java,
 + libcommons-digester-java,
 + libcommons-httpclient-java,
 + libcommons-io-java,
 + libcommons-lang-java,
 + libcommons-logging-java,
 + libjaxen-java,
 + libjellydoc-java,
 + libjenkins-plugin-parent-java,
 + libjenkins-commons-jelly-java,
 + libjenkins-commons-jexl-java (>= 1.1-jenkins-20111212),
 + libjenkins-htmlunit-java,
 + libjenkins-json-java (>= 2.1-rev7),
-  libjenkins-remoting-java (>= 2.11),
++ libjenkins-remoting-java (>= 2.16),
 + libjenkins-trilead-ssh2-java,
 + libjenkins-winstone-java (>= 0.9.10-jenkins-35),
 + libjenkins-xstream-java,
 + libjetty-java,
 + libjffi-java,
 + libjfreechart-java,
 + libjmdns-java,
 + libjna-java,
 + libjnr-posix-java,
 + libjson-java,
 + libjstl1.1-java,
 + libjtidy-java,
 + liblocalizer-java,
 + libmaven-antrun-extended-plugin-java,
 + libmaven-assembly-plugin-java,
 + libmaven-dependency-plugin-java,
 + libmaven-embedder-java,
 + libmaven-enforcer-plugin-java,
 + libmaven-hpi-plugin-java,
 + libmaven-install-plugin-java,
 + libmaven-javadoc-plugin-java,
 + libmaven-stapler-plugin-java,
 + libmaven-war-plugin-java,
 + libmaven2-core-java,
 + libmetainf-services-java,
 + libmockito-java,
 + libowasp-java-html-sanitizer-java,
 + libpam4j-java,
 + librobust-http-client-java,
 + libsisu-guice-java,
 + libservlet2.5-java,
 + libsezpoz-java,
 + libspring-aop-java,
 + libspring-core-java,
 + libspring-ldap-java,
 + libspring-web-java,
 + libstapler-adjunct-codemirror-java,
 + libstapler-adjunct-timeline-java,
-  libstapler-java (>= 1.182),
++ libstapler-java (>= 1.189),
 + libtrilead-putty-extension-java,
 + libtxw2-java,
 + libxpp3-java,
 + ttf-dejavu-core
 +Standards-Version: 3.9.3
 +Homepage: http://jenkins-ci.org/
 +Vcs-Git: git://git.debian.org/git/pkg-java/jenkins.git
 +Vcs-Browser: http://git.debian.org/?p=pkg-java/jenkins.git
 +DM-Upload-Allowed: yes
 +
 +Package: libjenkins-java
 +Architecture: all
 +Depends: ${maven:Depends}, ${misc:Depends}
 +Recommends: ${maven:OptionalDepends}
 +Description: Jenkins CI core Java libraries
 + Jenkins monitors executions of repeated jobs, such as building a software
 + project or jobs run by cron. Among those things, current Jenkins focuses
 + on the following two jobs:
 + .
 +  * Building/testing software projects continuously, just like CruiseControl
 +    or DamageControl. In a nutshell, Jenkins provides an easy-to-use
 +    so-called continuous integration system, making it easier for developers
 +    to integrate changes to the project, and making it easier for users to
 +    obtain a fresh build. The automated, continuous build increases
 +    productivity.
 +  * Monitoring executions of externally-run jobs, such as cron jobs and
 +    procmail jobs, even those that are run on a remote machine. For example,
 +    with cron, all you receive is regular e-mails that capture the output,
 +    and it is up to you to look at them diligently and notice when it broke.
 +    Jenkins keeps those outputs and makes it easy for you to notice when
 +    something is wrong.
 + .
 + This package contains the core libraries that are used by Jenkins.
 + These are useful when building other components such as plugins.
 +
 +Package: libjenkins-plugin-parent-java
 +Architecture: all
 +Depends:
 + junit4,
 + libjenkins-java,
 + libmaven-hpi-plugin-java,
 + libmaven-javadoc-plugin-java,
 + libmaven-stapler-plugin-java,
 + libservlet2.5-java,
 + libsurefire-java,
 + ${misc:Depends}
 +Description: Jenkins Plugin Parent Maven POM
 + Jenkins monitors executions of repeated jobs, such as building a software
 + project or jobs run by cron. Among those things, current Jenkins focuses
 + on the following two jobs:
 + .
 +  * Building/testing software projects continuously, just like CruiseControl
 +    or DamageControl. In a nutshell, Jenkins provides an easy-to-use
 +    so-called continuous integration system, making it easier for developers
 +    to integrate changes to the project, and making it easier for users to
 +    obtain a fresh build. The automated, continuous build increases
 +    productivity.
 +  * Monitoring executions of externally-run jobs, such as cron jobs and
 +    procmail jobs, even those that are run on a remote machine. For example,
 +    with cron, all you receive is regular e-mails that capture the output,
 +    and it is up to you to look at them diligently and notice when it broke.
 +    Jenkins keeps those outputs and makes it easy for you to notice when
 +    something is wrong.
 + .
 + This package contains the parent POM file that all Jenkins plugins and modules
 + should be built against.
 +
 +Package: jenkins-common
 +Architecture: all
 +Depends:
 + libjenkins-remoting-java,
 + libjffi-java,
 + libjna-java,
 + libjnr-posix-java,
 + ${misc:Depends}
 +Recommends: jenkins-cli
 +Description: Jenkins common Java components and web application
 + Jenkins monitors executions of repeated jobs, such as building a software
 + project or jobs run by cron. Among those things, current Jenkins focuses
 + on the following two jobs:
 + .
 +  * Building/testing software projects continuously, just like CruiseControl
 +    or DamageControl. In a nutshell, Jenkins provides an easy-to-use
 +    so-called continuous integration system, making it easier for developers
 +    to integrate changes to the project, and making it easier for users to
 +    obtain a fresh build. The automated, continuous build increases
 +    productivity.
 +  * Monitoring executions of externally-run jobs, such as cron jobs and
 +    procmail jobs, even those that are run on a remote machine. For example,
 +    with cron, all you receive is regular e-mails that capture the output,
 +    and it is up to you to look at them diligently and notice when it broke.
 +    Jenkins keeps those outputs and makes it easy for you to notice when
 +    something is wrong.
 + .
 + This package contains the main Jenkin Web Application and supporting
 + Java libraries.
 +
 +Package: jenkins
 +Architecture: all
 +Depends:
 + adduser,
 + default-jre-headless | java6-runtime-headless,
 + jenkins-common,
 + ${jenkins-daemon-deps},
 + ${misc:Depends}
 +Conflicts: jenkins-tomcat, tomcat6
 +Description: Continuous Integration and Job Scheduling Server
 + Jenkins monitors executions of repeated jobs, such as building a software
 + project or jobs run by cron. Among those things, current Jenkins focuses
 + on the following two jobs:
 + .
 +  * Building/testing software projects continuously, just like CruiseControl
 +    or DamageControl. In a nutshell, Jenkins provides an easy-to-use
 +    so-called continuous integration system, making it easier for developers
 +    to integrate changes to the project, and making it easier for users to
 +    obtain a fresh build. The automated, continuous build increases
 +    productivity.
 +  * Monitoring executions of externally-run jobs, such as cron jobs and
 +    procmail jobs, even those that are run on a remote machine. For example,
 +    with cron, all you receive is regular e-mails that capture the output,
 +    and it is up to you to look at them diligently and notice when it broke.
 +    Jenkins keeps those outputs and makes it easy for you to notice when
 +    something is wrong.
 + .
 + This package supports using Jenkins in standalone mode utilising the
 + embedded winstone servlet container.
 +
 +Package: jenkins-slave
 +Architecture: all
 +Depends:
 + adduser,
 + default-jre-headless | java6-runtime-headless,
 + ${jenkins-daemon-deps},
 + ${misc:Depends}
 +Recommends: jenkins-cli, ssh-server | openssh-server
 +Description: Jenkins slave node helper
 + Jenkins monitors executions of repeated jobs, such as building a software
 + project or jobs run by cron. Among those things, current Jenkins focuses
 + on the following two jobs:
 + .
 +  * Building/testing software projects continuously, just like CruiseControl
 +    or DamageControl. In a nutshell, Jenkins provides an easy-to-use
 +    so-called continuous integration system, making it easier for developers
 +    to integrate changes to the project, and making it easier for users to
 +    obtain a fresh build. The automated, continuous build increases
 +    productivity.
 +  * Monitoring executions of externally-run jobs, such as cron jobs and
 +    procmail jobs, even those that are run on a remote machine. For example,
 +    with cron, all you receive is regular e-mails that capture the output,
 +    and it is up to you to look at them diligently and notice when it broke.
 +    Jenkins keeps those outputs and makes it easy for you to notice when
 +    something is wrong.
 + .
 + This package provides a metapackage to install the dependencies required
 + to support running jenkins slave nodes.
 + .
 + It also includes an upstart configuration and helper script to start a
 + Jenkins Slave locally (where direct network access to the slave might not
 + be possible).
 +
 +Package: jenkins-external-job-monitor
 +Architecture: all
 +Depends:
 + ant,
 + default-jre-headless | java6-runtime-headless,
 + libcommons-io-java,
 + libcommons-lang-java,
 + libjenkins-remoting-java,
 + libjenkins-xstream-java,
 + libjffi-java,
 + libjnr-posix-java,
 + ${misc:Depends}
 +Description: Jenkins CI external job monitoring
 + Jenkins monitors executions of repeated jobs, such as building a software
 + project or jobs run by cron. Among those things, current Jenkins focuses
 + on the following two jobs:
 + .
 +  * Building/testing software projects continuously, just like CruiseControl
 +    or DamageControl. In a nutshell, Jenkins provides an easy-to-use
 +    so-called continuous integration system, making it easier for developers
 +    to integrate changes to the project, and making it easier for users to
 +    obtain a fresh build. The automated, continuous build increases
 +    productivity.
 +  * Monitoring executions of externally-run jobs, such as cron jobs and
 +    procmail jobs, even those that are run on a remote machine. For example,
 +    with cron, all you receive is regular e-mails that capture the output,
 +    and it is up to you to look at them diligently and notice when it broke.
 +    Jenkins keeps those outputs and makes it easy for you to notice when
 +    something is wrong.
 + .
 + This package provides the Java dependencies and a helper script for
 + running external jobs which are monitored by Jenkins.
 +
 +Package: jenkins-cli
 +Architecture: all
 +Depends:
 + default-jre-headless | java6-runtime-headless,
 + libjffi-java,
 + libjnr-posix-java,
 + ${misc:Depends}
 +Description: Jenkins CI Command Line Interface
 + Jenkins monitors executions of repeated jobs, such as building a software
 + project or jobs run by cron. Among those things, current Jenkins focuses
 + on the following two jobs:
 + .
 +  * Building/testing software projects continuously, just like CruiseControl
 +    or DamageControl. In a nutshell, Jenkins provides an easy-to-use
 +    so-called continuous integration system, making it easier for developers
 +    to integrate changes to the project, and making it easier for users to
 +    obtain a fresh build. The automated, continuous build increases
 +    productivity.
 +  * Monitoring executions of externally-run jobs, such as cron jobs and
 +    procmail jobs, even those that are run on a remote machine. For example,
 +    with cron, all you receive is regular e-mails that capture the output,
 +    and it is up to you to look at them diligently and notice when it broke.
 +    Jenkins keeps those outputs and makes it easy for you to notice when
 +    something is wrong.
 + .
 + This package provies the Jenkins Command Line Interface that supports a
 + wide range of remote interaction with a Jenkins instance.
 +
 +Package: jenkins-tomcat
 +Architecture: all
 +Depends: jenkins-common, tomcat6, ${misc:Depends}
 +Conflicts: jenkins
 +Provides: jenkins
 +Description: Jenkins CI on Tomcat 6
 + Jenkins monitors executions of repeated jobs, such as building a software
 + project or jobs run by cron. Among those things, current Jenkins focuses
 + on the following two jobs:
 + .
 +  * Building/testing software projects continuously, just like CruiseControl
 +    or DamageControl. In a nutshell, Jenkins provides an easy-to-use
 +    so-called continuous integration system, making it easier for developers
 +    to integrate changes to the project, and making it easier for users to
 +    obtain a fresh build. The automated, continuous build increases
 +    productivity.
 +  * Monitoring executions of externally-run jobs, such as cron jobs and
 +    procmail jobs, even those that are run on a remote machine. For example,
 +    with cron, all you receive is regular e-mails that capture the output,
 +    and it is up to you to look at them diligently and notice when it broke.
 +    Jenkins keeps those outputs and makes it easy for you to notice when
 +    something is wrong.
 + .
 + This package provides a Jenkins CI instance deployed on Apache Tomcat 6.
diff --combined debian/jenkins.README.Debian
index 7f72ea8,0000000..2a69355
mode 100644,000000..100644
--- a/debian/jenkins.README.Debian
+++ b/debian/jenkins.README.Debian
@@@ -1,38 -1,0 +1,35 @@@
 +jenkins for Debian
 +------------------
 +
 +This package differs in the following ways from the upstream distribution of
 +jenkins:
 + 
 + * Plugins are not bundled by default:
 +    - SSH Slaves Plugin
 +    - Maven Integration Plugin
 +    - Subversion Plugin
 +   Note that jenkins for Debian retains binary compatibility with upstream
 +   plugins so these can be installed through the 'Manage Plugins' option 
 +   with Jenkins.
 +
 + * Native OS integration features that are disabled:
 +    - Solaris: support for libzfs and libembeddedsu4j.
 +    - Windows: native control of remote windows slaves, native integration
 +      with Windows process management, windows service deployment of
 +      Jenkins.
 +   Note that it is possible to use Windows slaves; however they will need
 +   to be launched using JNLP from the slave itself.
 +
 + * Miscellanous dependency changes that Developers should be aware of:
-     - asm v2 -> v3
-     - jcaptcha 1.x -> 2.x
 +    - jna-posix -> jnr-posix (inline with upstream project renaming)
-     - groovy 1.6.x -> 1.7.x
 +
 + * Branding: if available on the client, the Web UI will use the Ubuntu 
 +   font.
 +
 + * Packages + wrapper scripts are provided for:
 +    - Monitoring of arbitrary jobs: jenkins-external-job-monitor
 +	  + see man jenkins-monitor-job for more details.
 +    - Jenkins CLI: jenkins-cli
 +      + see man jenkins-cli for more details.
 +   
 + -- James Page <james.page at ubuntu.com>  Wed, 20 Jul 2011 11:34:02 +0100
diff --combined debian/maven.ignoreRules
index 0da7643,0000000..013cda6
mode 100644,000000..100644
--- a/debian/maven.ignoreRules
+++ b/debian/maven.ignoreRules
@@@ -1,82 -1,0 +1,84 @@@
 +# Maven ignore rules - ignore some Maven dependencies and plugins
 +# Format of this file is:
 +# [group] [artifact] [type] [version] [classifier] [scope]
 +# where each element can be either
 +# - the exact string, for example org.apache for the group, or 3.1
 +#   for the version. In this case, the element is simply matched
 +#   and left as it is
 +# - * (the star character, alone). In this case, anything will
 +#   match and be left as it is. For example, using * on the
 +#  position of the artifact field will match any artifact id
 +# All elements much match before a rule can be applied
 +# Example rule: match jar with groupid= junit, artifactid= junit
 +# and version starting with 3., this dependency is then removed
 +# from the POM
 +#   junit junit jar s/3\\..*/3.x/
 +
 +# OK: Don't need native stuff for Debian/Ubuntu
 +com.sun.winsw winsw * * * *
 +# OK: Bits of the build which don't add value for Debian
 +org.apache.maven.plugins maven-pmd-plugin * * * *
 +org.apache.maven.plugins maven-project-info-reports-plugin * * * *
 +org.apache.maven.plugins maven-release-plugin * * * *
 +org.apache.maven.plugins maven-remote-resources-plugin * * * *
 +# OK: Used for generating the wiki - not required for Debian
 +org.codehaus.mojo apt-maven-plugin * * * *
 +org.jvnet.maven-jellydoc-plugin maven-jellydoc-plugin * * * *
 +# OK: Bugs should be found upstream, not in Debian!
 +org.codehaus.mojo findbugs-maven-plugin * * * *
 +# FIXME: Used by test module - not currently enabled
 +com.sun.maven maven-junit-plugin * * * *
 +# OK: Only required for Java 1.5 which we don't support in Debia
 +org.codehaus.woodstox wstx-asl * * * *
 +# FIXME: Testing - when we get to it
 +org.easymock easymock * * * *
 +org.jvnet.hudson netx * * * *
 +# FIXME: Something todo with embedding - don't think its required.
 +org.jvnet.hudson wagon-webdav * * * *
 +# FIXME: Once building from source get this.
 +org.jvnet.hudson.plugins subversion * * * *
 +# OK: Used for documentation generation - not required
 +org.jvnet.hudson.tools extension-point-lister * * * *
 +org.jvnet.hudson.tools maven-encoding-plugin * * * *
 +# OK: used for debugging (basically jetty)
 +org.jenkins-ci.tools   maven-jenkins-dev-plugin * * * *
 +# FIXME: Used by core and tests for unit testing groovy
 +org.kohsuke.gmaven gmaven-plugin * * * *
 +org.codehaus.groovy.maven gmaven-plugin * * * *
 +# FIXME: for testing
 +org.kohsuke.stapler stapler-adjunct-timeline * * tests *
 +# FIXME: currently the maven plugin built in this project is disabled. 
 +# this tells the war module to ignore it.
 +org.jenkins-ci.main maven-plugin * * * *
 +# OK: Modules not current built as part of jenkins core on Ubuntu
 +org.jenkins-ci.main jenkins-test-harness * * * *
 +org.jenkins-ci.main ui-samples-plugin * * * * 
 +# OK: Cloudbees License Plugin - disable for Debian build
 +com.cloudbees maven-license-plugin * * * *
 +# OK: Platform Specific Libraries not relevant for Debian
 +com.sun.solaris embedded_su4j * * * *
 +org.jvnet.libzfs libzfs * * * *
 +org.jvnet.winp winp * * * *
 +org.jenkins-ci jinterop-wmi * * * *
 +org.jenkins-ci windows-remote-command * * * *
 +# OK: Ignore asm2 components not present in asm3
 +#asm asm-attrs * * * *
 +# New deps to ignore for 1.424.1
 +org.codehaus.mojo build-helper-maven-plugin * * * *
 +# Ignore JRebel - does not appear to by used
 +org.kohsuke.stapler stapler-jrebel * * * *
 +# Ignore core annotation processors - this is a dummy pakcage
 +org.jenkins-ci core-annotation-processors * * * *
 +# New suff for 1.447.1
 +org.codehaus.gmaven gmaven-plugin * * * *
 +# FIXME - package powermock and re-enable testing
 +org.powermock * * * * *
 +# Ignore
 +findbugs annotations * * * *
 +# This is a single Java file - patching into jenkins for the time being
 +org.jenkins-ci version-number * * * *
 +# FIXME - ignore sshd module until its packaged
 +org.jenkins-ci.modules sshd * * * *
- 
++# New stuff for 1.466.1
++org.kohsuke.stapler stapler-adjunct-zeroclipboard * * * *
++org.kohsuke windows-package-checker * * * *
diff --combined debian/maven.rules
index 1faa250,0000000..ab20ada
mode 100644,000000..100644
--- a/debian/maven.rules
+++ b/debian/maven.rules
@@@ -1,66 -1,0 +1,69 @@@
 +# Maven rules - transform Maven dependencies and plugins
 +# Forma of this file is:
 +# [group] [artifact] [type] [version] [classifier] [scope]
 +# where each element can be either
 +# - the exact string, for example org.apache for the group, or 3.1
 +#   for the version. In this case, the element is simply matched
 +#   and left as it is
 +# - * (the star character, alone). In this case, anything will
 +#   match and be left as it is. For example, using * on the
 +#  position of the artifact field will match any artifact id
 +# - a regular expression of the form s/match/replace/
 +#   in this case, elements that match are transformed using
 +#   the regex rule.
 +# All elements much match before a rule can be applied
 +# Example rule: match jar with groupid= junit, artifactid= junit
 +# and version starting with 3., replacing the version with 3.x
 +#   junit junit jar s/3\\..*/3.x/
 +
 +antlr antlr jar s/2\..*/2.x/ * *
 +commons-collections commons-collections jar s/3\..*/3.x/ * *
 +commons-httpclient commons-httpclient jar s/3\..*/3.x/ * *
 +junit s/junit-dep/junit/ * s/.*/4.x/ * *
 +# Map onto exact version during build process
- org.jenkins-ci.main * * s/1\..*/1.447.2/ * *
++org.jenkins-ci.main * * s/1\..*/1.466.2/ * *
 +# Handle plugin package
 +org.kohsuke access-modifier-annotation jar s/.*/1.0/ * *
 +org.kohsuke access-modifier-checker *  s/.*/1.0/ * *
 +# 3.x is needed due to later versions of some deps in Debian
 +# Patch to be submitted back upstream.
 +asm * * s/2\..*/3.x/ * *
 +com.octo.captcha s/jcaptcha-all/jcaptcha/ * s/.*/debian/ * *
 +commons-collections commons-collections * s/3\..*/3.x/ * *
 +commons-httpclient commons-httpclient * s/3\..*/3.x/ * *
 +commons-logging s/commons-logging-api/commons-logging/ * s/.*/debian/ * *
 +s/groovy/org.codehaus.groovy/ groovy * s/.*/debian/ * *
 +org.kohsuke.stapler maven-stapler-plugin * s/.*/1.16/ * *
 +s/ant/org.apache.ant/ * * s/.*/debian/ * *
 +s/groovy/org.codehaus.groovy/ groovy* * s/.*/debian/ * *
 +org.mortbay.jetty * * s/6\..*/6.x/ * *
 +org.springframework * * s/2\..*/3.x/ * *
 +s/javax.servlet/javax.servlet.jsp/ jsp-api jar s/2\..*/2.1/ * *
 +# Remap hudson forks back to standard versions
 +s/org.jvnet.hudson/javax.activation/ activation * s/.*/debian/ * *
 +s/org.jenkins-ci/javax.jmdns/ jmdns * s/.*/debian/ * *
 +s/org.jvnet.hudson/net.sf.jtidy/ jtidy * s/.*/debian/ * *
 +s/org.jvnet.hudson/org.apache.maven/ maven-embedder * s/.*/debian/ * *
 +org.springframework.security * * s/2\..*/2.x/ * *
 +org.jenkins-ci.tools maven-hpi-plugin * s/.*/1.79/ * *
 +# Remap of jellys to jenkins variant
 +s/commons-jelly/org.jenkins-ci/ * * s/.*/debian/ * *
 +s/org.jvnet.hudson/org.jenkins-ci/ commons-jelly-tags-define * s/.*/debian/ * *
 +# Later version of task-reactor
 +s/org.jvnet.hudson/org.jenkins-ci/ task-reactor * s/.*/debian/ * *
 +# JSTL 1.1 
 +javax.servlet jstl * s/1\.1\..*/1.1/ * *
 +# Remap for rename jna->jnr in Debian
 +org.jruby.ext.posix s/jna-posix/jnr-posix/ * s/.*/debian/ * *
 +# Remap for later version of animal sniffer
 +s/org.jvnet/org.codehaus.mojo/ s/animal-sniffer-annotation/animal-sniffer-annotations/ jar s/.*/debian/ * *
 +# Update to servlet2.5
 +javax.servlet servlet-api * s/.*/2.5/ * *
 +# Updates for 1.424.6
 +s/org.kohsuke/owasp-java-html-sanitizer/ s/owasp-html-sanitizer/owasp-java-html-sanitizer/ * s/.*/debian/ * *
 +# Updates for 1.447.1
 +s/org.jvnet.hudson/org.jenkins-ci/ commons-jexl * s/.*/debian/ * *
 +s/org.jvnet.hudson/org.jenkins-ci/ annotation-indexer * s/.*/debian/ * *
++# Updates for 1.446.1
++# FIXME: resolve once libpam4j has been upgraded.
++s/org.kohsuke/org.jvnet.libpam4j/ libpam4j * s/.*/debian/ * *
diff --combined debian/patches/build/apt-stapler-processing.patch
index 9c9879e,0000000..8200f4f
mode 100644,000000..100644
--- a/debian/patches/build/apt-stapler-processing.patch
+++ b/debian/patches/build/apt-stapler-processing.patch
@@@ -1,39 -1,0 +1,39 @@@
 +Description: Jenkins 1.409.x upstream uses an older version of stapler and
 + the maven-stapler-plugin that those present in Debian and Ubuntu.  As a result
 + the packaging for Jenkins core needs to be updated to be a straight jar as the
 + newer version of stapler uses JSR-269 for annotation processing and hooks into
 + the standard compile phase of maven.
 + .
 + This patch can be dropped when Jenkins release their next LTS release.
 +Author: James Page <james.page at ubuntu.com>
 +Forwarded: not-needed
 +
 +Index: jenkins/core/pom.xml
 +===================================================================
- --- jenkins.orig/core/pom.xml	2012-04-26 14:11:30.000000000 +0100
- +++ jenkins/core/pom.xml	2012-04-26 14:15:07.100640255 +0100
- @@ -617,6 +617,24 @@
++--- jenkins.orig/core/pom.xml	2012-07-24 16:33:04.738053812 +0100
+++++ jenkins/core/pom.xml	2012-07-24 16:33:05.898057949 +0100
++@@ -638,6 +638,24 @@
 +         </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 --combined debian/patches/build/build.patch
index c349924,0000000..e2a3562
mode 100644,000000..100644
--- a/debian/patches/build/build.patch
+++ b/debian/patches/build/build.patch
@@@ -1,50 -1,0 +1,50 @@@
 +Description: Misc patches to main POM file to disable some modules
 +Author: James Page <james.page at ubuntu.com>
 +Forwarded: not-needed
 +
 +Index: jenkins/pom.xml
 +===================================================================
- --- jenkins.orig/pom.xml	2012-04-26 14:29:34.000000000 +0100
- +++ jenkins/pom.xml	2012-04-26 14:35:33.009556068 +0100
++--- jenkins.orig/pom.xml	2012-07-24 16:32:51.990008351 +0100
+++++ jenkins/pom.xml	2012-07-24 16:33:04.738053812 +0100
 +@@ -48,10 +48,7 @@
 + 
 +   <modules>
 +     <module>core</module>
 +-    <module>maven-plugin</module>
 +-    <module>ui-samples-plugin</module>
 +     <module>war</module>
 +-    <module>test</module>
 +     <module>cli</module>
 +   </modules>
 + 
- @@ -574,9 +571,6 @@
++@@ -575,9 +572,6 @@
 +                 <requireJavaVersion>
 +                   <version>1.6.0-18</version>
 +                 </requireJavaVersion>
 +-                <requireMavenVersion>
 +-                  <version>3.0</version>
 +-                </requireMavenVersion>
 +               </rules>
 +             </configuration>
 +           </execution>
 +Index: jenkins/core/pom.xml
 +===================================================================
- --- jenkins.orig/core/pom.xml	2012-04-26 14:29:34.000000000 +0100
- +++ jenkins/core/pom.xml	2012-04-26 14:35:16.893548264 +0100
- @@ -297,6 +297,16 @@
++--- jenkins.orig/core/pom.xml	2012-07-24 16:32:51.990008351 +0100
+++++ jenkins/core/pom.xml	2012-07-24 16:33:04.738053812 +0100
++@@ -319,6 +319,16 @@
 +       <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 --combined debian/patches/build/disable-plugins.patch
index 6a7d7c9,0000000..65316e3
mode 100644,000000..100644
--- a/debian/patches/build/disable-plugins.patch
+++ b/debian/patches/build/disable-plugins.patch
@@@ -1,69 -1,0 +1,69 @@@
 +Description: Disables packagaging of plugins with core Jenkins
 +Author: James Page <james.page at ubuntu.com>
 +Forwarded: not-needed
 +
 +Index: jenkins/war/pom.xml
 +===================================================================
- --- jenkins.orig/war/pom.xml	2012-04-26 14:09:39.411340903 +0100
- +++ jenkins/war/pom.xml	2012-04-26 14:15:02.484642064 +0100
++--- jenkins.orig/war/pom.xml	2012-07-24 16:32:51.758007525 +0100
+++++ jenkins/war/pom.xml	2012-07-24 16:33:05.618056952 +0100
 +@@ -149,6 +149,11 @@
 +       <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>
 +@@ -236,48 +241,6 @@
 +                   <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.34</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>
 +               </artifactItems>
 +               <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/plugins</outputDirectory>
 +               <stripVersion>true</stripVersion>
diff --combined debian/patches/build/jenkins-version-number.patch
index 70a8fb9,0000000..f7b40c2
mode 100644,000000..100644
--- a/debian/patches/build/jenkins-version-number.patch
+++ b/debian/patches/build/jenkins-version-number.patch
@@@ -1,501 -1,0 +1,501 @@@
 +Description: This is provided by upstream as a separate package.
 + As it is actually just a single Java file and has limited re-use
 + outside of Jenkins providing as a patch instead.
 + .
 + Might package this later if a) it changes alot or b) something else
 + needs it outside of Jenkins core.
 +Author: James Page <james.page at ubuntu.com>
 +Origin: https://github.com/jenkinsci/lib-version-number
 +Forwarded: not-needed
 +
 +Index: jenkins/core/src/main/java/hudson/util/VersionNumber.java
 +===================================================================
 +--- /dev/null	1970-01-01 00:00:00.000000000 +0000
- +++ jenkins/core/src/main/java/hudson/util/VersionNumber.java	2012-04-26 15:18:40.597958728 +0100
+++++ jenkins/core/src/main/java/hudson/util/VersionNumber.java	2012-07-24 16:33:06.170058918 +0100
 +@@ -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 --combined debian/patches/build/openjdk6.patch
index fbb0c45,0000000..ee2dbed
mode 100644,000000..100644
--- a/debian/patches/build/openjdk6.patch
+++ b/debian/patches/build/openjdk6.patch
@@@ -1,54 -1,0 +1,42 @@@
 +Description: Misc patches to get Jenkins to compile using OpenJDK 6. This
 + should not be required and points to an issue with generics compilation in 
 + OpenJDK - reported as such.
 +Author: James Page <james.page at ubuntu.com>
 +Forwarded: https://bugs.launchpad.net/ubuntu/+source/openjdk-6/+bug/716959
 +
 +Index: jenkins/core/src/main/java/hudson/model/AbstractBuild.java
 +===================================================================
- --- jenkins.orig/core/src/main/java/hudson/model/AbstractBuild.java	2012-05-02 14:12:34.000000000 +0100
- +++ jenkins/core/src/main/java/hudson/model/AbstractBuild.java	2012-05-02 14:16:24.006955598 +0100
- @@ -1243,6 +1243,15 @@
++--- jenkins.orig/core/src/main/java/hudson/model/AbstractBuild.java	2012-07-24 16:32:51.874007937 +0100
+++++ jenkins/core/src/main/java/hudson/model/AbstractBuild.java	2012-07-24 16:33:05.018054811 +0100
++@@ -1267,6 +1267,15 @@
 +     }
 + 
 +     private static final Logger LOGGER = Logger.getLogger(AbstractBuild.class.getName());
 ++
 ++    /**
 ++     * The project this build is for.
 ++     */
 ++    public P getParent() {
 ++        return (P)super.getParent();
 ++    }
 ++
 ++
 + }
 + 
 + 
 +Index: jenkins/core/src/main/java/hudson/DescriptorExtensionList.java
 +===================================================================
- --- jenkins.orig/core/src/main/java/hudson/DescriptorExtensionList.java	2012-05-02 14:12:34.000000000 +0100
- +++ jenkins/core/src/main/java/hudson/DescriptorExtensionList.java	2012-05-02 14:16:24.006955598 +0100
++--- jenkins.orig/core/src/main/java/hudson/DescriptorExtensionList.java	2012-07-24 16:32:51.874007937 +0100
+++++ jenkins/core/src/main/java/hudson/DescriptorExtensionList.java	2012-07-24 16:33:05.018054811 +0100
 +@@ -81,8 +81,9 @@
 +      * @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);
 +     }
 + 
- Index: jenkins/core/src/main/java/jenkins/model/GlobalConfiguration.java
- ===================================================================
- --- jenkins.orig/core/src/main/java/jenkins/model/GlobalConfiguration.java	2012-05-02 14:12:34.000000000 +0100
- +++ jenkins/core/src/main/java/jenkins/model/GlobalConfiguration.java	2012-05-02 14:20:43.095765584 +0100
- @@ -48,6 +48,6 @@
-       * Returns all the registered {@link GlobalConfiguration} descriptors.
-       */
-      public static ExtensionList<GlobalConfiguration> all() {
- -        return Jenkins.getInstance().getDescriptorList(GlobalConfiguration.class);
- +        return Jenkins.getInstance().<GlobalConfiguration,GlobalConfiguration>getDescriptorList(GlobalConfiguration.class);
-      }
-  }
diff --combined debian/patches/build/remove-findbugs.patch
index 6aa27b0,0000000..723edc5
mode 100644,000000..100644
--- a/debian/patches/build/remove-findbugs.patch
+++ b/debian/patches/build/remove-findbugs.patch
@@@ -1,96 -1,0 +1,116 @@@
 +Description: The Debian build process does not run findbugs as
 + this is not packaged for Debian.
 + .
 + This patch removes all calls to the findbugs annotations package
 + as this is not packaged either.
 +Author: James Page <james.page at ubuntu.com>
 +Forwarded: not-needed
 +
 +Index: jenkins/core/src/main/java/hudson/logging/LogRecorderManager.java
 +===================================================================
- --- jenkins.orig/core/src/main/java/hudson/logging/LogRecorderManager.java	2012-04-26 14:09:39.199341012 +0100
- +++ jenkins/core/src/main/java/hudson/logging/LogRecorderManager.java	2012-04-30 12:26:52.355201214 +0100
++--- jenkins.orig/core/src/main/java/hudson/logging/LogRecorderManager.java	2012-07-24 17:48:11.807867241 +0100
+++++ jenkins/core/src/main/java/hudson/logging/LogRecorderManager.java	2012-07-24 17:48:22.495901489 +0100
 +@@ -112,7 +112,6 @@
 +     /**
 +      * 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;
 +Index: jenkins/core/src/main/java/hudson/util/PluginServletFilter.java
 +===================================================================
- --- jenkins.orig/core/src/main/java/hudson/util/PluginServletFilter.java	2012-04-26 14:09:39.215341004 +0100
- +++ jenkins/core/src/main/java/hudson/util/PluginServletFilter.java	2012-04-30 12:27:25.555306327 +0100
++--- jenkins.orig/core/src/main/java/hudson/util/PluginServletFilter.java	2012-07-24 17:48:11.807867241 +0100
+++++ jenkins/core/src/main/java/hudson/util/PluginServletFilter.java	2012-07-24 17:48:22.495901489 +0100
 +@@ -58,7 +58,6 @@
 +     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)  {
 +Index: jenkins/core/src/main/java/hudson/WebAppMain.java
 +===================================================================
- --- jenkins.orig/core/src/main/java/hudson/WebAppMain.java	2012-04-26 14:09:39.195341014 +0100
- +++ jenkins/core/src/main/java/hudson/WebAppMain.java	2012-04-30 12:27:08.699252835 +0100
- @@ -260,7 +260,6 @@
++--- jenkins.orig/core/src/main/java/hudson/WebAppMain.java	2012-07-24 17:48:11.807867241 +0100
+++++ jenkins/core/src/main/java/hudson/WebAppMain.java	2012-07-24 17:48:22.495901489 +0100
++@@ -251,7 +251,6 @@
 + 	/**
 +      * 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);
 +Index: jenkins/core/src/main/java/jenkins/model/Jenkins.java
 +===================================================================
- --- jenkins.orig/core/src/main/java/jenkins/model/Jenkins.java	2012-04-26 14:09:39.219341002 +0100
- +++ jenkins/core/src/main/java/jenkins/model/Jenkins.java	2012-04-30 12:26:58.503220606 +0100
- @@ -670,7 +670,6 @@
++--- jenkins.orig/core/src/main/java/jenkins/model/Jenkins.java	2012-07-24 17:48:11.807867241 +0100
+++++ jenkins/core/src/main/java/jenkins/model/Jenkins.java	2012-07-24 17:48:22.499901502 +0100
++@@ -699,7 +699,6 @@
 +      * @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 {
-      	// As hudson is starting, grant this process full control
-      	SecurityContextHolder.getContext().setAuthentication(ACL.SYSTEM);
- @@ -2871,7 +2870,6 @@
++         long start = System.currentTimeMillis();
++         
++@@ -2963,7 +2962,6 @@
 +     /**
 +      * 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();
 +Index: jenkins/maven-plugin/src/main/java/hudson/maven/MavenUtil.java
 +===================================================================
- --- jenkins.orig/maven-plugin/src/main/java/hudson/maven/MavenUtil.java	2012-04-26 14:09:39.399340909 +0100
- +++ jenkins/maven-plugin/src/main/java/hudson/maven/MavenUtil.java	2012-04-30 12:26:17.835092970 +0100
- @@ -52,7 +52,6 @@
++--- jenkins.orig/maven-plugin/src/main/java/hudson/maven/MavenUtil.java	2012-07-24 17:48:11.803867228 +0100
+++++ jenkins/maven-plugin/src/main/java/hudson/maven/MavenUtil.java	2012-07-24 17:48:22.499901502 +0100
++@@ -53,7 +53,6 @@
 + import org.apache.maven.project.MavenProject;
 + import org.apache.maven.project.ProjectBuildingException;
 + 
 +-import edu.umd.cs.findbugs.annotations.SuppressWarnings;
 + 
 + /**
 +  * @author Kohsuke Kawaguchi
- @@ -138,7 +137,6 @@
++@@ -140,7 +139,6 @@
 +      * Creates a fresh {@link MavenEmbedder} instance.
 +      *
 +      */
 +-    @SuppressWarnings("RV_RETURN_VALUE_IGNORED_BAD_PRACTICE")
 +     public static MavenEmbedder createEmbedder(MavenEmbedderRequest mavenEmbedderRequest) throws MavenEmbedderException, IOException {
 +         
 +         
 +Index: jenkins/maven-plugin/src/main/java/hudson/maven/reporters/SurefireArchiver.java
 +===================================================================
- --- jenkins.orig/maven-plugin/src/main/java/hudson/maven/reporters/SurefireArchiver.java	2012-04-26 14:09:39.403340907 +0100
- +++ jenkins/maven-plugin/src/main/java/hudson/maven/reporters/SurefireArchiver.java	2012-04-30 12:26:32.387138474 +0100
- @@ -168,7 +168,6 @@
++--- jenkins.orig/maven-plugin/src/main/java/hudson/maven/reporters/SurefireArchiver.java	2012-07-24 17:48:11.803867228 +0100
+++++ jenkins/maven-plugin/src/main/java/hudson/maven/reporters/SurefireArchiver.java	2012-07-24 17:48:22.499901502 +0100
++@@ -170,7 +170,6 @@
 +         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) {
++Index: jenkins/core/src/main/java/hudson/cli/GroovyshCommand.java
++===================================================================
++--- jenkins.orig/core/src/main/java/hudson/cli/GroovyshCommand.java	2012-07-24 16:27:16.102613000 +0100
+++++ jenkins/core/src/main/java/hudson/cli/GroovyshCommand.java	2012-07-24 17:49:02.640030167 +0100
++@@ -87,7 +87,6 @@
++             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 @@
++             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 --combined debian/patches/build/remove-licensing-report.patch
index 8c41b59,0000000..44dc18c
mode 100644,000000..100644
--- a/debian/patches/build/remove-licensing-report.patch
+++ b/debian/patches/build/remove-licensing-report.patch
@@@ -1,38 -1,0 +1,38 @@@
 +Description: Upstream generates a licensing report for Jenkins deps.
 + Not generated during debian build so excluding from About Jenkins page.
 +Author: James Page <james.page at ubuntu.com>
 +Forwarded: not-needed
 +
 +Index: jenkins/core/src/main/resources/hudson/AboutJenkins/index.jelly
 +===================================================================
- --- jenkins.orig/core/src/main/resources/hudson/AboutJenkins/index.jelly	2012-02-10 15:39:22.749867338 +0000
- +++ jenkins/core/src/main/resources/hudson/AboutJenkins/index.jelly	2012-02-28 16:48:45.517724331 +0000
++--- jenkins.orig/core/src/main/resources/hudson/AboutJenkins/index.jelly	2012-07-24 16:32:51.818007739 +0100
+++++ jenkins/core/src/main/resources/hudson/AboutJenkins/index.jelly	2012-07-24 16:33:05.318055881 +0100
 +@@ -31,13 +31,6 @@
 +       <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>
 +Index: jenkins/core/src/main/resources/hudson/AboutJenkins/index.properties
 +===================================================================
- --- jenkins.orig/core/src/main/resources/hudson/AboutJenkins/index.properties	2012-02-10 15:39:22.749867338 +0000
- +++ jenkins/core/src/main/resources/hudson/AboutJenkins/index.properties	2012-02-28 16:48:45.517724331 +0000
++--- jenkins.orig/core/src/main/resources/hudson/AboutJenkins/index.properties	2012-07-24 16:32:51.818007739 +0100
+++++ jenkins/core/src/main/resources/hudson/AboutJenkins/index.properties	2012-07-24 16:33:05.318055881 +0100
 +@@ -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 --combined debian/patches/build/use-stock-asm3.patch
index 0000000,0000000..595e70d
new file mode 100644
--- /dev/null
+++ b/debian/patches/build/use-stock-asm3.patch
@@@ -1,0 -1,0 +1,49 @@@
++Description: Upstream use a remapped version of asm3 to ensure
++ that it does not conflict with asm2 elsewhere in the Jenkins
++ dependency tree.
++ .
++ In Debian/Ubuntu we have a consistent version in the tree (unlike
++ upstream) so we don't need todo this.
++Author: James Page <james.page at ubuntu.com>
++Forwarded: not-needed
++
++Index: jenkins/core/src/main/java/hudson/util/SubClassGenerator.java
++===================================================================
++--- jenkins.orig/core/src/main/java/hudson/util/SubClassGenerator.java	2012-07-24 16:27:16.000000000 +0100
+++++ jenkins/core/src/main/java/hudson/util/SubClassGenerator.java	2012-07-24 17:12:02.125151475 +0100
++@@ -25,13 +25,13 @@
++ 
++ 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.
++Index: jenkins/core/pom.xml
++===================================================================
++--- jenkins.orig/core/pom.xml	2012-07-24 16:33:21.826114780 +0100
+++++ jenkins/core/pom.xml	2012-07-24 17:16:17.865891211 +0100
++@@ -577,6 +577,13 @@
++     </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 --combined debian/patches/build/use-stock-jmdns.patch
index 77bdf5c,0000000..beaca59
mode 100644,000000..100644
--- a/debian/patches/build/use-stock-jmdns.patch
+++ b/debian/patches/build/use-stock-jmdns.patch
@@@ -1,31 -1,0 +1,31 @@@
 +Description: Jenkins upstream ships with a forked version of
 + JmDNS which has a patched in abort method with shuts down
 + uncleanly without blocking.
 + .
 + Unit this feature ships in JmDNS upstream we will live with a
 + blocking shutdown in Debian and Ubuntu.
 +Author: James Page <james.page at ubuntu.com>
 +Forwarded: not-needed
 +
 +Index: jenkins/core/src/main/java/hudson/DNSMultiCast.java
 +===================================================================
- --- jenkins.orig/core/src/main/java/hudson/DNSMultiCast.java	2012-05-02 14:34:03.000000000 +0100
- +++ jenkins/core/src/main/java/hudson/DNSMultiCast.java	2012-05-02 14:37:53.066974670 +0100
- @@ -52,12 +52,12 @@
++--- jenkins.orig/core/src/main/java/hudson/DNSMultiCast.java	2012-07-24 16:32:51.194005512 +0100
+++++ jenkins/core/src/main/java/hudson/DNSMultiCast.java	2012-07-24 16:33:08.474067138 +0100
++@@ -67,12 +67,12 @@
 + 
 +     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 --combined debian/patches/dependency-upgrades/jnr-posix-upgrade.patch
index b72c685,0000000..cf436c2
mode 100644,000000..100644
--- a/debian/patches/dependency-upgrades/jnr-posix-upgrade.patch
+++ b/debian/patches/dependency-upgrades/jnr-posix-upgrade.patch
@@@ -1,90 -1,0 +1,81 @@@
 +Description: Transitional patch from jna-posix to jnr-posix as
 + currently packaged in Debian and Ubuntu.
 +Author: James Page <james.page at ubuntu.com>
 +Forwarded: not-needed
 +
 +Index: jenkins/core/src/main/java/hudson/os/PosixAPI.java
 +===================================================================
- --- jenkins.orig/core/src/main/java/hudson/os/PosixAPI.java	2012-02-28 16:49:30.869862404 +0000
- +++ jenkins/core/src/main/java/hudson/os/PosixAPI.java	2012-04-26 14:15:30.844630973 +0100
++--- jenkins.orig/core/src/main/java/hudson/os/PosixAPI.java	2012-07-24 16:32:51.226005626 +0100
+++++ jenkins/core/src/main/java/hudson/os/PosixAPI.java	2012-07-24 16:33:08.182066097 +0100
 +@@ -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;
- @@ -26,11 +25,11 @@
++@@ -34,11 +33,11 @@
 +      * used a fallback java implementation which does not support many operations.
 +      */
-      public boolean isNative() {
++     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);
 +         }
 + 
- @@ -43,7 +42,7 @@
-          }
-  
-          public boolean isVerbose() {
- -            return false;
- +            return true;
-          }
-  
-          public File getCurrentWorkingDirectory() {
 +Index: jenkins/core/src/main/java/hudson/os/PosixException.java
 +===================================================================
- --- jenkins.orig/core/src/main/java/hudson/os/PosixException.java	2012-02-28 16:49:30.885862453 +0000
- +++ jenkins/core/src/main/java/hudson/os/PosixException.java	2012-04-26 14:15:30.844630973 +0100
++--- jenkins.orig/core/src/main/java/hudson/os/PosixException.java	2012-07-24 16:32:51.226005626 +0100
+++++ jenkins/core/src/main/java/hudson/os/PosixException.java	2012-07-24 16:33:08.182066097 +0100
 +@@ -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 @@
 +  * @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;
 +     }
 + 
 +Index: jenkins/core/pom.xml
 +===================================================================
- --- jenkins.orig/core/pom.xml	2012-04-26 14:15:28.072632057 +0100
- +++ jenkins/core/pom.xml	2012-04-26 14:15:30.844630973 +0100
- @@ -105,6 +105,11 @@
++--- jenkins.orig/core/pom.xml	2012-07-24 16:33:07.086062188 +0100
+++++ jenkins/core/pom.xml	2012-07-24 16:33:08.182066097 +0100
++@@ -117,6 +117,11 @@
 +       <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.0</version>
diff --combined debian/patches/native-integration/filter-native-integrations.patch
index bce7a6c,0000000..2ef11b2
mode 100644,000000..100644
--- a/debian/patches/native-integration/filter-native-integrations.patch
+++ b/debian/patches/native-integration/filter-native-integrations.patch
@@@ -1,27 -1,0 +1,27 @@@
 +Description: Filter non-Linux based native integrations from
 + compliation using stapler.
 +Author: James Page <james.page at ubuntu.com>
 +Forwarded: not-needed
 +
 +Index: jenkins/core/pom.xml
 +===================================================================
- --- jenkins.orig/core/pom.xml	2012-04-26 14:15:12.796638028 +0100
- +++ jenkins/core/pom.xml	2012-04-26 14:15:16.100636735 +0100
- @@ -642,6 +642,17 @@
++--- jenkins.orig/core/pom.xml	2012-07-24 16:33:06.810061201 +0100
+++++ jenkins/core/pom.xml	2012-07-24 16:33:07.086062188 +0100
++@@ -663,6 +663,17 @@
 +         <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 --combined debian/patches/native-integration/purge-embedded-su4j.patch
index 5f9ce8b,0000000..0f3874c
mode 100644,000000..100644
--- a/debian/patches/native-integration/purge-embedded-su4j.patch
+++ b/debian/patches/native-integration/purge-embedded-su4j.patch
@@@ -1,38 -1,0 +1,38 @@@
 +Description: Purge embeddedsu4j from Jenkins - only required for Solaris
 +Author: James Page <james.page at ubuntu.com>
 +Forwarded: not-needed
 +
 +Index: jenkins/core/src/main/java/hudson/os/SU.java
 +===================================================================
- --- jenkins.orig/core/src/main/java/hudson/os/SU.java	2012-02-28 16:49:31.061862988 +0000
- +++ jenkins/core/src/main/java/hudson/os/SU.java	2012-04-26 14:15:19.288635490 +0100
++--- jenkins.orig/core/src/main/java/hudson/os/SU.java	2012-07-24 16:32:51.310005927 +0100
+++++ jenkins/core/src/main/java/hudson/os/SU.java	2012-07-24 16:33:07.354063144 +0100
 +@@ -23,7 +23,6 @@
 +  */
 + package hudson.os;
 + 
 +-import com.sun.solaris.EmbeddedSu;
 + import hudson.Launcher.LocalLauncher;
 + import hudson.Util;
 + import hudson.model.Computer;
 +@@ -92,21 +91,6 @@
 +                 }
 +             }.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 --combined debian/patches/native-integration/purge-windows-support.patch
index 8b12e43,0000000..c07210d
mode 100644,000000..100644
--- a/debian/patches/native-integration/purge-windows-support.patch
+++ b/debian/patches/native-integration/purge-windows-support.patch
@@@ -1,26 -1,0 +1,26 @@@
 +Description: Purges native windows integration for slave from Jenkins.
 + Although this may be useful in some deployments the requirements in terms
 + of additional packages are not insignificant and contain a number of forks.
 +Author: James Page <james.page at ubuntu.com>
 +Forwarded: not-needed
 +
 +Index: jenkins/core/src/main/java/hudson/slaves/SlaveComputer.java
 +===================================================================
- --- jenkins.orig/core/src/main/java/hudson/slaves/SlaveComputer.java	2012-04-26 14:09:39.211341006 +0100
- +++ jenkins/core/src/main/java/hudson/slaves/SlaveComputer.java	2012-04-26 14:15:25.276633148 +0100
++--- jenkins.orig/core/src/main/java/hudson/slaves/SlaveComputer.java	2012-07-24 16:32:51.254005727 +0100
+++++ jenkins/core/src/main/java/hudson/slaves/SlaveComputer.java	2012-07-24 16:33:07.914065141 +0100
 +@@ -35,7 +35,6 @@
 + 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;
- @@ -362,7 +361,6 @@
++@@ -365,7 +364,6 @@
 +         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 --combined debian/patches/native-integration/purge-winp.patch
index 8ded88b,0000000..feb1988
mode 100644,000000..100644
--- a/debian/patches/native-integration/purge-winp.patch
+++ b/debian/patches/native-integration/purge-winp.patch
@@@ -1,117 -1,0 +1,117 @@@
 +Description: Purges windows process integration from Jenkins
 + not needed on Debian based systems
 +Author: James Page <james.page at ubuntu.com>
 +Forwarded: not-needed
 +
 +Index: jenkins/core/src/main/java/hudson/util/ProcessTree.java
 +===================================================================
- --- jenkins.orig/core/src/main/java/hudson/util/ProcessTree.java	2012-04-26 14:09:39.215341004 +0100
- +++ jenkins/core/src/main/java/hudson/util/ProcessTree.java	2012-04-26 14:15:22.328634299 +0100
++--- jenkins.orig/core/src/main/java/hudson/util/ProcessTree.java	2012-07-24 16:32:51.282005826 +0100
+++++ jenkins/core/src/main/java/hudson/util/ProcessTree.java	2012-07-24 16:33:07.630064127 +0100
 +@@ -37,8 +37,6 @@
 + 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 @@
 +             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 @@
 +         }
 +     };
 + 
 +-
 +-    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 static boolean enabled = !Boolean.getBoolean(ProcessTreeKiller.class.getName()+".disable")
 +                                  && !Boolean.getBoolean(ProcessTree.class.getName()+".disable");
 +-}
 +\ No newline at end of file
 ++}
diff --combined debian/patches/native-integration/windows-service-disable.patch
index 2a25993,0000000..e096dc8
mode 100644,000000..100644
--- a/debian/patches/native-integration/windows-service-disable.patch
+++ b/debian/patches/native-integration/windows-service-disable.patch
@@@ -1,41 -1,0 +1,41 @@@
 +Description: Removes depenedency on windows specific components for Linux build
 +Author: James Page <james.page at ubuntu.com>
 +Forwarded: not-needed
 +
 +Index: jenkins/core/pom.xml
 +===================================================================
- --- jenkins.orig/core/pom.xml	2012-04-26 14:15:07.100640255 +0100
- +++ jenkins/core/pom.xml	2012-04-26 14:15:12.796638028 +0100
- @@ -699,32 +699,6 @@
++--- jenkins.orig/core/pom.xml	2012-07-24 16:33:05.898057949 +0100
+++++ jenkins/core/pom.xml	2012-07-24 16:33:06.810061201 +0100
++@@ -720,32 +720,6 @@
 +           </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 --combined debian/patches/series
index 6ffa150,0000000..5d3c296
mode 100644,000000..100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@@ -1,19 -1,0 +1,16 @@@
 +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/groovy-upgrade.patch
 +dependency-upgrades/jnr-posix-upgrade.patch
- dependency-upgrades/asm3-upgrade.patch
- dependency-upgrades/animal-sniffer-upgrade.patch
 +build/use-stock-jmdns.patch
 +ubuntu/ubuntu-font.patch
- security/CVE-2012-4438_CVE-2012-4439.patch
++build/use-stock-asm3.patch
diff --combined debian/patches/ubuntu/ubuntu-font.patch
index dfadd42,0000000..19f7f20
mode 100644,000000..100644
--- a/debian/patches/ubuntu/ubuntu-font.patch
+++ b/debian/patches/ubuntu/ubuntu-font.patch
@@@ -1,26 -1,0 +1,26 @@@
 +Description: Add 'Ubuntu' font to styling for Jenkins
 +Author: James Page <james.page at ubuntu.com>
 +Forwarded: not-needed
 +
 +Index: jenkins/war/src/main/webapp/css/style.css
 +===================================================================
- --- jenkins.orig/war/src/main/webapp/css/style.css	2012-04-26 14:09:39.411340903 +0100
- +++ jenkins/war/src/main/webapp/css/style.css	2012-04-26 14:15:40.692627130 +0100
++--- jenkins.orig/war/src/main/webapp/css/style.css	2012-07-24 16:32:51.166005413 +0100
+++++ jenkins/war/src/main/webapp/css/style.css	2012-07-24 16:33:08.642067737 +0100
 +@@ -29,7 +29,7 @@
 + 
 + 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;
 + }
 + 
- @@ -376,7 +376,7 @@
++@@ -357,7 +357,7 @@
 +   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 {
diff --combined debian/rules
index 278b6a8,0000000..0b8ed00
mode 100755,000000..100755
--- a/debian/rules
+++ b/debian/rules
@@@ -1,81 -1,0 +1,83 @@@
 +#!/usr/bin/make -f
 +
 +include /usr/share/cdbs/1/rules/debhelper.mk
 +include /usr/share/cdbs/1/class/maven.mk
 +
 +JAVA_HOME := /usr/lib/jvm/default-java
 +# Parse upstream version without +dfsg for source download+
 +DEB_UPSTREAM_VERSION=$(shell dpkg-parsechangelog | sed -rne 's,^Version: ([^+]+).*,\1,p')
 +DEB_MAVEN_BUILD_TARGET := install
 +DEB_MAVEN_ARGS := -e -Dbuild.version="$(DEB_UPSTREAM_VERSION)"
 +DEB_MAVEN_INSTALL_TO_USJ := false
 +
 +# Debian package version use daemon to control jenkins processes
 +# Ubuntu does not need this - managed by upstart
 +ifeq ($(shell dpkg-vendor --derives-from ubuntu || echo debian ),debian)
 +DEB_DH_GENCONTROL_ARGS:= -- -Tdebian/debian_control_vars
 +endif
 +
 +# Generate POM file for plugins
 +debian/plugin-debian.pom: debian/plugin-debian.pom.in
 +	sed -e "s|__VERSION__|$(DEB_UPSTREAM_VERSION)|g" $< > debian/plugin-debian.pom
 +
 +# Install the POM for plugin-parent manually as not part
 +# of main build - manually installed as not managed by 
 +# m-d-h as breaks build elements for re-use.
 +binary-post-install/libjenkins-plugin-parent-java:: debian/plugin-debian.pom
 +	dh_install -plibjenkins-plugin-parent-java debian/plugin-debian.pom \
 +		usr/share/maven-repo/org/jenkins-ci/plugins/plugin/debian
 +
 +# Sort out MANIFEST.MF entries in jenkins cli .jar files
 +# and create handy links for script wrapper
 +binary-post-install/jenkins-cli::
 +	dh_link -pjenkins-cli usr/share/jenkins/cli/java/cli-$(DEB_UPSTREAM_VERSION)-jar-with-dependencies.jar \
 +		usr/share/jenkins/cli/java/cli.jar
 +	jh_classpath -pjenkins-cli
 +	jh_manifest -pjenkins-cli
 +
 +# Create handy links for script wrapper
 +binary-post-install/jenkins-external-job-monitor::
 +	dh_link -pjenkins-external-job-monitor usr/share/jenkins/external-job-monitor/java/jenkins-core-$(DEB_UPSTREAM_VERSION).jar \
 +	    usr/share/jenkins/external-job-monitor/java/jenkins-core.jar
 +
 +# Switch in upstart configuration if building on Ubuntu
 +# and generate control with/without daemon.
 +build/jenkins::
 +	if dpkg-vendor --derives-from ubuntu ; then \
 +        cp debian/jenkins.upstart.in debian/jenkins.upstart ; \
 +    fi
 +
 +build/jenkins-slave::
 +	if dpkg-vendor --derives-from ubuntu ; then \
 +        cp debian/jenkins-slave.upstart.in debian/jenkins-slave.upstart ; \
 +    fi
 +
 +# Tidy up any upstart configuration files lying around
 +clean::
 +	[ ! -f dummy.keystore ] || rm dummy.keystore
 +	rm -rf debian/*.upstart
 +	rm -rf debian/plugin-debian.pom
- 	rm -rf core/src/main/java/jenkins/util/ServerTcpPort.java
++	rm -f core/src/main/java/jenkins/util/MarkFindingOutputStream.java \
++		  core/src/main/java/jenkins/util/ServerTcpPort.java
 +
 +get-orig-source:
 +	uscan --download-version $(DEB_UPSTREAM_VERSION) --force-download --rename
 +	mv ../jenkins_$(DEB_UPSTREAM_VERSION).orig.tar.gz \
 +        ../jenkins_$(DEB_UPSTREAM_VERSION)+dfsg.orig.tar.gz
 +
 +before-mvn-build:: dummy.keystore
 +	# Purge out links relating to jenkins from the copy of the maven repo
 +	# fixes issue with circular dependency and the need to use the install
 +	# maven target
 +	for module in jenkins-core cli pom jenkins-war; do \
 +		find debian/maven-repo/org/jenkins-ci/main/$${module} -type l -delete || true ;\
 +	done
 +	# Hack in java files from groovy source folder - no idea why they are there
 +	# might be maven3 related.
++	cp core/src/main/groovy/jenkins/util/MarkFindingOutputStream.java core/src/main/java/jenkins/util
 +	cp core/src/main/groovy/jenkins/util/ServerTcpPort.java core/src/main/java/jenkins/util
 +
 +dummy.keystore:
 +	keytool -genkeypair -dname "cn=Jenkins, ou=Jenkins Project, o=Debian, c=US" \
 +    	-alias jenkins -keypass jenkins -keystore dummy.keystore \
 +      	-storepass jenkins -validity 3650

-- 
jenkins packaging



More information about the pkg-java-commits mailing list