Существует ли в природе 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 проект всегда?
Неа — я его копирую с другого проекта и имя сборки меняю Тем более что о-ужас-скрипт будет в пол-экрана вместе со всеми коментраиями
Y>Т.е. менять трехстрочкин brew install scala29 & scalac & scala на установку SBT, создание sbt проекта и т.п. мне не видится нужным. Y>Вы правда когда вам на скала нужно запустить небольшой скрипт генерите sbt проект всегда?
А, так речь про скриптинг. Никогда не смотрел на Скалу в таком разрезе, всё время думал, что эта фича там чисто для быстрой проверки каких-нибудь идей, а не для продакшн.
Y>>Вопрос именно в наличии SVM — как вы переключаете версии scala налету? Т.е. вот есть проект которые для такой версии, а есть проект который для такой версии. Не переустанавливать же системую scala всегда? Y>>Ответ, нет такого не существует меня тоже устроит
Мы пошли на третий круг
A>А зачем Скалу вообще куда-то глобально ставить?
Чтобы писать scalac вместо /bla/bla/scalac
A>Если речь идёт про запуск приложения, то Скала — это ещё одна библиотека вместе с другими библиотеками приложения A>Если речь идёт про компиляцию — то используй Maven или SBT, которые сами скачают и соберут под нужную версию (или под несколько сразу)
Погодите, давайте отвлечемся от scala и поговорим про java. Вот есть у вас java скрипт из десятка строчек. Вам его нужно компилировать и запускать.
Я буду в консоле писать для этого javac & java. Ибо генерить build.xml (али другой конфигурационный файл для другой системы сборки) который по размеру больше чем сам исходный скрипт мне видиться лишним.
Как я понимаю все остальные участники обсуждения таки напишут (сгенерят build.xml).
A>Руби-вэй с его гемсами, которые сделаны паралельно системному менеджеру пакетов — говно.
Говно/не говно. Оно зависит от задачи. По мне так если задача скомпилировать и запустить скрипт — то java/scala гавно
Здравствуйте, Alyash77, Вы писали:
Y>>Когда я пишу ruby скрипт, я тоже запускаю его как ruby bla.rb, установив один раз на сервер нужную версию ruby A>Руби — отстой редкостный с бредовой системой версий и пакетов. Не надо его подходы тащить дальше. Забудте как страшный сон.
Y>>Т.е. менять трехстрочкин brew install scala29 & scalac & scala на установку SBT, создание sbt проекта и т.п. мне не видится нужным. A>вы вот раз в 10 больше строк уже против SBT написали — а свою проблему так и не решили.
Я уже решил, именно через пакетныый менеджер За неимением родного аналога rvm
Y>>Вы правда когда вам на скала нужно запустить небольшой скрипт генерите sbt проект всегда? A>Неа — я его копирую с другого проекта и имя сборки меняю Тем более что о-ужас-скрипт будет в пол-экрана вместе со всеми коментраиями
Отлично. А теперь представте, что другого проекта нет, о sbt вы только сейчас услышали. Но задача запустить scala скрипт все еще стоит
Ладно, давайте закругляться — а то классический анекдот получается про русский форум — спросишь как сделать что-то, а тебе в ответ расскажут что тебе это не нужно и вообще, что-то там гавно
A>А, так речь про скриптинг. Никогда не смотрел на Скалу в таком разрезе, всё время думал, что эта фича там чисто для быстрой проверки каких-нибудь идей, а не для продакшн.
Опустил так опустил
Скала отлично в продакшине живет (у меня второй год). AKKA/Lift/Play ну явно не для "проверки идей" на сакалу тянули.
Y>Отлично. А теперь представте, что другого проекта нет, о sbt вы только сейчас услышали. Но задача запустить scala скрипт все еще стоит
иду на github и тащу для примера вот это (первое что в поиске всплыло):
git clone https://github.com/scalamacros/sbt-example-paradise210
cd sbt-example-paradise210
sbt
compile
вычищаю чужие сорсы, заменив своими
правлю версию скалы на нужную и заливаю в репозиторий. Забыв о всяких пакетах, версиях, зависимостях, совместимостях ОС и тд
Вас этот вариант не устраиватет и Вы пишите скрипт, потом правите его, потом зависимости и версии либ меняете, потом он не запускается на другой ос, потом пишите ридми как установить правильную версию на правильной ос, потом опять оно не работает... оно вам вот такое надо?
Здравствуйте, Alyash77, Вы писали:
A>>А, так речь про скриптинг. Никогда не смотрел на Скалу в таком разрезе, всё время думал, что эта фича там чисто для быстрой проверки каких-нибудь идей, а не для продакшн.
A>Опустил так опустил A>Скала отлично в продакшине живет (у меня второй год). AKKA/Lift/Play ну явно не для "проверки идей" на сакалу тянули.
Речь про скриптинг, написали же. Хотя лично у меня и скриптинг на скале вовсю работает. К примеру, куча вспомогательного кода к SBT для сборки и инкрементального деплоймента проектов на ней. Не люблю, знаете ли, по сотне языков размазываться.
D>Речь про скриптинг, написали же. Хотя лично у меня и скриптинг на скале вовсю работает. К примеру, куча вспомогательного кода к SBT для сборки и инкрементального деплоймента проектов на ней. Не люблю, знаете ли, по сотне языков размазываться.
Скрипты/сборки — большой разницы по сути нету. Делать руками то что SBT делает автоматом(для версий скалы и зависимостей) не вижу смысла, кроме чисто академических/велосипедостроительных упражнений.
Y>Приветствую...
Y>Существует ли в природе Scala Version Manager — по аналогии с Ruby Version Manager — RVM и т.п.
Y>Т.е. есть задача иметь возможность поставить батником нужную версию. Новой версией не собираются новые исходники (вернее есть jar классы сторонней scala библиотеки которая не собирается под 2.10 — simplex3d) Y>Под OSX brew не умеет без шаманства ставить старые версии
Y>Компиляция идет через просто запуск scala с параметрами.
Y>Или можно как нибудь scala сказать про режим совместимости со старой версией?
Смысл в том, что SBT имеет несколько точек входа, в том числе скрипт scalas, умеющий запускать скрипты.
Один раз устанавливаем scalas (на странице написано, где взять).
Здравствуйте, Young, Вы писали:
Y>Считаешь что его все же нужно заменить на marven/sbt и прочее? Не уверен.
Я, обычно, для "проекта" из одного cpp файла пишу Makefile/CMakeLists. Всяк разрастись может, лучше сразу облегчить дальнейшую жизнь, чем потом исправлять ситуацию.
Здравствуйте, Elifant, Вы писали:
E>Я вижу про SBT уже много написали
E>Но на всякий случай упомяну про http://www.scala-sbt.org/release/docs/Detailed-Topics/Scripts E>Не вам, так другим пригодится.
E>Смысл в том, что SBT имеет несколько точек входа, в том числе скрипт scalas, умеющий запускать скрипты. E>Один раз устанавливаем scalas (на странице написано, где взять).