Blob Blame History Raw
%global bootstrap 0

%global homedir %{_datadir}/%{name}
%global webroot %{homedir}/webroot
%global corepluginsdir %{webroot}/WEB-INF/plugins
%global workdir %{_sharedstatedir}/%{name}

Name:           jenkins
Version:        1.651.3
Release:        6%{?dist}
Summary:        An extendable open source continuous integration server

# The project's primary license is MIT
# ASL 2.0:
# few files in core/src/main/java/hudson/
# CDDL:
# core/src/main/java/hudson/util/EditDistance.java
# LGPLv2+:
# few files in core/src/main/java/hudson/util/jna/
License:        MIT and ASL 2.0 and LGPLv2+ and CDDL
URL:            http://jenkins-ci.org
Source0:        https://github.com/jenkinsci/jenkins/archive/%{name}-%{version}.tar.gz
Source1:        http://www.apache.org/licenses/LICENSE-2.0.txt
# taken from https://netbeans.org/cddl-gplv2.html
Source2:        CDDL-LICENSE
Source4:        jenkins-sysconfig
Source6:        jenkins.service
Source7:        jenkins.init
Source8:        dependencies.txt
# latest plugins POM (LTS) before Jenkins 2.0
Source9:        http://repo.jenkins-ci.org/releases/org/jenkins-ci/plugins/plugin/1.642.4/plugin-1.642.4.pom

# we don't need support for Solaris in SU
Patch3:         remove-solaris-support-in-su.patch
# jna-posix library is not in Fedora, we use jnr-posix
Patch4:         drop-jna-posix-compatibility.patch
# build against newer guava
Patch7:         use-guava-13.0.patch
Patch9:         remove-windows-support-from-processtree.patch
Patch11:        remove-windows-installer-support.patch
Patch14:        do-not-check-for-core-updates.patch
Patch15:        hpi-unpack-temp-hack.patch
# the method is superfluous and causes FTBFS with ant 1.10.0
Patch16:        dont-override-close.patch

Patch100:       0001-SECURITY-360-introduce-a-system-switch-to-kill-CLI.patch

BuildArch:      noarch

