scala/scala.spec
2019-12-17 11:31:11 +08:00

161 lines
5.7 KiB
RPMSpec

%global _default_patch_fuzz 2
%{?filter_setup: %filter_from_requires /ant/d; %filter_setup}
Name: scala
Version: 2.10.6
Release: 12
Summary: Combination of object-oriented and functional programming
License: BSD and CC0 and Public Domain
URL: http://www.scala-lang.org/
Source0: %{name}-%{version}.tar.gz
Source1: scala-library-2.10.0-bnd.properties
Source2: scala-2.10.3-bootstrap.tgz
Source3: scala.gitinfo
Source4: http://www.scala-lang.org/files/archive/scala-2.10.4.tgz
Source5: generate-tarball.sh
Source6: scala.keys
Source7: scala.mime
Source8: scala-mime-info.xml
Source9: scala.ant.d
Source10: scala-bootstript.xml
Patch0: scala-2.10.0-tooltemplate.patch
Patch1: scala-2.10.3-use_system_jline.patch
Patch2: scala-2.10.3-compiler-pom.patch
Patch3: scala-2.10.2-java7.patch
Patch4: scala-2.10-jline.patch
Patch5: scala-2.10.4-build_xml.patch
BuildArch: noarch
BuildRequires: java-devel >= 1:1.7.0, ant, ant-junit, ant-contrib, jline >= 2.10, aqute-bnd, junit, javapackages-local, scala
Requires: jpackage-utils, jansi, java-headless >= 1:1.7.0, jline >= 2.10
Provides: %{name}-apidoc%{?_isa} %{name}-apidoc
Obsoletes: %{name}-apidoc
Provides: %{name}-swing%{?_isa} %{name}-swing
Obsoletes: %{name}-swing
Provides: ant-scala%{?_isa} ant-scala
Obsoletes: ant-scala
%description
Scala combines object-oriented and functional programming in one concise, high-level language.
Scala's static types help avoid bugs in complex applications, and its JVM and JavaScript runtimes
let you build high-performance systems with easy access to huge ecosystems of libraries.
It provides a common, uniform, and all-encompassing framework for collection types.
This framework enables you to work with data in memory at a high level, with the basic building
blocks of a program being whole collections, instead of individual elements.
This style of programming requires some learning. Fortunately, the adaptation is helped by several
nice properties of the Scala collections. They are easy to use, concise, safe, fast, universal.
%prep
%autosetup -p1
echo "starr.version=2.10.4\nstarr.use.released=0" > starr.number
cd src
rm -rf jline
cd -
sed -i '/is not supported by/d' build.xml
sed -i '/exec.*pull-binary-libs.sh/d' build.xml
pushd lib
rm -rf scala-compiler.jar scala-library.jar scala-reflect.jar
ln -s $(build-classpath scala/scala-compiler.jar) scala-compiler.jar
ln -s $(build-classpath scala/scala-library.jar) scala-library.jar
ln -s $(build-classpath scala/scala-reflect.jar) scala-reflect.jar
pushd ant
rm -rf ant.jar ant-contrib.jar
ln -s $(build-classpath ant.jar) ant.jar
ln -s $(build-classpath ant/ant-contrib) ant-contrib.jar
popd
popd
cp -rf %{SOURCE10} .
sed -i -e 's!@JLINE@!%{_javadir}/jline/jline.jar!g' build.xml
echo echo $(head -n 1 %{SOURCE3}) > tools/get-scala-commit-sha
echo echo $(tail -n 1 %{SOURCE3}) > tools/get-scala-commit-date
chmod 755 tools/get-scala-*
%build
export ANT_OPTS="-Xms2048m -Xmx2048m %{nil}"
ant build || exit 1
cd build/pack/lib
mv scala-library.jar scala-library.jar.no
bnd wrap --properties %{SOURCE1} --output scala-library.jar --version "%{version}" scala-library.jar.no
cd -
%check
pushd test/files/run
rm -rf parserJavaIdent.scala t6223.scala
pushd ../presentation
rm -rf implicit-member t5708 ide-bug-1000349 ide-bug-1000475 ide-bug-1000531 visibility ping-pong callcc-interpreter
pushd ../../osgi/src
rm -rf ReflectionToolboxTest.scala
popd
popd
popd
%install
install -d $RPM_BUILD_ROOT%{_bindir}
for prog in scaladoc fsc scala scalac scalap; do
install -p -m 755 build/pack/bin/$prog $RPM_BUILD_ROOT%{_bindir}
done
install -p -m 755 -d $RPM_BUILD_ROOT%{_datadir}/scala/lib
%mvn_file ':{*}:jar:' %{name}/@1 %{_datadir}/scala/lib/@1
%mvn_file ':{*}:pom:' %{name}/@1 JPP.%{name}-@1
%mvn_package :scala-swing swing
for libname in scala-compiler scala-library scala-reflect scalap scala-swing ; do
sed -i "s|@VERSION@|%{version}|" src/build/maven/$libname-pom.xml
sed -i "s|@RELEASE_REPOSITORY@|http://nexus.scala-tools.org/content/repositories/releases|" src/build/maven/$libname-pom.xml
sed -i "s|@SNAPSHOT_REPOSITORY@|http://nexus.scala-tools.org/content/repositories/snapshots|" src/build/maven/$libname-pom.xml
%mvn_artifact src/build/maven/$libname-pom.xml build/pack/lib/$libname.jar
done
ln -s $(abs2rel %{_javadir}/jline/jline.jar %{_datadir}/scala/lib) $RPM_BUILD_ROOT%{_datadir}/scala/lib
ln -s $(abs2rel %{_javadir}/jansi/jansi.jar %{_datadir}/scala/lib) $RPM_BUILD_ROOT%{_datadir}/scala/lib
%mvn_install
install -d $RPM_BUILD_ROOT%{_sysconfdir}/ant.d
install -p -m 644 %{SOURCE9} $RPM_BUILD_ROOT%{_sysconfdir}/ant.d/scala
install -d $RPM_BUILD_ROOT%{_datadir}/mime-info
install -p -m 644 %{SOURCE6} %{SOURCE7} $RPM_BUILD_ROOT%{_datadir}/mime-info/
install -d $RPM_BUILD_ROOT%{_datadir}/mime/packages/
install -p -m 644 %{SOURCE8} $RPM_BUILD_ROOT%{_datadir}/mime/packages/
sed -i -e 's,@JAVADIR@,%{_javadir},g' -e 's,@DATADIR@,%{_datadir},g' $RPM_BUILD_ROOT%{_bindir}/*
%post
touch --no-create %{_datadir}/mime/packages > /dev/null 2>&1 || :
%postun
if [ $1 -eq 0 ]; then
update-mime-database %{_datadir}/mime > /dev/null 2>&1 || :
fi
%posttrans
update-mime-database %{?fedora:-n} %{_datadir}/mime > /dev/null 2>&1 || :
%files -f .mfiles
%license docs/LICENSE
%config %{_sysconfdir}/ant.d/*
%{_bindir}/*
%dir %{_datadir}/%{name}
%dir %{_datadir}/%{name}/lib
%{_datadir}/%{name}/lib/*.jar
%{_datadir}/mime-info/*
%{_datadir}/mime/packages/*
%{_javadir}/%{name}/*
/usr/share/maven*
%changelog
* Fri Dec 13 2019 openEuler Buildteam <buildteam@openeuler.org> - 2.10.6-12
- Package init