Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[sbt 0.13] Add local-preloaded repo #2993

Merged
merged 1 commit into from
Mar 8, 2017
Merged

Conversation

eed3si9n
Copy link
Member

@eed3si9n eed3si9n commented Mar 5, 2017

This adds additional "local-preloaded" repository that we can safely stuff to allow off-the-grid installation.

In conjunction with sbt-export-repo, I was able to launch sbt 0.13.14-SNAPSHOT from an airplane using fresh ivy.home and sbt.global.base.

fast boot up

As a nice side effect of off-the-grid installation is that the boot up from empty state is going to be very fast. About 10s.

$ time java -jar sbt-launch.jar -Dsbt.ivy.home=/tmp/offline/ivy.home -Dsbt.global.base=/tmp/offline/global exit
Getting org.scala-sbt sbt 0.13.14-SNAPSHOT ...
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/sbt/0.13.14-SNAPSHOT/jars/sbt.jar ...
	[SUCCESSFUL ] org.scala-sbt#sbt;0.13.14-SNAPSHOT!sbt.jar (3ms)
downloading file:/tmp/offline/global/preloaded/org.scala-lang/scala-library/2.10.6/jars/scala-library.jar ...
	[SUCCESSFUL ] org.scala-lang#scala-library;2.10.6!scala-library.jar (69ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/main/0.13.14-SNAPSHOT/jars/main.jar ...
	[SUCCESSFUL ] org.scala-sbt#main;0.13.14-SNAPSHOT!main.jar (20ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/compiler-interface/0.13.14-SNAPSHOT/jars/compiler-interface.jar ...
	[SUCCESSFUL ] org.scala-sbt#compiler-interface;0.13.14-SNAPSHOT!compiler-interface.jar (3ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/actions/0.13.14-SNAPSHOT/jars/actions.jar ...
	[SUCCESSFUL ] org.scala-sbt#actions;0.13.14-SNAPSHOT!actions.jar (4ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/main-settings/0.13.14-SNAPSHOT/jars/main-settings.jar ...
	[SUCCESSFUL ] org.scala-sbt#main-settings;0.13.14-SNAPSHOT!main-settings.jar (6ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/interface/0.13.14-SNAPSHOT/jars/interface.jar ...
	[SUCCESSFUL ] org.scala-sbt#interface;0.13.14-SNAPSHOT!interface.jar (2ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/io/0.13.14-SNAPSHOT/jars/io.jar ...
	[SUCCESSFUL ] org.scala-sbt#io;0.13.14-SNAPSHOT!io.jar (4ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/ivy/0.13.14-SNAPSHOT/jars/ivy.jar ...
	[SUCCESSFUL ] org.scala-sbt#ivy;0.13.14-SNAPSHOT!ivy.jar (15ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/logging/0.13.14-SNAPSHOT/jars/logging.jar ...
	[SUCCESSFUL ] org.scala-sbt#logging;0.13.14-SNAPSHOT!logging.jar (3ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/logic/0.13.14-SNAPSHOT/jars/logic.jar ...
	[SUCCESSFUL ] org.scala-sbt#logic;0.13.14-SNAPSHOT!logic.jar (2ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/process/0.13.14-SNAPSHOT/jars/process.jar ...
	[SUCCESSFUL ] org.scala-sbt#process;0.13.14-SNAPSHOT!process.jar (3ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/run/0.13.14-SNAPSHOT/jars/run.jar ...
	[SUCCESSFUL ] org.scala-sbt#run;0.13.14-SNAPSHOT!run.jar (3ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/command/0.13.14-SNAPSHOT/jars/command.jar ...
	[SUCCESSFUL ] org.scala-sbt#command;0.13.14-SNAPSHOT!command.jar (4ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/launcher-interface/1.0.0-M1/jars/launcher-interface.jar ...
	[SUCCESSFUL ] org.scala-sbt#launcher-interface;1.0.0-M1!launcher-interface.jar (2ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/classpath/0.13.14-SNAPSHOT/jars/classpath.jar ...
	[SUCCESSFUL ] org.scala-sbt#classpath;0.13.14-SNAPSHOT!classpath.jar (2ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/completion/0.13.14-SNAPSHOT/jars/completion.jar ...
	[SUCCESSFUL ] org.scala-sbt#completion;0.13.14-SNAPSHOT!completion.jar (3ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/api/0.13.14-SNAPSHOT/jars/api.jar ...
	[SUCCESSFUL ] org.scala-sbt#api;0.13.14-SNAPSHOT!api.jar (3ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/compiler-integration/0.13.14-SNAPSHOT/jars/compiler-integration.jar ...
	[SUCCESSFUL ] org.scala-sbt#compiler-integration;0.13.14-SNAPSHOT!compiler-integration.jar (3ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/compiler-ivy-integration/0.13.14-SNAPSHOT/jars/compiler-ivy-integration.jar ...
	[SUCCESSFUL ] org.scala-sbt#compiler-ivy-integration;0.13.14-SNAPSHOT!compiler-ivy-integration.jar (2ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/relation/0.13.14-SNAPSHOT/jars/relation.jar ...
	[SUCCESSFUL ] org.scala-sbt#relation;0.13.14-SNAPSHOT!relation.jar (2ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/task-system/0.13.14-SNAPSHOT/jars/task-system.jar ...
	[SUCCESSFUL ] org.scala-sbt#task-system;0.13.14-SNAPSHOT!task-system.jar (2ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/tasks/0.13.14-SNAPSHOT/jars/tasks.jar ...
	[SUCCESSFUL ] org.scala-sbt#tasks;0.13.14-SNAPSHOT!tasks.jar (3ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/tracking/0.13.14-SNAPSHOT/jars/tracking.jar ...
	[SUCCESSFUL ] org.scala-sbt#tracking;0.13.14-SNAPSHOT!tracking.jar (2ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/testing/0.13.14-SNAPSHOT/jars/testing.jar ...
	[SUCCESSFUL ] org.scala-sbt#testing;0.13.14-SNAPSHOT!testing.jar (2ms)
