ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Alexey Tourbin <at@altlinux.ru>
To: devel@altlinux.ru
Subject: [devel] RFC: perl deps versioning
Date: Wed, 1 Dec 2004 22:33:08 +0300
Message-ID: <20041201193308.GK7294@solemn.turbinal.org> (raw)

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

Здравствуйте,

Напомню суть проблемы: для проверки версии требуемого модуля в перле
используются числа с десятичной точкой (напр. `use Data::Dumper 2.121',
в данном случае это текущая версия Data::Dumper).  При этом точность
требуемой версии (число знаков после точки) может не совпадать
с точностью версии, указанной в самом этом модуле (напр. новая версия
Data::Dumper может иметь версию 2.20 (хм... колбасная версия:))).

RPM использует другой алгоритм сравнения версий: разбивает версию как
строку на цифровые и буквенные сегменты, после чего цифровые сегменты
сравниваются как целые числа, а буквенные -- как строки.

В результате без корректировки точности версий возможны следующие
казусы:

1) перебор в смысле Requires, в результате которого получается unmet
dependency:
Requires: perl(Data/Dumper) >= 0:2.121
Provides: perl(Data/Dumper)  = 0:2.20

2) перебор в смысле Provides, в результате которого необходимая
зависимость фактически теряется:
Requires: perl(Data/Dumper) >= 0:2.12
Provides: perl(Data/Dumper)  = 0:2.100

Простым и действенным решением этой проблемы мне представляется
ограничение как Requires, так и Provides с точностью до двух знаков
после точки.  Обоснование: статистика текущего использования такого
рода зависимостей.

$ rpm -qa --requires --provides |grep 'perl(' |grep = >perl_ver_deps

(У меня на машине установлены далеко не все пакеты, но большинство
перловых всё же установлено.)

Зависимости Requires с одним знаками после точки:

$ perl -ne 'print if />= 0:\d+\.\d$/' perl_ver_deps
perl(Chart/Base.pm) >= 0:2.0
perl(Socket.pm) >= 0:1.3
perl(HTTP/Request.pm) >= 0:1.3
perl(File/Spec.pm) >= 0:0.8
perl(Socket.pm) >= 0:1.3
perl(File/Spec.pm) >= 0:0.8
$

Зависимости Requires с двумя знаками после точки:

$ perl -ne 'print if />= 0:\d+\.\d\d$/' perl_ver_deps
perl(HTML/Element.pm) >= 0:3.15
perl(Config/General.pm) >= 0:1.18
perl(IO/Pty.pm) >= 0:0.97
perl(Pod/Escapes.pm) >= 0:1.03
perl(HTML/Element.pm) >= 0:3.05
perl(HTML/TreeBuilder.pm) >= 0:3.01
perl(Getopt/Long.pm) >= 0:2.17
perl(HTML/Parser.pm) >= 0:2.19
perl(HTML/Tagset.pm) >= 0:3.02
perl(Convert/ASN1.pm) >= 0:0.07
perl(HTML/Parser.pm) >= 0:3.24
perl(Convert/ASN1.pm) >= 0:0.07
perl(LWP.pm) >= 0:5.76
perl(Net/SSLeay.pm) >= 0:1.08
perl(Search/Dict.pm) >= 0:1.02
perl(Tie/IxHash.pm) >= 0:1.21
perl(Pod/Usage.pm) >= 0:1.12
perl(XML/Stream.pm) >= 0:1.18
perl(MIME/Base64.pm) >= 0:2.04
perl(MIME/QuotedPrint.pm) >= 0:2.03
perl(Mail/Field.pm) >= 0:1.05
perl(Mail/Header.pm) >= 0:1.09
perl(Mail/Internet.pm) >= 0:1.28
perl(XML/LibXML.pm) >= 0:1.57
perl(Crypt/DES.pm) >= 0:2.03
perl(Digest/HMAC.pm) >= 0:1.00
perl(Digest/MD5.pm) >= 0:2.11
perl(Digest/SHA1.pm) >= 0:1.02
$

Зависимости Requires с тремя и более знаками после точки:

$ perl -ne 'print if />= 0:\d+\.\d\d\d+$/' perl_ver_deps
perl(Text/Wrap.pm) >= 0:98.112902
perl(LWP/UserAgent.pm) >= 0:2.003
perl(IO/Lines.pm) >= 0:1.108
perl(IO/Scalar.pm) >= 0:1.117
perl(IO/ScalarArray.pm) >= 0:1.114
$

Т.е. наиболее востребованный формат указания зависимостей -- с двумя
знаками после точки.

PS: зависимость может быть также указана с помощью v-string (такие
зависимости имеют Serial:1), в этом случае проблем не возникает.
Однако появляется проблема сопоставления версии v-string и десятичной
версии.

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

             reply	other threads:[~2004-12-01 19:33 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-12-01 19:33 Alexey Tourbin [this message]
2004-12-01 23:15 ` [devel] " Michael Shigorin
2004-12-02  0:57   ` Alexey Tourbin
2004-12-01 23:49 ` [devel] " Mikhail Zabaluev
2004-12-02  1:33   ` [devel] " Alexey Tourbin
2004-12-02  1:54     ` Alexey Tourbin
2004-12-02 12:16       ` Dmitry V. Levin
2004-12-03  3:36     ` Alexey Tourbin
2004-12-02 15:29 ` Alexey Tourbin

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=20041201193308.GK7294@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