File bsh2.spec of Package bsh2
#
# spec file for package bsh2 (Version 2.0)
#
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# norootforbuild
# icecream 0
Name: bsh2
BuildRequires: ant asm asm-javadoc bsf bsf-javadoc java2-devel-packages unzip xml-commons-apis
%define name bsh2
%define orig_name bsh
%define Name BeanShell
%define version 2.0
%define fversion 2.0b1
%define frelease 7jpp
%define release 0.b1.%{frelease}
%define section free
Version: 2.0
Release: 57
Summary: Lightweight Scripting for Java (BeanShell Version 2.x)
License: GNU Library General Public License v. 2.0 and 2.1 (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
Patch4: %{name}-java15.patch
Patch5: %{name}-crosslink.patch
Patch10: bsh2.fix-visit.diff
Patch11: %{name}-java14compat.patch
Requires: jpackage-utils >= 1.5
#BuildRequires: libreadline-java
Group: Development/Libraries/Java
Buildarch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%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.
With version 2.0 BeanShell becomes a fully Java compatible scripting
language. BeanShell is now capable of interpreting ordinary Java source
and loading .java source files from the class path. BeanShell scripted
classes are fully typed and appear to outside Java code and via
reflective inspection as ordinary classes. However their implementation
is fully dynamic and they may include arbitrary BeanShell scripts in
their bodies, methods, and constructors. Users may now freely mix
loose, unstructured BeanShell scripts, method closures, and full
scripted classes.
%package bsf
Summary: Lightweight Scripting for Java (BeanShell Version 2.x) (BSF support)
Group: Development/Libraries/Java
Requires: bsf
%description bsf
BSF support for bsh2.
%package classgen
Summary: Lightweight Scripting for Java (BeanShell Version 2.x) (ASM support)
Group: Development/Libraries/Java
Requires: asm
%description classgen
ASM support for bsh2.
%package manual
Summary: Lightweight Scripting for Java (BeanShell Version 2.x) (Manual)
Group: Development/Libraries/Java
%description manual
Documentation for bsh2.
%package javadoc
PreReq: coreutils
Summary: Lightweight Scripting for Java (BeanShell Version 2.x) (Java Documentation)
Group: Development/Libraries/Java
%description javadoc
Javadoc for bsh2.
%package demo
Summary: Lightweight Scripting for Java (BeanShell Version 2.x) (demo and samples)
Group: Development/Libraries/Java
AutoReqProv: no
Requires: %{name} = %{version}-%{release}
%description demo
Demonstrations and samples for bsh2.
%prep
%__rm -rf $RPM_BUILD_DIR/META-INF
%setup -q -n %{Name}
%patch0 -p1
#%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch10 -p1
%patch11
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/*' \
-Dasm.javadoc=%{_javadocdir}/asm \
-Dbsf.javadoc=%{_javadocdir}/bsf \
-Djava.javadoc=%{_javadocdir}/java \
dist
(cd docs/faq && %ant)
(cd docs/manual && %ant)
%install
# jars
%__mkdir_p %{buildroot}%{_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} %{buildroot}%{_javadir}/%{name}/`basename ${jar} -%{fversion}.jar`-%{version}.jar
done
(cd %{buildroot}%{_javadir}/%{name} && for jar in *-%{version}*; do %__ln_s ${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 -f html/* .)
(cd docs/manual && %__rm -rf html)
(cd docs/manual && %__rm -rf xsl)
# javadoc
%__mkdir_p %{buildroot}%{_javadocdir}/%{name}-%{version}
%__cp -a javadoc/* %{buildroot}%{_javadocdir}/%{name}-%{version}
(cd %{buildroot}%{_javadocdir} && %__ln_s %{name}-%{version} %{name})
# demo
for i in `find tests -name "*.bsh"`; do
%__perl -p -i -e 's,^\n?#!(/(usr/)?bin/java bsh\.Interpreter|/bin/sh),#!%{_bindir}/%{name},' $i
done
%__mkdir_p %{buildroot}%{_datadir}/%{name}
%__cp -a tests %{buildroot}%{_datadir}/%{name}
find %{buildroot}%{_datadir}/%{name} -type d \
| sed 's|'%{buildroot}'|%dir |' > %{name}-demo-%{version}.files
find %{buildroot}%{_datadir}/%{name} -type f -name "*.bsh" \
| sed 's|'%{buildroot}'|%attr(0755,root,root) |' >> %{name}-demo-%{version}.files
find %{buildroot}%{_datadir}/%{name} -type f ! -name "*.bsh" \
| sed 's|'%{buildroot}'|%attr(0644,root,root) |' >> %{name}-demo-%{version}.files
# scripts
%__mkdir_p %{buildroot}%{_bindir}
%__cat > %{buildroot}%{_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 > %{buildroot}%{_bindir}/%{name}doc << EOF
#!/usr/bin/env %{_bindir}/%{name}
EOF
%__cat scripts/bshdoc.bsh >> %{buildroot}%{_bindir}/%{name}doc
%clean
rm -rf $RPM_BUILD_ROOT
%__rm -rf $RPM_BUILD_DIR/META-INF
%post javadoc
%__rm -f %{_javadocdir}/%{name}
%__ln_s %{name}-%{version} %{_javadocdir}/%{name}
%postun javadoc
if [ $1 -eq 0 ]; then
%__rm -f %{_javadocdir}/%{name}
fi
%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)
%dir %{_javadocdir}/%{name}-%{version}
%{_javadocdir}/%{name}-%{version}/*
%ghost %dir %{_javadocdir}/%{name}
%files demo -f %{name}-demo-%{version}.files
%defattr(0644,root,root,0755)
%changelog
* Fri Mar 30 2007 - aj@suse.de
- Add unzip to BuildRequires.
* Mon Sep 25 2006 - skh@suse.de
- don't use icecream
- use source="1.4" and target="1.4" for build with java 1.5
* Wed Jan 25 2006 - mls@suse.de
- converted neededforbuild to BuildRequires
* Mon Oct 17 2005 - jsmeix@suse.de
- Current version 2.0 from JPackage.org