%define name bouncycastle %define major 1 %define minor 28 %define version %{major}.%{minor} %define archivever %{major}%{minor} %define release 2mdk %define section free %define gcj_support 1 %define with_jdk15 0 %define build_free 1 Summary: Bouncy Castle Crypto Package for Java Name: %{name} Version: %{version} Release: %{release} Epoch: 0 Group: Development/Java License: BSD URL: http://www.bouncycastle.org/ BuildArch: noarch Source0: ftp://ftp.bouncycastle.org/pub/release1.28/bcmail-jdk14-128.tar.bz2 Source1: ftp://ftp.bouncycastle.org/pub/release1.28/bcmail-jdk15-128.tar.bz2 Source2: ftp://ftp.bouncycastle.org/pub/release1.28/bcpg-jdk14-128.tar.bz2 Source3: ftp://ftp.bouncycastle.org/pub/release1.28/bcpg-jdk15-128.tar.bz2 Source4: ftp://ftp.bouncycastle.org/pub/release1.28/bcprov-jdk14-128.tar.bz2 Source5: ftp://ftp.bouncycastle.org/pub/release1.28/bcprov-jdk15-128.tar.bz2 Source6: ftp://ftp.bouncycastle.org/pub/release1.28/bctsp-jdk14-128.tar.bz2 Source7: ftp://ftp.bouncycastle.org/pub/release1.28/bctsp-jdk14-128.tar.bz2 Source8: ftp://ftp.bouncycastle.org/pub/release1.28/lcrypto-jdk14-128.tar.bz2 Source9: ftp://ftp.bouncycastle.org/pub/release1.28/lcrypto-jdk15-128.tar.bz2 # FIXME: Just sign the jar # We keep original 1.4 provider since java 1.4 wants it to be signed # This sucks big time - should we add jar signing infrastructure to # jpackage in || to rpm signing? Sun seems much less user-friendly than # your average Linux distribution %if !%{build_free} Source100: ftp://ftp.bouncycastle.org/pub/release1.28/bcprov-jdk14-128.jar Source101: ftp://ftp.bouncycastle.org/pub/release1.28/bcprov-jdk15-128.jar %endif Patch0: %{name}-compile.patch.bz2 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root #Vendor: JPackage Project #Distribution: JPackage Requires: %{name}-provider = %{epoch}:%{version} Requires: jpackage-utils >= 0:1.5 BuildRequires: jaf BuildRequires: javamail BuildRequires: junit %if %{with_jdk15} BuildRequires: java-devel >= 0:1.5.0 %endif BuildRequires: java-devel < 0:1.5.0 BuildRequires: jpackage-utils >= 0:1.5 %description The Bouncy Castle Crypto APIs consist of the following: - A lightweight cryptography API in Java. - A provider for the JCE and JCA. - A clean room implementation of the JCE 1.2.1. - Generators for Version 1 and Version 3 X.509 certificates and PKCS12 files. - A signed jar version suitable for JDK 1.4 and the Sun JCE. %package jdk1.4 Group: Development/Java Summary: Bouncy Castle JCE APIs for Java 1.4.x Requires: %{name} = %{epoch}:%{version} Requires: jaf Requires: javamail Requires: java >= 0:1.4.0 Requires: java < 0:1.5.0 %if %{gcj_support} Requires(post,postun): %{_bindir}/rebuild-security-providers %endif BuildRequires: java-devel >= 0:1.4.0 BuildRequires: java-devel < 0:1.5.0 Provides: %{name}-provider = %{epoch}:%{version} Provides: jce %description jdk1.4 Bouncy Castle JCE API's for Java 1.4. %if %{with_jdk15} %package jdk1.5 Group: Development/Java Summary: Bouncy Castle JCE APIs for Java 1.5.x Requires: %{name} = %{epoch}:%{version} Requires: jaf Requires: javamail Requires: java >= 0:1.5.0 Requires: java < 0:1.6.0 %if %{gcj_support} Requires(post,postun): %{_bindir}/rebuild-security-providers %endif BuildRequires: java-devel >= 0:1.5.0 BuildRequires: java < 0:1.6.0 Provides: %{name}-provider = %{epoch}:%{version} Provides: jce %description jdk1.5 Bouncy Castle JCE API's for Java 1.5. %endif %package javadoc-jdk1.4 Group: Development/Java Summary: Java 1.4 javadoc for %{name} %description javadoc-jdk1.4 Java 1.4 javadocs for %{name}. %if %{with_jdk15} %package javadoc-jdk1.5 Group: Development/Java Summary: Java 1.5 javadoc for %{name} %description javadoc-jdk1.5 Java 1.5 javadocs for %{name}. %endif %prep %setup -q -c -D -T -a 0 %setup -q -D -T -a 1 %setup -q -D -T -a 2 %setup -q -D -T -a 3 %setup -q -D -T -a 4 %setup -q -D -T -a 5 %setup -q -D -T -a 6 %setup -q -D -T -a 7 %setup -q -D -T -a 8 %setup -q -D -T -a 9 %if %{build_free} %patch0 -p1 %endif # Remove provided binaries find . -type f -name "*.class" -exec %__rm -f {} \; find . -type f -name "*.jar" -exec %__rm -f {} \; find . -type f -name "*.tar.bz2" -exec %__rm -f {} \; %build deps="jaf javamail/mailapi junit" %if !%{build_free} dirs14="bcprov-jdk14-%{archivever} bcmail-jdk14-%{archivever} bcpg-jdk14-%{archivever} bctsp-jdk14-%{archivever} lcrypto-jdk14-%{archivever}" %else dirs14="bcprov-jdk14-%{archivever} bcmail-jdk14-%{archivever} bcpg-jdk14-%{archivever} lcrypto-jdk14-%{archivever}" %endif # 1.4 unset JAVA_HOME for javaver in 1.4.0 1.4.1 1.4.2; do [ -d "%{_jvmdir}/java-${javaver}" ] && \ export JAVA_HOME=%{_jvmdir}/java-${javaver} done [ -z "$JAVA_HOME" ] && exit 1 javac=$JAVA_HOME/bin/javac jar=$JAVA_HOME/bin/jar javadoc=$JAVA_HOME/bin/javadoc for i in $dirs14; do pushd $i/src export CLASSPATH=$(build-classpath $deps):\ $RPM_BUILD_DIR/%{name}-%{version}/bcprov-jdk14-%{archivever}/bcprov-jdk14-%{version}.jar:\ $RPM_BUILD_DIR/%{name}-%{version}/bcmail-jdk14-%{archivever}/bcmail-jdk14-%{version}.jar:\ . $javac `find . -type f -name "*.java"` jar2="../`basename $i -%{archivever}`-%{version}.jar" files="`find . -type f -name "*.class"`" test ! -d classes && mf="" || mf="`find classes/ -type f -name "*.mf" 2>/dev/null`" test -n "$mf" && $jar cfm $jar2 $mf $files || $jar cf $jar2 $files popd done # 1.5 %if %{with_jdk15} %if !%{build_free} dirs15="bcprov-jdk15-%{archivever} bcmail-jdk15-%{archivever} bcpg-jdk15-%{archivever} bctsp-jdk15-%{archivever} lcrypto-jdk15-%{archivever}" %else dirs15="bcprov-jdk15-%{archivever} bcmail-jdk15-%{archivever} bcpg-jdk15-%{archivever} lcrypto-jdk15-%{archivever}" %endif unset JAVA_HOME for javaver in 1.5.0; do [ -d "%{_jvmdir}/java-${javaver}" ] && \ export JAVA_HOME=%{_jvmdir}/java-${javaver} done [ -z "$JAVA_HOME" ] && exit 1 javac=$JAVA_HOME/bin/javac jar=$JAVA_HOME/bin/jar javadoc=$JAVA_HOME/bin/javadoc for i in $dirs15; do pushd $i/src export CLASSPATH=$(build-classpath $deps):\ $RPM_BUILD_DIR/%{name}-%{version}/bcprov-jdk15-%{archivever}/bcprov-jdk15-%{version}.jar:\ $RPM_BUILD_DIR/%{name}-%{version}/bcmail-jdk15-%{archivever}/bcmail-jdk15-%{version}.jar:\ . $javac `find . -type f -name "*.java"` jar2="../`basename $i -%{archivever}`-%{version}.jar" files="`find . -type f -name "*.class"`" test ! -d classes && mf="" || mf="`find classes -type f -name "*.mf" 2>/dev/null`" test -n "$mf" && $jar cfm $jar2 $mf $files || $jar cf $jar2 $files popd done %endif # 1.4 and 1.5 javadocs dirs="$dirs14" %if %{with_jdk15} dirs="$dirs $dirs15" %endif for i in $dirs; do pushd $i for j in *.html; do %__mv -f $j $i-$j done %__mv -f *.html ../ pushd src $javadoc -d ../docs `find . -type f -name "*.java"` popd popd done %install %__rm -rf %{buildroot} # jars jars=`find . -type f -name "*.jar"` for i in $jars; do %__mv -f $i . done # Replace built 1.4 and 1.5 providers with original one %if !%{build_free} %__rm -f bcprov-jdk14-%{version}.jar %__cp -a %{SOURCE100} bcprov-jdk14-%{version}.jar %if %{with_jdk15} %__rm -f bcprov-jdk15-%{version}.jar %__cp -a %{SOURCE101} bcprov-jdk15-%{version}.jar %endif %endif # Java 1.4 %__mkdir_p %{buildroot}%{_javadir}-{ext/%{name}-jdk1.4,1.4.0,1.4.1,1.4.2} for jar14 in *-jdk14-%{version}.jar; do jar=$(echo $jar14 | %__sed s+-jdk14++g) %__install -m 644 $jar14 %{buildroot}%{_javadir}-ext/%{name}-jdk1.4/$jar done pushd %{buildroot}%{_javadir}-ext/%{name}-jdk1.4 for jar in *-%{version}.jar; do %__ln_s $jar $(echo $jar | %__sed s+-%{version}\.jar+.jar+g) done popd for javaver in 1.4.0 1.4.1 1.4.2; do # FIXME: This should be relative (cd %{buildroot}%{_javadir}-${javaver} && %__ln_s %{_javadir}-ext/%{name}-jdk1.4 %{name}) done # Java 1.5 %if %{with_jdk15} %__mkdir_p %{buildroot}%{_javadir}-{ext/%{name}-jdk1.5,1.5.0} for jar15 in *-jdk15-%{version}.jar; do jar=$(echo $jar15 | %__sed s+-jdk15++g) %__install -m 644 $jar15 %{buildroot}%{_javadir}-ext/%{name}-jdk1.5/$jar done pushd %{buildroot}%{_javadir}-ext/%{name}-jdk1.5 for jar in *-%{version}.jar; do %__ln_s $jar $(echo $jar | %__sed s+-%{version}\.jar+.jar+g) done popd for javaver in 1.5.0; do # FIXME: This should be relative (cd %{buildroot}%{_javadir}-${javaver} && %__ln_s %{_javadir}-ext/%{name}-jdk1.5 %{name}) done %endif %if %{gcj_support} %{__mkdir_p} %{buildroot}%{_javadir}/gcj-endorsed %{__ln_s} %{_javadir}-ext/%{name}-jdk1.4/bcprov-%{version}.jar \ %{buildroot}%{_javadir}/gcj-endorsed/bcprov-jdk14-%{version}.jar %if %{with_jdk15} %{__ln_s} %{_javadir}-ext/%{name}-jdk1.5/bcprov-%{version}.jar \ %{buildroot}%{_javadir}/gcj-endorsed/bcprov-jdk15-%{version}.jar %endif %endif # javadoc %__mkdir_p %{buildroot}%{_javadocdir}/%{name}-jdk14-%{version} (cd %{buildroot}%{_javadocdir} && %__ln_s %{name}-jdk14-%{version} %{name}-jdk14) %if %{with_jdk15} %__mkdir_p %{buildroot}%{_javadocdir}/%{name}-jdk15-%{version} (cd %{buildroot}%{_javadocdir} && %__ln_s %{name}-jdk15-%{version} %{name}-jdk15) %endif vers="14" %if %{with_jdk15} vers="$vers 15" %endif for javaver in $vers; do for javadoc in $(find . -type d -name docs | grep jdk${javaver}); do dest=$(echo $javadoc | %__sed s+-jdk${javaver}-%{version}++g | %__sed s+/docs++g) dest=$(echo $dest | %__sed 's+-%{archivever}++') %__cp -a $javadoc %{buildroot}%{_javadocdir}/%{name}-jdk${javaver}-%{version}/$dest done done find . -type d -name docs | xargs %__rm -rf %if %{gcj_support} %{__mkdir_p} %{buildroot}%{_sysconfdir}/java/security/security.d touch %{buildroot}%{_sysconfdir}/java/security/security.d/0500-org.bouncycastle.jce.provider.BouncyCastleProvider %endif %clean %__rm -rf %{buildroot} %if %{gcj_support} %post %{_bindir}/rebuild-security-providers %postun %{_bindir}/rebuild-security-providers %endif %post javadoc-jdk1.4 %__rm -f %{_javadocdir}/%{name}-jdk14 %__ln_s %{name}-jdk14-%{version} %{_javadocdir}/%{name}-jdk14 %postun javadoc-jdk1.4 if [ $1 -eq 0 ]; then %__rm -f %{_javadocdir}/%{name}-jdk1.4 fi %if %{with_jdk15} %post javadoc-jdk1.5 %__rm -f %{_javadocdir}/%{name}-jdk15 %__ln_s %{name}-jdk15-%{version} %{_javadocdir}/%{name}-jdk15 %postun javadoc-jdk1.5 if [ $1 -eq 0 ]; then %__rm -f %{_javadocdir}/%{name}-jdk15 fi %endif %files %defattr(0644,root,root,0755) %doc *.html %if %{gcj_support} %config(noreplace) %{_sysconfdir}/java/security/security.d/0500-org.bouncycastle.jce.provider.BouncyCastleProvider %endif %files jdk1.4 %defattr(0644,root,root,0755) %dir %{_javadir}-ext/%{name}-jdk1.4 %{_javadir}-ext/%{name}-jdk1.4/*.jar %{_javadir}-1.4.0/%{name} %{_javadir}-1.4.1/%{name} %{_javadir}-1.4.2/%{name} %if %{gcj_support} %{_javadir}/gcj-endorsed/bcprov-jdk14-%{version}.jar %endif %if %{with_jdk15} %files jdk1.5 %defattr(0644,root,root,0755) %dir %{_javadir}-ext/%{name}-jdk1.5 %{_javadir}-ext/%{name}-jdk1.5/*.jar %{_javadir}-1.5.0/%{name} %if %{gcj_support} %{_javadir}/gcj-endorsed/bcprov-jdk15-%{version}.jar %endif %endif %files javadoc-jdk1.4 %defattr(0644,root,root,0755) %dir %{_javadocdir}/%{name}-jdk14-%{version} %{_javadocdir}/%{name}-jdk14-%{version}/* %ghost %{_javadocdir}/%{name}-jdk14 %if %{with_jdk15} %files javadoc-jdk1.5 %defattr(0644,root,root,0755) %dir %{_javadocdir}/%{name}-jdk15-%{version} %{_javadocdir}/%{name}-jdk15-%{version}/* %ghost %{_javadocdir}/%{name}-jdk15 %endif %changelog * Mon May 30 2005 David Walluck <walluck@mandriva.org> 0:1.28-2mdk - fix provider installation under gcj * Sun May 29 2005 David Walluck <walluck@mandriva.org> 0:1.28-1mdk - 1.28 - make jdk 1.5 support optional - add support for gcj * Mon Feb 21 2005 David Walluck <david@jpackage.org> 0:1.27-1jpp - 1.27 - "fix" requires-on-release - change license to BSD (style) - fix duplicate requires * Thu Jan 20 2005 David Walluck <david@jpackage.org> 0:1.26-1jpp - 1.26 * Sat Oct 09 2004 David Walluck <david@jpackage.org> 0:1.25-1jpp - 1.25 - jdk 1.3.x support out, jdk 1.5.0 support in * Sun Feb 08 2004 David Walluck <david@anti-microsoft.org> 0:1.25-1jpp - 1.25 - fix javadocs and javadoc dirs - clean up BuildRequires/Requires - CLASSPATH doesn't need jce * Tue Jan 20 2004 David Walluck <david@anti-microsoft.org> 0:1.21-1jpp - 1.21 * Fri Oct 10 2003 David Walluck <david@anti-microsoft.org> 0:1.20-2jpp - fix javadoc symlinks * Fri Oct 10 2003 David Walluck <david@anti-microsoft.org> 0:1.20-1jpp - 1.20 - add epochs - %%ghost symlinks - maybe bouncycastle should consider using ant so that it doesn't take over three hours to script the build process - oh, and maybe a single source archive, thanks * Sun Sep 09 2003 David Walluck <david@anti-microsoft.org> 0:1.19-2jpp - build bcmail.jar for jdk1.4 package - add Epoch - Requires: jpackage-utils >= 0:1.5 * Fri Jun 27 2003 Nicolas Mailhot <Nicolas.Mailhot at laPoste.net> 1.19-1jpp - First jpackage 1.5 release - use upstream 1.4 binary due to Sun braindamage * Sun Sep 8 2002 Ville Skyttä <ville.skytta at iki.fi> 1.15-1jpp - First JPackage release.