# # spec file # # Copyright (c) 2022 SUSE LLC # # 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 https://bugs.opensuse.org/ # %global flavor @BUILD_FLAVOR@%{nil} %if "%{flavor}" == "bootstrap" %bcond_without bootstrap %else %bcond_with bootstrap %endif %global fullversion %{version} %global release_repository http://nexus.scala-tools.org/content/repositories/releases %global snapshot_repository http://nexus.scala-tools.org/content/repositories/snapshots %global jansi_jar %{_jnidir}/jansi/jansi.jar %global jline2_jar %{_javadir}/jline/jline.jar %global scaladir %{_datadir}/scala %global base_name scala %define __requires_exclude .*org\.apache\.ant.* Version: 2.10.7 Release: 0 Summary: A hybrid functional/object-oriented language for the JVM License: BSD-3-Clause AND CC0-1.0 AND SUSE-Public-Domain Group: Development/Libraries/Java URL: https://www.scala-lang.org/ Source0: %{base_name}-%{version}.tar.xz Source1: scala-library-2.10.0-bnd.properties # git log --pretty=format:"%H%n%ci" v%{version} | head -n 2 | sed -e 's/\-//g' -e 's/\s\+.*//g' Source3: scala.gitinfo Source23: scala-mime-info.xml Source24: scala.ant.d # Change the default classpath (SCALA_HOME) Patch1: scala-2.10.0-tooltemplate.patch # Use system jline2 instead of bundled jline2 Patch2: scala-2.10.3-use_system_jline.patch # change org.scala-lang jline in org.sonatype.jline jline Patch3: scala-2.10.3-compiler-pom.patch # Patch Swing module for JDK 1.7 Patch4: scala-2.10.2-java7.patch # fix incompatibilities with JLine 2.7 Patch6: scala-2.10-jline.patch Patch8: scala-2.10.4-build_xml.patch # Stop scaladoc from trying to bundle non-existent resources that were # removed due to being in object form only, whithout sources Patch9: scala-2.10.6-scaladoc-resources.patch Patch10: scala-2.10.7-source6.patch Patch11: scala-2.10.7-lines.patch Patch12: scala-2.10.7-java8compat.patch BuildRequires: ant BuildRequires: ant-contrib BuildRequires: ant-junit BuildRequires: aqute-bnd BuildRequires: graphviz BuildRequires: java-devel >= 1.7 BuildRequires: javapackages-local BuildRequires: jline >= 2.10 BuildRequires: junit BuildConflicts: java >= 9 BuildConflicts: java-devel >= 9 BuildConflicts: java-headless >= 9 Requires: jansi Requires: java-headless >= 1.7 # Require full javapackages-tools since scripts use # /usr/share/java-utils/java-functions Requires: javapackages-tools Requires: jline >= 2.10 %if %{with bootstrap} Source100: scala-compiler.jar Source101: scala-library.jar Source102: scala-reflect.jar %endif %if %{with bootstrap} Name: %{base_name}-bootstrap %else Name: %{base_name} BuildRequires: %{base_name}-bootstrap >= %{version} Provides: %{base_name}-bootstrap = %{version}-%{release} Obsoletes: %{base_name}-bootstrap %endif %description Scala is a general purpose programming language designed to express common programming patterns in a concise and type-safe way. It integrates features of object-oriented and functional languages. It is also interoperable with Java. %if %{without bootstrap} %package apidoc Summary: Documentation for the Scala programming language Group: Documentation/HTML Obsoletes: %{base_name}-bootstrap-apidoc BuildArch: noarch %description apidoc Scala is a general purpose programming language for the JVM that blends object-oriented and functional programming. This package provides reference and API documentation for the Scala programming language. %endif %package swing Summary: The swing library for the Scala programming languages Group: Development/Libraries/Java Requires: %{name} = %{version}-%{release} Requires: java >= 1.7 BuildArch: noarch %if %{without bootstrap} Obsoletes: %{base_name}-bootstrap-swing %endif %description swing This package contains the swing library for the Scala programming languages. This library is required to develop GUI-related applications in Scala. The release provided by this package is not the original version from upstream because this version is not compatible with JDK 1.7. %package -n ant-%{name} Summary: Development files for Scala Group: Development/Libraries/Java Requires: ant Requires: scala = %{version}-%{release} BuildArch: noarch %if %{without bootstrap} Obsoletes: ant-%{base_name}-bootstrap %endif %description -n ant-%{name} Scala is a general purpose programming language for the JVM that blends object-oriented and functional programming. This package enables support for the Scala ant tasks. %prep %setup -q -n %{base_name}-%{version} %patch1 -p1 -b .tool %patch2 -p1 -b .sysjline %patch3 -p1 -b .compiler-pom %patch4 -p1 -b .jdk7 %patch6 -p1 -b .rvk %patch8 -p1 -b .bld %patch9 -p1 -b .scaladoc %patch10 -p1 -b .source6 %patch11 -p1 -b .jdk11 %patch12 -p1 -b .java8compat echo "starr.version=2.10.4\nstarr.use.released=0" > starr.number pushd src rm -rf jline popd sed -i '/is not supported by/d' build.xml sed -i '/exec.*pull-binary-libs.sh/d' build.xml %if %{with bootstrap} %global do_bootstrap -DdoBootstrapBuild=yes %global docs_target %{nil} %else %global do_bootstrap %{nil} %global docs_target docs %endif pushd lib %if %{without bootstrap} rm -rf scala-compiler.jar ln -s $(find-jar scala/scala-compiler) scala-compiler.jar rm -rf scala-library.jar ln -s $(find-jar scala/scala-library) scala-library.jar rm -rf scala-reflect.jar ln -s $(find-jar scala/scala-reflect) scala-reflect.jar %else cp %{SOURCE100} scala-compiler.jar cp %{SOURCE101} scala-library.jar cp %{SOURCE102} scala-reflect.jar %endif pushd ant rm -rf ant.jar rm -rf ant-contrib.jar ln -s $(build-classpath ant.jar) ant.jar ln -s $(build-classpath ant/ant-contrib) ant-contrib.jar popd popd sed -i -e 's!@JLINE@!%{jline2_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 %{do_bootstrap}" # Add the -verbose flag to scalac on zero architectures. The build # is slow, OBS thinks it is stuck and kills it before it has chance # to finish %{ant} \ build %{docs_target} || exit 1 pushd 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 popd %install install -d %{buildroot}%{_bindir} for prog in scaladoc fsc scala scalac scalap; do install -p -m 755 build/pack/bin/$prog %{buildroot}%{_bindir} done install -dm 0755 %{buildroot}%{scaladir}/lib install -dm 0755 %{buildroot}%{_javadir}/%{base_name} install -dm 0755 %{buildroot}%{_mavenpomdir} # XXX: add scala-partest when it works again for libname in scala-compiler \ scala-library \ scala-reflect \ scalap \ scala-swing ; do sed -i "s|@VERSION@|%{fullversion}|" src/build/maven/$libname-pom.xml sed -i "s|@RELEASE_REPOSITORY@|%{release_repository}|" src/build/maven/$libname-pom.xml sed -i "s|@SNAPSHOT_REPOSITORY@|%{snapshot_repository}|" src/build/maven/$libname-pom.xml install -pm 0644 build/pack/lib/$libname.jar %{buildroot}%{_javadir}/%{base_name}/$libname.jar ln -sf $(abs2rel %{_javadir}/%{base_name}/$libname.jar %{scaladir}/lib) %{buildroot}%{scaladir}/lib # climbing-nemesis uses the old JPP naming convention install -pm 0644 src/build/maven/$libname-pom.xml %{buildroot}%{_mavenpomdir}/JPP.%{base_name}-$libname.pom if [ $libname == scala-swing ]; then %add_maven_depmap JPP.%{base_name}-$libname.pom %{base_name}/$libname.jar -f swing else %add_maven_depmap JPP.%{base_name}-$libname.pom %{base_name}/$libname.jar fi done ln -s $(abs2rel %{jline2_jar} %{scaladir}/lib) %{buildroot}%{scaladir}/lib ln -s $(abs2rel %{jansi_jar} %{scaladir}/lib) %{buildroot}%{scaladir}/lib %if %{without bootstrap} install -d %{buildroot}%{_sysconfdir}/ant.d install -p -m 644 %{SOURCE24} %{buildroot}%{_sysconfdir}/ant.d/scala %endif install -d %{buildroot}%{_datadir}/mime/packages/ install -p -m 644 %{SOURCE23} %{buildroot}%{_datadir}/mime/packages/ sed -i -e 's,@JAVADIR@,%{_javadir},g' -e 's,@DATADIR@,%{_datadir},g' %{buildroot}%{_bindir}/* %if %{without bootstrap} install -d %{buildroot}%{_mandir}/man1 install -p -m 644 build/scaladoc/manual/man/man1/* %{buildroot}%{_mandir}/man1 %endif %files -f .mfiles %{_bindir}/* %dir %{_datadir}/%{base_name} %dir %{_datadir}/%{base_name}/lib %{_datadir}/%{base_name}/lib/*.jar %exclude %{_datadir}/%{base_name}/lib/scala-swing.jar %{_datadir}/mime/packages/* %license docs/LICENSE %if %{without bootstrap} %{_mandir}/man1/* %endif %files swing -f .mfiles-swing %license docs/LICENSE %{_datadir}/%{base_name}/lib/scala-swing.jar %if %{without bootstrap} %files -n ant-%{name} # Following is plain config because the ant task classpath could change from # release to release %config %{_sysconfdir}/ant.d/* %license docs/LICENSE %files apidoc %doc build/scaladoc/library/* %license docs/LICENSE %endif %changelog