downloading file:/tmp/offline/global/preloaded/org.scala-lang/scala-compiler/2.10.6/jars/scala-compiler.jar ...
	[SUCCESSFUL ] org.scala-lang#scala-compiler;2.10.6!scala-compiler.jar (95ms)
downloading file:/tmp/offline/global/preloaded/org.scala-lang/scala-reflect/2.10.6/jars/scala-reflect.jar ...
	[SUCCESSFUL ] org.scala-lang#scala-reflect;2.10.6!scala-reflect.jar (22ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/control/0.13.14-SNAPSHOT/jars/control.jar ...
	[SUCCESSFUL ] org.scala-sbt#control;0.13.14-SNAPSHOT!control.jar (1ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/collections/0.13.14-SNAPSHOT/jars/collections.jar ...
	[SUCCESSFUL ] org.scala-sbt#collections;0.13.14-SNAPSHOT!collections.jar (4ms)
downloading file:/tmp/offline/global/preloaded/jline/jline/2.13/jars/jline.jar ...
	[SUCCESSFUL ] jline#jline;2.13!jline.jar (3ms)
downloading file:/tmp/offline/global/preloaded/org.fusesource.jansi/jansi/1.11/jars/jansi.jar ...
	[SUCCESSFUL ] org.fusesource.jansi#jansi;1.11!jansi.jar (2ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/classfile/0.13.14-SNAPSHOT/jars/classfile.jar ...
	[SUCCESSFUL ] org.scala-sbt#classfile;0.13.14-SNAPSHOT!classfile.jar (2ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/incremental-compiler/0.13.14-SNAPSHOT/jars/incremental-compiler.jar ...
	[SUCCESSFUL ] org.scala-sbt#incremental-compiler;0.13.14-SNAPSHOT!incremental-compiler.jar (4ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/compile/0.13.14-SNAPSHOT/jars/compile.jar ...
	[SUCCESSFUL ] org.scala-sbt#compile;0.13.14-SNAPSHOT!compile.jar (4ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/persist/0.13.14-SNAPSHOT/jars/persist.jar ...
	[SUCCESSFUL ] org.scala-sbt#persist;0.13.14-SNAPSHOT!persist.jar (3ms)
