# doing a bootstrap build from public sbt binaries # bootstrap exception is here: https://fedorahosted.org/fpc/ticket/389 # meeting minutes with vote are here: http://meetbot.fedoraproject.org/fedora-meeting-1/2014-02-13/fpc.2014-02-13-17.00.html %global do_bootstrap 1 # build non-bootstrap packages with tests, cross-referenced sources, etc %global do_proper 0 %global pkg_rel 8 %global scala_version 2.10.6 %global scala_short_version 2.10 %global sbt_bootstrap_version 0.13.13 %global sbt_launcher_version 1.0.0-M1 %global sbt_ivy_version 2.3.0-sbt-2cf13e211b2cb31f0d3b317289dca70eca3362f6 %global sbt_serialization_version 0.1.2 %global scala_pickling_version 0.10.1 %global template_resolver_version 0.1 %global quasiquotes_version 2.0.1 %global jline_version 2.13 %global sbt_major 0 %global sbt_minor 13 %global sbt_patch 13 %global sbt_build %{nil} %global sbt_short_version %{sbt_major}.%{sbt_minor} %global sbt_version %{sbt_major}.%{sbt_minor}.%{sbt_patch} %global sbt_full_version %{sbt_version}%{sbt_build} %global typesafe_repo http://repo.typesafe.com/typesafe/ivy-releases %global ivy_local_dir ivy-local %global installed_ivy_local %{_datadir}/%{name}/%{ivy_local_dir} %global generic_ivy_artifact() %{1}/%{2}/%{3}/%{4}/jars/%{5}.jar %global generic_ivy_descriptor() %{1}/%{2}/%{3}/%{4}/ivys/ivy.xml#/%{5}-%{4}-ivy.xml %global sbt_ivy_artifact() %{1}-%{sbt_bootstrap_version}.jar %global sbt_ivy_descriptor() %{1}-%{sbt_bootstrap_version}-ivy.xml %global sbt_ghpages_version 0.5.4 %global sbt_git_version 0.8.5 %global sbt_site_version 0.8.2 %global sbt_site_jar_version 0.8.2 %global sbt_jvcheck_version 0.1.0 %global sbt_doge_version 0.1.5 %global sbt_assembly_version 0.14.2 %global bintray_sbt_version 0.3.0 %global scalariform_version 0.1.4 %global sbt_scalariform_version 1.3.0 %global sbt_pgp_version 1.0.0 %global want_sxr 1 %global want_specs2 0 %global want_scalacheck 0 %global want_dispatch_http 0 %global sxr_version 0.3.0 %global sbinary_version 0.4.2 %global scalacheck_version 1.11.0 %global specs2_version 1.12.3 %global testinterface_version 1.0 %global dispatch_http_version 0.8.9 Name: sbt Version: %{sbt_version} Release: %{pkg_rel}%{?dist}.1 Summary: The simple build tool for Scala and Java projects BuildArch: noarch License: BSD URL: http://www.scala-sbt.org Source0: https://github.com/sbt/sbt/archive/v%{version}%{sbt_build}.tar.gz Patch0: sbt-0.13.13-build-sbt.patch Patch1: sbt-0.13.13-launcher-cross-version.patch %if %{do_proper} # sbt-ghpages plugin Source1: https://github.com/sbt/sbt-ghpages/archive/v%{sbt_ghpages_version}.tar.gz # sbt-git plugin Source2: https://github.com/sbt/sbt-git/archive/v%{sbt_git_version}.tar.gz # sbt-site plugin Source3: https://github.com/sbt/sbt-site/archive/%{sbt_site_version}.tar.gz # sxr Source4: https://github.com/harrah/browse/archive/v%{sxr_version}.tar.gz %endif # scalacheck # nb: no "v" in this tarball URL %if %{?want_scalacheck} Source6: https://github.com/rickynils/scalacheck/archive/%{scalacheck_version}.tar.gz %endif # specs # nb: no "v" in this tarball url # nb: this depends on scalaz; might need to excise Source7: https://github.com/etorreborre/specs2/archive/SPECS2-%{specs2_version}.tar.gz #Source16: https://raw.github.com/willb/climbing-nemesis/master/climbing-nemesis.py Source17: https://raw.github.com/willb/rpm-packaging/master/sbt-packaging/sbt.boot.properties Source15: https://raw.github.com/willb/rpm-packaging/master/sbt-packaging/rpmbuild-sbt.boot.properties # sbt script (to be obsoleted in future releases) Source21: https://raw.github.com/willb/rpm-packaging/master/sbt-packaging/sbt %if %{do_bootstrap} # include bootstrap libraries #BUNDLED Source32: %sbt_ivy_artifact ivy Source132: %sbt_ivy_descriptor ivy Source33: %sbt_ivy_artifact task-system Source133: %sbt_ivy_descriptor task-system Source34: compiler-interface-%{sbt_version}-sources.jar Source134: %sbt_ivy_descriptor compiler-interface Source35: %sbt_ivy_artifact compiler-interface #Source135: %sbt_ivy_descriptor compiler-interface Source36: %sbt_ivy_artifact testing Source136: %sbt_ivy_descriptor testing Source37: %sbt_ivy_artifact command Source137: %sbt_ivy_descriptor command Source38: %sbt_ivy_artifact test-agent Source138: %sbt_ivy_descriptor test-agent Source39: launcher-interface-%{sbt_launcher_version}.jar Source139: launcher-interface-%{sbt_launcher_version}-ivy.xml Source40: %sbt_ivy_artifact run Source140: %sbt_ivy_descriptor run Source41: %sbt_ivy_artifact compiler-ivy-integration Source141: %sbt_ivy_descriptor compiler-ivy-integration #Source42: %sbt_ivy_artifact scripted-sbt #Source142: %sbt_ivy_descriptor scripted-sbt Source44: %sbt_ivy_artifact collections Source144: %sbt_ivy_descriptor collections Source45: %sbt_ivy_artifact persist Source145: %sbt_ivy_descriptor persist Source46: %sbt_ivy_artifact classfile Source146: %sbt_ivy_descriptor classfile Source47: %sbt_ivy_artifact control Source147: %sbt_ivy_descriptor control Source48: launcher-%{sbt_launcher_version}.jar Source148: launcher-%{sbt_launcher_version}-ivy.xml Source49: %sbt_ivy_artifact apply-macro Source149: %sbt_ivy_descriptor apply-macro #Source50: %sbt_ivy_artifact datatype-generator #Source150: %sbt_ivy_descriptor datatype-generator Source51: %sbt_ivy_artifact interface Source151: %sbt_ivy_descriptor interface Source52: %sbt_ivy_artifact main-settings Source152: %sbt_ivy_descriptor main-settings Source53: %sbt_ivy_artifact incremental-compiler Source153: %sbt_ivy_descriptor incremental-compiler Source54: %sbt_ivy_artifact cache Source154: %sbt_ivy_descriptor cache Source55: %sbt_ivy_artifact compiler-integration Source155: %sbt_ivy_descriptor compiler-integration Source56: %sbt_ivy_artifact api Source156: %sbt_ivy_descriptor api Source57: %sbt_ivy_artifact main Source157: %sbt_ivy_descriptor main Source58: %sbt_ivy_artifact classpath Source158: %sbt_ivy_descriptor classpath Source59: %sbt_ivy_artifact logging Source159: %sbt_ivy_descriptor logging Source60: %sbt_ivy_artifact compile Source160: %sbt_ivy_descriptor compile Source61: %sbt_ivy_artifact process Source161: %sbt_ivy_descriptor process Source62: %sbt_ivy_artifact actions Source162: %sbt_ivy_descriptor actions Source63: sbt-launch.jar #Source163: %sbt_ivy_descriptor sbt-launch #Source64: %sbt_ivy_artifact scripted-plugin #Source164: %sbt_ivy_descriptor scripted-plugin Source65: %sbt_ivy_artifact tracking Source165: %sbt_ivy_descriptor tracking Source66: %sbt_ivy_artifact tasks Source166: %sbt_ivy_descriptor tasks Source67: %sbt_ivy_artifact completion Source167: %sbt_ivy_descriptor completion Source68: %sbt_ivy_artifact cross Source168: %sbt_ivy_descriptor cross Source69: %sbt_ivy_artifact relation Source169: %sbt_ivy_descriptor relation Source70: %sbt_ivy_artifact io Source170: %sbt_ivy_descriptor io Source71: %sbt_ivy_artifact sbt Source171: %sbt_ivy_descriptor sbt #Source72: %sbt_ivy_artifact scripted-framework #Source172: %sbt_ivy_descriptor scripted-framework %if %{do_proper} # sbt plugins Source73: http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.sbt/sbt-ghpages/scala_%{scala_short_version}/sbt_%{sbt_short_version}/%{sbt_ghpages_version}/jars/sbt-ghpages.jar Source74: http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.sbt/sbt-site/scala_%{scala_short_version}/sbt_%{sbt_short_version}/%{sbt_site_jar_version}/jars/sbt-site.jar Source75: http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.sbt/sbt-git/scala_%{scala_short_version}/sbt_%{sbt_short_version}/%{sbt_git_version}/jars/sbt-git.jar %endif %if %{?want_sxr} # sxr Source76: sxr_%{scala_short_version}-%{sxr_version}.jar %endif # scalacheck %if %{?want_scalacheck} Source78: scalacheck_%{scala_short_version}-%{scalacheck_version}.jar %endif %if %{?want_specs2} # specs Source79: http://oss.sonatype.org/content/repositories/releases/org/specs2/specs2_%{scala_short_version}/%{specs2_version}/specs2_%{scala_short_version}-%{specs2_version}.jar %endif %if %{?want_dispatch_http} # dispatch-http Source81: http://oss.sonatype.org/content/repositories/releases/net/databinder/dispatch-http_%{scala_short_version}/%{dispatch_http_version}/dispatch-http_%{scala_short_version}-%{dispatch_http_version}.jar %endif #BUNDLED Source86: serialization_%{scala_short_version}-%{sbt_serialization_version}.jar Source186: serialization_%{scala_short_version}-%{sbt_serialization_version}-ivy.xml Source87: %sbt_ivy_artifact logic Source187: %sbt_ivy_descriptor logic Source88: https://oss.sonatype.org/content/repositories/releases/org/scala-sbt/ivy/ivy/%{sbt_ivy_version}/ivy-%{sbt_ivy_version}.jar #BUNDLED Source89: scala-pickling_%{scala_short_version}-%{scala_pickling_version}.jar Source189: scala-pickling_%{scala_short_version}-%{scala_pickling_version}-ivy.xml %if %{do_proper} # more plugins Source90: http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.eed3si9n/sbt-doge/scala_%{scala_short_version}/sbt_%{sbt_short_version}/%{sbt_doge_version}/jars/sbt-doge.jar Source91: http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.sbt/sbt-javaversioncheck/scala_%{scala_short_version}/sbt_%{sbt_short_version}/%{sbt_jvcheck_version}/jars/sbt-javaversioncheck.jar Source92: http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.typesafe.sbt/sbt-scalariform/scala_%{scala_short_version}/sbt_%{sbt_short_version}/%{sbt_scalariform_version}/jars/sbt-scalariform.jar Source93: http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.jsuereth/sbt-pgp/scala_%{scala_short_version}/sbt_%{sbt_short_version}/%{sbt_pgp_version}/jars/sbt-pgp.jar Source94: http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/com.eed3si9n/sbt-assembly/scala_%{scala_short_version}/sbt_%{sbt_short_version}/%{sbt_assembly_version}/jars/sbt-assembly.jar Source95: http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/me.lessis/bintray-sbt/scala_%{scala_short_version}/sbt_%{sbt_short_version}/%{bintray_sbt_version}/jars/bintray-sbt.jar Source96: https://repo1.maven.org/maven2/org/scalariform/scalariform_%{scala_short_version}/%{scalariform_version}/scalariform_%{scala_short_version}-%{scalariform_version}.jar Source196: https://repo1.maven.org/maven2/org/scalariform/scalariform_%{scala_short_version}/%{scalariform_version}/scalariform_%{scala_short_version}-%{scalariform_version}.pom %endif Source97: template-resolver-%{template_resolver_version}.jar Source197: template-resolver-%{template_resolver_version}-ivy.xml %endif #BUNDLED Source98: quasiquotes_%{scala_short_version}-%{quasiquotes_version}.jar Source198: quasiquotes_%{scala_short_version}-%{quasiquotes_version}-ivy.xml Source200: https://github.com/sbt/launcher/archive/v%{sbt_launcher_version}.tar.gz %if %{do_bootstrap} #BUNDLED Source300: scala-library-%{scala_version}-ivy.xml Source310: scala-compiler-%{scala_version}-ivy.xml Source320: scala-reflect-%{scala_version}-ivy.xml Source330: jline-%{jline_version}-ivy.xml Source340: jansi-1.4-ivy.xml Source350: jansi-1.11-ivy.xml Source360: jsch-0.1.50-ivy.xml Source370: jawn-parser_2.10-0.6.0-ivy.xml Source371: jawn-parser_2.10-0.6.0.jar Source380: json4s-ast_2.10-3.2.10-ivy.xml Source381: json4s-ast_2.10-3.2.10.jar Source390: json4s-core_2.10-3.2.10-ivy.xml Source391: json4s-core_2.10-3.2.10.jar Source400: json4s-support_2.10-0.6.0-ivy.xml Source401: json4s-support_2.10-0.6.0.jar Source410: sbinary_2.10-0.4.2-ivy.xml Source411: sbinary_2.10-0.4.2.jar Source420: test-interface-1.0-ivy.xml Source430: paranamer-2.6-ivy.xml Source440: ivy-2.3.0-sbt-2cf13e211b2cb31f0d3b317289dca70eca3362f6-ivy.xml Source450: sxr_2.10-0.3.0-ivy.xml Source460: aether-api-1.0.1.v20141111-ivy.xml Source470: aether-connector-basic-1.0.1.v20141111-ivy.xml Source480: aether-impl-1.0.1.v20141111-ivy.xml Source490: aether-spi-1.0.1.v20141111-ivy.xml Source500: aether-util-1.0.1.v20141111-ivy.xml Source510: guava-18.0-ivy.xml Source520: maven-aether-provider-3.2.3-ivy.xml Source521: maven-aether-provider-3.2.3.jar Source530: org.eclipse.sisu.inject-0.3.0.M1-ivy.xml Source540: org.eclipse.sisu.plexus-0.3.0.M1-ivy.xml Source550: maven-model-3.2.3-ivy.xml Source551: maven-model-3.2.3.jar Source560: maven-model-builder-3.2.3-ivy.xml Source561: maven-model-builder-3.2.3.jar Source570: maven-repository-metadata-3.2.3-ivy.xml Source571: maven-repository-metadata-3.2.3.jar Source580: plexus-classworlds-2.5.1-ivy.xml Source590: plexus-component-annotations-1.5.5-ivy.xml Source600: plexus-interpolation-1.19-ivy.xml Source610: plexus-utils-2.1-ivy.xml Source620: plexus-utils-3.0.17-ivy.xml Source630: javax.inject-1-ivy.xml Source640: jline-%{scala_version}-ivy.xml %endif BuildRequires: java-devel BuildRequires: python # for xmvn-resolve BuildRequires: maven-local BuildRequires: ivy-local # packaging/publishing needs these BuildRequires: mvn(com.google.guava:guava) BuildRequires: mvn(javax.inject:javax.inject) # Can't use any Fedora Maven libs for now #BuildRequires: mvn(org.apache.maven:maven-aether-provider) <= 3.3.9 #BuildRequires: mvn(org.apache.maven:maven-model) <= 3.3.9 #BuildRequires: mvn(org.apache.maven:maven-model-builder) <= 3.3.9 #BuildRequires: mvn(org.apache.maven:maven-repository-metadata) <= 3.3.9 BuildRequires: mvn(org.eclipse.aether:aether-impl) BuildRequires: mvn(org.eclipse.aether:aether-api) BuildRequires: mvn(org.eclipse.aether:aether-spi) BuildRequires: mvn(org.eclipse.aether:aether-util) BuildRequires: mvn(org.eclipse.aether:aether-connector-basic) BuildRequires: mvn(org.eclipse.sisu:org.eclipse.sisu.plexus) BuildRequires: mvn(org.eclipse.sisu:org.eclipse.sisu.inject) BuildRequires: mvn(org.codehaus.plexus:plexus-classworlds) BuildRequires: mvn(org.codehaus.plexus:plexus-component-annotations) BuildRequires: mvn(org.codehaus.plexus:plexus-interpolation) BuildRequires: mvn(org.codehaus.plexus:plexus-utils) BuildRequires: mvn(org.bouncycastle:bcprov-jdk16) BuildRequires: mvn(org.bouncycastle:bcpg-jdk16) BuildRequires: hawtjni BuildRequires: mvn(org.fusesource.jansi:jansi) BuildRequires: jline BuildRequires: proguard BuildRequires: javapackages-tools Requires: javapackages-tools BuildRequires: mvn(oro:oro) BuildRequires: mvn(com.jcraft:jsch) BuildRequires: mvn(commons-httpclient:commons-httpclient) BuildRequires: apache-ivy BuildRequires: mvn(org.jsoup:jsoup) BuildRequires: mvn(com.thoughtworks.paranamer:paranamer) #CONFLICT, must specify compat #BuildRequires: mvn(org.scala-lang:scala-compiler) #BuildRequires: mvn(org.scala-lang:scala-library) #BuildRequires: mvn(org.scala-lang:scala-reflect) #Requires: mvn(org.scala-lang:scala-compiler) #Requires: mvn(org.scala-lang:scala-library) #Requires: mvn(org.scala-lang:scala-reflect) BuildRequires: scala210 Requires: scala210 Requires: mvn(oro:oro) Requires: mvn(com.jcraft:jsch) Requires: mvn(commons-httpclient:commons-httpclient) Requires: apache-ivy Requires: mvn(org.jsoup:jsoup) Requires: proguard Requires: mvn(org.bouncycastle:bcprov-jdk16) Requires: mvn(org.bouncycastle:bcpg-jdk16) Requires: mvn(org.fusesource.jansi:jansi) Requires: jline #CONFLICT sbinary built with old scala #BuildRequires: sbinary = %{sbinary_version} #Requires: sbinary = %{sbinary_version} BuildRequires: test-interface = %{testinterface_version} Requires: test-interface = %{testinterface_version} %if !%{do_bootstrap} BuildRequires: sbt = %{sbt_bootstrap_version} %if %{do_proper} BuildRequires: sbt-ghpages = %{sbt_ghpages_version} BuildRequires: sbt-site = %{sbt_site_version} BuildRequires: sbt-git = %{sbt_git_version} BuildRequires: sxr = %{sxr_version} BuildRequires: scalacheck = %{scalacheck_version} BuildRequires: specs2 = %{specs2_version} %endif %endif %description sbt is the simple build tool for Scala and Java projects. %prep %setup -q -n %{name}-%{sbt_version}%{sbt_build} %if !%{do_proper} %patch0 -p1 %endif #BUNDLED put the launcher src code in place tar xvzf %{SOURCE200} --strip-components=1 launcher-%{sbt_launcher_version}/launcher-implementation tar xvzf %{SOURCE200} --strip-components=1 launcher-%{sbt_launcher_version}/launcher-interface %patch1 -p1 sed -i -e '/% "test"/d' project/Util.scala cp %{SOURCE15} . cp %{SOURCE17} . %if %{do_bootstrap} cp %{SOURCE63} . mkdir %{ivy_local_dir} cp %{_sourcedir}/*-ivy.xml %{_sourcedir}/*.jar %{ivy_local_dir} %endif %if !%{do_proper} sed -i -e '/sbt-doge/d' project/plugins.sbt sed -i -e '/sbt-ghpages/d' project/plugins.sbt sed -i -e '/sbt-git/d' project/plugins.sbt sed -i -e '/sbt-javaversioncheck/d' project/plugins.sbt sed -i -e '/sbt-pgp/d' project/plugins.sbt sed -i -e '/sbt-scalariform/d' project/plugins.sbt sed -i -e '/sbt-site/d' project/plugins.sbt sed -i -e '/bintray-sbt/d' project/plugins.sbt sed -i -e '/sbt-assembly/d' project/plugins.sbt %endif for props in rpmbuild-sbt.boot.properties sbt.boot.properties ; do sed -i -e 's/FEDORA_SCALA_VERSION/%{scala_version}/g' $props sed -i -e 's/FEDORA_SBT_VERSION/%{sbt_version}/g' $props done sed -i -e 's/0.13.12/%{sbt_bootstrap_version}/g' project/build.properties # remove any references to Scala 2.10.2 sed -i -e 's/["]2[.]10[.][2345]["]/\"2.10.6\"/g' $(find . -name \*.xml) %if !%{do_proper} rm -f project/Docs.scala rm -f project/Formatting.scala rm -f project/NightlyPlugin.scala rm -f project/Release.scala rm -f project/SiteMap.scala rm -f project/StatusPlugin.scala %endif mkdir sbt-boot-dir %if %{do_bootstrap} mkdir -p sbt-boot-dir/scala-%{scala_version}/org.scala-sbt/%{name}/%{sbt_bootstrap_version}/ mkdir -p sbt-boot-dir/scala-%{scala_version}/lib for jar in $(find %{ivy_local_dir}/ -name \*.jar | grep fusesource) ; do cp $jar sbt-boot-dir/scala-%{scala_version}/lib done # this is a hack, obvs for jar in $(find %{ivy_local_dir}/ -name \*.jar | grep bouncycastle) ; do cp $jar sbt-boot-dir/scala-%{scala_version}/lib done #BUNDLED for jar in $(find %{ivy_local_dir}/ -name \*.jar | grep scala-pickling) ; do cp $jar sbt-boot-dir/scala-%{scala_version}/org.scala-sbt/%{name}/%{sbt_bootstrap_version}/ done #BUNDLED for jar in $(find %{ivy_local_dir}/ -name \*.jar | grep serialization) ; do cp $jar sbt-boot-dir/scala-%{scala_version}/org.scala-sbt/%{name}/%{sbt_bootstrap_version}/ done %endif for v in %{scala_version} %{jline_version} ; do ln -s %{_javadir}/jline/jline.jar %{ivy_local_dir}/jline-$v.jar done for v in 1.4 1.11 ; do ln -s %{_javadir}/jansi/jansi.jar %{ivy_local_dir}/jansi-$v.jar done for s in compiler library reflect ; do ln -s %{_javadir}/scala210/scala-$s.jar %{ivy_local_dir}/scala-$s-%{scala_version}.jar done ln -s %{_javadir}/paranamer/paranamer.jar %{ivy_local_dir}/paranamer-2.6.jar ln -s %{_javadir}/jsch.jar %{ivy_local_dir}/jsch-0.1.50.jar ln -s %{_javadir}/test-interface.jar %{ivy_local_dir}/test-interface-1.0.jar ln -s %{_javadir}/org.eclipse.sisu.plexus.jar %{ivy_local_dir}/org.eclipse.sisu.plexus-0.3.0.M1.jar ln -s %{_javadir}/org.eclipse.sisu.inject.jar %{ivy_local_dir}/org.eclipse.sisu.inject-0.3.0.M1.jar ln -s %{_javadir}/guava.jar %{ivy_local_dir}/guava-18.0.jar ln -s %{_javadir}/javax.inject/atinject.jar %{ivy_local_dir}/javax.inject-1.jar ln -s %{_javadir}/aether/aether-connector-basic.jar %{ivy_local_dir}/aether-connector-basic-1.0.1.v20141111.jar ln -s %{_javadir}/aether/aether-api.jar %{ivy_local_dir}/aether-api-1.0.1.v20141111.jar ln -s %{_javadir}/aether/aether-impl.jar %{ivy_local_dir}/aether-impl-1.0.1.v20141111.jar ln -s %{_javadir}/aether/aether-spi.jar %{ivy_local_dir}/aether-spi-1.0.1.v20141111.jar ln -s %{_javadir}/aether/aether-util.jar %{ivy_local_dir}/aether-util-1.0.1.v20141111.jar ln -s %{_javadir}/plexus/classworlds.jar %{ivy_local_dir}/plexus-classworlds-2.5.1.jar ln -s %{_javadir}/plexus-containers/plexus-component-annotations.jar %{ivy_local_dir}/plexus-component-annotations-1.5.5.jar ln -s %{_javadir}/plexus/interpolation.jar %{ivy_local_dir}/plexus-interpolation-1.19.jar for v in 2.1 3.0.17 ; do ln -s %{_javadir}/plexus/utils.jar %{ivy_local_dir}/plexus-utils-$v.jar done mkdir -p scala/lib for jar in %{_javadir}/scala210/*.jar ; do cp $jar scala/lib done sed -i -e 's/["]2[.]10[.][2345]["]/\"2.10.6\"/g' $(find . -name \*.sbt -type f) $(find . -name \*.xml) $(find . -name \*.scala) sed -i -e 's/["]2[.]10[.]2-RC2["]/\"2.10.6\"/g' $(find . -name \*.sbt -type f) %build %if %{do_bootstrap} java -Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -jar -Dfedora.sbt.ivy.dir=$PWD/%{ivy_local_dir} -Dfedora.sbt.boot.dir=$PWD/sbt-boot-dir/ -Divy.checksums='""' -Dsbt.boot.properties=$PWD/rpmbuild-sbt.boot.properties sbt-launch.jar package "set publishTo in Global := Some(Resolver.file(\"published\", file(\"published\"))(Resolver.ivyStylePatterns) ivys \"$(pwd)/published/[organization]/[module]/[revision]/ivy.xml\" artifacts \"$(pwd)/published/[organization]/[module]/[revision]/[artifact]-[revision].[ext]\")" publish makePom %else export SBT_IVY_DIR=$PWD/%{ivy_local_dir} export SBT_BOOT_DIR=$PWD/sbt-boot-dir/ export SBT_BOOT_PROPERTIES=rpmbuild-sbt.boot.properties sbt package "set publishTo in Global := Some(Resolver.file(\"published\", file(\"published\"))(Resolver.ivyStylePatterns) ivys \"$(pwd)/published/[organization]/[module]/[revision]/ivy.xml\" artifacts \"$(pwd)/published/[organization]/[module]/[revision]/[artifact]-[revision].[ext]\")" publish makePom %endif # XXX: this is a hack; we seem to get correct metadata but bogus JARs # from "sbt publish" for some reason for f in $(find published -name \*.jar) ; do find . -ipath \*target\* -and -name $(basename $f) -exec cp '{}' $f \; done %install mkdir -p %{buildroot}/%{_javadir}/%{name} # collect and install SBT jars find published -name \*.jar | grep -v sbt-launch.jar | grep %{sbt_full_version}.jar | xargs -I JAR cp JAR %{buildroot}/%{_javadir}/%{name} mkdir -p %{buildroot}/%{_bindir} cp -p %{SOURCE21} %{buildroot}/%{_bindir}/%{name} chmod 755 %{buildroot}/%{_bindir}/%{name} pushd %{buildroot}/%{_javadir}/%{name} for jar in *.jar ; do mv $jar $(echo $jar | sed -e 's/-%{sbt_full_version}//g') done popd %if %{do_bootstrap} # manually install BUNDLED launcher cp launcher-implementation/target/launcher-implementation-%{sbt_full_version}.jar %{buildroot}/%{_javadir}/%{name}/launcher-implementation.jar cp launcher-interface/target/launcher-interface-%{sbt_full_version}.jar %{buildroot}/%{_javadir}/%{name}/launcher-interface.jar # manually install BUNDLED pickling/serialization/quasiquotes find sbt-boot-dir -name \*.jar | grep scala-pickling | xargs -I JAR cp JAR %{buildroot}/%{_javadir}/%{name}/scala-pickling.jar find sbt-boot-dir -name \*.jar | grep serialization | xargs -I JAR cp JAR %{buildroot}/%{_javadir}/%{name}/serialization.jar find sbt-boot-dir -name \*.jar | grep quasiquotes | xargs -I JAR cp JAR %{buildroot}/%{_javadir}/%{name}/quasiquotes.jar %endif rm -f %{buildroot}/%{_javadir}/%{name}/sbt-launch.jar mkdir -p %{buildroot}/%{_sysconfdir}/%{name} # XXXXXXX for props in rpmbuild-sbt.boot.properties sbt.boot.properties ; do sed 's/debug/info/' < $props > %{buildroot}/%{_sysconfdir}/%{name}/$props done mkdir -p %{buildroot}/%{installed_ivy_local} # remove things that we only needed for the bootstrap build rm -rf %{ivy_local_dir}/net.databinder rm -rf %{ivy_local_dir}/com.typesafe.sbt rm -rf %{ivy_local_dir}/org.scalacheck rm -rf %{ivy_local_dir}/org.scala-sbt.sxr rm -rf %{ivy_local_dir}/cache rm -rf %{ivy_local_dir}/org.scala-sbt/sbt-launch (cd %{ivy_local_dir} ; tar --exclude=.md5 --exclude=.sha1 -cf - .) | (cd %{buildroot}/%{installed_ivy_local} ; tar -xf - ) (cd published ; tar --exclude=\*.md5 --exclude=\*.sha1 -cf - .) | (cd %{buildroot}/%{installed_ivy_local} ; tar -xf - ) for bootjar in $(find %{buildroot}/%{installed_ivy_local}/org.scala-sbt -type l) ; do rm -f $bootjar ln -s %{_javadir}/%{name}/$(basename $bootjar) $bootjar done %if %{do_bootstrap} concretize() { src=$(readlink $1) rm $1 && cp $src $1 } # copy other bootstrap dependency jars from their sources for depjar in $(find %{buildroot}/%{installed_ivy_local} -lname %{_sourcedir}\* ) ; do concretize $depjar done %endif # do_bootstrap find %{buildroot}/%{installed_ivy_local} -name \*.lock -delete find %{buildroot}/%{_datadir}/%{name} -name \*test-interface\* | xargs rm -rf ### install POM files mkdir -p %{buildroot}/%{_mavenpomdir} rm -f .rpm_pomfiles touch .rpm_pomfiles declare -a shortnames for pom in $(find . -name \*.pom | grep -v compiler-interface | grep -v launch-test | grep -v sbt-launch | grep -v src/test | grep -v src/sbt-test | grep -v sbtroot) ; do shortname=$(echo $pom | sed -e 's/^.*[/]\([a-z-]\+\)-0.13.13.pom$/\1/g') echo installing POM $pom to %{_mavenpomdir}/JPP.%{name}-${shortname}.pom cp $pom %{buildroot}/%{_mavenpomdir}/JPP.%{name}-${shortname}.pom echo %{_mavenpomdir}/JPP.%{name}-${shortname}.pom >> .rpm_pomfiles shortnames=( "${shortnames[@]}" $shortname ) done echo shortnames are ${shortnames[@]} for sub in ${shortnames[@]} ; do echo running add_maven_depmap JPP.%{name}-${sub}.pom %{name}/${sub}.jar %add_maven_depmap JPP.%{name}-${sub}.pom %{name}/${sub}.jar done %files -f .mfiles %{_datadir}/%{name} %{_bindir}/%{name}* %{_javadir}/%{name}/compiler-interface.jar %{_javadir}/%{name}/quasiquotes.jar %{_javadir}/%{name}/scala-pickling.jar %{_javadir}/%{name}/serialization.jar %{_sysconfdir}/%{name} %doc README.md LICENSE NOTICE %changelog * Wed Nov 16 2016 Pete MacKinnon - 0.13.13-1 - Bootstrap build * Thu Feb 04 2016 Fedora Release Engineering - 0.13.1-8.1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild * Tue Jul 21 2015 Mikolaj Izdebski - 0.13.1-8 - Non-bootstrap build * Tue Jul 21 2015 Mikolaj Izdebski - 0.13.1-7 - Port to Ivy 2.4.0 - Fix compatibility with XMvn 2.4.0 * Fri Jul 10 2015 William Benton - 0.13.1-7 - bootstrap build - fixes for Proguard - don't ExcludeArch ARM * Fri Jun 19 2015 Fedora Release Engineering - 0.13.1-6.1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild * Wed Apr 22 2015 Peter Robinson 0.13.1-6 - Rebuild to fix dangling jansi-native and hawtjni-runtime symlinks * Sun Jun 08 2014 Fedora Release Engineering - 0.13.1-5.1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild * Tue Mar 4 2014 William Benton - 0.13.1-5 - fixes BZ 1072096 * Thu Jan 30 2014 William Benton - 0.13.1-4 - use native test-interface and sbinary packages in both bootstrap and non-bootstrap modes - fix a bug that was crashing on rawhide * Mon Jan 20 2014 William Benton - 0.13.1-3 - builds as non-bootstrap package - numerous other minor fixes * Wed Jan 15 2014 William Benton - 0.13.1-2 - use generated Ivy files - use bootstrap test-interface in bootstrap package * Sat Dec 14 2013 William Benton - 0.13.1-1 - updated to 0.13.1 - many other packaging fixes * Thu Nov 7 2013 William Benton - 0.13.0-1 - initial package