ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: at@turbinal.org
To: devel@altlinux.ru
Subject: Re: [devel] Re: perl-5.8.0-alt0.3 (important)
Date: Sat, 19 Oct 2002 03:42:41 +0400
Message-ID: <20021018234241.GA5988@homestead.turbinal.org> (raw)
In-Reply-To: <20021018222612.GA2153@mhz.mikhail.zabaluev.name>

On Sat, Oct 19, 2002 at 02:26:12AM +0400, Mikhail Zabaluev wrote:
> CPAN явно не место в perl-devel.
> Hint: perl-CPAN?

Не знаю. Я хотел бы избежать дальнейшего дробления основных перловых
пакетов. По плотности зависимостей -- никуда кроме как в perl-devel его
сейчас деть нельзя, да и perl-devel из-за него начинает хотеть libnet,
libwww и т.п.

Да, наверное, стоит сделать perl-CPAN.

> Я бы вообще не задавался идеей ставить только perl-base
> в какой бы то ни было инсталляции. Наоборот, лучше было
> бы отпилить от пакета perl те модули, которые требуют
> нетривиального, типа DB*_File и GDBM_File, и объединить
> его c perl-base. Пользователям Junior может стать

Сюрприз, сюрприз! Я так и сделал. Вот что у меня на эту тему в спеке.

%files base
# perl-base modules
	%privlib/AnyDBM_File.pm
# dbm stuff: include only one in perl-base to satisfy AnyDBM_File;
# proirities according to AnyDBM_File.pm
%if_with ndbm
	%archlib/NDBM_File.pm
	%autolib/NDBM_File
%else
%if_with db
	%archlib/DB_File.pm
	%autolib/DB_File
%else
%if_with gdbm
	%archlib/GDBM_File.pm
	%autolib/GDBM_File
%else
%if_with sdbm
	%archlib/SDBM_File.pm
	%autolib/SDBM_File
	%autolib/sdbm
%endif
%endif
%endif
%endif

%files
# dbm stuff
%if_with ndbm
%if_with db
	%archlib/DB_File.pm
	%autolib/DB_File
%endif
%if_with gdbm
	%archlib/GDBM_File.pm
	%autolib/GDBM_File
%endif
%if_with sdbm
	%archlib/SDBM_File.pm
	%autolib/SDBM_File
	%autolib/sdbm
%endif
%else
%if_with db
%if_with gdbm
	%archlib/GDBM_File.pm
	%autolib/GDBM_File
%endif
%if_with sdbm
	%archlib/SDBM_File.pm
	%autolib/SDBM_File
	%autolib/sdbm
%endif
%else
%if_with gdbm
%if_with sdbm
	%archlib/SDBM_File.pm
	%autolib/SDBM_File
	%autolib/sdbm
%endif
%endif
%endif
%endif

> Есть гарантия, что это не приведёт к крэшам при использовании
> несовместимых модулей? Соответствие ABI проверяется при
> динамической загрузке?

Нет. Полную гарантию может дать только...

Соответствие API/ABI должен проверять дистрибутив, и он может делать это
лучше, чем inc_version_list.

> Противоречит, но кому охота прописывать зависимость от версии
> perl во все пакеты?
> Или жёстко (полу-)автоматически привязывать пакеты к версии
> perl и при смене этой версии всё пересобирать?

Нужно жестко зашивать версию ABI в пакеты с бинарным кодом, и при смене
ABI у перла apt должет приказать им долго жить. :) Версию ABI легче
всего идентифицировать по libperl soname.

PreReq: libperl.so.5.8

При этом мы получаем мягкий вариант контроля бинарной совместимости как
минимум для всех perl-5.8.x, т.е. на достаточно долгое время. Если
perl-5.10 будет бинарно совместим с perl-5.8, то:

%package base
Provides: libperl.so.5.8

%install
ln -sf libperl.so.5.10 libperl.so.5.8

При этом все остальные перловые пакеты можно будет не пересобирать, а
при пересборке можно оставлять старый soname. Тогда будет возможность
обновить этот пакет без обновления самого перла. К сожалению, этого не
получится сделать там, где бинарный код явно слинкуется с
libperl.so.5.10.