downloading file:/tmp/offline/global/preloaded/org.scala-tools.sbinary/sbinary_2.10/0.4.2/jars/sbinary_2.10.jar ...
	[SUCCESSFUL ] org.scala-tools.sbinary#sbinary_2.10;0.4.2!sbinary_2.10.jar (2ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/cross/0.13.14-SNAPSHOT/jars/cross.jar ...
	[SUCCESSFUL ] org.scala-sbt#cross;0.13.14-SNAPSHOT!cross.jar (1ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt.ivy/ivy/2.3.0-sbt-48dd0744422128446aee9ac31aa356ee203cc9f4/jars/ivy.jar ...
	[SUCCESSFUL ] org.scala-sbt.ivy#ivy;2.3.0-sbt-48dd0744422128446aee9ac31aa356ee203cc9f4!ivy.jar (10ms)
downloading file:/tmp/offline/global/preloaded/com.jcraft/jsch/0.1.50/jars/jsch.jar ...
	[SUCCESSFUL ] com.jcraft#jsch;0.1.50!jsch.jar (3ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/serialization_2.10/0.1.2/jars/serialization_2.10.jar ...
	[SUCCESSFUL ] org.scala-sbt#serialization_2.10;0.1.2!serialization_2.10.jar (3ms)
downloading file:/tmp/offline/global/preloaded/org.scala-lang.modules/scala-pickling_2.10/0.10.1/jars/scala-pickling_2.10.jar ...
	[SUCCESSFUL ] org.scala-lang.modules#scala-pickling_2.10;0.10.1!scala-pickling_2.10.jar (7ms)
downloading file:/tmp/offline/global/preloaded/org.json4s/json4s-core_2.10/3.2.10/jars/json4s-core_2.10.jar ...
	[SUCCESSFUL ] org.json4s#json4s-core_2.10;3.2.10!json4s-core_2.10.jar (5ms)
downloading file:/tmp/offline/global/preloaded/org.spire-math/jawn-parser_2.10/0.6.0/jars/jawn-parser_2.10.jar ...
	[SUCCESSFUL ] org.spire-math#jawn-parser_2.10;0.6.0!jawn-parser_2.10.jar (3ms)
downloading file:/tmp/offline/global/preloaded/org.spire-math/json4s-support_2.10/0.6.0/jars/json4s-support_2.10.jar ...
	[SUCCESSFUL ] org.spire-math#json4s-support_2.10;0.6.0!json4s-support_2.10.jar (2ms)
downloading file:/tmp/offline/global/preloaded/org.scalamacros/quasiquotes_2.10/2.0.1/jars/quasiquotes_2.10.jar ...
	[SUCCESSFUL ] org.scalamacros#quasiquotes_2.10;2.0.1!quasiquotes_2.10.jar (6ms)
downloading file:/tmp/offline/global/preloaded/org.json4s/json4s-ast_2.10/3.2.10/jars/json4s-ast_2.10.jar ...
	[SUCCESSFUL ] org.json4s#json4s-ast_2.10;3.2.10!json4s-ast_2.10.jar (3ms)
downloading file:/tmp/offline/global/preloaded/com.thoughtworks.paranamer/paranamer/2.6/jars/paranamer.jar ...
	[SUCCESSFUL ] com.thoughtworks.paranamer#paranamer;2.6!paranamer.jar (2ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/cache/0.13.14-SNAPSHOT/jars/cache.jar ...
	[SUCCESSFUL ] org.scala-sbt#cache;0.13.14-SNAPSHOT!cache.jar (2ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/test-agent/0.13.14-SNAPSHOT/jars/test-agent.jar ...
	[SUCCESSFUL ] org.scala-sbt#test-agent;0.13.14-SNAPSHOT!test-agent.jar (1ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/test-interface/1.0/jars/test-interface.jar ...
	[SUCCESSFUL ] org.scala-sbt#test-interface;1.0!test-interface.jar (1ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/apply-macro/0.13.14-SNAPSHOT/jars/apply-macro.jar ...
	[SUCCESSFUL ] org.scala-sbt#apply-macro;0.13.14-SNAPSHOT!apply-macro.jar (3ms)
