ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Alexey Tourbin <at@altlinux.ru>
To: ALT Devel discussion list <devel@altlinux.ru>
Subject: [devel] Re: test binary perl modules
Date: Tue, 3 Aug 2004 23:10:45 +0400
Message-ID: <20040803191044.GD3180@solemn.turbinal.org> (raw)
In-Reply-To: <410F591A.2060701@syktsu.ru>

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

On Tue, Aug 03, 2004 at 01:21:30PM +0400, Vladimir Lettiev wrote:
> >У перла как бы всё время немножко едет ABI.  Поэтому часть модулей,
> >собранных с более ранним перлом, может перестать работать (зависимость
> >на libperl.so.5.8 не является достаточно жёсткой).  Однако же такие
> >модули успешно пересобираются с новым перлом.
> 
> Чего-то я не понимаю. Идём по ссылке 
> http://search.cpan.org/~nwclark/perl-5.8.5/pod/perl585delta.pod
> И видим "There are no changes incompatible with 5.8.4.". Думаете обманывают?

Могут обмануть. :)

При обновлении perl-5.8.0 -> perl-5.8.1 перестали работать некоторые
модули, собранные с perl-5.8.0 (в частности, HTML::Parser), хотя
бинарная совместимость подразумевалась.  Это обнаружили в Debian Team.

mod_perl при обновлении перла тоже иногда подвержен segfault'ам.

> >Как определить модули, которые перестали работать после обновления
> >перла?  У модулей есть тесты, которые выполняются на стадии сборки.
> >Можно было бы паковать их в RPM пакеты.  А можно придумать механизм,
> >который извлекает эти тесты из perl-*.src.rpm и выполняет.
> 
> Нужно придумать такой механизм и проверить все модули. Если окажутся 
> нерабочие, повесить на них баги.

Нужно тестировать уже установленный, а не свежесобранный модуль.

$ rpm -bc ~/RPM/SPECS/perl-Bit-Vector.spec
...
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/00____version....ok
t/01________new....ok
t/02____destroy....ok
t/03_operations....ok
t/04__functions....ok
t/05_____primes....ok
t/06_____subset....ok
t/07____compare....ok
t/08_____resize....ok
t/09_parameters....ok
t/10__intervals....ok
t/11______shift....ok
t/12_____string....ok
t/13__increment....ok
t/14______empty....ok
t/15________add....ok
t/16___subtract....ok
t/17________gcd....ok
t/28__chunklist....ok
t/30_overloaded....ok
All tests successful.
...
$

Это протестировался свежесобранный модуль.
Чтобы протестировать уже установленный модуль, нужно убрать из команды
blib/lib и blib/arch:

$ cd ~/RPM/BUILD/Bit-Vector-6.3
$ PERL_DL_NONLAZY=1 /usr/bin/perl -MExtUtils::Command::MM -e test_harness */*.t
t/00____version....ok
t/01________new....ok
...
All tests successful.
$

А это протестировался уже установленный perl-Bit-Vector-6.3-alt2.
Т.е. он продолжает работать, несмотря на то, что был собран с perl-5.8.0.
Действительно, в тестах был задействован уже установленный модуль:

$ PERL_DL_NONLAZY=1 filereq /dev/stdout /usr/bin/perl -MExtUtils::Command::MM -e test_harness */*.t | grep Bit/Vector
/usr/lib/perl5/vendor_perl/i386-linux/Bit/Vector.pm
/usr/lib/perl5/vendor_perl/i386-linux/Bit/Vector/Overload.pm
/usr/lib/perl5/vendor_perl/i386-linux/auto/Bit/Vector
/usr/lib/perl5/vendor_perl/i386-linux/auto/Bit/Vector/Vector.so
$

Поэтому для проверки уже собранных модулей можно сделать примерно следущее:

$ rpm -bp --define '__spec_prep_post PERL_DL_NONLAZY=1 %__perl -MExtUtils::Command::MM -e test_harness */*.t' ~/RPM/SPECS/perl-Bit-Vector.spec
...
Source #0 (Bit-Vector-6.3.tar.gz):
+ /bin/gzip -dc /home/at/RPM/SOURCES/Bit-Vector-6.3.tar.gz
+ /bin/tar -xf -
+ cd Bit-Vector-6.3
+ /bin/chmod -Rf u+rwX,go-w .
+ PERL_DL_NONLAZY=1
+ /usr/bin/perl -MExtUtils::Command::MM -e test_harness t/00____version.t t/01________new.t t/02____destroy.t t/03_operations.t t/04__functions.t t/05_____primes.t t/06_____subset.t t/07____compare.t
t/08_____resize.t t/09_parameters.t t/10__intervals.t t/11______shift.t t/12_____string.t t/13__increment.t t/14______empty.t t/15________add.t t/16___subtract.t t/17________gcd.t t/28__chunklist.t t/30_overloaded.t
t/00____version....ok
...
All tests successful.
Files=20, Tests=67417, 120 wallclock secs (12.22 cusr +  0.43 csys = 12.65 CPU)
$

Т.е. определили команду __spec_prep_post, которая будет выполняться
сразу после %setup.

Теперь надо подумать, как это всё автоматизировать.

> -- 
> С уважением, Владимир Леттиев aka crux <crux@syktsu.ru>

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

  parent reply	other threads:[~2004-08-03 19:10 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-08-02 11:32 [devel] Master 2.4: final countdown Sergey Bolshakov
2004-08-02 11:46 ` Klimchev Konstantin
2004-08-02 12:03   ` Sergey Bolshakov
2004-08-02 12:45     ` Klimchev Konstantin
2004-08-02 13:34       ` Alexei Takaseev
2004-08-02 12:49 ` [devel] sim will be absent (was: Master 2.4: final countdown) Sergey V Turchin
2004-08-02 15:06 ` [devel] Master 2.4: final countdown Yura Zotov
2004-08-02 16:29 ` [devel] " Alexey Tourbin
2004-08-02 18:36   ` Vladimir Lettiev
2004-08-02 18:51     ` Alexey Tourbin
2004-08-03  7:48       ` Sergey V Turchin
2004-08-03  8:44         ` Dmitry V. Levin
2004-08-03  8:41       ` Michael Shigorin
2004-08-03  9:21       ` Vladimir Lettiev
2004-08-03 10:40         ` Sergey V Turchin
2004-08-03 19:10         ` Alexey Tourbin [this message]
2004-08-03 21:22           ` [devel] Re: test binary perl modules Michael Shigorin
2004-08-03 18:38 ` [devel] Master 2.4: final countdown Dmitry V. Levin
2004-08-04  7:10 ` Sviataslau Svirydau

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=20040803191044.GD3180@solemn.turbinal.org \
    --to=at@altlinux.ru \
    --cc=devel@altlinux.ru \
    /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