BuildRequires:  maven-local
BuildRequires:  mvn(antlr:antlr)
BuildRequires:  mvn(args4j:args4j)
BuildRequires:  mvn(com.github.jnr:jnr-posix)
BuildRequires:  mvn(com.google.code.findbugs:annotations)
BuildRequires:  mvn(com.google.guava:guava)
BuildRequires:  mvn(com.google.inject:guice::no_aop:)
BuildRequires:  mvn(com.infradna.tool:bridge-method-annotation)
BuildRequires:  mvn(com.infradna.tool:bridge-method-injector)
BuildRequires:  mvn(com.jcraft:jzlib)
BuildRequires:  mvn(commons-beanutils:commons-beanutils)
BuildRequires:  mvn(commons-codec:commons-codec)
BuildRequires:  mvn(commons-collections:commons-collections)
BuildRequires:  mvn(org.apache.commons:commons-compress)
BuildRequires:  mvn(commons-digester:commons-digester)
BuildRequires:  mvn(commons-httpclient:commons-httpclient)
BuildRequires:  mvn(commons-io:commons-io)
BuildRequires:  mvn(commons-jelly:commons-jelly-tags-define)
BuildRequires:  mvn(commons-jelly:commons-jelly-tags-fmt)
BuildRequires:  mvn(commons-jelly:commons-jelly-tags-xml)
BuildRequires:  mvn(commons-lang:commons-lang)
BuildRequires:  mvn(commons-logging:commons-logging)
BuildRequires:  mvn(com.sun.xml.txw2:txw2)
BuildRequires:  mvn(javax.mail:mail)
BuildRequires:  mvn(javax.servlet:jstl)
BuildRequires:  mvn(javax.servlet:servlet-api)
BuildRequires:  mvn(jaxen:jaxen)
BuildRequires:  mvn(jline:jline:1)
BuildRequires:  mvn(junit:junit)
BuildRequires:  mvn(net.java.dev.jna:jna)
BuildRequires:  mvn(net.java.sezpoz:sezpoz)
BuildRequires:  mvn(org.apache.ant:ant)
BuildRequires:  mvn(org.apache.maven.plugins:maven-release-plugin)
BuildRequires:  mvn(org.codehaus.groovy:groovy18:1.8)
BuildRequires:  mvn(org.codehaus.mojo:antlr-maven-plugin)
BuildRequires:  mvn(org.codehaus.mojo:build-helper-maven-plugin)
BuildRequires:  mvn(org.fusesource.jansi:jansi)
BuildRequires:  mvn(org.jenkins-ci:annotation-indexer)
BuildRequires:  mvn(org.jenkins-ci:bytecode-compatibility-transformer)
BuildRequires:  mvn(org.jenkins-ci:commons-jexl)
BuildRequires:  mvn(org.jenkins-ci:crypto-util)
BuildRequires:  mvn(org.jenkins-ci:jmdns)
BuildRequires:  mvn(org.jenkins-ci:memory-monitor)
BuildRequires:  mvn(org.jenkins-ci:task-reactor)
BuildRequires:  mvn(org.jenkins-ci.tools:maven-hpi-plugin)
BuildRequires:  mvn(org.jenkins-ci:version-number)
BuildRequires:  mvn(org.jfree:jfreechart)
BuildRequires:  mvn(org.jvnet.hudson:xstream)
BuildRequires:  mvn(org.jvnet.localizer:localizer)
BuildRequires:  mvn(org.jvnet.localizer:maven-localizer-plugin)
BuildRequires:  mvn(org.jvnet.robust-http-client:robust-http-client)
BuildRequires:  mvn(org.kohsuke:access-modifier-annotation)
BuildRequires:  mvn(org.kohsuke:access-modifier-checker)
BuildRequires:  mvn(org.kohsuke:akuma)
BuildRequires:  mvn(org.kohsuke:libpam4j)
BuildRequires:  mvn(org.kohsuke.metainf-services:metainf-services)
BuildRequires:  mvn(org.kohsuke.stapler:json-lib)
BuildRequires:  mvn(org.kohsuke.stapler:maven-stapler-plugin)
BuildRequires:  mvn(org.kohsuke.stapler:stapler-adjunct-timeline)
BuildRequires:  mvn(org.kohsuke.stapler:stapler-groovy)
BuildRequires:  mvn(org.kohsuke:trilead-putty-extension)
BuildRequires:  mvn(org.mindrot:jbcrypt)
BuildRequires:  mvn(org.mockito:mockito-core)
BuildRequires:  mvn(org.powermock:powermock-api-mockito)
BuildRequires:  mvn(org.powermock:powermock-module-junit4)
BuildRequires:  mvn(org.springframework.ldap:spring-ldap-core)
BuildRequires:  mvn(org.springframework.ldap:spring-ldap-core-tiger)
BuildRequires:  mvn(org.springframework.ldap:spring-ldap-ldif-batch)
BuildRequires:  mvn(org.springframework.ldap:spring-ldap-ldif-core)
BuildRequires:  mvn(org.springframework.ldap:spring-ldap-odm)
BuildRequires:  mvn(org.springframework.security:spring-security-acl)
BuildRequires:  mvn(org.springframework.security:spring-security-config)
BuildRequires:  mvn(org.springframework.security:spring-security-core)
BuildRequires:  mvn(org.springframework.security:spring-security-ldap)
BuildRequires:  mvn(org.springframework.security:spring-security-web)
BuildRequires:  mvn(org.springframework:spring-aop)
BuildRequires:  mvn(org.springframework:spring-core)
BuildRequires:  mvn(org.springframework:spring-oxm)
BuildRequires:  mvn(org.springframework:spring-webmvc)
BuildRequires:  mvn(org.tmatesoft.svnkit:trilead-ssh2)
BuildRequires:  mvn(org.jenkins-ci.main:remoting) >= 2.62.3-1
BuildRequires:  mvn(xpp3:xpp3)
BuildRequires:  mvn(org.apache.maven.plugins:maven-war-plugin)
BuildRequires:  mvn(org.apache.sshd:sshd-core)
BuildRequires:  mvn(org.bouncycastle:bcprov-jdk16)
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:  mvn(net.jcip:jcip-annotations)
BuildRequires:  mvn(org.slf4j:slf4j-jdk14)
BuildRequires:  mvn(org.slf4j:log4j-over-slf4j)
BuildRequires:  mvn(org.slf4j:jcl-over-slf4j)
BuildRequires:  jcifs
BuildRequires:  atinject
BuildRequires:  glassfish-annotation-api
BuildRequires:  systemd-units
BuildRequires:  stax2-api
BuildRequires:  jtidy
BuildRequires:  apache-mina-mina-core
%if !%{bootstrap}
#BuildRequires:  mvn(org.jenkins-ci.lib:lib-jenkins-maven-embedder)
BuildRequires:  mvn(org.jenkins-ci.main:cli)
BuildRequires:  mvn(org.jenkins-ci:executable-war)
BuildRequires:  mvn(org.jenkins-ci.main:jenkins-core)
#BuildRequires:  mvn(org.jenkins-ci.main.maven:maven31-agent)
#BuildRequires:  mvn(org.jenkins-ci.main.maven:maven31-interceptor)
#BuildRequires:  mvn(org.jenkins-ci.main:pom:pom:)
BuildRequires:  mvn(org.jenkins-ci.modules:instance-identity)
#BuildRequires:  mvn(org.jenkins-ci.modules:slave-installer)
BuildRequires:  mvn(org.jenkins-ci.modules:ssh-cli-auth)
BuildRequires:  mvn(org.jenkins-ci.modules:sshd)
#BuildRequires:  mvn(org.jenkins-ci.plugins:credentials)
#BuildRequires:  mvn(org.jenkins-ci.plugins:javadoc)
#BuildRequires:  mvn(org.jenkins-ci.plugins:mailer)
#BuildRequires:  mvn(org.jenkins-ci.plugins:ssh-credentials)
#BuildRequires:  mvn(org.jenkins-ci.plugins:token-macro)
BuildRequires:  js-yui2
BuildRequires:  springframework-instrument
BuildRequires:  woodstox-core
%endif

Requires:         jenkins-webapp
Requires(pre):    shadow-utils
Requires(post):   systemd-units
Requires(preun):  systemd-units
Requires(postun): systemd-units


%description
Jenkins is an award-winning, cross-platform, continuous integration and
continuous delivery application that increases your productivity. Use
Jenkins to build and test your software projects continuously making it
easier for developers to integrate changes to the project, and making it
easier for users to obtain a fresh build. It also allows you to
continuously deliver your software by providing powerful ways to define
your build pipelines and integrating with a large number of testing and
deployment technologies.

%package core
Summary:        Jenkins core

%description core
This package contains Jenkins core artifact.

%package plugins-pom
Summary:        Jenkins Plugins POM

%description plugins-pom
This package contains Jenkins Plugins POM.

%package cli
Summary:        Jenkins CLI

%description cli
This package contains Jenkins CLI.

