# # Conditional build: %bcond_with tests # compile and run tests # Summary: AOP for Java Summary(pl.UTF-8): AOP dla Javy Name: aspectwerkz Version: 2.0 Release: 0.1 License: BSD-style License Group: Development/Languages/Java Source0: http://dist.codehaus.org/aspectwerkz/distributions/%{name}-%{version}.zip # Source0-md5: d7462b4d76f268e78a3843a28da71990 Patch0: %{name}2-build_xml.patch Patch1: %{name}2-script.patch URL: http://aspectwerkz.codehaus.org/ BuildRequires: ant >= 1.6 BuildRequires: asm BuildRequires: concurrent #BuildRequires: dom4j BuildRequires: gnu.trove BuildRequires: jarjar BuildRequires: java-junit BuildRequires: java-qdox BuildRequires: javassist BuildRequires: jdk BuildRequires: jpackage-utils BuildRequires: jrexx BuildRequires: junitperf BuildRequires: piccolo BuildRequires: rpm-javaprov BuildRequires: rpmbuild(macros) >= 1.300 BuildRequires: unzip %if %(locale -a | grep -q '^en_US$'; echo $?) BuildRequires: glibc-localedb-all %endif Requires: concurrent Requires: gnu.trove Requires: java-dom4j Requires: java-qdox Requires: javassist Requires: jpackage-utils Requires: jrexx Requires: piccolo BuildArch: noarch BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %description AspectWerkz is a dynamic, lightweight and high-performant AOP/AOSD framework for Java. AspectWerkz utilizes runtime bytecode modification to weave your classes at runtime. It hooks in and weaves classes loaded by any class loader except the bootstrap class loader. It has a rich join point model. Aspects, advices and introductions are written in plain Java and your target classes can be regular POJOs. You have the possibility to add, remove and re-structure advices as well as swapping the implementation of your introductions at runtime. Your aspects can be defined using either an XML definition file or using Runtime Attributes. %description -l pl.UTF-8 AspectWerkz to dynamiczny, lekki i wydajny szkielet AOP/AOSD dla Javy. Wykorzystuje modyfikowanie bajtkodu do modyfikowania klas w czasie działania. Przechwytuje i modyfikuje klasy wczytywane przez wszystkie procedury ładowania klas oprócz startowej. Ma bogady model punktu łączenia. Aspekty, porady i wprowadzenia są napisane w czystej Javie, a klasy docelowe mogą być zwykłymi POJO. Istnieje możliwość dodawania, usuwania i restrukturyzacji porad, a także zamiany implementacji na własną w trakcie działania. Aspekty mogą być definiowane przy użyciu pliku definicji XML lub Runtime Attributes. %package javadoc Summary: Javadoc for %{name} Summary(pl.UTF-8): Dokumentacja javadoc dla pakietu %{name} Group: Documentation Requires: jpackage-utils %description javadoc Javadoc for %{name}. %description javadoc -l pl.UTF-8 Dokumentacja javadoc dla pakietu %{name}. %package manual Summary: Documents for %{name} Summary(pl.UTF-8): Dokumentacja dla pakietu %{name} Group: Documentation %description manual Documents for %{name}. %description manual -l pl.UTF-8 Dokumentacja dla pakietu %{name}. %package demo Summary: Samples for %{name} Summary(pl.UTF-8): Przykłady dla pakietu %{name} Group: Documentation %description demo Samples for %{name}. %description demo -l pl.UTF-8 Przykłady dla pakietu %{name}. %prep %setup -q find -name '*.jar' | xargs rm -vf chmod +x bin/aspectwerkz %patch0 %patch1 %build export ASPECTWERKZ_HOME=$RPM_BUILD_DIR/%{name}-%{version} required_jars=" jarjar asm asm-attrs asm-util dom4j gnu.trove concurrent junit jrexx javassist qdox piccolo junitperf " build-jar-repository -s -p lib "$required_jars" || : export LC_ALL=en_US # source code not US-ASCII %ant compile compile:extensions %{?with_tests:compile:test} %install rm -rf $RPM_BUILD_ROOT # jars install -d $RPM_BUILD_ROOT%{_javadir} cp -p target/%{name}-%{version}.jar \ $RPM_BUILD_ROOT%{_javadir}/%{name}-%{version}.jar cp -p target/%{name}-core-%{version}.jar \ $RPM_BUILD_ROOT%{_javadir}/%{name}-core-%{version}.jar cp -p target/%{name}-extensions-%{version}.jar \ $RPM_BUILD_ROOT%{_javadir}/%{name}-extensions-%{version}.jar cp -p target/%{name}-jdk14-%{version}.jar \ $RPM_BUILD_ROOT%{_javadir}/%{name}-jdk14-%{version}.jar cp -p target/%{name}-jdk5-%{version}.jar \ $RPM_BUILD_ROOT%{_javadir}/%{name}-jdk5-%{version}.jar cp -p target/%{name}-nodeps-%{version}.jar \ $RPM_BUILD_ROOT%{_javadir}/%{name}-nodeps-%{version}.jar cp -p target/%{name}-nodeps-jdk14-%{version}.jar \ $RPM_BUILD_ROOT%{_javadir}/%{name}-nodeps-jdk14-%{version}.jar cp -p target/%{name}-nodeps-jdk5-%{version}.jar \ $RPM_BUILD_ROOT%{_javadir}/%{name}-nodeps-jdk5-%{version}.jar cd $RPM_BUILD_ROOT%{_javadir} for jar in *-%{version}.jar; do ln -sf ${jar} `echo $jar| sed "s|-%{version}||g"` done cd - install -d $RPM_BUILD_ROOT%{_bindir} cp -p bin/aspectwerkz $RPM_BUILD_ROOT%{_bindir} # javadoc install -d $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version} cp -pr docs/apidocs/* $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version} ln -s %{name}-%{version} $RPM_BUILD_ROOT%{_javadocdir}/%{name} # ghost symlink rm -rf docs/apidocs # demo install -d $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}/src install -d $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}/classes install -d $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}/bin cp -pr target/samples-classes/* $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}/classes cp -pr src/samples/* $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}/src # manual install -d $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version} cp -pr docs/* $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version} cp -p LICENSE.txt $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version} %clean rm -rf $RPM_BUILD_ROOT %post javadoc ln -sf %{name}-%{version} %{_javadocdir}/%{name} %files %defattr(644,root,root,755) %doc %{_docdir}/%{name}-%{version}/LICENSE.txt %attr(755,root,root) %{_bindir}/aspectwerkz %{_javadir}/*.jar %files javadoc %defattr(644,root,root,755) %{_javadocdir}/%{name}-%{version} %ghost %{_javadocdir}/%{name} %files manual %defattr(644,root,root,755) %doc %{_docdir}/%{name}-%{version} %files demo %defattr(644,root,root,755) %{_datadir}/%{name}-%{version}