From: Alexey Tourbin <at@altlinux.ru>
To: ALT Devel discussion list <devel@lists.altlinux.org>
Subject: [devel] spamassassin perl.req
Date: Thu, 6 Sep 2007 19:21:15 +0400
Message-ID: <20070906152115.GX6051@solemn.turbinal> (raw)
In-Reply-To: <20070906133251.GB31416@mail.gu.net>
[-- Attachment #1: Type: text/plain, Size: 3318 bytes --]
On Thu, Sep 06, 2007 at 04:32:51PM +0300, Victor Forsyuk wrote:
> Тогда еще просьба.
>
> Сейчас spamassassin собирается только с
> %define _perl_req_method relaxed
>
> Есть ли шансы улучшить perl.req так, чтобы он смог нормально обработать
> этого монстра?
Вроде собирается. Он вроде раньше не собирался потому что там была
банальная синтаксическая ошибка в каком-то неиспользуемом или мало
используемом перловом модуле (perl -c тоже не работал, так что я даже
собирался сделать патч, но кажется отключили интернет или не помню
почему так и не сделал).
Зависимости сейчас должны искаться очень хорошо.
Проставляются все зависимости, кроме тех, которые (лексически)
завернуты в "eval {}". Плюс, в отличие от eval BLOCK, зависимости
в eval STRING вообще не прозрачны. Но с eval BLOCK есть исключение:
если eval в свою очередь завёрнут в BEGIN, то есть возможность
определить, загрузился модуль в eval или нет (просто через %INC).
В таких случаях завсимость из eval тоже проставляется.
Так что напр. вот такая зависимость на Net::DNS будет проставлена,
если Net::DNS удастся загрузить на стадии perl.req.
/usr/lib/perl5/vendor_perl/Mail/SpamAssassin/Dns.pm
70 BEGIN {
71 # some trickery. Load these modules right here, if possible; that way, if
72 # the module exists, we'll get it loaded now. Very useful to avoid attempted
73 # loads later (which will happen). If we do a fork(), we could wind up
74 # attempting to load these modules in *every* subprocess.
75 #
76 # We turn off strict and warnings, because Net::DNS and Razor both contain
77 # crud that -w complains about (perl 5.6.0). Not that this seems to work,
78 # mind ;)
79
80 no strict;
81 local ($^W) = 0;
82
83 eval {
84 require Net::DNS;
85 require Net::DNS::Resolver;
86 };
87 eval {
88 require MIME::Base64;
89 };
90 eval {
91 require IO::Socket::UNIX;
92 };
93 };
Все эти зависимости из BEGIN должны проставиться, если только их удастся
загрузить. То есть поиск зависимостей теперь (уже некоторое время)
является не чисто лексическим (только анализ текста), а гибридным --
он "подсматривает", загрузилось что-нибудь или нет. К сожалению,
это означает, что зависимости на выходе становятся чувствительными
к содержимому билдрута -- удастся загрузить определенные модули или
нет. Но в большинстве случаев гибридный поиск дает более приемлемый
результат.
Так что советую сделать следующее: 1) запустить `buildreq -bi';
2) убрать вообще все зависимости Requires и BuildRequires, проставленные
вручную, кроме, быть может, версионных (если они достаточно актуальны);
3) посмотреть, какие новые пакеты добавляются/удаляются из билдрута при
попытке поставить в hasher (hsh-install) пересобранный таким образом
пакет.
Если автоматический поиск зависимостей Вас полностью устроит,
то желательно запускать 'buildreq -bi' каждый раз после нетривиального
обновления перловых модулей (buildreq может очень сильно оптимизировать
список BuildRequires, что в большинстве случаев предпочтительно, но не
существует корректного способа это "ослабить").
Если в результате что-то не устраивает, пишите дальше.
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
prev parent reply other threads:[~2007-09-06 15:21 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-31 15:16 ` [devel] perl-Net-DNS-Resolver-Programmable-0.002.2-alt1: i586 rebuild failed Victor Forsyuk
2007-08-31 15:48 ` Alexey Tourbin
2007-09-03 14:46 ` Victor Forsyuk
2007-09-04 1:41 ` Alexey Tourbin
2007-09-06 13:32 ` Victor Forsyuk
2007-09-06 15:21 ` Alexey Tourbin [this message]
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=20070906152115.GX6051@solemn.turbinal \
--to=at@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