%if !%{bootstrap}
%package webapp
Summary:        Jenkins Web Application
# we install exploded WAR with symlinks to system JARs, thus we need all these deps
Requires:       %{name} = %{version}-%{release}
Requires:       %{name}-core = %{version}-%{release}
Requires:       %{name}-cli = %{version}-%{release}
Requires:       unzip
Requires:       mvn(org.kohsuke:access-modifier-annotation)
Requires:       acegisecurity
Requires:       akuma
Requires:       mvn(org.jenkins-ci:annotation-indexer)
Requires:       ant
Requires:       antlr-tool
Requires:       aopalliance
Requires:       apache-commons-beanutils
Requires:       apache-commons-codec
Requires:       apache-commons-collections
Requires:       apache-commons-compress
Requires:       apache-commons-digester
Requires:       apache-commons-discovery
Requires:       apache-commons-fileupload
Requires:       apache-commons-io
Requires:       apache-commons-lang
Requires:       apache-commons-logging
Requires:       apache-mina-mina-core
Requires:       apache-sshd
Requires:       args4j
Requires:       atinject
Requires:       bea-stax-api
Requires:       bouncycastle
Requires:       bouncycastle-pkix
Requires:       mvn(com.infradna.tool:bridge-method-annotation)
Requires:       mvn(com.sun.xml.txw2:txw2)
Requires:       bytecode-compatibility-transformer
Requires:       constant-pool-scanner
Requires:       dom4j
Requires:       ezmorph
Requires:       glassfish-annotation-api
Requires:       google-guice
Requires:       groovy18-lib
Requires:       guava
Requires:       hamcrest-core
Requires:       jakarta-commons-httpclient
Requires:       jakarta-oro
Requires:       jansi
Requires:       javamail
Requires:       jaxen
Requires:       jBCrypt
Requires:       jcifs
Requires:       jcip-annotations
Requires:       jcommon
Requires:       jenkins-commons-jelly
Requires:       jenkins-crypto-util
Requires:       jenkins-executable-war-webroot
Requires:       jenkins-extras-memory-monitor
Requires:       jenkins-icon-shim
Requires:       jenkins-instance-identity
Requires:       jenkins-jexl
Requires:       jenkins-json-lib
Requires:       jenkins-remoting >= 2.62.3-1
Requires:       jenkins-remoting-webapp >= 2.62.3-1
Requires:       jenkins-ssh-cli-auth
Requires:       jenkins-sshd
Requires:       jenkins-task-reactor
Requires:       jenkins-version-number
Requires:       jenkins-winstone
Requires:       jenkins-xstream
Requires:       jffi
Requires:       jffi-native
Requires:       jfreechart
Requires:       jline1
Requires:       jmdns
Requires:       jna
Requires:       jnr-constants
Requires:       jnr-ffi
Requires:       jnr-posix
Requires:       jnr-x86asm
Requires:       jsr-305
Requires:       js-yui2-jenkins
Requires:       jtidy
Requires:       junit
Requires:       jzlib
Requires:       libpam4j
Requires:       localizer
Requires:       log4j12
Requires:       objectweb-asm
Requires:       objectweb-asm3
Requires:       relaxngDatatype
Requires:       robust-http-client
Requires:       sezpoz
Requires:       slf4j
Requires:       slf4j-jdk14
Requires:       springframework
Requires:       springframework-aop
Requires:       springframework-beans
Requires:       springframework-context
Requires:       springframework-context-support
Requires:       springframework-expression
Requires:       springframework-instrument
Requires:       springframework-jdbc
Requires:       springframework-oxm
Requires:       springframework-tx
Requires:       springframework-web
Requires:       springframework-webmvc
Requires:       stapler
Requires:       stapler-adjunct-codemirror
Requires:       stapler-adjunct-timeline
Requires:       stapler-groovy
Requires:       stapler-jelly
Requires:       stax2-api
Requires:       tiger-types
Requires:       tomcat-taglibs-standard
Requires:       trilead-putty-extension
Requires:       trilead-ssh2
Requires:       txw2
Requires:       woodstox-core
Requires:       xpp3
# core plugins
Requires:       jenkins-ant-plugin
Requires:       jenkins-antisamy-markup-formatter-plugin
Requires:       jenkins-credentials-plugin
#Requires:       jenkins-cvs-plugin
Requires:       jenkins-external-monitor-job-plugin
Requires:       jenkins-javadoc-plugin
Requires:       jenkins-junit-plugin
Requires:       jenkins-ldap-plugin
Requires:       jenkins-mailer-plugin
Requires:       jenkins-matrix-auth-plugin
Requires:       jenkins-matrix-project-plugin
#Requires:       jenkins-maven-plugin
Requires:       jenkins-pam-auth-plugin
Requires:       jenkins-script-security-plugin
Requires:       jenkins-ssh-credentials-plugin
Requires:       jenkins-ssh-slaves-plugin
#Requires:       jenkins-subversion-plugin
#Requires:       jenkins-translation-plugin
#Requires:       jenkins-windows-slaves

%description webapp
This package contains Jenkins web application.
%endif # bootstrap

%package javadoc
Summary:        Javadoc for %{name}

%description javadoc
This package contains API documentation for %{name}.


%prep
%setup -q -n %{name}-%{name}-%{version}

%patch3 -p1
%patch4 -p1
%patch7 -p1
%patch9 -p1
%patch11 -p1
%patch14 -p1
%patch15 -p1
%patch16 -p1

%patch100 -p1

# plugins POM
mkdir plugins
cp %{SOURCE9} plugins/pom.xml
%pom_xpath_inject 'pom:modules' '<module>plugins</module>'

# remote .NET detection code - it's not needed in Fedora
rm core/src/main/java/hudson/util/jna/DotNet.java

cp %{SOURCE1} LICENSE-ASL-2.0.txt
cp %{SOURCE2} LICENSE-CDDL.txt

# Remove bundled JARs and classes
find . -name "*.jar" -delete
find . -name "*.class" -delete

# remove support for Solaris for now (missing deps and unclear licensing)
rm core/src/main/java/hudson/os/solaris/package-info.java
rm core/src/main/java/hudson/os/solaris/ZFSProvisioner.java
rm core/src/main/java/hudson/os/solaris/ZFSInstaller.java

# remove windows support (for now)
rm core/src/main/java/hudson/util/jna/Advapi32.java
rm core/src/main/java/hudson/util/jna/RegistryKey.java
rm core/src/main/java/hudson/util/jna/SHELLEXECUTEINFO.java
rm core/src/main/java/hudson/util/jna/Shell32.java
rm core/src/main/java/hudson/util/jna/WINBASE.java

# TODO: prepare shaded asm5 and use it here
sed -i 's|org.kohsuke.asm5|org.objectweb.asm|g' core/src/main/java/hudson/util/SubClassGenerator.java

# Don't add classpath entry to the manifest
%pom_xpath_remove pom:manifest/pom:addClasspath core

# packaging layout
%mvn_package :jenkins-core core
%mvn_package :plugin plugins-pom
%mvn_package :cli cli
%mvn_package :pom core

%if %{bootstrap}
%pom_disable_module war
%else
%mvn_package :jenkins-war __noinstall
%endif

%pom_change_dep org.jenkins-ci:winstone :::compile war

# CLI uber JAR
# useful, but bundling exception will be needed
%pom_remove_plugin :maven-assembly-plugin cli

# Requires cannot be generated on jenkins-war (when building in bootstrap mode)
%pom_remove_dep org.jenkins-ci.main:jenkins-war plugins

# parent pom has not been packaged yet (unknown license)
%pom_remove_parent
%pom_remove_parent plugins

# a lot of missing deps for tests
%pom_disable_module test

#%%pom_add_dep net.jcip:jcip-annotations core

# remove unneeded/unavailable stuff
%pom_xpath_remove "pom:extensions[pom:extension[pom:artifactId[text()='wagon-gitsite']]]"
%pom_xpath_remove "pom:extensions[pom:extension[pom:artifactId[text()='wagon-gitsite']]]" plugins
%pom_xpath_remove "pom:dependencies[pom:dependency[pom:artifactId[text()='maven-jellydoc-plugin']]]"
%pom_remove_plugin :animal-sniffer-maven-plugin
%pom_remove_plugin :gmaven-plugin
%pom_remove_plugin :maven-enforcer-plugin
%pom_remove_plugin :maven-enforcer-plugin plugins
%pom_remove_plugin :maven-remote-resources-plugin
%pom_remove_plugin org.codehaus.gmaven:gmaven-plugin plugins
%pom_remove_plugin org.codehaus.gmaven:gmaven-plugin core
%pom_remove_plugin org.jvnet.hudson.tools:maven-encoding-plugin core
%pom_remove_plugin com.cloudbees:maven-license-plugin
%pom_remove_plugin com.cloudbees:maven-license-plugin plugins
%pom_remove_plugin :maven-jenkins-dev-plugin
%pom_remove_plugin :maven-dependency-plugin core

# missing deps
%pom_remove_dep org.jenkins-ci.main:jenkins-test-harness plugins
%pom_remove_dep :animal-sniffer-annotations
%pom_remove_dep :animal-sniffer-annotations plugins
%pom_remove_dep org.jvnet.hudson:jtidy core
%pom_remove_dep org.jenkins-ci:core-annotation-processors core
%pom_remove_dep org.jruby.ext.posix:jna-posix core
%pom_remove_dep org.kohsuke.stapler:stapler-jrebel core
%pom_remove_dep org.kohsuke:windows-package-checker core
%pom_remove_dep org.kohsuke.stapler:stapler-adjunct-zeroclipboard core
%pom_remove_dep org.jvnet.hudson:activation core
%pom_remove_dep org.jvnet.winp:winp core
%pom_remove_dep org.jvnet.libzfs:libzfs core
%pom_remove_dep com.sun.solaris:embedded_su4j core
%pom_remove_dep org.kohsuke.jinterop:j-interop core
%pom_remove_dep org.jenkins-ci.modules:windows-slave-installer war
%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 org.jenkins-ci.modules:slave-installer war

#%%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_add_dep org.bouncycastle:bcprov-jdk15on war
%pom_add_dep org.bouncycastle:bcpkix-jdk15on war
%pom_add_dep org.apache.sshd:sshd-core war

# fix gId:aId
# groovy
%pom_remove_dep org.codehaus.groovy:groovy-all core
%pom_add_dep org.codehaus.groovy:groovy18:1.8 core
# jfreechart
%pom_remove_dep jfree:jfreechart core
%pom_add_dep org.jfree:jfreechart core
# jelly-tags
%pom_remove_dep org.jvnet.hudson:commons-jelly-tags-define core
%pom_add_dep commons-jelly:commons-jelly-tags-define core

# jline 1.x is a compat package
%pom_remove_dep jline:jline core
%pom_add_dep jline:jline:1 core

%build
%mvn_build -f -- -DadditionalJOption=--allow-script-in-comments

%install
%mvn_install

# wrapper script for CLI
%jpackage_script hudson.cli.CLI "" "" trilead-ssh2:commons-codec:jenkins-remoting/remoting:localizer/localizer:jenkins/cli %{name}-cli true

%if !%{bootstrap}
install -d -m 755 %{buildroot}/%{homedir}
install -d -m 755 %{buildroot}/%{webroot}
install -d -m 755 %{buildroot}/%{homedir}/plugins
install -d -m 755 %{buildroot}/%{corepluginsdir}
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 %{webroot}
unzip -d %{buildroot}/%{webroot}/ war/target/jenkins.war
cp war/src/main/webapp/WEB-INF/web.xml %{buildroot}/%{webroot}/WEB-INF/
pushd %{buildroot}/%{webroot}/WEB-INF/lib
    rm *
    ln -sf `build-classpath access-modifier-annotation/access-modifier-annotation` access-modifier-annotation.jar
    ln -sf `build-classpath acegisecurity/acegi-security` acegi-security.jar
    #ln -sf `build-classpath ` activation-1.1.1-hudson-1.jar
    ln -sf `build-classpath akuma/akuma` akuma-1.9.jar
    ln -sf `build-classpath annotation-indexer/annotation-indexer` annotation-indexer.jar
    ln -sf `build-classpath ant/ant` ant.jar
    ln -sf `build-classpath ant/ant-launcher` ant-launcher.jar
    ln -sf `build-classpath antlr` antlr.jar
    ln -sf `build-classpath aopalliance` aopalliance.jar
    ln -sf `build-classpath args4j/args4j` args4j.jar
    # asm
    ln -sf `build-classpath objectweb-asm/asm` asm.jar
    ln -sf `build-classpath objectweb-asm/asm-analysis` asm-analysis.jar
    ln -sf `build-classpath objectweb-asm/asm-commons` asm-commons.jar
    ln -sf `build-classpath objectweb-asm/asm-tree` asm-tree.jar
    ln -sf `build-classpath objectweb-asm/asm-util` asm-util.jar
    # end asm
    ln -sf `build-classpath bcpkix` bcpkix.jar
    ln -sf `build-classpath bcprov` bcprov.jar
    ln -sf `build-classpath bridge-method-injector/bridge-method-annotation` bridge-method-annotation.jar
    ln -sf `build-classpath bytecode-compatibility-transformer/bytecode-compatibility-transformer` bytecode-compatibility-transformer.jar
    ln -sf `build-classpath jenkins/cli` cli-%{version}.jar
    ln -sf `build-classpath commons-beanutils` commons-beanutils.jar
    ln -sf `build-classpath commons-codec` commons-codec.jar
    ln -sf `build-classpath commons-collections` commons-collections.jar
    ln -sf `build-classpath commons-compress` commons-compress.jar
    ln -sf `build-classpath commons-digester` commons-digester.jar
    ln -sf `build-classpath commons-discovery` commons-discovery.jar
    ln -sf `build-classpath commons-fileupload` commons-fileupload.jar
    ln -sf `build-classpath commons-httpclient3` commons-httpclient3.jar
    ln -sf `build-classpath commons-io` commons-io.jar
    ln -sf `build-classpath jenkins-commons-jelly/commons-jelly` commons-jelly.jar
    ln -sf `build-classpath jenkins-commons-jelly/commons-jelly-tags-define` commons-jelly-tags-define.jar
    ln -sf `build-classpath jenkins-commons-jelly/commons-jelly-tags-fmt` commons-jelly-tags-fmt.jar
    ln -sf `build-classpath jenkins-commons-jelly/commons-jelly-tags-xml` commons-jelly-tags-xml.jar
    ln -sf `build-classpath jenkins-jexl/commons-jexl` commons-jexl.jar
    ln -sf `build-classpath commons-lang` commons-lang.jar
    ln -sf `build-classpath commons-logging` commons-logging.jar
    ln -sf `build-classpath constant-pool-scanner/constant-pool-scanner` constant-pool-scanner.jar
    ln -sf `build-classpath jenkins-crypto-util/crypto-util` crypto-util.jar
    ln -sf `build-classpath dom4j` dom4j.jar
    #ln -sf `embedded_su4j` embedded_su4j.jar
    ln -sf `build-classpath ezmorph` ezmorph.jar
    ln -sf `build-classpath groovy18-1.8` groovy18-1.8.jar
    ln -sf `build-classpath guava` guava.jar
    ln -sf `build-classpath guice/google-guice-no_aop` guice.jar
    ln -sf `build-classpath hamcrest/core` hamcrest-core.jar
    ln -sf `build-classpath jenkins-icon-shim/icon-set` icon-set.jar
    ln -sf `build-classpath jenkins-instance-identity/instance-identity` instance-identity.jar
    ln -sf `build-classpath jansi/jansi` jansi.jar
    ln -sf `build-classpath glassfish-annotation-api` javax.annotation-api.jar
    ln -sf `build-classpath atinject` javax.inject.jar
    ln -sf `build-classpath jaxen` jaxen.jar
    ln -sf `build-classpath jBCrypt/jBCrypt` jbcrypt.jar
    ln -sf `build-classpath jcifs` jcifs.jar
    ln -sf `build-classpath jcommon/jcommon` jcommon.jar
    ln -sf `build-classpath jenkins/jenkins-core` jenkins-core-%{version}.jar
    ln -sf `build-classpath jffi/jffi` jffi.jar
    ln -sf `build-classpath jffi/jffi-native` jffi-native.jar
    ln -sf `build-classpath jfreechart/jfreechart` jfreechart.jar
    #ln -sf `j-interop-2.0.6-kohsuke-1.jar` .jar
    #ln -sf `j-interopdeps-2.0.6-kohsuke-1.jar` .jar
    ln -sf `build-classpath jline1/jline-1.0` jline.jar
    ln -sf `build-classpath jmdns/jmdns` jmdns.jar
    ln -sf `build-classpath jna` jna-4.1.0.jar
    #ln -sf `jna-posix-1.0.3-jenkins-1.jar` .jar
    ln -sf `build-classpath jnr-constants` jnr-constants.jar
    ln -sf `build-classpath jnr-ffi/jnr-ffi` jnr-ffi.jar
    ln -sf `build-classpath jnr-posix` jnr-posix.jar
    ln -sf `build-classpath jnr-x86asm` jnr-x86asm.jar
    ln -sf `build-classpath jenkins-json-lib` json-lib.jar
    ln -sf `build-classpath jsr-305` jsr305.jar
    ln -sf `build-classpath tomcat-taglibs-standard/taglibs-standard-spec` jstl.jar
    ln -sf `build-classpath jtidy` jtidy.jar
    ln -sf `build-classpath junit` junit.jar
    ln -sf `build-classpath jzlib` jzlib.jar
    #ln -sf `launchd-slave-installer-1.2.jar` .jar
    ln -sf `build-classpath libpam4j/libpam4j` libpam4j.jar
    #ln -sf `libzfs-0.5.jar` .jar
    ln -sf `build-classpath localizer/localizer` localizer.jar
    ln -sf `build-classpath slf4j/log4j-over-slf4j` log4j-over-slf4j.jar
    ln -sf `build-classpath javamail/mail` mail.jar
    ln -sf `build-classpath jenkins-extras-memory-monitor/memory-monitor` memory-monitor.jar
    ln -sf `build-classpath apache-mina/mina-core` mina-core.jar
    ln -sf `build-classpath oro` oro.jar
    ln -sf `build-classpath relaxngDatatype` relaxngDatatype.jar
    ln -sf `build-classpath jenkins-remoting/remoting` remoting.jar
    ln -sf `build-classpath robust-http-client/robust-http-client` robust-http-client.jar
    ln -sf `build-classpath sezpoz/sezpoz` sezpoz.jar
    #ln -sf `slave-installer-1.5.jar` .jar
    ln -sf `build-classpath slf4j/slf4j-api` slf4j-api.jar
    ln -sf `build-classpath slf4j/slf4j-jdk14` slf4j-jdk14.jar
    # spring
    ln -sf `build-classpath springframework/spring-aop` spring-aop.jar
    ln -sf `build-classpath springframework/spring-beans` spring-beans.jar
    ln -sf `build-classpath springframework/spring-context` spring-context.jar
    ln -sf `build-classpath springframework/spring-context-support` spring-context-support.jar
    ln -sf `build-classpath springframework/spring-core` spring-core.jar
    ln -sf `build-classpath springframework/spring-expression` spring-expression.jar
    ln -sf `build-classpath springframework/spring-instrument` spring-instrument.jar
    ln -sf `build-classpath springframework/spring-jdbc` spring-jdbc.jar
    ln -sf `build-classpath springframework/spring-oxm` spring-oxm.jar
    ln -sf `build-classpath springframework/spring-tx` spring-tx.jar
    ln -sf `build-classpath springframework/spring-web` spring-web.jar
    ln -sf `build-classpath springframework/spring-webmvc` spring-webmvc.jar
    # end spring
    ln -sf `build-classpath jenkins-ssh-cli-auth/ssh-cli-auth` ssh-cli-auth.jar
    ln -sf `build-classpath jenkins-sshd/sshd` sshd.jar
    ln -sf `build-classpath apache-sshd/sshd-core` sshd-core.jar
    ln -sf `build-classpath stapler/stapler` stapler.jar
    ln -sf `build-classpath stapler-adjunct-codemirror/stapler-adjunct-codemirror` stapler-adjunct-codemirror.jar
    ln -sf `build-classpath stapler-adjunct-timeline/stapler-adjunct-timeline` stapler-adjunct-timeline.jar
    #ln -sf `stapler-adjunct-zeroclipboard-1.3.5-1.jar` .jar
    ln -sf `build-classpath stapler/stapler-groovy` stapler-groovy.jar
    ln -sf `build-classpath stapler/stapler-jelly` stapler-jelly.jar
    #ln -sf `stapler-jrebel-1.234.jar` .jar
    ln -sf `build-classpath bea-stax-api` bea-stax-api.jar
    ln -sf `build-classpath stax2-api` stax2-api.jar
    #ln -sf `systemd-slave-installer-1.1.jar` .jar
    ln -sf `build-classpath jenkins-task-reactor/task-reactor` task-reactor.jar
    ln -sf `build-classpath tiger-types` tiger-types.jar
    ln -sf `build-classpath trilead-putty-extension/trilead-putty-extension` trilead-putty-extension.jar
    ln -sf `build-classpath trilead-ssh2/trilead-ssh2` trilead-ssh2.jar
    ln -sf `build-classpath txw2/txw2` txw2.jar
    #ln -sf `upstart-slave-installer-1.1.jar` .jar
    ln -sf `build-classpath jenkins-version-number/version-number` version-number.jar
    #ln -sf `windows-package-checker-1.0.jar` .jar
    #ln -sf `windows-slave-installer-1.4.jar` .jar
    #ln -sf `winp-1.22.jar` .jar
    ln -sf `build-classpath woodstox-core-asl` woodstox-core-asl.jar
    ln -sf `build-classpath xpp3` xpp3.jar
    ln -sf `build-classpath jenkins-xstream/xstream` xstream.jar

    # extra
    ln -sf `build-classpath jenkins-winstone/winstone` ../../winstone.jar
    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
