%define name bsh2 %define orig_name bsh %define Name BeanShell %define version 2.0 %define fversion 2.0b1 %define frelease 4jpp %define release 0.b1.%{frelease} %define section free Name: %{name} Version: %{version} Release: %{release} Epoch: 0 Summary: Lightweight Scripting for Java License: LGPL Url: http://www.beanshell.org/ Source0: http://www.beanshell.org/bsh-2.0b1-src.jar Patch0: %{name}-build.patch Patch1: %{name}-readline.patch Patch2: %{name}-asm.patch Patch3: %{name}-jedit.patch Requires: jpackage-utils >= 0:1.5 BuildRequires: ant BuildRequires: asm BuildRequires: bsf #BuildRequires: libreadline-java Group: Development/Java Buildarch: noarch Buildroot: %{_tmppath}/%{name}-%{version}-buildroot Distribution: JPackage Vendor: JPackage Project %description BeanShell is a small, free, embeddable, Java source interpreter with object scripting language features, written in Java. BeanShell executes standard Java statements and expressions, in addition to obvious scripting commands and syntax. BeanShell supports scripted objects as simple method closures like those in Perl and JavaScript(tm). You can use BeanShell interactively for Java experimentation and debugging or as a simple scripting engine for your applications. In short: BeanShell is a dynamically interpreted Java, plus some useful stuff. Another way to describe it is to say that in many ways BeanShell is to Java as Tcl/Tk is to C: BeanShell is embeddable - You can call BeanShell from your Java applications to execute Java code dynamically at run-time or to provide scripting extensibility for your applications. Alternatively, you can call your Java applications and objects from BeanShell; working with Java objects and APIs dynamically. Since BeanShell is written in Java and runs in the same space as your application, you can freely pass references to "real live" objects into scripts and return them as results. %package bsf Summary: BSF support for %{name} Group: Development/Java Requires: bsf %description bsf BSF support for %{name}. %package classgen Summary: ASM support for %{name} Group: Development/Java Requires: asm %description classgen ASM support for %{name}. %package manual Summary: Manual for %{name} Group: Development/Java %description manual Documentation for %{name}. %package javadoc Summary: Javadoc for %{name} Group: Development/Java %description javadoc Javadoc for %{name}. %package demo Summary: Demo for %{name} Group: Development/Java AutoReqProv: no Requires: %{name} = %{epoch}:%{version}-%{release} Requires: /usr/bin/env %description demo Demonstrations and samples for %{name}. %prep rm -rf $RPM_BUILD_DIR/META-INF %setup -n %{Name} %patch0 -p1 #%patch1 -p1 %patch2 -p1 %patch3 -p1 -b "~" find . -name "*.jar" -exec rm -f {} \; # remove all CVS files for dir in `find . -type d -name CVS`; do rm -rf $dir; done for file in `find . -type f -name .cvsignore`; do rm -rf $file; done %build mkdir -p lib export CLASSPATH=$(build-classpath asm/asm bsf) # set VERSION perl -p -i -e 's|VERSION =.*;|VERSION = "%{version}-%{release}";|' src/bsh/Interpreter.java # remove internal asm code, use JPackage external jar instead rm -rf src/bsh/org perl -p -i -e 's|bsh.org.objectweb.asm|org.objectweb.asm|' src/bsh/ClassGeneratorUtil.java # remove servlet dependency rm -rf src/bsh/servlet ant -Dexclude-servlet='bsh/servlet/*' dist javadoc bshdoc (cd docs/faq && ant) (cd docs/manual && ant) %install rm -rf $RPM_BUILD_ROOT # jars install -d -m 755 $RPM_BUILD_ROOT%{_javadir}/%{name} rm -f dist/%{orig_name}-%{fversion}.jar rm -f dist/%{orig_name}-%{fversion}-src.jar for jar in dist/*.jar; do install -m 644 ${jar} $RPM_BUILD_ROOT%{_javadir}/%{name}/`basename ${jar} -%{fversion}.jar`-%{version}.jar done (cd $RPM_BUILD_ROOT%{_javadir}/%{name} && for jar in *-%{version}*; do ln -sf ${jar} ${jar/-%{version}/}; done) # manual find docs -name ".cvswrappers" -exec rm -f {} \; find docs -name "*.xml" -exec rm -f {} \; find docs -name "*.xsl" -exec rm -f {} \; find docs -name "*.log" -exec rm -f {} \; (cd docs/manual && mv html/* .) (cd docs/manual && rm -rf html) (cd docs/manual && rm -rf xsl) # javadoc install -d -m 755 $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version} cp -pr javadoc/* $RPM_BUILD_ROOT%{_javadocdir}/%{name}-%{version} # demo for i in `find tests -name \*.bsh`; do perl -p -i -e 's,^\n?#!(/(usr/)?bin/java bsh\.Interpreter|/bin/sh),#!/usr/bin/env %{_bindir}/%{name},' $i if head -1 $i | grep '#!/usr/bin/env %{_bindir}/%{name}' >/dev/null; then chmod 755 $i fi done install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/%{name} cp -pr tests $RPM_BUILD_ROOT%{_datadir}/%{name} # scripts install -d $RPM_BUILD_ROOT%{_bindir} cat > $RPM_BUILD_ROOT%{_bindir}/%{name} << EOF #!/bin/sh # # %{name} script # JPackage Project (http://jpackage.sourceforge.net) # Source functions library . %{_datadir}/java-utils/java-functions # Source system prefs if [ -f %{_sysconfdir}/%{name}.conf ] ; then . %{_sysconfdir}/%{name}.conf fi # Source user prefs if [ -f \$HOME/.%{name}rc ] ; then . \$HOME/.%{name}rc fi # Configuration MAIN_CLASS=bsh.Interpreter if [ -n "\$BSH_DEBUG" ]; then BASE_FLAGS=-Ddebug=true fi BASE_JARS="%{name}.jar" #if [ -f /usr/lib/libJavaReadline.so ]; then # BASE_FLAGS="$BASE_FLAGS -Djava.library.path=/usr/lib" # BASE_FLAGS="\$BASE_FLAGS -Dbsh.console.readlinelib=GnuReadline" # BASE_JARS="\$BASE_JARS libreadline-java.jar" #fi # Set parameters set_jvm set_classpath \$BASE_JARS set_flags \$BASE_FLAGS set_options \$BASE_OPTIONS # Let's start run "\$@" EOF cat > $RPM_BUILD_ROOT%{_bindir}/%{name}doc << EOF #!/usr/bin/env %{_bindir}/%{name} EOF cat scripts/bshdoc.bsh >> $RPM_BUILD_ROOT%{_bindir}/%{name}doc %clean rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_DIR/META-INF %files %defattr(0644,root,root,0755) %doc bsh20announce.txt CVS_branching KNOWNBUGS Notes TODO src/Changes.html src/License.txt src/README.txt %attr(0755,root,root) %{_bindir}/%{name} %attr(0755,root,root) %{_bindir}/%{name}doc %dir %{_javadir}/%{name} %{_javadir}/%{name}/%{orig_name}-classpath*.jar %{_javadir}/%{name}/%{orig_name}-commands*.jar %{_javadir}/%{name}/%{orig_name}-core*.jar %{_javadir}/%{name}/%{orig_name}-reflect*.jar %{_javadir}/%{name}/%{orig_name}-util*.jar %dir %{_datadir}/%{name} %files bsf %defattr(0644,root,root,0755) %{_javadir}/%{name}/%{orig_name}-bsf*.jar %files classgen %defattr(0644,root,root,0755) %{_javadir}/%{name}/%{orig_name}-classgen*.jar %files manual %defattr(0644,root,root,0755) %doc docs/* %files javadoc %defattr(0644,root,root,0755) %{_javadocdir}/%{name}-%{version} %files demo %defattr(0644,root,root,0755) %{_datadir}/%{name}/* %changelog * Tue Jan 27 2004 David Walluck <david@anti-microsoft.org> 0:2.0-0.b1.4jpp - new jedit patch * Mon Jan 26 2004 David Walluck <david@anti-microsoft.org> 0:2.0-0.b1.3jpp - really drop readline patch - don't add servlet to build classpath * Sun Jan 25 2004 David Walluck <david@anti-microsoft.org> 0:2.0-0.b1.2jpp - drop readline patch - modularize to split out asm and bsf dependencies * Thu Jan 22 2004 David Walluck <david@anti-microsoft.org> 0:2.0-0.b1.1jpp - release