ALT Linux Team development discussions
 help / color / mirror / Atom feed
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, конформист -- 
вынес бы умирающее тело на воздух.

-- 


  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