Существует ли в природе Scala Version Manager — по аналогии с Ruby Version Manager — RVM и т.п.
Т.е. есть задача иметь возможность поставить батником нужную версию. Новой версией не собираются новые исходники (вернее есть jar классы сторонней scala библиотеки которая не собирается под 2.10 — simplex3d)
Под OSX brew не умеет без шаманства ставить старые версии
Компиляция идет через просто запуск scala с параметрами.
Или можно как нибудь scala сказать про режим совместимости со старой версией?
Здравствуйте, Young, Вы писали:
Y>Т.е. есть задача иметь возможность поставить батником нужную версию. Новой версией не собираются новые исходники (вернее есть jar классы сторонней scala библиотеки которая не собирается под 2.10 — simplex3d) Y>Под OSX brew не умеет без шаманства ставить старые версии
У тебя просто не правильный менеждер пакетов:
astavonin:/Users/../astavonin: port search scala
...
scala29 @2.9.2 (lang, java)
The Scala Programming Language
scala210 @0.0.2.10.0-M4 (lang, java)
The Scala Programming Language
scala_select @0.1 (sysutils)
common files for selecting default scala compiler
...
Здравствуйте, kaa.python, Вы писали:
KP>Здравствуйте, Young, Вы писали:
Y>>Т.е. есть задача иметь возможность поставить батником нужную версию. Новой версией не собираются новые исходники (вернее есть jar классы сторонней scala библиотеки которая не собирается под 2.10 — simplex3d) Y>>Под OSX brew не умеет без шаманства ставить старые версии
KP>У тебя просто не правильный менеждер пакетов:
Я понимаю И я думаю скорее всего я даже через brew поставлю нужную версию.
Вопрос именно в наличии SVM — как вы переключаете версии scala налету? Т.е. вот есть проект которые для такой версии, а есть проект который для такой версии. Не переустанавливать же системую scala всегда?
Здравствуйте, kaa.python, Вы писали:
KP>Здравствуйте, Young, Вы писали:
Y>>Т.е. есть задача иметь возможность поставить батником нужную версию. Новой версией не собираются новые исходники (вернее есть jar классы сторонней scala библиотеки которая не собирается под 2.10 — simplex3d) Y>>Под OSX brew не умеет без шаманства ставить старые версии
KP>У тебя просто не правильный менеждер пакетов:
Кстати, разобрался с brew. После команды brew tap homebrew/versions, появляются версии нужные при brew search и brew install
Так что сейчас буду пробовать.
P.S. От port в свое время отошел к brew — не нравилось что все таки port все хранит в системных директориях и не всегда корректно делает uninstall
Здравствуйте, Young, Вы писали:
Y>Вопрос именно в наличии SVM — как вы переключаете версии scala налету? Т.е. вот есть проект которые для такой версии, а есть проект который для такой версии. Не переустанавливать же системую scala всегда?
Y>Ответ, нет такого не существует меня тоже устроит
SBT умеет компилять под несколько версий скалы сразу. Там даже артефакты генерятся с именами artifactName_scalaVersion-artifactVersion.jar. Но по подробностям не подскажу, не юзал. Недопонял что такое "на лету", может это и не оно, но это это общепринятый в scala-сообществе подход. Все скаловские библиотеки и фреймворки деплоятся в репы сразу для несколько версий скалы с такими вот инфиксами.
Y>Вопрос именно в наличии SVM — как вы переключаете версии scala налету? Т.е. вот есть проект которые для такой версии, а есть проект который для такой версии. Не переустанавливать же системую scala всегда?
Зачем что-то переустанавливать? Есть SBT который можно отконфигурить для работы с нужной версией. Ему только JVM нужна. Скала с репозиториев тянется.
Здравствуйте, RomikT, Вы писали:
RT>sbt, gradle и даже наверное maven в состоянии компилировать нужной версией скалы независимо от того, что установлено глобально.
Здравствуйте, Young, Вы писали:
Y>Вопрос именно в наличии SVM — как вы переключаете версии scala налету? Т.е. вот есть проект которые для такой версии, а есть проект который для такой версии. Не переустанавливать же системую scala всегда?
Я в Мавене указывал нужную мне версию Скалы. В итоге, даже пакетный менеджер оставался не при делах.
Здравствуйте, Alyash77, Вы писали:
Y>>Вопрос именно в наличии SVM — как вы переключаете версии scala налету? Т.е. вот есть проект которые для такой версии, а есть проект который для такой версии. Не переустанавливать же системую scala всегда? A>Зачем что-то переустанавливать? Есть SBT который можно отконфигурить для работы с нужной версией. Ему только JVM нужна. Скала с репозиториев тянется.
Ок, но это только для проектов настроенных собираться через SBT? Или через SBT установить в систему нужную версию scala?
Ну чтобы запуск в консоле "scala -version" выдавал нужное?
Здравствуйте, Young, Вы писали:
Y>Ок, но это только для проектов настроенных собираться через SBT? Или через SBT установить в систему нужную версию scala? Y>Ну чтобы запуск в консоле "scala -version" выдавал нужное?
Y>Ок, но это только для проектов настроенных собираться через SBT? Или через SBT установить в систему нужную версию scala?
Зачем что-то куда-то устанавливать? У меня несколько десятков либ на скале и пол дюжины довольно больших проектов.
ну вот проще мне на новой машине сделать(при условии наличия jvm)
git clone/git pull
./sbt "project bla-bla" "compile"
При этом для даного проекта будет использоваться нужная версия подгружения с инета на старте сбт
Что именно вы пытаетесь решить глобальной установкой?
Y>Ну чтобы запуск в консоле "scala -version" выдавал нужное?
Зачем это на практике нужно?
Здравствуйте, kaa.python, Вы писали:
KP>Здравствуйте, Young, Вы писали:
Y>>Ок, но это только для проектов настроенных собираться через SBT? Или через SBT установить в систему нужную версию scala? Y>>Ну чтобы запуск в консоле "scala -version" выдавал нужное?
KP>Для мавена это выглядит так: KP>
KP>В итоге, он сам загрузит нужную версию компилятора из репозитория и соберет твой код им.
Понятно. Но для этого нужне marven и т.п. Сейчас же компиляция и сбор проекта это вызов "scalac", "scala" и все. Мне хочется разрулит именно установкой scala в систему.
Времени разбираться глубоко в marven, sbt и т.п. — и создавать проект там нету.
Собственно, решение через brew я сам нашел.
А SVM в отличии от RVM нету — ибо в scala исторически все собирают проекты через различные системы сборки аля marven и sbt — как я понимаю наследие java
Здравствуйте, Alyash77, Вы писали:
Y>>Ок, но это только для проектов настроенных собираться через SBT? Или через SBT установить в систему нужную версию scala? A>Зачем что-то куда-то устанавливать? У меня несколько десятков либ на скале и пол дюжины довольно больших проектов. A>ну вот проще мне на новой машине сделать(при условии наличия jvm) A>git clone/git pull A>./sbt "project bla-bla" "compile" A>При этом для даного проекта будет использоваться нужная версия подгружения с инета на старте сбт
Для этого требуется чтобы sbt проект был. Его нету.
A>Что именно вы пытаетесь решить глобальной установкой?
Y>>Ну чтобы запуск в консоле "scala -version" выдавал нужное? A>Зачем это на практике нужно?
Сейчас запуск нужного скрипта это запуск scalac и парочкой параметров и scala. Заменять эти две строчки на SBT, marven и т.п. видится несколько громоздким и лишним.
Здравствуйте, Young, Вы писали:
Y>Понятно. Но для этого нужне marven и т.п. Сейчас же компиляция и сбор проекта это вызов "scalac", "scala" и все. Мне хочется разрулит именно установкой scala в систему. Y>Времени разбираться глубоко в marven, sbt и т.п. — и создавать проект там нету.
Ну тогда ты просто сделаешь "еще один msven/sbt" только с игровыми автоматами и девочками.
Y>Собственно, решение через brew я сам нашел. Y>А SVM в отличии от RVM нету — ибо в scala исторически все собирают проекты через различные системы сборки аля marven и sbt — как я понимаю наследие java
Подобные системы сборок реально удобны. Как ты иначе будешь собирать-то? Ну, разве что, Makefile писать какой-то или bash-скрипт
Здравствуйте, kaa.python, Вы писали:
KP>Здравствуйте, Young, Вы писали:
Y>>Понятно. Но для этого нужне marven и т.п. Сейчас же компиляция и сбор проекта это вызов "scalac", "scala" и все. Мне хочется разрулит именно установкой scala в систему. Y>>Времени разбираться глубоко в marven, sbt и т.п. — и создавать проект там нету.
KP>Ну тогда ты просто сделаешь "еще один msven/sbt" только с игровыми автоматами и девочками.
Нее...нее... sbt и прочее, оно как бы если зависимости, библиотеки. А когда это один scala файл и к нему 3 jar файла, зачем оно?
Y>>Собственно, решение через brew я сам нашел. Y>>А SVM в отличии от RVM нету — ибо в scala исторически все собирают проекты через различные системы сборки аля marven и sbt — как я понимаю наследие java
KP>Подобные системы сборок реально удобны. Как ты иначе будешь собирать-то? Ну, разве что, Makefile писать какой-то или bash-скрипт
Да, это батник в котором написанно
scalac -javaextdirs bla some.scala -d bla
scala -J-Xmx2g -javaextdirs bla -classpath bla --outpath bla
Считаешь что его все же нужно заменить на marven/sbt и прочее? Не уверен.
Y>Для этого требуется чтобы sbt проект был. Его нету.
и в интернете тоже?
Y>Сейчас запуск нужного скрипта это запуск scalac и парочкой параметров и scala. Заменять эти две строчки на SBT, marven и т.п. видится несколько громоздким и лишним.
если это https://github.com/harrah/xsbt/wiki/Quick-Configuration-Examples
для изменения версии
scalaVersion := "2.9.0-SNAPSHOT"
для вас сложнее чем писать свой велосипед то посоветовать вряд ли что-то можно. В результате у вас получится тот же sbt...
Здравствуйте, Alyash77, Вы писали:
Y>>Для этого требуется чтобы sbt проект был. Его нету. A>и в интернете тоже?
Y>>Сейчас запуск нужного скрипта это запуск scalac и парочкой параметров и scala. Заменять эти две строчки на SBT, marven и т.п. видится несколько громоздким и лишним. A>если это A>https://github.com/harrah/xsbt/wiki/Quick-Configuration-Examples A>для изменения версии A>scalaVersion := "2.9.0-SNAPSHOT"
A>для вас сложнее чем писать свой велосипед то посоветовать вряд ли что-то можно. В результате у вас получится тот же sbt...
Ээээ... Ну холивар же.
Я правда считаю когда размер make файл (конфигурационного и т.п. назовем это так) для запуска скрипта больше чем сам скрипт, то что-то тут не так. Особенно когда знаешь что скрипт не будет изменятся.
Т.е. на 500к строк c++ кода, который должен собираться под ряд платформ, с десятком результирующих бинарников — я понимаю зачем нужен makefile на 5к строчек. Но когда это скрипт на десяток строчек.
Мне когда c++ программу скомпилировать и запустить нужно я пишу clang bla.cpp & ./a.out и все, а не пишу makefile для этого.
Когда я пишу ruby скрипт, я тоже запускаю его как ruby bla.rb, установив один раз на сервер нужную версию ruby
Когда я пишу java скрипт, я тоже запускаю его через javac & java — а не тащу туда ant/marven и прочее.
Зачем? Будут зависимости, будет хитрая процедура сборки — тогда ага.
Т.е. менять трехстрочкин brew install scala29 & scalac & scala на установку SBT, создание sbt проекта и т.п. мне не видится нужным.
Вы правда когда вам на скала нужно запустить небольшой скрипт генерите sbt проект всегда?
Y>Вопрос именно в наличии SVM — как вы переключаете версии scala налету? Т.е. вот есть проект которые для такой версии, а есть проект который для такой версии. Не переустанавливать же системую scala всегда? Y>Ответ, нет такого не существует меня тоже устроит
А зачем Скалу вообще куда-то глобально ставить?
Если речь идёт про запуск приложения, то Скала — это ещё одна библиотека вместе с другими библиотеками приложения
Если речь идёт про компиляцию — то используй Maven или SBT, которые сами скачают и соберут под нужную версию (или под несколько сразу)
Руби-вэй с его гемсами, которые сделаны паралельно системному менеджеру пакетов — говно.
Y>Когда я пишу ruby скрипт, я тоже запускаю его как ruby bla.rb, установив один раз на сервер нужную версию ruby
Руби — отстой редкостный с бредовой системой версий и пакетов. Не надо его подходы тащить дальше. Забудте как страшный сон.
Y>Т.е. менять трехстрочкин brew install scala29 & scalac & scala на установку SBT, создание sbt проекта и т.п. мне не видится нужным.
вы вот раз в 10 больше строк уже против SBT написали — а свою проблему так и не решили.
Y>Вы правда когда вам на скала нужно запустить небольшой скрипт генерите sbt проект всегда?
Неа — я его копирую с другого проекта и имя сборки меняю Тем более что о-ужас-скрипт будет в пол-экрана вместе со всеми коментраиями