popd

cp %{SOURCE8} %{buildroot}/%{webroot}/WEB-INF/classes/dependencies.txt
# remove bundled YUI library
rm -Rf %{buildroot}/%{webroot}/scripts/yui

cp -p %{buildroot}/%{_javadir}/%{name}/cli.jar %{buildroot}/%{webroot}/WEB-INF/jenkins-cli.jar

install -d -m 755 %{buildroot}%{_sysconfdir}/sysconfig
cp -p %{SOURCE4} %{buildroot}%{_sysconfdir}/sysconfig/%{name}
%endif # bootstrap

%pre
# Add jenkins user and group
getent group %{name} >/dev/null || groupadd -r %{name}
getent passwd %{name} >/dev/null || \
    useradd -r -g %{name} -d %{workdir} -s /sbin/nologin \
    -c "Jenkins Continuous Build server" %{name}
exit 0

%post
%systemd_post %{name}.service

%preun
%systemd_preun %{name}.service

%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

%files
%defattr(0664, jenkins, jenkins, 0755)
%{_sysconfdir}/jenkins
%{_unitdir}/%{name}.service
%dir %{homedir}
%dir %{homedir}/plugins
%attr(0770, jenkins, jenkins) %{_libexecdir}/%{name}
%attr(0770, jenkins, jenkins) %{_localstatedir}/log/%{name}
%attr(0770, jenkins, jenkins) %dir %{workdir}

%files plugins-pom -f .mfiles-plugins-pom

%files cli -f .mfiles-cli
%{_bindir}/%{name}-cli
%doc LICENSE.txt

%if !%{bootstrap}
%files webapp
%{webroot}
%{corepluginsdir}
%config(noreplace) %{_sysconfdir}/sysconfig/%{name}
%doc LICENSE.txt
%endif # bootstrap

%files javadoc -f .mfiles-javadoc
%doc LICENSE.txt

%changelog
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.651.3-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild

