cglib/cglib.spec

316 lines
9.8 KiB
RPMSpec

#
# spec file for package cglib (Version 2.1.3)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%define _with_repolib 1
%define _without_hook 1
%define with_repolib %{?_with_repolib:1}%{!?_with_repolib:0}
%define without_repolib %{!?_with_repolib:1}%{?_with_repolib:0}
%define repodir %{_javadir}/repository.jboss.com/cglib/%{version}-brew
%define repodirlib %{repodir}/lib
%define repodirsrc %{repodir}/src
# If you don't want to build the aspectwerkz hook,
# while aspectwerkz isn't available yet,
# give rpmbuild option '--without hook'
# A cglib without net.sf.cglib.transform.hook.* is useful to
# build jmock which is an indirect dependency of cglib itself (through
# aspectwerkz).
%define with_hook %{!?_without_hook:1}%{?_without_hook:0}
%define without_hook %{?_without_hook:1}%{!?_without_hook:0}
%define section free
%define uscver 2.1_3
Summary: Code Generation Library
Name: cglib
Version: 2.1.3
Release: 2
License: Apache-2.0
Url: http://cglib.sourceforge.net/
Group: Development/Libraries/Java
Source0: cglib-src-2.1_3.jar
Source1: cglib-missing-words.txt
Patch0: cglib-2.1.3-build_xml.patch
Patch1: cglib-ExamplePreProcessor.patch
# FIXME
# Testcase "testFailOnMemoryLeak" fails with java-1.4.2-bea-1.4.2.08-2jpp
# producing a LinkageError.
# Testcase "testRegisterCallbacks" also fails.
# java-1.4.2-sun-1.4.2.10-1jpp and # java-1.4.2-ibm-1.4.2.3-1jpp don't
Patch2: cglib-2.1.3-TestEnhancer.patch
#Patch3: cglib-2.1.3-TestAll.patch
Source2: cglib-component-info.xml
BuildRequires: jpackage-utils >= 1.6
BuildRequires: ant >= 1.6
BuildRequires: ant-junit >= 1.6
BuildRequires: jarjar
BuildRequires: junit
BuildRequires: asm >= 1.5.3
BuildRequires: asm2
%if %{with_hook}
BuildRequires: aspectwerkz >= 1.0
%endif
BuildRequires: unzip
BuildRequires: java-devel
Requires: asm >= 1.5.3
%if %{with_hook}
#Optional: aspectwerkz >= 0:1.0
%endif
Provides: %{name}-nohook = %{version}-%{release}
BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
cglib is a powerful, high performance and quality Code Generation
Library, It is used to extend JAVA classes and implements interfaces at
runtime.
NOTE: To use the Aspectwerks hook (net.sf.cglib.transform.hook.*), make
sure aspectwerks.jar is in the Classpath (from the 'aspectwerks' RPM)
NOTE: If you use the cglib.jar you may need to add asm.jar to your
ClassPath (from the 'asm' RPM). The cglib-nodep.jar includes the ASM
classes already.
%if %{with_repolib}
%package repolib
License: Apache-2.0
Summary: Code Generation Library
Group: Development/Libraries/Java
%description repolib
cglib is a powerful, high performance and quality Code Generation
Library, It is used to extend JAVA classes and implements interfaces at
runtime.
NOTE: To use the Aspectwerks hook (net.sf.cglib.transform.hook.*), make
sure aspectwerks.jar is in the Classpath (from the 'aspectwerks' RPM)
NOTE: If you use the cglib.jar you may need to add asm.jar to your
ClassPath (from the 'asm' RPM). The cglib-nodep.jar includes the ASM
classes already.
%endif
%package nohook
License: Apache-2.0
Summary: Code Generation Library
Group: Development/Libraries/Java
Requires: asm >= 1.5.3
%if ! %{with_hook}
Provides: %{name} = %{version}-%{release}
%endif
%description nohook
cglib is a powerful, high performance and quality Code Generation
Library, It is used to extend JAVA classes and implements interfaces at
runtime.
NOTE: To use the Aspectwerks hook (net.sf.cglib.transform.hook.*), make
sure aspectwerks.jar is in the Classpath (from the 'aspectwerks' RPM)
NOTE: If you use the cglib.jar you may need to add asm.jar to your
ClassPath (from the 'asm' RPM). The cglib-nodep.jar includes the ASM
classes already.
%package javadoc
License: Apache-2.0
Summary: Code Generation Library
Group: Development/Libraries/Java
%description javadoc
cglib is a powerful, high performance and quality Code Generation
Library, It is used to extend JAVA classes and implements interfaces at
runtime.
NOTE: To use the Aspectwerks hook (net.sf.cglib.transform.hook.*), make
sure aspectwerks.jar is in the Classpath (from the 'aspectwerks' RPM)
NOTE: If you use the cglib.jar you may need to add asm.jar to your
ClassPath (from the 'asm' RPM). The cglib-nodep.jar includes the ASM
classes already.
%package demo
License: Apache-2.0
Summary: Code Generation Library
Group: Development/Libraries/Java
%description demo
cglib is a powerful, high performance and quality Code Generation
Library, It is used to extend JAVA classes and implements interfaces at
runtime.
NOTE: To use the Aspectwerks hook (net.sf.cglib.transform.hook.*), make
sure aspectwerks.jar is in the Classpath (from the 'aspectwerks' RPM)
NOTE: If you use the cglib.jar you may need to add asm.jar to your
ClassPath (from the 'asm' RPM). The cglib-nodep.jar includes the ASM
classes already.
%prep
cat <<EOT
If you don't want to build the aspectwerkz hook,
while aspectwerkz isn't available yet,
give rpmbuild option '--without hook'
A cglib without net.sf.cglib.transform.hook.* is useful to
build jmock which is an indirect dependency of cglib itself (through
aspectwerkz).
EOT
%setup -T -c -n %{name}
unzip -q %{SOURCE0}
# remove all binary libs
for f in $(find . -name "*.jar"); do mv $f $f.no; done
( cat << EO_JP
grant codeBase "file:/-"{
permission java.security.AllPermission;
};
EO_JP
) > java.policy
# add missing test input file
cp %{SOURCE1} src/test/net/sf/cglib/util/words.txt
%if %{without_hook}
rm src/proxy/net/sf/cglib/transform/hook/*
rm src/test/net/sf/cglib/transform/hook/*
%endif
%patch0 -b .sav
#test
%if %{with_hook}
%patch1 -b .sav
%endif
%patch2 -b .sav
#%patch3 -p1
%build
build-jar-repository -s -p lib \
ant \
asm/asm-attrs \
asm/asm \
asm2/asm2 \
asm/asm-util \
jarjar \
junit
%if %{with_hook}
build-jar-repository -s -p lib aspectwerkz-core
%endif
export CLASSPATH=
export OPT_JAR_LIST=:
ant jar javadoc test
%if %{with_hook}
mkdir _tmp
pushd _tmp
jar xf ../dist/%{name}-%{uscver}.jar
rm -rf net/sf/cglib/transform/hook
jar cmf META-INF/MANIFEST.MF ../dist/%{name}-nohook-%{uscver}.jar net
popd
rm -rf _tmp
%else
cp dist/%{name}-%{uscver}.jar dist/%{name}-nohook-%{uscver}.jar
%endif
%install
# jars
mkdir -p $RPM_BUILD_ROOT%{_javadir}
cp -p dist/%{name}-nohook-%{uscver}.jar \
$RPM_BUILD_ROOT%{_javadir}/%{name}-nohook-%{version}.jar
%if %{with_hook}
cp -p dist/%{name}-%{uscver}.jar \
$RPM_BUILD_ROOT%{_javadir}/%{name}-%{version}.jar
cp -p dist/%{name}-nodep-%{uscver}.jar \
$RPM_BUILD_ROOT%{_javadir}/%{name}-nodep-%{version}.jar
%else
# avoid conflicts between cglib and cglib-nohook
cp -p dist/%{name}-nodep-%{uscver}.jar \
$RPM_BUILD_ROOT%{_javadir}/%{name}-nohook-nodep-%{version}.jar
%endif
(cd $RPM_BUILD_ROOT%{_javadir} && for jar in *-%{version}.jar; do ln -sf ${jar} `echo $jar| sed "s|-%{version}||g"`; done)
# javadoc
mkdir -p $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}
rmdir docs/api
cp -pr docs/* $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version}
ln -s %{name}-%{version} $RPM_BUILD_ROOT%{_javadocdir}/%{name} # ghost symlink
#demo
mkdir -p $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}
cp -pr src/proxy/samples $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}
%if %{with_repolib}
install -d -m 755 $RPM_BUILD_ROOT%{repodir}
install -d -m 755 $RPM_BUILD_ROOT%{repodirlib}
install -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{repodir}/component-info.xml
sed -i "s/@VERSION@/%{version}-brew/g" $RPM_BUILD_ROOT%{repodir}/component-info.xml
tag=`echo %{name}-%{version}-%{release} | sed 's|\.|_|g'`
sed -i "s/@TAG@/$tag/g" $RPM_BUILD_ROOT%{repodir}/component-info.xml
install -d -m 755 $RPM_BUILD_ROOT%{repodirsrc}
install -p -m 644 %{PATCH0} $RPM_BUILD_ROOT%{repodirsrc}
install -p -m 644 %{PATCH1} $RPM_BUILD_ROOT%{repodirsrc}
install -p -m 644 %{SOURCE0} $RPM_BUILD_ROOT%{repodirsrc}
install -p -m 644 %{SOURCE1} $RPM_BUILD_ROOT%{repodirsrc}
install -p -m 644 %{PATCH2} $RPM_BUILD_ROOT%{repodirsrc}
# Deploy cglib-nodeps.jar as cglib.jar to conform to the existing usage in JBoss
%if %{with_hook}
cp -p $RPM_BUILD_ROOT%{_javadir}/cglib-nodep.jar $RPM_BUILD_ROOT%{repodirlib}/cglib.jar
%else
cp -p $RPM_BUILD_ROOT%{_javadir}/cglib-nohook.jar $RPM_BUILD_ROOT%{repodirlib}/cglib.jar
%endif
%endif
%clean
rm -rf $RPM_BUILD_ROOT
%if %{with_hook}
%files
%defattr(0644,root,root,0755)
%doc LICENSE
%{_javadir}/%{name}-%{version}.jar
%{_javadir}/%{name}.jar
%{_javadir}/%{name}-nodep-%{version}.jar
%{_javadir}/%{name}-nodep.jar
%endif
%files nohook
%defattr(0644,root,root,0755)
%doc LICENSE
%{_javadir}/%{name}-nohook-%{version}.jar
%{_javadir}/%{name}-nohook.jar
%if ! %{with_hook}
%{_javadir}/%{name}-nohook-nodep*.jar
%endif
%files javadoc
%defattr(0644,root,root,0755)
%{_javadocdir}/%{name}-%{version}
%{_javadocdir}/%{name}
%files demo
%defattr(0644,root,root,0755)
%{_datadir}/%{name}-%{version}
%if %{with_repolib}
%files repolib
%defattr(0644,root,root,0755)
%{_javadir}/repository.jboss.com
%endif
%changelog
* Tue Apr 28 2009 mvyskocil@suse.cz
- Fixed package descriptions
* Thu Apr 23 2009 mvyskocil@suse.cz
- Initial packaging of cglib-nohooks in SUSE (2.1.3 from jpp5)