Create EPEL 6 package using the maven ant plugin

This commit is contained in:
Mattias Ellert 2018-01-06 17:11:24 +01:00
commit bca13093cf
4 changed files with 402 additions and 20 deletions

23
build.xml Normal file
View file

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- ====================================================================== -->
<!-- Ant build file (http://ant.apache.org/) for Ant 1.6.2 or above. -->
<!-- ====================================================================== -->
<project name="voms-clients" default="package" basedir=".">
<!-- ====================================================================== -->
<!-- Import maven-build.xml into the current project -->
<!-- ====================================================================== -->
<import file="maven-build.xml"/>
<!-- ====================================================================== -->
<!-- Help target -->
<!-- ====================================================================== -->
<target name="help">
<echo message="Please run: $ant -projecthelp"/>
</target>
</project>

34
maven-build.properties Normal file
View file

@ -0,0 +1,34 @@
#Generated by Maven Ant Plugin - DO NOT EDIT THIS FILE!
#Fri Jan 05 18:12:39 CET 2018
maven.settings.offline=true
voms-api-java.version=3.0.6
maven.build.finalName=voms-clients-3.0.7
commons-cli.version=1.2
plugin.license.version=1.9.0
maven.build.resourceDir.0=src/main/resources
maven.build.testOutputDir=${maven.build.dir}/test-classes
maven.build.testResourceDir.0=src/test/resources
maven.reporting.outputDirectory=${maven.build.dir}/site
plugin.compiler.version=3.1
commons-io.version=2.0.1
plugin.javadoc.version=2.9.1
project.build.sourceEncoding=UTF-8
maven.build.srcDir.0=src/main/java
plugin.assembly.version=2.4.1
junit.version=4.10
project.build.directory=${maven.build.dir}
maven.test.reports=${maven.build.dir}/test-reports
maven.build.dir=target
plugin.jar.version=2.5
project.build.outputDirectory=${maven.build.outputDir}
plugin.nexus-staging.version=1.6.3
plugin.source.version=2.2.1
plugin.release.version=2.2.2
project.reporting.outputEncoding=UTF-8
voms-clients.libs=
maven.build.testDir.0=src/test/java
maven.settings.interactiveMode=true
plugin.gpg.version=1.5
maven.repo.local=${user.home}/.m2/repository
plugin.deploy.version=2.8.2
maven.build.outputDir=${maven.build.dir}/classes

305
maven-build.xml Normal file
View file

@ -0,0 +1,305 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- ====================================================================== -->
<!-- Ant build file (http://ant.apache.org/) for Ant 1.6.2 or above. -->
<!-- ====================================================================== -->
<!-- ====================================================================== -->
<!-- ===================== - DO NOT EDIT THIS FILE! - ===================== -->
<!-- ====================================================================== -->
<!-- -->
<!-- Any modifications will be overwritten. -->
<!-- -->
<!-- Generated by Maven Ant Plugin on 1/5/18 6:12 PM -->
<!-- See: http://maven.apache.org/plugins/maven-ant-plugin/ -->
<!-- -->
<!-- ====================================================================== -->
<project name="voms-clients-from-maven" default="package" basedir=".">
<!-- ====================================================================== -->
<!-- Build environment properties -->
<!-- ====================================================================== -->
<property file="${user.home}/.m2/maven.properties"/>
<property file="maven-build.properties"/>
<property name="maven.build.finalName" value="voms-clients-3.0.7"/>
<property name="maven.build.dir" value="target"/>
<property name="maven.build.outputDir" value="${maven.build.dir}/classes"/>
<property name="maven.build.srcDir.0" value="src/main/java"/>
<property name="maven.build.resourceDir.0" value="src/main/resources"/>
<property name="maven.build.testOutputDir" value="${maven.build.dir}/test-classes"/>
<property name="maven.build.testDir.0" value="src/test/java"/>
<property name="maven.build.testResourceDir.0" value="src/test/resources"/>
<property name="maven.test.reports" value="${maven.build.dir}/test-reports"/>
<property name="maven.reporting.outputDirectory" value="${maven.build.dir}/site"/>
<property name="maven.repo.local" value="${user.home}/.m2/repository"/>
<property name="maven.settings.offline" value="false"/>
<property name="maven.settings.interactiveMode" value="true"/>
<!-- ====================================================================== -->
<!-- Defining classpaths -->
<!-- ====================================================================== -->
<path id="build.classpath">
<pathelement location="${maven.repo.local}/commons-cli/commons-cli/1.2/commons-cli-1.2.jar"/>
<pathelement location="${maven.repo.local}/commons-io/commons-io/2.0.1/commons-io-2.0.1.jar"/>
<pathelement location="${maven.repo.local}/org/italiangrid/voms-api-java/3.0.6/voms-api-java-3.0.6.jar"/>
<pathelement location="${maven.repo.local}/eu/eu-emi/security/canl/1.3.3/canl-1.3.3.jar"/>
<pathelement location="${maven.repo.local}/org/bouncycastle/bcprov-jdk16/1.46/bcprov-jdk16-1.46.jar"/>
<pathelement location="${maven.repo.local}/org/italiangrid/bcmail/1.46.3/bcmail-1.46.3.jar"/>
<pathelement location="${maven.repo.local}/javax/mail/mail/1.4/mail-1.4.jar"/>
<pathelement location="${maven.repo.local}/javax/activation/activation/1.1/activation-1.1.jar"/>
</path>
<path id="build.test.classpath">
<pathelement location="${maven.repo.local}/junit/junit/4.10/junit-4.10.jar"/>
<pathelement location="${maven.repo.local}/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
<pathelement location="${maven.repo.local}/commons-cli/commons-cli/1.2/commons-cli-1.2.jar"/>
<pathelement location="${maven.repo.local}/commons-io/commons-io/2.0.1/commons-io-2.0.1.jar"/>
<pathelement location="${maven.repo.local}/org/italiangrid/voms-api-java/3.0.6/voms-api-java-3.0.6.jar"/>
<pathelement location="${maven.repo.local}/eu/eu-emi/security/canl/1.3.3/canl-1.3.3.jar"/>
<pathelement location="${maven.repo.local}/org/bouncycastle/bcprov-jdk16/1.46/bcprov-jdk16-1.46.jar"/>
<pathelement location="${maven.repo.local}/org/italiangrid/bcmail/1.46.3/bcmail-1.46.3.jar"/>
<pathelement location="${maven.repo.local}/javax/mail/mail/1.4/mail-1.4.jar"/>
<pathelement location="${maven.repo.local}/javax/activation/activation/1.1/activation-1.1.jar"/>
</path>
<!-- ====================================================================== -->
<!-- Cleaning up target -->
<!-- ====================================================================== -->
<target name="clean" description="Clean the output directory">
<delete dir="${maven.build.dir}"/>
</target>
<!-- ====================================================================== -->
<!-- Compilation target -->
<!-- ====================================================================== -->
<target name="compile" depends="get-deps" description="Compile the code">
<mkdir dir="${maven.build.outputDir}"/>
<javac destdir="${maven.build.outputDir}"
nowarn="false"
debug="true"
optimize="false"
deprecation="true"
target="1.6"
verbose="false"
fork="false"
source="1.6">
<src>
<pathelement location="${maven.build.srcDir.0}"/>
</src>
<classpath refid="build.classpath"/>
</javac>
<copy todir="${maven.build.outputDir}">
<fileset dir="${maven.build.resourceDir.0}"/>
</copy>
</target>
<!-- ====================================================================== -->
<!-- Test-compilation target -->
<!-- ====================================================================== -->
<target name="compile-tests"
depends="compile"
description="Compile the test code"
unless="maven.test.skip">
<mkdir dir="${maven.build.testOutputDir}"/>
<javac destdir="${maven.build.testOutputDir}"
nowarn="false"
debug="true"
optimize="false"
deprecation="true"
target="1.6"
verbose="false"
fork="false"
source="1.6">
<src>
<pathelement location="${maven.build.testDir.0}"/>
</src>
<classpath>
<path refid="build.test.classpath"/>
<pathelement location="${maven.build.outputDir}"/>
</classpath>
</javac>
</target>
<!-- ====================================================================== -->
<!-- Run all tests -->
<!-- ====================================================================== -->
<target name="test"
depends="compile-tests, junit-missing"
unless="junit.skipped"
description="Run the test cases">
<mkdir dir="${maven.test.reports}"/>
<junit printSummary="yes" haltonerror="true" haltonfailure="true" fork="true" dir=".">
<sysproperty key="basedir" value="."/>
<formatter type="xml"/>
<formatter type="plain" usefile="false"/>
<classpath>
<path refid="build.test.classpath"/>
<pathelement location="${maven.build.outputDir}"/>
<pathelement location="${maven.build.testOutputDir}"/>
</classpath>
<batchtest todir="${maven.test.reports}" unless="test">
<fileset dir="${maven.build.testDir.0}">
<include name="**/Test*.java"/>
<include name="**/*Test.java"/>
<include name="**/*TestCase.java"/>
<exclude name="**/*Abstract*Test.java"/>
</fileset>
</batchtest>
<batchtest todir="${maven.test.reports}" if="test">
<fileset dir="${maven.build.testDir.0}">
<include name="**/${test}.java"/>
<exclude name="**/*Abstract*Test.java"/>
</fileset>
</batchtest>
</junit>
</target>
<target name="test-junit-present">
<available classname="junit.framework.Test" property="junit.present" classpathref="build.test.classpath"/>
</target>
<target name="test-junit-status"
depends="test-junit-present">
<condition property="junit.missing">
<and>
<isfalse value="${junit.present}"/>
<isfalse value="${maven.test.skip}"/>
</and>
</condition>
<condition property="junit.skipped">
<or>
<isfalse value="${junit.present}"/>
<istrue value="${maven.test.skip}"/>
</or>
</condition>
</target>
<target name="junit-missing"
depends="test-junit-status"
if="junit.missing">
<echo>=================================== WARNING ===================================</echo>
<echo> JUnit is not present in the test classpath or your $ANT_HOME/lib directory. Tests not executed.</echo>
<echo>===============================================================================</echo>
</target>
<!-- ====================================================================== -->
<!-- Javadoc target -->
<!-- ====================================================================== -->
<target name="javadoc" description="Generates the Javadoc of the application">
<javadoc sourcepath="${maven.build.srcDir.0}"
packagenames="*"
destdir="${maven.reporting.outputDirectory}/apidocs"
access="protected"
old="false"
verbose="false"
version="true"
use="true"
author="true"
splitindex="false"
nodeprecated="false"
nodeprecatedlist="false"
notree="false"
noindex="false"
nohelp="false"
nonavbar="false"
serialwarn="false"
charset="UTF-8"
linksource="false"
breakiterator="false"/>
</target>
<!-- ====================================================================== -->
<!-- Package target -->
<!-- ====================================================================== -->
<target name="package" depends="compile,test" description="Package the application">
<jar jarfile="${maven.build.dir}/${maven.build.finalName}.jar"
compress="true"
index="false"
basedir="${maven.build.outputDir}"
excludes="**/package.html"/>
</target>
<!-- ====================================================================== -->
<!-- A dummy target for the package named after the type it creates -->
<!-- ====================================================================== -->
<target name="jar" depends="package" description="Builds the jar for the application"/>
<!-- ====================================================================== -->
<!-- Download dependencies target -->
<!-- ====================================================================== -->
<target name="test-offline">
<condition property="maven.mode.offline">
<equals arg1="${maven.settings.offline}" arg2="true"/>
</condition>
</target>
<target name="get-deps"
depends="test-offline"
description="Download all dependencies"
unless="maven.mode.offline">
<mkdir dir="${maven.repo.local}"/>
<mkdir dir="${maven.repo.local}/junit/junit/4.10"/>
<get src="https://repo.maven.apache.org/maven2/junit/junit/4.10/junit-4.10.jar"
dest="${maven.repo.local}/junit/junit/4.10/junit-4.10.jar"
usetimestamp="false"
ignoreerrors="true"/>
<mkdir dir="${maven.repo.local}/org/hamcrest/hamcrest-core/1.1"/>
<get src="https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"
dest="${maven.repo.local}/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"
usetimestamp="false"
ignoreerrors="true"/>
<mkdir dir="${maven.repo.local}/commons-cli/commons-cli/1.2"/>
<get src="https://repo.maven.apache.org/maven2/commons-cli/commons-cli/1.2/commons-cli-1.2.jar"
dest="${maven.repo.local}/commons-cli/commons-cli/1.2/commons-cli-1.2.jar"
usetimestamp="false"
ignoreerrors="true"/>
<mkdir dir="${maven.repo.local}/commons-io/commons-io/2.0.1"/>
<get src="https://repo.maven.apache.org/maven2/commons-io/commons-io/2.0.1/commons-io-2.0.1.jar"
dest="${maven.repo.local}/commons-io/commons-io/2.0.1/commons-io-2.0.1.jar"
usetimestamp="false"
ignoreerrors="true"/>
<mkdir dir="${maven.repo.local}/org/italiangrid/voms-api-java/3.0.6"/>
<get src="https://repo.maven.apache.org/maven2/org/italiangrid/voms-api-java/3.0.6/voms-api-java-3.0.6.jar"
dest="${maven.repo.local}/org/italiangrid/voms-api-java/3.0.6/voms-api-java-3.0.6.jar"
usetimestamp="false"
ignoreerrors="true"/>
<mkdir dir="${maven.repo.local}/eu/eu-emi/security/canl/1.3.3"/>
<get src="https://repo.maven.apache.org/maven2/eu/eu-emi/security/canl/1.3.3/canl-1.3.3.jar"
dest="${maven.repo.local}/eu/eu-emi/security/canl/1.3.3/canl-1.3.3.jar"
usetimestamp="false"
ignoreerrors="true"/>
<mkdir dir="${maven.repo.local}/org/bouncycastle/bcprov-jdk16/1.46"/>
<get src="https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk16/1.46/bcprov-jdk16-1.46.jar"
dest="${maven.repo.local}/org/bouncycastle/bcprov-jdk16/1.46/bcprov-jdk16-1.46.jar"
usetimestamp="false"
ignoreerrors="true"/>
<mkdir dir="${maven.repo.local}/org/italiangrid/bcmail/1.46.3"/>
<get src="https://repo.maven.apache.org/maven2/org/italiangrid/bcmail/1.46.3/bcmail-1.46.3.jar"
dest="${maven.repo.local}/org/italiangrid/bcmail/1.46.3/bcmail-1.46.3.jar"
usetimestamp="false"
ignoreerrors="true"/>
<mkdir dir="${maven.repo.local}/javax/mail/mail/1.4"/>
<get src="https://repo.maven.apache.org/maven2/javax/mail/mail/1.4/mail-1.4.jar"
dest="${maven.repo.local}/javax/mail/mail/1.4/mail-1.4.jar"
usetimestamp="false"
ignoreerrors="true"/>
<mkdir dir="${maven.repo.local}/javax/activation/activation/1.1"/>
<get src="https://repo.maven.apache.org/maven2/javax/activation/activation/1.1/activation-1.1.jar"
dest="${maven.repo.local}/javax/activation/activation/1.1/activation-1.1.jar"
usetimestamp="false"
ignoreerrors="true"/>
</target>
</project>

View file

@ -6,17 +6,31 @@ Summary: Virtual Organization Membership Service Java clients
License: ASL 2.0
URL: https://wiki.italiangrid.it/VOMS
Source0: https://github.com/italiangrid/voms-clients/archive/v%{version}.tar.gz
# These are build instructions for ant generated from the maven
# build instructions using the maven ant plugin.
# These are used for building on EPEL 6 since there is no maven
# available there.
Source1: build.xml
Source2: maven-build.xml
Source3: maven-build.properties
# Uncaught exception (backport from upstream)
Patch0: %{name}-except.patch
# Adapt to canl-java 2.5
Patch1: %{name}-canl-2.5.patch
BuildArch: noarch
BuildRequires: maven-local
BuildRequires: mvn(commons-cli:commons-cli)
BuildRequires: mvn(commons-io:commons-io)
BuildRequires: mvn(org.italiangrid:voms-api-java)
BuildRequires: java-devel >= 1:1.6
BuildRequires: jpackage-utils
BuildRequires: ant
BuildRequires: ant-junit
BuildRequires: jakarta-commons-cli
BuildRequires: jakarta-commons-io
BuildRequires: junit4
BuildRequires: voms-api-java >= 3.2.0-5
Requires: java >= 1:1.6
Requires: jpackage-utils
Requires: jakarta-commons-cli
Requires: jakarta-commons-io
Requires: voms-api-java >= 3.2.0-5
Requires(post): %{_sbindir}/update-alternatives
@ -42,42 +56,43 @@ voms-proxy-init, voms-proxy-destroy and voms-proxy-info.
%setup -q -n voms-clients-%{version}
%patch0 -p1
%patch1 -p1
# Do not create source jars
%pom_remove_plugin org.apache.maven.plugins:maven-source-plugin
# Don't do assembly
%pom_remove_plugin :maven-assembly-plugin
# Remove license plugin
%pom_remove_plugin com.mycila.maven-license-plugin:maven-license-plugin
cp -p %{SOURCE1} .
cp -p %{SOURCE2} .
cp -p %{SOURCE3} .
%build
%mvn_build -j
export CLASSPATH=$(build-classpath voms-api-java canl bcpkix bcprov commons-cli commons-io junit4)
%ant -Dbuild.sysclasspath=last package
%install
%mvn_install
mkdir -p %{buildroot}%{_javadir}
install -m 644 target/voms-clients-%{version}.jar \
%{buildroot}%{_javadir}/voms-clients.jar
mkdir -p %{buildroot}%{_mavenpomdir}
install -p -m 644 pom.xml %{buildroot}%{_mavenpomdir}/JPP-voms-clients.pom
%add_to_maven_depmap org.italiangrid voms-clients %{version} JPP voms-clients
mkdir -p %{buildroot}%{_bindir}
cat > %{buildroot}%{_bindir}/voms-proxy-init3 << EOF
#!/bin/sh
VOMS_CLIENTS_JAVA_OPTIONS=\${VOMS_CLIENTS_JAVA_OPTIONS:-"-XX:+UseSerialGC -Xmx16m"}
java \$VOMS_CLIENTS_JAVA_OPTIONS -cp \$(build-classpath voms-clients-java voms-api-java canl-java bcpkix bcprov commons-cli commons-io) org.italiangrid.voms.clients.VomsProxyInit "\$@"
java \$VOMS_CLIENTS_JAVA_OPTIONS -cp \$(build-classpath voms-clients voms-api-java canl bcpkix bcprov commons-cli commons-io) org.italiangrid.voms.clients.VomsProxyInit "\$@"
EOF
chmod 755 %{buildroot}%{_bindir}/voms-proxy-init3
cat > %{buildroot}%{_bindir}/voms-proxy-info3 << EOF
#!/bin/sh
VOMS_CLIENTS_JAVA_OPTIONS=\${VOMS_CLIENTS_JAVA_OPTIONS:-"-XX:+UseSerialGC -Xmx16m"}
java \$VOMS_CLIENTS_JAVA_OPTIONS -cp \$(build-classpath voms-clients-java voms-api-java canl-java bcpkix bcprov commons-cli commons-io) org.italiangrid.voms.clients.VomsProxyInfo "\$@"
java \$VOMS_CLIENTS_JAVA_OPTIONS -cp \$(build-classpath voms-clients voms-api-java canl bcpkix bcprov commons-cli commons-io) org.italiangrid.voms.clients.VomsProxyInfo "\$@"
EOF
chmod 755 %{buildroot}%{_bindir}/voms-proxy-info3
cat > %{buildroot}%{_bindir}/voms-proxy-destroy3 << EOF
#!/bin/sh
VOMS_CLIENTS_JAVA_OPTIONS=\${VOMS_CLIENTS_JAVA_OPTIONS:-"-XX:+UseSerialGC -Xmx16m"}
java \$VOMS_CLIENTS_JAVA_OPTIONS -cp \$(build-classpath voms-clients-java voms-api-java canl-java bcpkix bcprov commons-cli commons-io) org.italiangrid.voms.clients.VomsProxyDestroy "\$@"
java \$VOMS_CLIENTS_JAVA_OPTIONS -cp \$(build-classpath voms-clients voms-api-java canl bcpkix bcprov commons-cli commons-io) org.italiangrid.voms.clients.VomsProxyDestroy "\$@"
EOF
chmod 755 %{buildroot}%{_bindir}/voms-proxy-destroy3
@ -105,6 +120,7 @@ install -p -m 644 man/vomsdir.5 %{buildroot}%{_mandir}/man5/vomsdir.5
install -p -m 644 man/vomses.5 %{buildroot}%{_mandir}/man5/vomses.5
%post
%update_maven_depmap
%{_sbindir}/update-alternatives --install %{_bindir}/voms-proxy-init \
voms-proxy-init %{_bindir}/voms-proxy-init3 90 \
--slave %{_mandir}/man1/voms-proxy-init.1.gz voms-proxy-init-man \
@ -119,6 +135,7 @@ install -p -m 644 man/vomses.5 %{buildroot}%{_mandir}/man5/vomses.5
%{_mandir}/man1/voms-proxy-destroy3.1.gz
%postun
%update_maven_depmap
if [ $1 -eq 0 ] ; then
%{_sbindir}/update-alternatives --remove voms-proxy-init \
%{_bindir}/voms-proxy-init3
@ -128,8 +145,10 @@ if [ $1 -eq 0 ] ; then
%{_bindir}/voms-proxy-destroy3
fi
%files -f .mfiles
%dir %{_javadir}/%{name}
%files
%{_javadir}/voms-clients.jar
%{_mavenpomdir}/JPP-voms-clients.pom
%{_mavendepmapfragdir}/%{name}
%{_bindir}/voms-proxy-destroy3
%{_bindir}/voms-proxy-info3
%{_bindir}/voms-proxy-init3
@ -150,6 +169,7 @@ fi
%changelog
* Fri Jan 05 2018 Mattias Ellert <mattias.ellert@physics.uu.se> - 3.0.7-5
- Adapt to canl-java 2.5
- Create EPEL 6 package using the maven ant plugin
* Tue Aug 08 2017 Mattias Ellert <mattias.ellert@physics.uu.se> - 3.0.7-4
- Don't do assembly