> Это не ошибка, а недоработка, и с задачей, для которой фича была
> введена, она справляется хотя бы частично.

Если вы предлагаете оставить inc_version_list, скажите об этом явно.

> > Страшно другое: для других пакетов сборка с тредами может быть бинарно
> > несовместима со сборкой без тредов. Так это или нет, я не знаю, и пока
> > даже не знаю, как узнать. Вы не в курсе?
> 
> Нет, но скорее всего, несовместима.

Тогда возможный откат на безтредовую сборку может стать очень тяжелым (в
смысле частичного обновления, которое приводит к крэшу). Лучше сразу
предусмотреть такую возможность.

Как лучше сделать?

1) виртуальные provides. Так сделано в RH:
Provides: perl(:WITH_ITHREADS)
Provides: perl(:WITH_THREADS)

2) дальнейшее усложнение soname:
libperl-ithreads.so.5.8
libperl-nothreads.so.5.8

Второе проще по части сборки остальных пакетов, но нельзя предусмотреть
в soname все возможные комбинации различных флагов сборки, которые могут
привести к бинарной несовместимости.

3) оставить пока libperl.so.5.8;
при откате назвать libperl-nothreads.so.5.8.
Так и сделаем.

> > > > название каталога в любом случае условно и не всегда/не вполне
> > > > соответствует действительности.
> > > 
> > > Оно соответствует некоторому выбору флагов при сборке, который стоит
> > > отличать от других возможных наборов флагов.
> > 
> > Это имеет смысл, но этим нельзя всерьёз увлекаться в дистрибутиве с
> > сильным контролем зависимостей.
> 
> Не понял, при чём здесь контроль зависимостей? И что значит "сильный"?

В целом же, я думаю, что мы хорошо понимаем друг друга.

В целостном состоянии дистрибутива на основе apt/rpm невозможно
одновременное существование бинарно несовместимых пакетов. По этой
причине нет смысла учитывать флаги сборки в названии archlib.



  reply	other threads:[~2002-10-18 23:42 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-10-16  1:45 [devel] " at
2002-10-16  4:44 ` at
2002-10-16  8:54   ` Dmitry V. Levin
2002-10-16 14:47     ` at
2002-10-16 15:31       ` Dmitry V. Levin
2002-10-16  8:39 ` Alexander Bokovoy
2002-10-16  9:09   ` Stanislav Ievlev
2002-10-16  8:50 ` Dmitry V. Levin
2002-10-16  8:56   ` Anton V. Boyarshinov
2002-10-16 14:19     ` at
2002-10-17  8:14 ` [devel] " Mikhail Zabaluev
2002-10-18  1:40   ` at
2002-10-18 22:26     ` Mikhail Zabaluev
2002-10-18 23:42       ` at [this message]
2002-10-19  9:38         ` Mikhail Zabaluev
2002-10-19 20:45           ` [devel] Re: perl ABI detection at find-requires stage at
2002-10-20  0:06             ` at
2002-10-21 23:05               ` Mikhail Zabaluev
2002-10-21  6:00           ` [devel] Re: perl-5.8.0-alt0.3 (important) Anton V. Boyarshinov
2002-10-21 19:26             ` Alexey I. Froloff
2002-10-22  8:20               ` Dmitry V. Levin
2002-10-21 20:16             ` [devel] Re: perl inc_version_list at
2002-10-21 22:52             ` [devel] Re: perl-5.8.0-alt0.3 (important) Mikhail Zabaluev
2002-10-22  6:25               ` Anton V. Boyarshinov
2002-10-22 13:08                 ` Alexey Tourbin
2002-10-26  0:32                   ` [devel] Re: perl thread safety at
2002-10-20  1:37       ` [devel] Re: perl/Junior at
2002-10-20 13:37       ` [devel] Re: perl-5.8.0-alt0.3 (important) Michael Shigorin
2002-10-21  2:12         ` at
2002-10-21 22:50           ` Mikhail Zabaluev
2002-10-21  3:01       ` at

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=20021018234241.GA5988@homestead.turbinal.org \
    --to=at@turbinal.org \
    --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