java-ant-2
ayvango 13 апреля, 2011 - 10:48
Пытаюсь воспользоваться java-pkg-2 java-ant-2 eclassами для написания личного ebuild.
Нашёл соответствующий хелп. Согласно предложенному там workflow решил написать простенький ebuild и расширять его до тех пор, пока он не заработает.
Сначала я получил ошибку
Problem: failed to create task or type antlib:org.apache.ivy.ant:configure Cause: The name is undefined.
Не унывая, я добавил в список зависимостей dev-java/ant-ivy. Ошибка, к сожалению, никуда не делась, оказалось что к тому времени ant-ivy уже был установлен и процесс сборки от замены портежа не изменился. Судя по сообщению об ошибке, установщик ищет ant-ivy внутри /usr/share/ant-core/lib, а equery files говорит, что он стоит рядом - в /usr/share/ant-ivy-2
Может быть я забыл указать какую-нибудь переменную, чтобы ivy был корректно добавлен в class-path?
Прилагаю ebuild:
EAPI=2 inherit eutils java-pkg-2 java-ant-2 subversion ESVN_REPO_URI="https://svn.mucommander.com/mucommander/trunk" ESVN_PROJECT="${PN}" DESCRIPTION="Cross-platform filemanager in Java" HOMEPAGE="www.mucommander.com" LICENSE="GPL-3" SLOT="0" KEYWORDS="~amd64 ~x86" IUSE="" COMMON_DEP="" RDEPEND="${COMMON_DEP} >=virtual/jre-1.5" DEPEND="${COMMON_DEP} dev-java/ant-ivy >=virtual/jdk-1.5" src_install() { java-pkg_newjar tmp/${PN}-normal.jar ${PN}.jar java-pkg_dolauncher }
»
- Для комментирования войдите или зарегистрируйтесь
ANT_TASK= ???
ANT_TASK= ???
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
ANT_TASKS
Поправил
Ничего не изменилось. Ошибка на том же месте, не находится ivy.
Попробовал использовать WANT_ANT_TASKS. Прописывал туда и ivy, и ivy2 - всё одно, ebuild manifest падает с ошбикой, ругается на то, что это ivy не является корректным выбором для ANT_TASKS. То ли и в самом деле ivy не имеет отношения к ant-tasks, то ли зовётся как-то иначе
update: Прокатило название ant-ivy, ebuild нормально подписался, но всё равно при сборке падает на том же месте. Требуемый файл лежит на своём месте и не затёрт по случайности.
freenode.net IRC #gentoo-java
freenode.net IRC #gentoo-java
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
nix-интерфейс
Смог разобраться самостоятельно. Но в очередной раз вспомнил байку про интерфейсы в стиле nix.
На самом деле там со всех сторон минные поля.
Во-первых, WANT_ANT_TASKS оперирует не именами тасков, а именами пакета портежей. Соответственно с его помощью можно задать зависимости сборки.Но поскольку имена пакетов портежей не совпадают с именами самих подзадач анта, то он соответствующую переменную портит. Поэтому я просто задал зависимости в переменной депенда и попытался задать отдельно список использованных подзадач анта через переменную ANT_TASKS
Во-вторых, тут меня тоже ничего не вышло. Это переменная странным образом игнорируется. Пока я перебирал разные названия (ant-ivy,ivy,ivy2,ant2-ivy) он исправно выводил ошибки об отсутствии пакетов с означенными именами. Когда же я наконец-то подобрал правильное имя ant-ivy-2, то ошибка исчезла, а строчка начала игнорироваться - не меняла никаким образом CLASSPATH.
Вот так вот. Но в конце-концов я в своём переборе добрался до переменной EANT_ANT_TASKS и её-то емёрж нормально сожрал. Как, почему - не знаю. По факту два средства из трёх оказались глючными, одно работающим. Но зачем вообще добавлять глюики, когда можно оставить один нормально работающий вариант. И почему нельзя было на эти глюки на странице описания екласса?
В общем, чем больше пользуюсь линуксом, тем больше удивляюсь откуда там берутся пользователи-непрограммисты.
P.S. итоговый рабочий ebuild:
P.P.S. и что-то я java-ant-2.eclass не доверяю. У проекта куча зависимостей, а полученные ebuild ни одну из этих зависимостей не вытянул, а собрал статический jar. Видимо автоматизация не до конца прошла
а полученные ebuild ни одну
а я удивляюсь, почему пользователи разучились документацию ( если уж пишете ебилд) - http://www.gentoo.org/proj/en/java/java-devel.xml ;
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
Читаем-читаем
Ну почему же, эту доку я читал. И даже руководствовался ею когда прописывал пути для инсталляции.
Речь идёт о другом. Вот у нас есть ivy.xml, которая задаёт фактически зависимости пакета (ну помимо всяких zipов для распаковки, jvm для запуска и прочего окружения). В этом ivy разработчики уже постарались записать все необходимые данные для установки пакетов.
Получается, что ivy - независимая пакетная система. А мы её должны полностью дублировать, прописывая ебилды для портежей.
Помимо ivy у нас есть ещё множество таких систем: PyPi для питона, Gems для руби, cabal для хаскеля. Нет единой системы репозиториев только для олдовых языков вроде си и фортрана, ради которых, собственно, изначально и создались пакетные системы общего назначения. И можно понять разработчиков этих программ на современных языках, которые выбирают родную пакетную систему со всеми ещё преимуществами изкаробочной кроссплатформенности.
Я не понимаю другого - почему gentoo пошло по пути переписывания этих пакетов, вместо прямой интеграции с соответствующими пакетными системами, тем более что все они исповедуют подход build from source.
В общем, меня просто поражает сколь непредусмотрительно устроен мир и генту в частности.
меня просто поражает сколь
Обычно такие люди получают Дарвиновскую премию .
Итак, у нас есть 20 джава-пакетов на этом вашем ivy - результат работы этого и аналогичных поделий - сломанная система, сожранная память, убитые апликухи, кучи дырок в секьюрити.
Почему ? - джава-девы в части пакетинга - идиоты через одного, тянут все что надо и не надо со всоим пакетом:
Как пример, если юзать их поделия, то в системе наверняка окажется куча jodbc , пачка hsqldb всяких разных версий, к каждому пакету по ssl, не говоря про то, что они притянут по эклипсу к каждому пакету. Теперь всю эту хню запусакем - в памяти висит 100500 jodbc, 20 hsqldb, 10 элипсов. Хотите такую систему - юзайте винду, там все примерно так уже лет 20.
Я же предпочту емерге.
П.С Трудная разработка ебилдов ? так проблемы индейцев шерифа нииколышат.
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
очень улыбнуло :-) очень в
очень улыбнуло :-) очень в стиле java.
Сборщик мусора он да, несколько де-дисцциплинирует, имхо :-)
сишники так бы не сделали.
[сообщение не относится к топеку, а лишь коммент к посту выше]
пожалуй соглашусь относительно java-devов
Сейчас зачекаутил svn jitsi - net-im. 265 метров исходников, среди которых куча библиотек винды, линукса, мака (в 32 битном варианте и 64 битном варианте), jarники всех явовых зависимостей. В gentoo-style тот проект только переписыванием исходников можно превратить.
да лана, если повтыкать в
да лана, если повтыкать в существующие ебилды - то вполне ничего не надо переписывать, ну может только пути в build.xml
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)
может быть полезным
может быть полезным http://www.enterra.ru/blog/automation_builds_android_applications/
Кому ?
Кому ?
Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)