[devel] java spec cleanup example [was: obsolete macroses]

Igor Vlasenko =?iso-8859-1?q?vlasenko_=CE=C1_imath=2Ekiev=2Eua?=
Чт Июл 24 18:19:30 MSD 2008


On Thu, Jul 24, 2008 at 01:16:29PM +0300, Igor Vlasenko wrote:
> On Wed, Jul 23, 2008 at 10:57:13AM +0400, Kirill Maslinsky wrote:
> > > > -%set_classpath /usr/share/java/junit.jar
> > > > +export CLASSPATH=$(build-classpath junit)
> > Кстати, а почему бы эту конструкцию не завернуть в макрос?
> 
> Это дословная конструкция, а не самая удачная.
> Как если бы перевести "I have a friend" через
> "Я имею друга".

Расскажу на абстрактном примере сборки пакета malvina. 
Пусть в build.xml этого пакета добавлена проверка на 
наличие в classpath класса boy.class, при наличии 
которого malvina.jar собирается с новыми возможностями.

Пусть ранее boy.class предоставлялся pierre.jar.
В результате изменений pierre.jar исчез, а
появился buratino.jar, который и предоставляет boy.class.

Теперь рассмотрим, что произойдет при использовании
в спек-файле различных конструкций.

1) %add_classpath /usr/share/java/pierre.jar
В этом случае пакет молча пересоберется без замечаний,
но malvina.jar потеряет существенную часть функциональности.

2) export CLASSPATH=$CLASSPATH:$(build-classpath pierre)
В этом случае пакет пересоберется,
malvina.jar потеряет существенную часть функциональности,
но в процессе сборки будет ругань, которую внимательный 
майнтайнер может заметить и исправить пакет,
заменив pierre на buratino.

3) обычно при сборке через ant подключаемые библиотеки
ищутся в ./lib. В таком случае можно написать
ln -s $(build-classpath pierre) ./lib
Этот вариант превосходен тем, что malvina не захочет собирться
до тех пор, пока ее майнтайнер не сменит pierre на buratino.

-- 

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




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