downloading file:/tmp/offline/global/preloaded/org.scala-sbt/template-resolver/0.1/jars/template-resolver.jar ...
	[SUCCESSFUL ] org.scala-sbt#template-resolver;0.1!template-resolver.jar (3ms)
:: retrieving :: org.scala-sbt#boot-app
	confs: [default]
	50 artifacts copied, 0 already retrieved (17652kB/59ms)
Getting Scala 2.10.6 (for sbt)...
downloading file:/tmp/offline/global/preloaded/org.scala-lang/jline/2.10.6/jars/jline.jar ...
	[SUCCESSFUL ] org.scala-lang#jline;2.10.6!jline.jar (3ms)
downloading file:/tmp/offline/global/preloaded/org.fusesource.jansi/jansi/1.4/jars/jansi.jar ...
	[SUCCESSFUL ] org.fusesource.jansi#jansi;1.4!jansi.jar (3ms)
:: retrieving :: org.scala-sbt#boot-scala
	confs: [default]
	5 artifacts copied, 0 already retrieved (24494kB/54ms)
[info] Set current project to offline (in build file:/private/tmp/offline/)
java -jar sbt-launch.jar -Dsbt.ivy.home=/tmp/offline/ivy.home  exit  10.66s user 0.69s system 323% cpu 3.508 total

The second run was 5s.

$ time java -jar sbt-launch.jar -Dsbt.ivy.home=/tmp/offline/ivy.home -Dsbt.global.base=/tmp/offline/global exit
[info] Set current project to offline (in build file:/private/tmp/offline/)
java -jar sbt-launch.jar -Dsbt.ivy.home=/tmp/offline/ivy.home  exit  5.48s user 0.34s system 268% cpu 2.167 total

Ref #2518

Copy link
Member

@dwijnand dwijnand left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.. pending Travis CI passing

@dwijnand
Copy link
Member

dwijnand commented Mar 7, 2017

There's a test to fix here, @eed3si9n.

@eed3si9n
Copy link
Member Author

eed3si9n commented Mar 8, 2017

Got around to fixing these tests.

@dwijnand
Copy link
Member

dwijnand commented Mar 8, 2017

[info] [error] (*:checkPom) Repository should not be exported: local-preloaded: file:/tmp/sbt_f8f69a13/pom-advanced/global/preloaded/
[info] [error] Total time: 0 s, completed Mar 8, 2017 5:53:13 AM
[error] x dependency-management / pom-advanced

@dwijnand
Copy link
Member

dwijnand commented Mar 8, 2017

Only fails when running with the maven resolver plugin, i.e

mavenResolverPluginTest:scripted dependency-management/pom-advanced

@dwijnand dwijnand removed their assignment Mar 8, 2017
@jastice
Copy link
Contributor

jastice commented Mar 8, 2017

Great little change that should make it easier to package up a "batteries included" bundle of IntelliJ+sbt (https://youtrack.jetbrains.com/issue/SCL-11406)

@eed3si9n eed3si9n deleted the wip/offline_boot branch March 8, 2017 18:22
@dpratt
Copy link

dpratt commented Mar 14, 2017

This looks awesome - can you share how you used sbt-export-repo to produce the pre-primed cache?

@eed3si9n
Copy link
Member Author

@dpratt It's here sbt/sbt-launcher-package#145. btw it's a preloaded local repo, not a cache (~/.ivy2/cache, which is an imple detail of Ivy).

@vincentwoo
Copy link

I'm having trouble getting this working from installing via the universal package (tgz file). The tgz unpacks into bin conf and lib, but on an initial run I can't seem to get sbt to use the local-preloaded directory under lib. Is there some setup step I'm missing?

@dpratt
Copy link

dpratt commented Apr 13, 2017 via email

@vincentwoo
Copy link

Hm, yeah. I also manually synced it beforehand too. In either case, sbt still tries to download itself. Do I need to set some other repository flag to get it to do the right thing?

@dpratt
Copy link

dpratt commented Apr 14, 2017 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants