Java Policy: различия между версиями
Нет описания правки |
|||
Строка 3: | Строка 3: | ||
|responsible=viy}} | |responsible=viy}} | ||
== ALT Linux Java Policy: Требования к сборке java-приложений == | |||
__TOC__ | __TOC__ | ||
=== Необходимо соблюдать JPackage Policy === | |||
При упаковке приложений для сизифа '''необходимо''' соблюдать JPackage Policy. | При упаковке приложений для сизифа '''необходимо''' соблюдать JPackage Policy. | ||
Строка 16: | Строка 16: | ||
[[Java/JPackageSpecTemplate|JPackage Spec Template]] — шаблон spec-файла для java-приложений, адаптированный для сизифа. | [[Java/JPackageSpecTemplate|JPackage Spec Template]] — шаблон spec-файла для java-приложений, адаптированный для сизифа. | ||
=== Необходимо обеспечивать максимальную запускаемость на разных JVM === | |||
11.03.2006 | 11.03.2006 | ||
Строка 31: | Строка 30: | ||
{{конец цитаты}} | {{конец цитаты}} | ||
{{начало цитаты|источник=viy}} | {{начало цитаты|источник=viy}} | ||
это актуально всегда, только сейчас у нас наименьшая | это актуально всегда, только сейчас у нас наименьшая JVM — это java-1.5.0 sun. | ||
соответственно, фраза выглядит теперь так: source и target в значении 1.5 или меньше. | соответственно, фраза выглядит теперь так: source и target в значении 1.5 или меньше. | ||
если пакет использует нововведения Java SE 6, то source и target в значении 1.6. | если пакет использует нововведения Java SE 6, то source и target в значении 1.6. | ||
Строка 38: | Строка 37: | ||
{{конец цитаты}} | {{конец цитаты}} | ||
=== Необходимо избегать зависимостей на конкретную JVM === | |||
==== Установочные зависимости. ==== | |||
viy: явные зависимости Requires: java-X.Y.Z-vendor это ЗЛО. | viy: явные зависимости Requires: java-X.Y.Z-vendor это ЗЛО. | ||
В пакете единственно допустимы зависимости вида | В пакете единственно допустимы зависимости вида | ||
Строка 54: | Строка 53: | ||
Requires: java. | Requires: java. | ||
==== Сборочные зависимости. ==== | |||
viy: явные зависимости BuildRequires: java-X.Y.Z-vendor-devel это ЗЛО. | viy: явные зависимости BuildRequires: java-X.Y.Z-vendor-devel это ЗЛО. | ||
Рекомендуется всегда собирать программы компилятором наименьшей подходящей версии. | Рекомендуется всегда собирать программы компилятором наименьшей подходящей версии. | ||
Строка 71: | Строка 70: | ||
BuildRequires: java-devel >= 1.6.0 | BuildRequires: java-devel >= 1.6.0 | ||
=== Пакеты из репозиториев jpackage.org желательно сопровождать роботом. === | |||
'''Не желательно''' собирать в Сизиф java-пакеты из репозиториев jpackage.org а также fedora.org вручную. | '''Не желательно''' собирать в Сизиф java-пакеты из репозиториев jpackage.org а также fedora.org вручную. | ||
Для этого есть робот сопровождения. Его можно взять в git, viy/packages/jppimport.git. | Для этого есть робот сопровождения. Его можно взять в git, viy/packages/jppimport.git. | ||
=== Использование сторонних бинарных сборок крайне не рекомендуется. === | |||
Крайне не рекомендуется использование бинарных кодов, взятых откуда либо кроме Сизифа. | |||
* Пакеты должны собираться из исходных текстов, если это позволяет лицензия. | |||
Если пакет не собран из исходных текстов, его родное место в Дедале. | |||
* Пакеты не должны использовать при сборке чужие библиотеки. | |||
Очень часто вместе с исходными текстами идут готовые собранные сторонние библиотеки. | |||
Пакеты не должны использовать при сборке эти готовые сторонние собранные библиотеки, | |||
а должны использовать вместо них библиотеки, собранные в Сизифе. | |||
Если какой-то готовой сторонней собранной библиотеки в Сизифе нет, ее необходимо сначала туда собрать. | |||
==== В MANIFEST.MF не должно быть атрибута Class-Path. ==== | |||
см. [[Java/ClassPathInManifest]] | |||
==== Устаревшие макросы. ==== | ==== Устаревшие макросы. ==== |
Версия от 13:31, 1 ноября 2008
ALT Linux Java Policy: Требования к сборке java-приложений
Необходимо соблюдать JPackage Policy
При упаковке приложений для сизифа необходимо соблюдать JPackage Policy.
Ознакомиться с JPackage Policy можно в следующих местах: Оригинал JPackagePolicy — можно найти в пакете jpackage-utils (в сизифе или на www.jpackage.org) Перевод JPackagePolicy на русский.
JPackage Spec Template — шаблон spec-файла для java-приложений, адаптированный для сизифа.
Необходимо обеспечивать максимальную запускаемость на разных JVM
11.03.2006
mhz:
В связи с появлением в Sisyphus пакетов j2se1.5-sun{,-devel}, которые теперь выбираются по умолчанию в сборочной среде, появилась новая особенность при сборке пакетов на Java. Компилятор JDK 1.5 по умолчанию создает class-файлы, несовместимые с ранними версиями J2SE. Поэтому необходимо следить, чтобы в сборочных скриптах для ant или make компилятор вызывался с параметрами source и target в значении 1.3 или меньше (так как у нас в Sisyphus есть еще j2se1.3-sun), если код не требует иного. Если в коде используется ключевое слово assert, нужно ставить как минимум 1.4; пакетов, использующих нововведения Java SE 5, в Sisyphus пока не отмечено.
viy:
это актуально всегда, только сейчас у нас наименьшая JVM — это java-1.5.0 sun. соответственно, фраза выглядит теперь так: source и target в значении 1.5 или меньше. если пакет использует нововведения Java SE 6, то source и target в значении 1.6. (Не злоупотреблять. только если код написан под Java 6) пакетов, использующих нововведения Java SE 7 и выше, в Sisyphus пока не отмечено.
Необходимо избегать зависимостей на конкретную JVM
Установочные зависимости.
viy: явные зависимости Requires: java-X.Y.Z-vendor это ЗЛО. В пакете единственно допустимы зависимости вида
Requires: java
Замечание. для указания минимальной версии JVM, под которой может работать программа, следует использовать конструкцию
Requires: java >= 1.x.y
например, Requires: java >= 1.6.0 Если программа работает под текущую минимальную поддерживаемую JVM (сейчас у нас наименьшая JVM — это java-1.5.0). то рекомендуется писать просто Requires: java без версии. В старых пакетах вместо Requires: java может встретиться Requires: j2se. Эти provides устарели, поэтому все такие вхождения следует заменить на Requires: java.
Сборочные зависимости.
viy: явные зависимости BuildRequires: java-X.Y.Z-vendor-devel это ЗЛО. Рекомендуется всегда собирать программы компилятором наименьшей подходящей версии. Однако если программа будет иметь явную зависимость на такой компилятор, то когда компилятор уйдет в obsolete, программа перестанет собираться. Поэтому зависимость на компилятор java (в пакетах java*-devel) должна быть виртуальной.
Официально рекомендуемая зависимость - это
BuildRequires: java-devel-default
В настоящее время это вызовет установку java-devel = 1.5.0.
В крайне редких случаях исходные тексты программы могут иметь особенности диалекта java6. Только в этом случае допускается указывать версионированную зависимость на компилятор версии не ниже 6:
BuildRequires: java-devel >= 1.6.0
Пакеты из репозиториев jpackage.org желательно сопровождать роботом.
Не желательно собирать в Сизиф java-пакеты из репозиториев jpackage.org а также fedora.org вручную. Для этого есть робот сопровождения. Его можно взять в git, viy/packages/jppimport.git.
Использование сторонних бинарных сборок крайне не рекомендуется.
Крайне не рекомендуется использование бинарных кодов, взятых откуда либо кроме Сизифа.
- Пакеты должны собираться из исходных текстов, если это позволяет лицензия.
Если пакет не собран из исходных текстов, его родное место в Дедале.
- Пакеты не должны использовать при сборке чужие библиотеки.
Очень часто вместе с исходными текстами идут готовые собранные сторонние библиотеки. Пакеты не должны использовать при сборке эти готовые сторонние собранные библиотеки, а должны использовать вместо них библиотеки, собранные в Сизифе. Если какой-то готовой сторонней собранной библиотеки в Сизифе нет, ее необходимо сначала туда собрать.
В MANIFEST.MF не должно быть атрибута Class-Path.
Устаревшие макросы.
Макросы %ant_build %set_classpath %add_classpath объявлены устаревшими. В пакетах конструкции вида %set_classpath /usr/share/java/foo.jar %add_classpath /usr/share/java/bar.jar можно заменить на export CLASSPATH=$(build-classpath foo bar) а %ant_build на %ant.
Java Packaging FAQ
Обсуждение вопросов упаковки java пакетов в Сизифе ((JavaPackagingFAQ)) вынесено в отдельную страницу.
Ссылки
Обсуждение определителя зависимостей и загрузчика классов
[devel] Java: no magic wand / [devel] Java: no magic wand, no magic hammer начиная с http://lists.altlinux.org/pipermail/devel/2008-January/068361.html.