From: Sergey Bolshakov <sbolshakov@altlinux.ru>
To: devel@lists.altlinux.org
Subject: Re: [devel] rpm-build-4.0.4-alt78 tcl dependencies
Date: Mon, 10 Sep 2007 14:46:18 +0400
Message-ID: <m3sl5majd1.fsf@hammer.lioka.obninsk.ru> (raw)
In-Reply-To: <20070909222824.GW6051@solemn.turbinal> (Alexey Tourbin's message of "Mon, 10 Sep 2007 02:28:25 +0400")
>>>>> "Alexey" == Alexey Tourbin <at@altlinux.ru> writes:
> Есть два класса, к которым можно отнести большую часть
> несобравшихся пакетов. Первый класс связан с падением на поиске
> tcl зависимостей. Поиск tcl зависимостей стал менее опциональным,
> что пока считается правильным без дополнительных пояснений.
> Проверка на наличие интерпретатора [ -x /usr/bin/tclsh ] пред
> запуском /usr/lib/rpm/tcl.req в принципе убрана. Кроме того,
> раньше на поиск зависимостей шли только файлы с расширением
> *.tcl. Теперь для отсева файлов используется скрипт tcl.req.files,
> который, кроме tcl модулей, отбирает также tcl скрипты. Вот он.
Прежде всего, замечательно, что у тебя нашлось время/желание этим
заняться.
[skipped]
> Поясню также, что сейчас пакет rpm-build-tcl не содержит зависимости
> на tcl, то есть фактическая возможность запуска tcl.req ничем не
> гарантируется. Всё это вместе приводит к падению tcl.req и,
> следовательно, невозможности сборки некоторых пакетов.
[skipped]
>> fvwm-tcl-1.2-alt1
>> find-provides: running scripts (alternatives,lib,pam,perl,pkgconfig,python,shell,tcl)
>> /usr/lib/rpm/tcl.prov: line 3: /usr/bin/tclsh: No such file or directory
>> /usr/lib/rpm/tcl.prov: line 3: exec: /usr/bin/tclsh: cannot execute: No such file
>> or directory
>> RPM build errors:
>> error: /bin/sh failed
>> error: Failed to find Provides
>> /bin/sh failed
> /usr/lib/fvwm-tcl/fvwm.tcl 100644 ASCII text
> /usr/lib/fvwm-tcl/pkgIndex.tcl 100644 ASCII English text
> Скрипт fvwm.tcl может что-то требовать.
> $ rpmpeek /ALT/Sisyphus/files/i586/RPMS/fvwm-tcl-1.2-alt1.i586.rpm grep require ./usr/lib/fvwm-tcl/fvwm.tcl
> package require Tcl 8.0 ;# we need binary command
> if {[catch {package require Tclx}]} {
> error "Tclx is required for all systems except Linux"
> $
> Примечательно однако, что пакет fvwm-tcl не предоставляет ни одной
> tcl(...) зависимости:
> $ rpm -qp --provides /ALT/Sisyphus/files/i586/RPMS/fvwm-tcl-1.2-alt1.i586.rpm
> fvwm-tcl = 1.2-alt1
> $
Вероятно, потому, что этот пакет располагает свои файлы в
нестандартном для tcl месте (не ниже /usr/share/tcl)
>> gsm-tools-0.0.4-alt5
>> find-provides: running scripts (alternatives,lib,pam,perl,pkgconfig,python,shell,tcl)
>> /usr/lib/rpm/tcl.prov: line 3: /usr/bin/tclsh: No such file or directory
>> /usr/lib/rpm/tcl.prov: line 3: exec: /usr/bin/tclsh: cannot execute: No such file
>> or directory
>> error: /bin/sh failed
>> error: Failed to find Provides
>> RPM build errors:
> $ rpmfile gsm-tools-0.0.4-alt5.noarch.rpm |grep tcl
> /usr/bin/gsm-tools 100755 a /usr/bin/tclsh script text executable
> /usr/share/tcl/gsm-tools 40755 directory
> /usr/share/tcl/gsm-tools/gui.tcl 100644 ASCII text, with very long lines
> /usr/share/tcl/gsm-tools/lib_phone_common.tcl 100644 ASCII text
> /usr/share/tcl/gsm-tools/lib_siemens.tcl 100644 ASCII text
> /usr/share/tcl/gsm-tools/lib_t39.tcl 100644 ASCII text
> /usr/share/tcl/gsm-tools/phonebooklib.tcl 100644 a /usr/bin/tclsh script text executable
> /usr/share/tcl/gsm-tools/pkgIndex.tcl 100644 ASCII English text
> /usr/share/tcl/gsm-tools/smslib.tcl 100644 ASCII C program text
> $
> Здесь очень плохая ситуация -- обламывается tcl.prov (а не req).
> По идее должна появиться зависимость Provides: tcl(smslib).
> Если она не появится, то это чревато анметами.
> Замечу, что tcl.prov ЗАПУСКАЕТСЯ ТОЛЬКО НА ФАЙЛЫ pkgIndex.tcl,
> которые ЗАВЕДОМО ДОЛЖНЫ ЧТО-ТО ПРЕДОСТАВЛЯТЬ.
Да, странно, я посмотрю.
[skipped]
>> vtcl-1.6.0-alt1
>> find-provides: running scripts (alternatives,lib,pam,perl,pkgconfig,python,shell,tcl)
>> /usr/lib/rpm/tcl.prov: line 3: /usr/bin/tclsh: No such file or directory
>> /usr/lib/rpm/tcl.prov: line 3: exec: /usr/bin/tclsh: cannot execute: No such file
>> or directory
>> RPM build errors:
>> error: /bin/sh failed
>> error: Failed to find Provides
>> /bin/sh failed
> Очень много tcl файлов, не срабатывает prov.
> /usr/share/vtcl-1.6.0/lib/color.tcl 100644 ASCII English text
> /usr/share/vtcl-1.6.0/lib/command.tcl 100644 ASCII English text
> /usr/share/vtcl-1.6.0/lib/compound.tcl 100644 ASCII English text
> /usr/share/vtcl-1.6.0/lib/compounds.tcl 100644 ASCII English text
По той же причине, что и fvwm-tcl.
Вообще, хотя в rpm-build-tcl есть механизм для расширения
путей поиска provides, я не думаю, что предоставлять такие
зависимости хорошая идея, поскольку нет способа указать
в дальнейшем путь поиска, по которому такой provides расположен.
> Вроде всё.
> Итого, имеется более 20 поломанных пакетов.
> Надо обсудить, что с ними делать.
> Можно обратить внимание на то, что большинство скриптов на самом деле
> не требуют каких-либо tcl пактов (то есть внешних модулей). В принципе
> можно было бы в tcl.req.files добавить проверку типа 'grep -w require',
> и если заведомо ничего не требуется, то зависимости можно не искать.
> Это починило бы большую часть пакетов. В остальные же пакеты пришлось
> бы добавить BuildRequires: tcl.
> Но мне этот вариант не нравится вот в каком отношении. Поиск tcl
> зависимостей даёт больше, чем просто зависимости, которых почти нет.
> По идее, дополнительно происходит syntax check. Это очень мощный
> и притом бесплатный способ проверки скриптов, он фактически защищает
> от запаковки заведомо поломанного кода. Фактически такой подход
> уже является "нашим стилем" в rpm-build в других аналогичных случаях.
> Проверка синтаксиса при анализе шелл-зависимостей мне пару раз помогала
> обнаружить ошибки в шелл-скриптах. В перле то же самое. Недавно
> я помогал migor@ собирать перловую софтину OpenCA, и практически
> вынужден был исправить все ошибки в перловых скриптах (настоящие!),
> чтобы пакет собрался.
> Так что я предлагаю другой вариант: внести tcl в базовую сборочную
> среду. Это решает все проблемы. Единственный недостаток -- это
> внесение нового пакета в базовую сборочную среду per se. Это в общем-то
> не слишком популярный интерпретатор, но не "левый", то есть с давней
> традицией, историей и т.п.
> Вместе с тем, я не предлагаю ПРОСТО внести tcl в базовую сборочную
> среду. Я предлагаю решить проблему НАЛИЧИЯ в базовой сборочной среде
> скриптов rpm-build-tcl, возможность запуска которых ничем не
> гарантируется. То есть нужно либо вынести rpm-build-tcl из базовой
> сборочной среды, либо добавить в него зависимость на tcl, чтобы скрипты
> поиска зависимостей всегда работали. Я предлагаю второй вариант.
Вынос rpm-build-tcl из базовой сборочной среды -- это упование
на то, что майнтайнер впишет его в buildreq(pre).
Как нетрудно убедиться, это не сработало (в варианте buildreq: tcl)
даже с автором rpm-build-tcl и sandman.
Последствия выноса -- некоторая деградация технологии сборки для
tcl, бонус -- убыстрение процесса сборки, в отдалённом будущем --
вычищение базы apt от пары-тройки сотен сущностей.
'Техносноб' (с) во мне внёс бы tcl в rpm-build, конформист --
вынес бы умирающее тело на воздух.
--
next prev parent reply other threads:[~2007-09-10 10:46 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-09-09 18:19 [devel] rpm-build-4.0.4-alt78 rebuild status Alexey Tourbin
2007-09-09 19:45 ` [devel] rpm-build-4.0.4-alt78 beehive_status Alexey Tourbin
2007-09-09 19:54 ` Slava Semushin
2007-09-09 19:57 ` Slava Semushin
2007-09-09 20:15 ` Alexey Tourbin
2007-09-09 20:12 ` Alexey Tourbin
2007-09-09 20:16 ` Led
2007-09-09 22:30 ` Alexey Tourbin
2007-09-09 20:39 ` Alexey I. Froloff
2007-09-09 23:05 ` Alexey Tourbin
2007-09-09 22:28 ` [devel] rpm-build-4.0.4-alt78 tcl dependencies Alexey Tourbin
2007-09-09 23:27 ` Led
2007-09-09 23:48 ` [devel] #! shebang fixer Alexey Tourbin
2007-09-10 8:48 ` [devel] tcl.req.files: re-exec check implemented Alexey Tourbin
2007-09-10 10:46 ` Sergey Bolshakov [this message]
2007-09-10 20:46 ` [devel] rpm-build-4.0.4-alt78 tcl dependencies Alexey Tourbin
2007-09-10 21:52 ` [devel] rpm-build-4.0.4-alt78 -- remove rpm-build-tcl? Alexey Tourbin
2007-09-11 9:49 ` Sergey Bolshakov
2007-09-11 14:59 ` Alexey Tourbin
2007-09-11 15:35 ` Led
2007-09-10 22:13 ` [devel] rpm-build-4.0.4-alt78 rpm-build-tcl vs BuildRequires(pre) Alexey Tourbin
2007-09-11 9:30 ` Sergey Bolshakov
2007-09-11 15:49 ` [devel] link tcl extensions with libtcl Alexey Tourbin
2007-09-10 20:39 ` [devel] rpm-build-4.0.4-alt78 tcl SCRIPTS DISABLED Alexey Tourbin
2007-09-10 22:38 ` [devel] rpm-build-4.0.4-alt78 tcl dependencies Michael Shigorin
2007-09-10 10:13 ` [devel] rpm-build-4.0.4-alt78 beehive_status Sergey Bolshakov
2007-09-10 22:28 ` [devel] rpm-build-tcl Requires += tcl? Michael Shigorin
2007-09-11 16:13 ` [devel] Zope-2.7.7-alt1 Alexey Tourbin
2007-09-10 22:25 ` [devel] rpm-build-4.0.4-alt78 rebuild status Michael Shigorin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m3sl5majd1.fsf@hammer.lioka.obninsk.ru \
--to=sbolshakov@altlinux.ru \
--cc=devel@lists.altlinux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
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