[jenkins] Update to upstream version 1.581
Michal Srb
msrb at fedoraproject.org
Sun Sep 28 08:10:18 UTC 2014
commit b3a894de161361a97cda534c5933d4d31f4f5702
Author: Michal Srb <msrb at redhat.com>
Date: Sat Sep 27 17:56:05 2014 +0200
Update to upstream version 1.581
- Migrate to jenkins-winstone
- Initial support for plugins from RPMs
- Bugfixes
.gitignore | 1 +
add-support-for-plugins-from-RPMs.patch | 127 +++++++++++++++
context.xml | 3 -
dependencies.txt | 2 +
jenkins.init | 162 +++++++++++++++++++
jenkins.service | 10 +-
jenkins.spec | 168 +++++++++++++-------
...BoundConstructor-annotation-from-abstract.patch | 53 ++++++
sources | 3 +-
9 files changed, 459 insertions(+), 70 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 0b80b42..fa9e839 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@
/jenkins-1.569.tar.gz
/jenkins-1.575.tar.gz
/jenkins-1.578.tar.gz
+/jenkins-1.581.tar.gz
diff --git a/add-support-for-plugins-from-RPMs.patch b/add-support-for-plugins-from-RPMs.patch
new file mode 100644
index 0000000..2d03f59
--- /dev/null
+++ b/add-support-for-plugins-from-RPMs.patch
@@ -0,0 +1,127 @@
+From 95d981c81c41be79df1431f7d34e5425593c299c Mon Sep 17 00:00:00 2001
+From: Michal Srb <msrb at redhat.com>
+Date: Tue, 16 Sep 2014 08:52:22 +0200
+Subject: [PATCH] Add support for plugins from RPMs
+
+---
+ core/src/main/java/hudson/PluginManager.java | 56 ++++++++++++++++++++++++++++
+ 1 file changed, 56 insertions(+)
+
+diff --git a/core/src/main/java/hudson/PluginManager.java b/core/src/main/java/hudson/PluginManager.java
+index 36f4880..0947fcb 100644
+--- a/core/src/main/java/hudson/PluginManager.java
++++ b/core/src/main/java/hudson/PluginManager.java
+@@ -52,6 +52,7 @@ import jenkins.model.Jenkins;
+ import jenkins.util.io.OnMaster;
+ import net.sf.json.JSONArray;
+ import net.sf.json.JSONObject;
++
+ import org.apache.commons.fileupload.FileItem;
+ import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+ import org.apache.commons.fileupload.servlet.ServletFileUpload;
+@@ -78,12 +79,16 @@ import javax.servlet.ServletContext;
+ import javax.servlet.ServletException;
+ import javax.xml.parsers.ParserConfigurationException;
+ import javax.xml.parsers.SAXParserFactory;
++
+ import java.io.File;
+ import java.io.IOException;
+ import java.io.InputStream;
+ import java.lang.ref.WeakReference;
+ import java.lang.reflect.Method;
+ import java.net.URL;
++import java.nio.file.Files;
++import java.nio.file.Path;
++import java.nio.file.Paths;
+ import java.util.ArrayList;
+ import java.util.Collection;
+ import java.util.Collections;
+@@ -103,6 +108,7 @@ import java.util.concurrent.Future;
+ import java.util.jar.JarFile;
+ import java.util.logging.Level;
+ import java.util.logging.Logger;
++
+ import org.xml.sax.Attributes;
+ import org.xml.sax.SAXException;
+ import org.xml.sax.helpers.DefaultHandler;
+@@ -111,6 +117,7 @@ import static hudson.init.InitMilestone.*;
+ import hudson.model.DownloadService;
+ import hudson.util.FormValidation;
+ import static java.util.logging.Level.WARNING;
++
+ import org.kohsuke.accmod.Restricted;
+ import org.kohsuke.accmod.restrictions.NoExternalUse;
+
+@@ -138,6 +145,9 @@ public abstract class PluginManager extends AbstractModelObject implements OnMas
+ */
+ public final File rootDir;
+
++ // FIXME: pass this location to Jenkins via system property
++ private final File localRootDir = new File("/usr/share/jenkins/plugins/");
++
+ /**
+ * @deprecated as of 1.355
+ * {@link PluginManager} can now live longer than {@link jenkins.model.Jenkins} instance, so
+@@ -201,6 +211,49 @@ public abstract class PluginManager extends AbstractModelObject implements OnMas
+ return new Api(this);
+ }
+
++ private void symlinkRpmfiedPlugins() {
++ if (!localRootDir.exists()) {
++ return;
++ }
++
++ File[] rpmPluginDirs = localRootDir.listFiles();
++ File[] pluginDirs = rootDir.listFiles();
++ boolean isAlreadyInstalled = false;
++
++ for (File rpmPlugin : rpmPluginDirs) {
++ if (rpmPlugin.isDirectory()) {
++ for (File existingPlugin : pluginDirs) {
++ // remove broken symlinks from $JENKINS_HOME/plugins/
++ if (Files.isSymbolicLink(existingPlugin.toPath())) {
++ if (Files.notExists(existingPlugin.toPath())) {
++ LOGGER.info("Removing broken symbolic link from plugins directory: " + existingPlugin);
++ existingPlugin.delete();
++ }
++ }
++ if (rpmPlugin.getName().equals(existingPlugin.getName())
++ || existingPlugin.getName().equals(rpmPlugin.getName() + ".jpi")) {
++ LOGGER.info(rpmPlugin.getName() + " already exists in plugin directory, skipping");
++ isAlreadyInstalled = true;
++ break;
++ }
++ }
++ if (!isAlreadyInstalled) {
++ Path link = Paths.get(rootDir.getPath(), rpmPlugin.getName() + ".jpi");
++ Path target = Paths.get(rpmPlugin.getPath());
++ try {
++ Files.createSymbolicLink(link, target);
++ } catch (IOException e) {
++ LOGGER.info(e.toString());
++ }
++ }
++ isAlreadyInstalled = false;
++ } else {
++ LOGGER.info(localRootDir + rpmPlugin.getName()
++ + " is not a directory, ignoring");
++ }
++ }
++ }
++
+ /**
+ * Called immediately after the construction.
+ * This is a separate method so that code executed from here will see a valid value in
+@@ -208,6 +261,9 @@ public abstract class PluginManager extends AbstractModelObject implements OnMas
+ */
+ public TaskBuilder initTasks(final InitStrategy initStrategy) {
+ TaskBuilder builder;
++
++ symlinkRpmfiedPlugins();
++
+ if (!pluginListed) {
+ builder = new TaskGraphBuilder() {
+ List<File> archives;
+--
+1.9.3
+
diff --git a/dependencies.txt b/dependencies.txt
new file mode 100644
index 0000000..98c26a5
--- /dev/null
+++ b/dependencies.txt
@@ -0,0 +1,2 @@
+net.java.dev.jna:jna:jar:3.3.0-jenkins-3:compile
+org.kohsuke:akuma:jar:1.9:compile
diff --git a/jenkins.init b/jenkins.init
new file mode 100644
index 0000000..9f887a5
--- /dev/null
+++ b/jenkins.init
@@ -0,0 +1,162 @@
+#!/bin/sh
+#
+# SUSE system statup script for Jenkins
+# Copyright (C) 2007 Pascal Bleser
+#
+# This library is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2.1 of the License, or (at
+# your option) any later version.
+#
+# This library is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307,
+# USA.
+#
+### BEGIN INIT INFO
+# Provides: jenkins
+# Required-Start: $local_fs $remote_fs $network $time $named
+# Should-Start: $time sendmail
+# Required-Stop: $local_fs $remote_fs $network $time $named
+# Should-Stop: $time sendmail
+# Default-Start: 3 5
+# Default-Stop: 0 1 2 6
+# Short-Description: Jenkins continuous build server
+# Description: Start the Jenkins continuous build server
+### END INIT INFO
+
+# Check for existence of needed config file and read it
+JENKINS_CONFIG=/etc/sysconfig/jenkins
+test -e "$JENKINS_CONFIG" || { echo "$JENKINS_CONFIG not existing";
+ if [ "$1" = "stop" ]; then exit 0;
+ else exit 6; fi; }
+test -r "$JENKINS_CONFIG" || { echo "$JENKINS_CONFIG not readable. Perhaps you forgot 'sudo'?";
+ if [ "$1" = "stop" ]; then exit 0;
+ else exit 6; fi; }
+
+JENKINS_PID_FILE="/var/run/jenkins.pid"
+
+# Source function library.
+. /etc/init.d/functions
+
+# Read config
+[ -f "$JENKINS_CONFIG" ] && . "$JENKINS_CONFIG"
+
+# Set up environment accordingly to the configuration settings
+[ -n "$JENKINS_HOME" ] || { echo "JENKINS_HOME not configured in $JENKINS_CONFIG";
+ if [ "$1" = "stop" ]; then exit 0;
+ else exit 6; fi; }
+[ -d "$JENKINS_HOME" ] || { echo "JENKINS_HOME directory does not exist: $JENKINS_HOME";
+ if [ "$1" = "stop" ]; then exit 0;
+ else exit 1; fi; }
+
+# Search usable Java. We do this because various reports indicated
+# that /usr/bin/java may not always point to Java 1.5
+# see http://www.nabble.com/guinea-pigs-wanted-----Hudson-RPM-for-RedHat-Linux-td25673707.html
+for candidate in /etc/alternatives/java /usr/lib/jvm/java-1.6.0/bin/java /usr/lib/jvm/jre-1.6.0/bin/java /usr/lib/jvm/java-1.5.0/bin/java /usr/lib/jvm/jre-1.5.0/bin/java /usr/bin/java
+do
+ [ -x "$JENKINS_JAVA_CMD" ] && break
+ JENKINS_JAVA_CMD="$candidate"
+done
+
+JENKINS_WEBROOT="/usr/share/jenkins/war/"
+
+CLASSPATH="`build-classpath jetty8/jetty-util-8.1.14.v20131031 jetty8/jetty-security-8.1.14.v20131031 jetty8/jetty-server-8.1.14.v20131031 jetty8/jetty-webapp-8.1.14.v20131031 jetty8/jetty-servlet-8.1.14.v20131031 jetty8/jetty-http-8.1.14.v20131031 jetty8/jetty-io-8.1.14.v20131031 jetty8/jetty-continuation-8.1.14.v20131031 jetty8/jetty-xml-8.1.14.v20131031 glassfish-servlet-api`:${JENKINS_WEBROOT}/executable-war.jar:${JENKINS_WEBROOT}/winstone.jar"
+
+JAVA_CMD="$JENKINS_JAVA_CMD $JENKINS_JAVA_OPTIONS -DJENKINS_HOME=$JENKINS_HOME -cp $CLASSPATH Main"
+PARAMS="--logfile=/var/log/jenkins/jenkins.log --extractedFilesFolder=$JENKINS_WEBROOT --webroot=$JENKINS_WEBROOT --daemon"
+[ -n "$JENKINS_PORT" ] && PARAMS="$PARAMS --httpPort=$JENKINS_PORT"
+[ -n "$JENKINS_LISTEN_ADDRESS" ] && PARAMS="$PARAMS --httpListenAddress=$JENKINS_LISTEN_ADDRESS"
+[ -n "$JENKINS_HTTPS_PORT" ] && PARAMS="$PARAMS --httpsPort=$JENKINS_HTTPS_PORT"
+[ -n "$JENKINS_HTTPS_KEYSTORE" ] && PARAMS="$PARAMS --httpsKeyStore=$JENKINS_HTTPS_KEYSTORE"
+[ -n "$JENKINS_HTTPS_KEYSTORE_PASSWORD" ] && PARAMS="$PARAMS --httpsKeyStorePassword='$JENKINS_HTTPS_KEYSTORE_PASSWORD'"
+[ -n "$JENKINS_HTTPS_LISTEN_ADDRESS" ] && PARAMS="$PARAMS --httpsListenAddress=$JENKINS_HTTPS_LISTEN_ADDRESS"
+[ -n "$JENKINS_AJP_PORT" ] && PARAMS="$PARAMS --ajp13Port=$JENKINS_AJP_PORT"
+[ -n "$JENKINS_AJP_LISTEN_ADDRESS" ] && PARAMS="$PARAMS --ajp13ListenAddress=$JENKINS_AJP_LISTEN_ADDRESS"
+[ -n "$JENKINS_DEBUG_LEVEL" ] && PARAMS="$PARAMS --debug=$JENKINS_DEBUG_LEVEL"
+[ -n "$JENKINS_HANDLER_STARTUP" ] && PARAMS="$PARAMS --handlerCountStartup=$JENKINS_HANDLER_STARTUP"
+[ -n "$JENKINS_HANDLER_MAX" ] && PARAMS="$PARAMS --handlerCountMax=$JENKINS_HANDLER_MAX"
+[ -n "$JENKINS_HANDLER_IDLE" ] && PARAMS="$PARAMS --handlerCountMaxIdle=$JENKINS_HANDLER_IDLE"
+[ -n "$JENKINS_ARGS" ] && PARAMS="$PARAMS $JENKINS_ARGS"
+
+if [ "$JENKINS_ENABLE_ACCESS_LOG" = "yes" ]; then
+ PARAMS="$PARAMS --accessLoggerClassName=winstone.accesslog.SimpleAccessLogger --simpleAccessLogger.format=combined --simpleAccessLogger.file=/var/log/jenkins/access_log"
+fi
+
+RETVAL=0
+
+case "$1" in
+ start)
+ echo -n "Starting Jenkins "
+ daemon --user "$JENKINS_USER" --pidfile "$JENKINS_PID_FILE" $JAVA_CMD $PARAMS > /dev/null
+ RETVAL=$?
+ if [ $RETVAL = 0 ]; then
+ success
+ echo > "$JENKINS_PID_FILE" # just in case we fail to find it
+ MY_SESSION_ID=`/bin/ps h -o sess -p $$`
+ # get PID
+ /bin/ps hww -u "$JENKINS_USER" -o sess,ppid,pid,cmd | \
+ while read sess ppid pid cmd; do
+ [ "$ppid" = 1 ] || continue
+ # this test doesn't work because Jenkins sets a new Session ID
+ # [ "$sess" = "$MY_SESSION_ID" ] || continue
+ echo "$cmd" | grep $JENKINS_WEBROOT > /dev/null
+ [ $? = 0 ] || continue
+ # found a PID
+ echo $pid > "$JENKINS_PID_FILE"
+ done
+ else
+ failure
+ fi
+ echo
+ ;;
+ stop)
+ echo -n "Shutting down Jenkins "
+ killproc jenkins
+ RETVAL=$?
+ echo
+ ;;
+ try-restart|condrestart)
+ if test "$1" = "condrestart"; then
+ echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}"
+ fi
+ $0 status
+ if test $? = 0; then
+ $0 restart
+ else
+ : # Not running is not a failure.
+ fi
+ ;;
+ restart)
+ $0 stop
+ $0 start
+ ;;
+ force-reload)
+ echo -n "Reload service Jenkins "
+ $0 try-restart
+ ;;
+ reload)
+ $0 restart
+ ;;
+ status)
+ status jenkins
+ RETVAL=$?
+ ;;
+ probe)
+ ## Optional: Probe for the necessity of a reload, print out the
+ ## argument to this init script which is required for a reload.
+ ## Note: probe is not (yet) part of LSB (as of 1.9)
+
+ test "$JENKINS_CONFIG" -nt "$JENKINS_PID_FILE" && echo reload
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}"
+ exit 1
+ ;;
+esac
+exit $RETVAL
diff --git a/jenkins.service b/jenkins.service
index 611fe5d..0c20b33 100644
--- a/jenkins.service
+++ b/jenkins.service
@@ -3,13 +3,11 @@ Description=Jenkins continuous build server
After=syslog.target network.target
[Service]
-EnvironmentFile=/etc/jenkins/tomcat.conf
EnvironmentFile=-/etc/sysconfig/jenkins
-User=jenkins
-Group=jenkins
-ExecStart=/usr/libexec/tomcat/server start
-ExecStop=/usr/libexec/tomcat/server stop
+ExecStart=/usr/libexec/jenkins/jenkins start
+ExecStop=/usr/libexec/jenkins/jenkins stop
+Type=forking
+PIDFile=/var/run/jenkins.pid
[Install]
WantedBy=multi-user.target
-
diff --git a/jenkins.spec b/jenkins.spec
index dd8bfbd..58c2b90 100644
--- a/jenkins.spec
+++ b/jenkins.spec
@@ -4,10 +4,11 @@
%global bootstrap 0
%global homedir %{_datadir}/%{name}
+%global workdir %{_sharedstatedir}/%{name}
%global juid 175
Name: jenkins
-Version: 1.578
+Version: 1.581
Release: 1%{?dist}
Summary: An extendable open source continuous integration server
@@ -25,10 +26,9 @@ Source1: http://www.apache.org/licenses/LICENSE-2.0.txt
# taken from https://netbeans.org/cddl-gplv2.html
Source2: CDDL-LICENSE
Source4: jenkins-sysconfig
-Source5: context.xml
Source6: jenkins.service
-# default configuration for Jenkins (based on tomcat's default configuration)
-Source7: jenkins-conf.zip
+Source7: jenkins.init
+Source8: dependencies.txt
# animal sniffer is not really useful in Fedora
Patch1: remove-animal-sniffer-annotations.patch
@@ -49,6 +49,8 @@ Patch8: remove-windows-support.patch
Patch9: remove-windows-support-from-processtree.patch
Patch10: remove-dotnet-support.patch
Patch11: remove-windows-installer-support.patch
+Patch12: remove-DataBoundConstructor-annotation-from-abstract.patch
+Patch13: add-support-for-plugins-from-RPMs.patch
BuildArch: noarch
@@ -139,6 +141,7 @@ BuildRequires: mvn(org.bouncycastle:bcpkix-jdk15on)
BuildRequires: mvn(org.acegisecurity:acegi-security)
BuildRequires: mvn(org.kohsuke.stapler:stapler-adjunct-codemirror)
BuildRequires: mvn(org.jenkins-ci.plugins.icon-shim:icon-set)
+BuildRequires: mvn(org.jenkins-ci:winstone)
BuildRequires: systemd-units
%if !%{bootstrap}
#BuildRequires: mvn(org.jenkins-ci.lib:lib-jenkins-maven-embedder)
@@ -350,10 +353,17 @@ Requires: apache-commons-collections
Requires: jenkins-crypto-util
Requires: glassfish-jaxb
Requires: geronimo-validation
-Requires: js-yui2
Requires: acegisecurity
Requires: stapler-adjunct-codemirror
Requires: jenkins-icon-shim
+Requires: jetty8
+Requires: jenkins-winstone
+Requires: jenkins-executable-war
+Requires: jenkins-javadoc-plugin
+Requires: jenkins-external-monitor-job-plugin
+Requires: jenkins-ant-plugin
+Requires: jenkins-mailer-plugin
+Requires: js-yui2-jenkins
%description webapp
@@ -381,6 +391,8 @@ This package contains API documentation for %{name}.
%patch9 -p1
%patch10 -p1
%patch11 -p1
+%patch12 -p1
+%patch13 -p1
# Remove bundled JARs and classes
find . -name "*.jar" -delete
@@ -406,7 +418,6 @@ cp %{SOURCE2} LICENSE-CDDL.txt
%mvn_package :jenkins-war __noinstall
%endif
-
# Jenkins uses its own fork of xstream
%pom_change_dep -r org.kohsuke.stapler:json-lib : core '
<exclusions>
@@ -415,7 +426,7 @@ cp %{SOURCE2} LICENSE-CDDL.txt
<artifactId>xstream</artifactId>
</exclusion>
</exclusions>'
-%pom_change_dep org.springframework:spring-webmvc : core '
+%pom_change_dep org.kohsuke.stapler:stapler-groovy : core '
<exclusions>
<exclusion>
<groupId>com.thoughtworks.xstream</groupId>
@@ -433,9 +444,21 @@ cp %{SOURCE2} LICENSE-CDDL.txt
<artifactId>spring-support</artifactId>
</exclusion>
<exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ </exclusion>
+ <exclusion>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
</exclusion>
+ <exclusion>
+ <groupId>com.sun</groupId>
+ <artifactId>tools</artifactId>
+ </exclusion>
</exclusions>'
# spring-aop pulls in a lot of tomcat libs, these will be provided by tomcat itself
@@ -447,12 +470,29 @@ cp %{SOURCE2} LICENSE-CDDL.txt
</exclusion>
</exclusions>'
+%pom_change_dep org.springframework:spring-webmvc : core '
+<exclusions>
+ <exclusion>
+ <groupId>com.sun</groupId>
+ <artifactId>tools</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.codehaus.groovy</groupId>
+ <artifactId>groovy</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>com.thoughtworks.xstream</groupId>
+ <artifactId>xstream</artifactId>
+ </exclusion>
+</exclusions>'
+
# quick fix for newer version of jenkins-remoting
# this is already fixed upstream in newer Jenkins
sed -i 's|protected synchronized void terminate(|public synchronized void terminate(|g' core/src/main/java/hudson/Launcher.java
sed -i 's|protected synchronized void terminate(|public synchronized void terminate(|g' core/src/main/java/hudson/slaves/Channels.java
+%pom_change_dep org.jenkins-ci:winstone :::compile war
# CLI uber JAR
# useful, but bundling exception will be needed
@@ -504,18 +544,24 @@ sed -i 's|protected synchronized void terminate(|public synchronized void termin
%pom_remove_dep org.jenkins-ci.modules:launchd-slave-installer war
%pom_remove_dep org.jenkins-ci.modules:upstart-slave-installer war
%pom_remove_dep org.jenkins-ci.modules:systemd-slave-installer war
-%pom_remove_dep :winstone war
+%pom_remove_dep org.jenkins-ci.modules:slave-installer war
%pom_remove_dep :maven-plugin war
%pom_remove_dep :test-annotations
-%if !%{bootstrap}
+#%%if %{bootstrap}
+#%%endif
%pom_remove_plugin :maven-dependency-plugin war
+#%%pom_xpath_remove "pom:plugin[pom:artifactId[text()='maven-dependency-plugin']]/pom:executions" war
%pom_remove_dep :cli war
-%pom_remove_dep org.jenkins-ci.modules:slave-installer war
-%pom_add_dep org.apache.sshd:sshd-core war
%pom_add_dep org.bouncycastle:bcprov-jdk16 war
%pom_add_dep org.bouncycastle:bcpkix-jdk15on war
-%endif
+%pom_add_dep org.apache.sshd:sshd-core war '
+<exclusions>
+ <exclusion>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>tomcat-coyote</artifactId>
+ </exclusion>
+</exclusions>'
# fix gId:aId
# findbugs annotations
@@ -523,7 +569,7 @@ sed -i 's|protected synchronized void terminate(|public synchronized void termin
%pom_add_dep com.google.code.findbugs:jsr305 core
# groovy
%pom_remove_dep org.codehaus.groovy:groovy-all core
-%pom_add_dep org.codehaus.groovy:groovy18:1.8
+%pom_add_dep org.codehaus.groovy:groovy18:1.8 core
# jfreechart
%pom_remove_dep jfree:jfreechart core
%pom_add_dep org.jfree:jfreechart
@@ -535,6 +581,22 @@ sed -i 's|protected synchronized void terminate(|public synchronized void termin
%pom_remove_dep jline:jline core
%pom_add_dep jline:jline:1 core
+%pom_change_dep org.codehaus.groovy:groovy18 : core '
+<exclusions>
+ <exclusion>
+ <groupId>com.thoughtworks.xstream</groupId>
+ <artifactId>xstream</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>tomcat-servlet-api</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>tomcat-jsp-api</artifactId>
+ </exclusion>
+</exclusions>'
+
%build
%mvn_build -f -X
@@ -548,60 +610,45 @@ sed -i 's|protected synchronized void terminate(|public synchronized void termin
%if !%{bootstrap}
-install -d -m 755 %{buildroot}/%{_datadir}/%{name}
-install -d -m 755 %{buildroot}/%{_datadir}/%{name}/webapp
-install -d -m 755 %{buildroot}/%{_datadir}/%{name}/catalina_base
-install -d -m 755 %{buildroot}/%{_datadir}/%{name}/catalina_base/webapps
-install -d -m 755 %{buildroot}/%{_datadir}/%{name}/plugins
-install -d -m 755 %{buildroot}/%{jenkins_catalina_base}
-install -d -m 755 %{buildroot}/%{jenkins_catalina_base}/webapps
-install -d -m 755 %{buildroot}/%{_sharedstatedir}/jenkins
-install -d -m 755 %{buildroot}/%{_localstatedir}/cache/jenkins/temp
-install -d -m 755 %{buildroot}/%{_localstatedir}/cache/jenkins/work
-install -d -m 755 %{buildroot}/%{_localstatedir}/log/jenkins
-install -d -m 755 %{buildroot}/%{_sysconfdir}/jenkins
+install -d -m 755 %{buildroot}/%{homedir}
+install -d -m 755 %{buildroot}/%{homedir}/war
+install -d -m 755 %{buildroot}/%{homedir}/plugins
+install -d -m 755 %{buildroot}/%{workdir}
+install -d -m 755 %{buildroot}/%{_localstatedir}/log/%{name}
+install -d -m 755 %{buildroot}/%{_sysconfdir}/%{name}
install -d -m 755 %{buildroot}/%{_unitdir}
+install -d -m 755 %{buildroot}/%{_libexecdir}/%{name}
install -m 644 %{SOURCE6} %{buildroot}/%{_unitdir}/%{name}.service
+install -m 644 %{SOURCE7} %{buildroot}/%{_libexecdir}/%{name}/%{name}
# webapp
# we don't have packaging guidelines for web applications yet.
-# just install exploded WAR to /usr/share/jenkins/webapp/
-unzip -d %{buildroot}/%{homedir}/webapp war/target/jenkins.war
-pushd %{buildroot}/%{homedir}/webapp/WEB-INF/lib
+# just install exploded WAR to /usr/share/jenkins/war/
+unzip -d %{buildroot}/%{homedir}/war war/target/jenkins.war
+pushd %{buildroot}/%{homedir}/war/WEB-INF/lib
+ rm asm*-distroshaded-*.jar
+ rm groovy18*.jar
xmvn-subst .
ln -sf `build-classpath objectweb-asm3/asm-tree-distroshaded` asm-tree-distroshaded-any.jar
ln -sf `build-classpath objectweb-asm3/asm-util-distroshaded` asm-util-distroshaded-any.jar
ln -sf `build-classpath objectweb-asm3/asm-distroshaded` asm-distroshaded-any.jar
ln -sf `build-classpath objectweb-asm3/asm-commons-distroshaded` asm-commons-distroshaded-any.jar
ln -sf `build-classpath objectweb-asm3/asm-analysis-distroshaded` asm-analysis-distroshaded-any.jar
+ ln -sf `build-classpath groovy18-1.8` groovy18-1.8.jar
ln -sf `build-classpath hsqldb1-1.jar` hsqldb-1.jar
ln -sf `build-classpath jenkins/cli` cli-%{version}.jar
ln -sf `build-classpath jenkins/jenkins-core` jenkins-core-%{version}.jar
+ ln -sf `build-classpath jenkins-winstone/winstone` ../../winstone.jar
+ ln -sf `build-classpath jenkins-executable-war/executable-war` ../../executable-war.jar
popd
-# unbundle yui2
-pushd %{buildroot}/%{homedir}/webapp/scripts/
-rm -Rf yui/
-ln -s /usr/share/javascript/js-yui2/ yui
-popd
-
-pushd %{buildroot}/%{_datadir}/%{name}/catalina_base
- ln -s %{_localstatedir}/cache/jenkins/temp .
- ln -s %{_localstatedir}/cache/jenkins/work .
- ln -s %{_localstatedir}/log/jenkins logs
- ln -s %{_javadir}/tomcat lib
- ln -s %{homedir}/webapp webapps/jenkins
-
- unzip %{SOURCE7}
- mv conf/* %{buildroot}/%{_sysconfdir}/jenkins
- rmdir conf
-
- ln -s %{_sysconfdir}/jenkins conf
-popd
+cp %{SOURCE8} %{buildroot}/%{homedir}/war/WEB-INF/classes/dependencies.txt
+# remove bundled YUI library
+rm -Rf %{buildroot}/%{homedir}/war/scripts/yui
# symlink remoting and cli JAR into WEB-INF/
-pushd %{buildroot}/%{homedir}/webapp/WEB-INF/
+pushd %{buildroot}/%{homedir}/war/WEB-INF/
ln -s `build-classpath jenkins-remoting/remoting` remoting.jar
ln -s `build-classpath jenkins-remoting/remoting` slave.jar
ln -s `build-classpath jenkins/cli` jenkins-cli.jar
@@ -609,8 +656,6 @@ popd
install -d -m 755 %{buildroot}%{_sysconfdir}/sysconfig
cp -p %{SOURCE4} %{buildroot}%{_sysconfdir}/sysconfig/%{name}
-
-cp -p %{SOURCE5} %{buildroot}/%{homedir}/webapp/META-INF/context.xml
%endif # bootstrap
%pre
@@ -618,9 +663,9 @@ cp -p %{SOURCE5} %{buildroot}/%{homedir}/webapp/META-INF/context.xml
getent group %{name} >/dev/null || groupadd -f -g %{juid} -r %{name}
if ! getent passwd %{name} >/dev/null ; then
if ! getent passwd %{juid} >/dev/null ; then
- useradd -r -u %{juid} -g %{name} -d %{homedir} -s /sbin/nologin -c "Jenkins Continuous Build server" %{name}
+ useradd -r -u %{juid} -g %{name} -d %{workdir} -s /sbin/nologin -c "Jenkins Continuous Build server" %{name}
else
- useradd -r -g %{name} -d %{homedir} -s /sbin/nologin -c "Jenkins Continuous Build server" %{name}
+ useradd -r -g %{name} -d %{workdir} -s /sbin/nologin -c "Jenkins Continuous Build server" %{name}
fi
fi
exit 0
@@ -634,7 +679,6 @@ exit 0
%postun
%systemd_postun_with_restart %{name}.service
-
%files core -f .mfiles-core
%dir %{_javadir}/%{name}
%doc LICENSE.txt LICENSE-ASL-2.0.txt LICENSE-CDDL.txt
@@ -642,11 +686,11 @@ exit 0
%files
%defattr(0664, jenkins, jenkins, 0755)
%{_sysconfdir}/jenkins
-%attr(0660, jenkins, jenkins) %{_sysconfdir}/jenkins/tomcat-users.xml
%{_unitdir}/%{name}.service
-%{_datadir}/%{name}/catalina_base
-%attr(0770, jenkins, jenkins) %{_localstatedir}/cache/jenkins
-%attr(0770, jenkins, jenkins) %{_localstatedir}/log/jenkins
+%dir %{homedir}
+%dir %{homedir}/plugins
+%attr(0770, jenkins, jenkins) %{_libexecdir}/%{name}
+%attr(0770, jenkins, jenkins) %{_localstatedir}/log/%{name}
%files plugins-pom -f .mfiles-plugins-pom
@@ -656,9 +700,9 @@ exit 0
%if !%{bootstrap}
%files webapp
-%{homedir}/webapp/*
+%{homedir}/war/
%config(noreplace) %{_sysconfdir}/sysconfig/%{name}
-%attr(0770, jenkins, jenkins) %dir %{_sharedstatedir}/jenkins
+%attr(0770, jenkins, jenkins) %dir %{workdir}
%doc LICENSE.txt
%endif # bootstrap
@@ -666,6 +710,12 @@ exit 0
%doc LICENSE.txt
%changelog
+* Mon Sep 22 2014 Michal Srb <msrb at redhat.com> - 1.581-1
+- Update to upstream version 1.581
+- Migrate to jenkins-winstone
+- Initial support for plugins from RPMs
+- Bugfixes
+
* Wed Sep 03 2014 Michal Srb <msrb at redhat.com> - 1.578-1
- Update to upstream version 1.578
diff --git a/remove-DataBoundConstructor-annotation-from-abstract.patch b/remove-DataBoundConstructor-annotation-from-abstract.patch
new file mode 100644
index 0000000..e15ea25
--- /dev/null
+++ b/remove-DataBoundConstructor-annotation-from-abstract.patch
@@ -0,0 +1,53 @@
+From 8a831e9956892797cea1cbd761d96076c7ddd552 Mon Sep 17 00:00:00 2001
+From: Michal Srb <msrb at redhat.com>
+Date: Mon, 22 Sep 2014 16:21:19 +0200
+Subject: [PATCH] Remove @DataBoundConstructor annotation from abstract classes
+
+---
+ core/src/main/java/hudson/model/Slave.java | 2 --
+ core/src/main/java/hudson/node_monitors/AbstractDiskSpaceMonitor.java | 2 --
+ 2 files changed, 4 deletions(-)
+
+diff --git a/core/src/main/java/hudson/model/Slave.java b/core/src/main/java/hudson/model/Slave.java
+index d29ed99..625cea4 100644
+--- a/core/src/main/java/hudson/model/Slave.java
++++ b/core/src/main/java/hudson/model/Slave.java
+@@ -62,7 +62,6 @@ import jenkins.model.Jenkins;
+ import jenkins.slaves.WorkspaceLocator;
+
+ import org.apache.commons.io.IOUtils;
+-import org.kohsuke.stapler.DataBoundConstructor;
+ import org.kohsuke.stapler.HttpResponse;
+ import org.kohsuke.stapler.QueryParameter;
+ import org.kohsuke.stapler.StaplerRequest;
+@@ -134,7 +133,6 @@ public abstract class Slave extends Node implements Serializable {
+ */
+ private String userId;
+
+- @DataBoundConstructor
+ public Slave(String name, String nodeDescription, String remoteFS, String numExecutors,
+ Mode mode, String labelString, ComputerLauncher launcher, RetentionStrategy retentionStrategy, List<? extends NodeProperty<?>> nodeProperties) throws FormException, IOException {
+ this(name,nodeDescription,remoteFS,Util.tryParseNumber(numExecutors, 1).intValue(),mode,labelString,launcher,retentionStrategy, nodeProperties);
+diff --git a/core/src/main/java/hudson/node_monitors/AbstractDiskSpaceMonitor.java b/core/src/main/java/hudson/node_monitors/AbstractDiskSpaceMonitor.java
+index be90b91..384133b 100644
+--- a/core/src/main/java/hudson/node_monitors/AbstractDiskSpaceMonitor.java
++++ b/core/src/main/java/hudson/node_monitors/AbstractDiskSpaceMonitor.java
+@@ -5,7 +5,6 @@ import hudson.node_monitors.DiskSpaceMonitorDescriptor.DiskSpace;
+
+ import org.kohsuke.accmod.Restricted;
+ import org.kohsuke.accmod.restrictions.NoExternalUse;
+-import org.kohsuke.stapler.DataBoundConstructor;
+
+ import java.text.ParseException;
+ import java.util.logging.Logger;
+@@ -21,7 +20,6 @@ public abstract class AbstractDiskSpaceMonitor extends NodeMonitor {
+ */
+ public final String freeSpaceThreshold;
+
+- @DataBoundConstructor
+ public AbstractDiskSpaceMonitor(String threshold) throws ParseException {
+ this.freeSpaceThreshold = threshold;
+ DiskSpace.parse(threshold); // make sure it parses
+--
+1.9.3
+
diff --git a/sources b/sources
index eddc21b..8bdd226 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,2 @@
3b83ef96387f14655fc854ddc3c6bd57 LICENSE-2.0.txt
-6fbb85cc80bf5629f78d1f4e37b6e1a3 jenkins-conf.zip
-548575c43b3e68fc522d4810af48128a jenkins-1.578.tar.gz
+10b68e9d77c23f07ccce8263ed8b51d1 jenkins-1.581.tar.gz
More information about the scm-commits
mailing list