ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] Requires для perl
@ 2005-09-14  7:49 Vitaly Lipatov
  2005-09-14  8:14 ` [devel] " Alexey Tourbin
  0 siblings, 1 reply; 6+ messages in thread
From: Vitaly Lipatov @ 2005-09-14  7:49 UTC (permalink / raw)
  To: devel

Может кто-нибудь подскажет -
в начале программы такие строки:

#!/usr/bin/perl
use Gtk2 -init;

При поиске зависимостей в конце сборки пакета идёт попытка 
инициализации Gtk2 с соответственно неудачным обращением к 
$DISPLAY. Вопрос - кто виноват?
 а) программа (возможно надо просто переписать инициализацию)
 б) поиск зависимостей
До выяснения автопоиск я отключил :(

-- 
Lav
Виталий Липатов
Санкт-Петербург
GNU! ALT Linux Team! WINE! LaTeX! LyX! http://freesource.info


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [devel] Re: Requires для perl
  2005-09-14  7:49 [devel] Requires для perl Vitaly Lipatov
@ 2005-09-14  8:14 ` Alexey Tourbin
  2005-09-14 10:03   ` Alexey Tourbin
  0 siblings, 1 reply; 6+ messages in thread
From: Alexey Tourbin @ 2005-09-14  8:14 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 1321 bytes --]

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; }.

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [devel] Re: Requires для perl
  2005-09-14  8:14 ` [devel] " Alexey Tourbin
@ 2005-09-14 10:03   ` Alexey Tourbin
  2005-09-14 23:25     ` Vitaly Lipatov
  0 siblings, 1 reply; 6+ messages in thread
From: Alexey Tourbin @ 2005-09-14 10:03 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 1047 bytes --]

On Wed, Sep 14, 2005 at 12:14:44PM +0400, Alexey Tourbin wrote:
> Лучше вставить Gtk2->init в место фактической инициализации гуя у
> программы, или же, если нет желания разбираться, где находится это
> скорбное место, написать use Gtk2; INIT { Gtk2->init; }.

С другой стороны, в `perldoc Gtk2' сказано:

    -init
	Equivalent  to  Gtk2->init,  called  to  initialize  GLIB and
	GTK+. Just about every Gtk2-Perl script should do "use Gtk2
	-init"; This  initialization  should  take  place before using
	any  other  Gtk2 functions in your GUI applications.  It will
	initialize everything needed to operate  the  toolkit and
	parses  some  standard  command  line options.  @ARGV is
	adjusted accordingly so your own code will never see those
	standard arguments.

То есть эта бня ещё и манглит аргументы командной строки.  Needless
to say что стоило бы как-нибудь отделить инициализацию гуя от кромсания
аргументов командной строки, но этого нет.

use Gtk2;
INIT { Gtk2->init; }

остаётся наиболее приемлемым вариантом.

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [devel] Re: Requires для perl
  2005-09-14 10:03   ` Alexey Tourbin
@ 2005-09-14 23:25     ` Vitaly Lipatov
  2005-09-15  4:16       ` Alexey Tourbin
  0 siblings, 1 reply; 6+ messages in thread
From: Vitaly Lipatov @ 2005-09-14 23:25 UTC (permalink / raw)
  To: devel

On Wednesday 14 September 2005 14:03, Alexey Tourbin wrote:
> То есть эта бня ещё и манглит аргументы командной строки. 
> Needless to say что стоило бы как-нибудь отделить
> инициализацию гуя от кромсания аргументов командной строки, но
> этого нет.
>
> use Gtk2;
> INIT { Gtk2->init; }
>
> остаётся наиболее приемлемым вариантом.
Большое спасибо, так и сделал.
В таком варианте же тоже командная строка разбирается?

-- 
Lav
Виталий Липатов
Санкт-Петербург
GNU! ALT Linux Team! WINE! LaTeX! LyX! http://freesource.info


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [devel] Re: Requires для perl
  2005-09-14 23:25     ` Vitaly Lipatov
@ 2005-09-15  4:16       ` Alexey Tourbin
  2005-09-15  6:24         ` Vitaly Ostanin
  0 siblings, 1 reply; 6+ messages in thread
From: Alexey Tourbin @ 2005-09-15  4:16 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 571 bytes --]

On Thu, Sep 15, 2005 at 03:25:29AM +0400, Vitaly Lipatov wrote:
> > use Gtk2;
> > INIT { Gtk2->init; }
> >
> > остаётся наиболее приемлемым вариантом.
> Большое спасибо, так и сделал.
> В таком варианте же тоже командная строка разбирается?

Будет, сразу после BEGIN и CHECK, но до исполнения основного кода.
Концептуальная проблема в том, что извлечение стандартных аргументов
командной строки неотделимо от инициализации GUI.  Это значит, что для
выполнения `ПРОГРАММА --help' потребуется предварительная инициализация
GUI, то есть обращение к $DISPLAY.  

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [devel] Re: Requires для perl
  2005-09-15  4:16       ` Alexey Tourbin
@ 2005-09-15  6:24         ` Vitaly Ostanin
  0 siblings, 0 replies; 6+ messages in thread
From: Vitaly Ostanin @ 2005-09-15  6:24 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 769 bytes --]

Alexey Tourbin пишет:
> On Thu, Sep 15, 2005 at 03:25:29AM +0400, Vitaly Lipatov wrote:
> 
>>>use Gtk2;
>>>INIT { Gtk2->init; }
>>>
>>>остаётся наиболее приемлемым вариантом.
>>
>>Большое спасибо, так и сделал.
>>В таком варианте же тоже командная строка разбирается?
> 
> Будет, сразу после BEGIN и CHECK, но до исполнения основного кода.
> Концептуальная проблема в том, что извлечение стандартных аргументов
> командной строки неотделимо от инициализации GUI.  Это значит, что для
> выполнения `ПРОГРАММА --help' потребуется предварительная инициализация
> GUI, то есть обращение к $DISPLAY.  

gtk2 сама по себе $DISPLAY не требует, там как-то это обойти можно.

<skipped/>

-- 
Regards, Vyt
mailto:  vyt@vzljot.ru
JID:     vyt@vzljot.ru


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 256 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2005-09-15  6:24 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-09-14  7:49 [devel] Requires для perl Vitaly Lipatov
2005-09-14  8:14 ` [devel] " Alexey Tourbin
2005-09-14 10:03   ` Alexey Tourbin
2005-09-14 23:25     ` Vitaly Lipatov
2005-09-15  4:16       ` Alexey Tourbin
2005-09-15  6:24         ` Vitaly Ostanin

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git