* Sat Mar 04 2017 msrb <msrb@redhat.com> - 1.651.3-5
- Fix symlinks (Resolves: rhbz#1401161)
- Fix FTBFS (Resolves: rhbz#1423757)

* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.651.3-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild

* Tue Jan 03 2017 Jon Ciesla <limburgher@gmail.com> - 1.651.3-3
- Comment out mina and jtidy symlinks to allow service start.

* Thu Nov 17 2016 Michal Srb <msrb@redhat.com> - 1.651.3-2
- Fix remote code execution vulnerability in remoting module
- Resolves: CVE-2016-9299

* Tue Jun 14 2016 Michal Srb <msrb@redhat.com> - 1.651.3-1
- Update to 1.651.1

* Fri May 13 2016 Michal Srb <msrb@redhat.com> - 1.651.2-1
- Update to 1.651.2
- Resolves: CVE-2016-3721
- Resolves: CVE-2016-3722
- Resolves: CVE-2016-3723
- Resolves: CVE-2016-3724
- Resolves: CVE-2016-3725
- Resolves: CVE-2016-3726
- Resolves: CVE-2016-3727

* Tue Apr 26 2016 Michal Srb <msrb@redhat.com> - 1.651.1-1
- Update to 1.651.1

* Tue Apr 26 2016 Michal Srb <msrb@redhat.com> - 1.642.3-2
- Fix dangling symlink (Resolves: rhbz#1330472)

* Fri Mar 18 2016 Michal Srb <msrb@redhat.com> - 1.642.3-1
- Update to 1.642.3

* Wed Mar 02 2016 Michal Srb <msrb@redhat.com> - 1.642.2-2
- Fix NoClassDefFoundError: org/codehaus/stax2/XMLInputFactory2
- Resolves: rhbz#1311132

* Fri Feb 26 2016 Michal Srb <msrb@redhat.com> - 1.642.2-1
- Update to 1.642.2

* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.625.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild

* Mon Dec 21 2015 Michal Srb <msrb@redhat.com> - 1.625.3-1
- Update to 1.625.3
- Resolves: CVE-2015-7536
- Resolves: CVE-2015-7537
- Resolves: CVE-2015-7538
- Resolves: CVE-2015-7539

* Thu Nov 26 2015 Mikolaj Izdebski <mizdebsk@redhat.com> - 1.625.2-4
- Remove workaround for rhbz#1276729

* Thu Nov 26 2015 Michal Srb <msrb@redhat.com> - 1.625.2-3
- Fix R

* Thu Nov 12 2015 Michal Srb <msrb@redhat.com> - 1.625.2-2
- Add missing R: apache-commons-compress

* Wed Nov 11 2015 Michal Srb <msrb@redhat.com> - 1.625.2-1
- Update to 1.625.2
- Resolves: CVE-2015-5317
- Resolves: CVE-2015-5318
- Resolves: CVE-2015-5319
- Resolves: CVE-2015-5320
- Resolves: CVE-2015-5324
- Resolves: CVE-2015-5321
- Resolves: CVE-2015-5322
- Resolves: CVE-2015-5323
- Resolves: CVE-2015-5325
- Resolves: CVE-2015-5326
- Resolves: Remote code execution vulnerability due to unsafe deserialization in Jenkins remoting

* Fri Oct 30 2015 Michal Srb <msrb@redhat.com> - 1.625.1-1
- Update to 1.625.1

* Fri Oct 02 2015 Michal Srb <msrb@redhat.com> - 1.625-2
- Fix plugins unpacking issue (rhbz#1267631)

* Thu Oct 01 2015 Michal Srb <msrb@redhat.com> - 1.625-1
- Update to next LTS release 1.625

* Tue Sep 22 2015 Michal Srb <msrb@redhat.com> - 1.616-8
- Update description

* Fri Jul 03 2015 Michal Srb <msrb@redhat.com> - 1.616-7
- Fix R

* Mon Jun 29 2015 Michal Srb <msrb@redhat.com> - 1.616-6
- Fix BR/R
- Fix plugin-unpacking workaround

* Mon Jun 29 2015 Michal Srb <msrb@redhat.com> - 1.616-5
- Start migration to mvn()-like Requires

* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.616-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild

* Mon Jun 15 2015 Michal Srb <msrb@redhat.com> - 1.616-3
- Fix BR on findbugs

* Mon Jun 15 2015 Michal Srb <msrb@redhat.com> - 1.616-2
- Fix R

* Thu Jun 04 2015 Michal Srb <msrb@redhat.com> - 1.616-1
- Update to upstream release 1.616

* Thu May 21 2015 Michal Srb <msrb@redhat.com> - 1.614-1
- Update to upstream release 1.614

* Fri May 08 2015 Michal Srb <msrb@redhat.com> - 1.611-3
- Spec clean up, add R: jenkins-script-security-plugin

* Thu May 07 2015 Michal Srb <msrb@redhat.com> - 1.611-2
- Clean up dangling symlinks in JENKINS_HOME

* Wed Apr 29 2015 Michal Srb <msrb@redhat.com> - 1.611-1
- Update to upstream release 1.611

* Mon Apr 13 2015 Michal Srb <msrb@redhat.com> - 1.606-2
- Migrate to plugins containing symlinks

* Thu Mar 26 2015 Michal Srb <msrb@redhat.com> - 1.606-1
- Update to upstream release 1.606
- Resolves: CVE-2015-1806
- Resolves: CVE-2015-1807
- Resolves: CVE-2015-1813
- Resolves: CVE-2015-1812
- Resolves: CVE-2015-1810
- Resolves: CVE-2015-1808
- Resolves: CVE-2015-1809
- Resolves: CVE-2015-1814
- Resolves: CVE-2015-1811

* Fri Mar 13 2015 Michal Srb <msrb@redhat.com> - 1.598-9
- Add BR: springframework-instrument

* Thu Mar 12 2015 Michal Srb <msrb@redhat.com> - 1.598-8
- Fix jstl dep

* Thu Mar 12 2015 Michal Srb <msrb@redhat.com> - 1.598-7
- Fix init script

* Thu Mar 12 2015 Michal Srb <msrb@redhat.com> - 1.598-6
- Switch to unpacked executable-war

* Wed Mar 11 2015 Michal Srb <msrb@redhat.com> - 1.598-5
- Sanitize R

* Tue Mar 10 2015 Michal Srb <msrb@redhat.com> - 1.598-4
- Add missing R: springframework-instrument

* Fri Mar 06 2015 Michal Srb <msrb@redhat.com> - 1.598-3
- Migrate to tomcat-taglibs-standard

* Thu Feb 26 2015 Michal Srb <msrb@redhat.com> - 1.598-2
- Add missing BR: mvn(org.slf4j:slf4j-jdk14)

* Tue Feb 03 2015 Michal Srb <msrb@redhat.com> - 1.598-1
- Update to upstream version 1.598

* Mon Feb 02 2015 Michal Srb <msrb@redhat.com> - 1.590-2
- Require jna >= 4.1.0-7

* Wed Nov 19 2014 Michal Srb <msrb@redhat.com> - 1.590-1
- Update to upstream version 1.590
- Add R: jenkins-matrix-project-plugin

* Wed Nov 12 2014 Michal Srb <msrb@redhat.com> - 1.589-1
- Update to upstream version 1.589

* Wed Oct 01 2014 Michal Srb <msrb@redhat.com> - 1.581-3
- Fix JENKINS_HOME ownership (Resolves: rhbz#1147846)
- Do not inform about upstream core updates (Resolves: rhbz#1147897)
- Move webroot to %%{webroot}
- Own directory for core plugins
- Make jenkins-cli.jar available for download (Resolves: rhbz#1147831)
- Make slave.jar available for download (Resolves: rhbz#1147978)
- Exclude unneeded slf4j binding (Resolves: rhbz#1147875)
- Fix "Incorrect plugin version to downgrade" bug (Resolves: rhbz#1147908)
- Fix "RPM plugin uninstallation is not persistent" (Resolves: rhbz#1147902)

* Sun Sep 28 2014 Michal Srb <msrb@redhat.com> - 1.581-2
- Add R: jenkins-junit-plugin

* Mon Sep 22 2014 Michal Srb <msrb@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@redhat.com> - 1.578-1
- Update to upstream version 1.578

* Fri Aug 15 2014 Michal Srb <msrb@redhat.com> - 1.575-2
- Add R for webapp: jenkins-core and jenkins-cli

* Fri Aug 15 2014 Michal Srb <msrb@redhat.com> - 1.575-1
- Update to upstream version 1.575

* Mon Jul 14 2014 Michal Srb <msrb@redhat.com> - 1.572-1
- Update to upstream version 1.572

* Fri Jul 11 2014 Michal Srb <msrb@redhat.com> - 1.569-2
- Exclude unneeded JARs

* Thu Jun 26 2014 Michal Srb <msrb@redhat.com> - 1.569-1
- Update to upstream version 1.569

* Mon Jun 23 2014 Michal Srb <msrb@redhat.com> - 1.557-14
- Fix FTBFS

* Sun Jun 08 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.557-13
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild

* Wed Apr 09 2014 Michal Srb <msrb@redhat.com> - 1.557-12
- Do not inherit default configuration from tomcat
- Tweak permissions

* Mon Apr 07 2014 Michal Srb <msrb@redhat.com> - 1.557-11
- Run as a separate service

* Mon Apr 07 2014 Michal Srb <msrb@redhat.com> - 1.557-10
- Remove forgotten BSD license references

* Fri Apr 04 2014 Michal Srb <msrb@redhat.com> - 1.557-9
- Update license tag to reflect changes in 1.557

* Fri Apr 04 2014 Michal Srb <msrb@redhat.com> - 1.557-8
- Drop unneeded trilead-ssh2 patch

* Fri Apr 04 2014 Michal Srb <msrb@redhat.com> - 1.557-7
- Spec file cleanup

* Fri Apr 04 2014 Michal Srb <msrb@redhat.com> - 1.557-6
- Remove superfluous JARs from cli jpackage script

* Fri Apr 04 2014 Michal Srb <msrb@redhat.com> - 1.557-5
- Use jline1

* Thu Apr 03 2014 Michal Srb <msrb@redhat.com> - 1.557-4
- Symlink remoting and cli JAR

* Wed Apr 02 2014 Michal Srb <msrb@redhat.com> - 1.557-3
- Build with stapler-adjunct-codemirror

* Tue Apr 01 2014 Michal Srb <msrb@redhat.com> - 1.557-2
- Allow symlinking

* Tue Apr 01 2014 Michal Srb <msrb@redhat.com> - 1.557-1
- Update to upstream version 1.557

* Mon Mar 31 2014 Michal Srb <msrb@redhat.com> - 1.549-8
- First acegisecurity experiment

* Mon Mar 31 2014 Michal Srb <msrb@redhat.com> - 1.549-7
- Symlink tomcat's work dir

* Thu Mar 27 2014 Michal Srb <msrb@redhat.com> - 1.549-6
- Unbundle yui
- Install proper sysconfig

* Thu Mar 27 2014 Michal Srb <msrb@redhat.com> - 1.549-5
- BR jenkins-core when building webapp

* Thu Mar 27 2014 Michal Srb <msrb@redhat.com> - 1.549-4
- Add missing BR

* Tue Mar 25 2014 Michal Srb <msrb@redhat.com> - 1.549-3
- Build webapp

* Tue Mar 11 2014 Michal Srb <msrb@redhat.com> - 1.549-2
- Fix license tag
- Install missing licenses
- Remove bundled jars and classes

* Wed Jan 29 2014 Michal Srb <msrb@redhat.com> - 1.549-1
- Initial packaging