Java Policy: различия между версиями

Материал из ALT Linux Wiki
Строка 50: Строка 50:
Requires: java.
Requires: java.
===== Сборочные зависимости =====
===== Сборочные зависимости =====
viy: явные зависимости BuildRequires: java-X.Y.Z-vendor это ЗЛО.
viy: явные зависимости BuildRequires: java-X.Y.Z-vendor-devel это ЗЛО.
Рекомендуется всегда собирать программы компилятором наименьшей подходящей версии.
Рекомендуется всегда собирать программы компилятором наименьшей подходящей версии.
Однако если программа будет иметь явную зависимость на такой компилятор,
Однако если программа будет иметь явную зависимость на такой компилятор,

Версия от 22:34, 31 октября 2008

42px-Wikitext-ru.svg.png
Эту статью следует викифицировать.
Stub.png
Черновик политики Sisyphus
Автор(ы) — viy


ALT Linux Java Policy: Требования к сборке java-приложений

Необходимо соблюдать JPackage Policy

При упаковке приложений для сизифа необходимо соблюдать JPackage Policy. Ознакомиться с JPackage Policy можно в следующих местах: Оригинал JPackagePolicy — можно найти в пакете jpackage-utils (в сизифе или на www.jpackage.org) Перевод JPackagePolicy на русский. JPackage Spec Template — шаблон spec-файла для java-приложений, адаптированный для сизифа. см. также Использование Class-Path в MANIFEST.MF

Необходимо обеспечивать максимальную запускаемость на разных 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
Requires: java-devel (if really required).

Замечание. для указания минимальной версии 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.

Устаревшие макросы.

Макросы %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.