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

Материал из ALT Linux Wiki
Нет описания правки
Строка 13: Строка 13:
Оригинал JPackagePolicy можно найти в пакете jpackage-utils (в Сизифе или на [http://www.jpackage.org/ www.jpackage.org]).
Оригинал JPackagePolicy можно найти в пакете jpackage-utils (в Сизифе или на [http://www.jpackage.org/ www.jpackage.org]).
Есть [[Java/JPackagePolicyTranslation|перевод JPackagePolicy на русский.]]
Есть [[Java/JPackagePolicyTranslation|перевод JPackagePolicy на русский.]]
[[Java/JPackageSpecTemplate|JPackage Spec Template]] — шаблон spec-файла для java-приложений из JPackage, адаптированный для сизифа.
[[SampleSpecs/javalib| javalib Spec Template]] — шаблон spec-файла для java-библиотеки, собираемой с помощью ant.


=== Необходимо обеспечивать максимальную запускаемость на разных JVM ===
=== Необходимо обеспечивать максимальную запускаемость на разных JVM ===
Строка 108: Строка 105:
[[Java/JavaPackagingFAQ|Обсуждение вопросов упаковки java пакетов]] в Сизифе.
[[Java/JavaPackagingFAQ|Обсуждение вопросов упаковки java пакетов]] в Сизифе.
Вынесено в отдельную страницу.
Вынесено в отдельную страницу.
==== Шаблоны spec-файлов ====
[[Java/JPackageSpecTemplate|JPackage Spec Template]] — шаблон spec-файла для java-приложений из JPackage, адаптированный для сизифа.
[[SampleSpecs/javalib| javalib Spec Template]] — шаблон spec-файла для java-библиотеки, собираемой с помощью ant.


==== Обсуждение определителя зависимостей и загрузчика классов ====
==== Обсуждение определителя зависимостей и загрузчика классов ====
[http://lists.altlinux.org/pipermail/devel/2008-January/subject.html [devel]] Java: no magic wand / [devel] Java: no magic wand, no magic hammer
[http://lists.altlinux.org/pipermail/devel/2008-January/subject.html [devel]] Java: no magic wand / [devel] Java: no magic wand, no magic hammer
начиная с [http://lists.altlinux.org/pipermail/devel/2008-January/068361.html http://lists.altlinux.org/pipermail/devel/2008-January/068361.html].
начиная с [http://lists.altlinux.org/pipermail/devel/2008-January/068361.html http://lists.altlinux.org/pipermail/devel/2008-January/068361.html].

Версия от 10:59, 1 ноября 2008

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



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

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

При упаковке приложений для сизифа необходимо соблюдать JPackage Policy.

Оригинал JPackagePolicy можно найти в пакете jpackage-utils (в Сизифе или на www.jpackage.org). Есть перевод JPackagePolicy на русский.

Необходимо обеспечивать максимальную запускаемость на разных 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.

см. Java/ClassPathInManifest

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

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

Ссылки

ALT Linux Java Packaging HOWTO

Руководство по упаковке java пакетов в Сизифе. Вынесено в отдельную страницу.

ALT Linux Java Packaging FAQ

Обсуждение вопросов упаковки java пакетов в Сизифе. Вынесено в отдельную страницу.

Шаблоны spec-файлов

JPackage Spec Template — шаблон spec-файла для java-приложений из JPackage, адаптированный для сизифа.

javalib Spec Template — шаблон spec-файла для java-библиотеки, собираемой с помощью ant.

Обсуждение определителя зависимостей и загрузчика классов

[devel] Java: no magic wand / [devel] Java: no magic wand, no magic hammer начиная с http://lists.altlinux.org/pipermail/devel/2008-January/068361.html.