[sisyphus] java-1.5.0-poisoning announce

Igor Vlasenko =?iso-8859-1?q?vlasenko_=CE=C1_imath=2Ekiev=2Eua?=
Вс Дек 2 00:15:31 MSK 2007


Java - изменения в политике.

Уважаемые коллеги!
До ноября 2007 года основными javac компиляторами, использовавшимися
у нас для сборки java пакетов, были javac из java-1.4.2-{sun,blackdown}.

Технически это было связано с тем, что для получения гарантированно
рабочего на старых JVM кода опций -source и -target недостаточно,
простые примеры, обьясняющие почему это так, см.
((http://www.javaworld.com/javaworld/javaqa/2003-05/02-qa-0523-version.html?page=1))
и наиболее простым и надежным способом получения совместимости 
была сборка с помощью старого компилятора.

Идейная причина была в gcj. В настоящее время у нас пакеты собираются 
без поддержки gcj, но я хотел сохранить возможность в любой момент 
безболезненно (gcj не поддерживал диалект java >= 5) 
начать работу по его внедрению.

Эта же причина сдерживала основные апстримы от использования java5,
поэтому такая политика проблем не создавала.

Однако появление openjdk, а также недавний gcj, 
который стал понимать java5, произвели брожение в апстримах. 
Скоро в Сизиф хлынет поток софта, написанного на java5. 
Появление в репозитории свежего eclipse знаменует его начало.

Проблема здесь следующая. javac из java-1.4.2-{sun,blackdown} не сможет 
слинковать класс, если в classpath попадется хотя бы один class 
с версией 49.0 и выше (java >=5). Получается что-то вроде GPL virus
или `java 1.5 poisoning`. 
Это означает, что новые пакеты придется в массе собирать javac = 1.5.0.
Напомню, установку -source и -target это не отменяет, их, как и прежде,
желательно ставить в минимальные разумные значения. 
Однако сборка с javac = 1.5.0 уже не гарантирует работоспособность
под java-1.4.2 по вышеизложенным причинам.

Для тех, кому позарез нужна именно java-1.4.2, будет retroweaver
((http://retroweaver.sourceforge.net/))
с оберткой, которая локально в системе будет перекомпилировать байткод
установленных пакетов под java-1.4.2.

Что же касается старых пакетов, то в какой-то момент их сборка рассыпется.
Это не страшно, так как они не несут прямых зависимостей на java-1.4.2,
а зависят от jpackage-1.4-compat, вытягивающий java-1.4.2.
В какой-то момент я его подменю пакетом, вытягивающим java5.

Этот же прием рекомендую людям, желающим выпустить замкнутый 
по сборочным зависимостям дистрибутив, который бы не таскал с собой
старые java.

Но пока сборка старых пакетов не рассыпалась, очень прошу
уважаемых инкомингеров исполнить заявку #13481
((https://bugzilla.altlinux.org/show_bug.cgi?id=13481))
и переложить орду указанных пакетов в branch.

Также, начиная с этого анонса, неработоспособность под java 1.4.2
не желательна, но больше не считается BUG.


-- 

Dr. Igor Vlasenko
--------------------
Topology Department
Institute of Math
Kiev, Ukraine





Подробная информация о списке рассылки Sisyphus