[devel] Re: Requires для perl

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Ср Сен 14 12:14:44 MSD 2005


On Wed, Sep 14, 2005 at 11:49:56AM +0400, Vitaly Lipatov wrote:
> Может кто-нибудь подскажет -
> в начале программы такие строки:
> 
> #!/usr/bin/perl
> use Gtk2 -init;
> 
> При поиске зависимостей в конце сборки пакета идёт попытка 
> инициализации Gtk2 с соответственно неудачным обращением к 
> $DISPLAY. Вопрос - кто виноват?
>  а) программа (возможно надо просто переписать инициализацию)
>  б) поиск зависимостей
> До выяснения автопоиск я отключил :(

Программа.  Поиск зависимостей не виноват, так как поиск зависимостей
в смысле исполнения кода эквивалентен syntax check.

$ perl -h |grep -e -c
  -c              check syntax only (runs BEGIN and CHECK blocks)
$

use Gtk2 -init; в точности эквивалентно 
BEGIN { require Gtk2; Gtk2::->import(-init); }
(см. perldoc -f use)

То есть если сделать 'perl -c ПРОГРАММА' то будет такое же неудачное
обращение к $DISPLAY, как и при поиске зависимостей.  Исполнять
прикладной код в BEGIN -- по-моему, очень плохая идея.  Код в BEGIN
нужен только для импорта прототипов, перегрузки операторов и загрузки
лексических хинтов $^H (типа use strict).

Лучше вставить Gtk2->init в место фактической инициализации гуя у
программы, или же, если нет желания разбираться, где находится это
скорбное место, написать use Gtk2; INIT { Gtk2->init; }.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20050914/3ec26860/attachment-0001.bin>


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