ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Alexey Tourbin <at@altlinux.ru>
To: devel@lists.altlinux.org
Subject: [devel] mono: распил *-sharp пакетов
Date: Thu, 22 Nov 2007 09:17:05 +0300
Message-ID: <20071122061705.GG12828@solemn.turbinal> (raw)

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

Напоминаю проблему.  Крайне нежелательна ситуация, когда в *-devel
пакете лежит всего лишь *.pc файл, и штатное использование *.pc
файла в *-devel пакете не предполагает использование каких-либо
других файлов в этом пакете.

buildreq сейчас игнорирует использование *.pc файлов.  Следовательно,
зависимость на такой *-devel пакет, в котором по сути нет ничего кроме
*.pc файла, будет проигнорирована.  Это несколько сомнительно, но в этом
есть свой резон, потому что это енфорсит определённую (правильную)
логику распила пакетов.

Правильная логика распила пакетов такова, что штатное использование
*.pc файла должно приводить к использованию других файлов в пакете.
Например, если это сишная библиотека, то использование *.pc файла
должно впоследствии "трогать" *.h и *.so файлы иэ этого пакета.

В соответствии с этим есть два варианта более правильного распила
*-sharp пакетов.

1) Не отпиливать *-devel пакет вообще.  В *-devel пакете, как правило,
содержится какая-то "метаинформация", которая не нужна для работы
программ, но нужна для сборки других пакетов.  Типичный пример -- *.h
файлы у сишных библиотек.  В моне нет никакой внешней метаинформации,
все *.dll файлы самодостаточны как по рантайму, так и по возможности
линковки с ними.  Значит, нет резона отпиливать *-devel пакет, в который
можно было бы выносить специальные вещи, которые не нужны для рантайма,
но нужны только для сборки.

2) Сохранить *-devel пакеты.  Насколько я понмаю, в моне для линковки
с диелелями есть симлинки которые похожи на *.so симлинки в сишных
*-devel пакетах.  Пример.

$ cat test.cs
class A { public static void Main() {  }}
$ filereq /dev/stdout mcs -pkg:glib-sharp-2.0 test.cs |grep /usr/lib/mono/
/usr/lib/mono/1.0/I18N.Other.dll
/usr/lib/mono/1.0/I18N.dll
/usr/lib/mono/1.0/System.Xml.dll
/usr/lib/mono/1.0/System.dll
/usr/lib/mono/1.0/mcs.exe
/usr/lib/mono/1.0/mcs.exe.config
/usr/lib/mono/1.0/mscorlib.dll
/usr/lib/mono/gac/glib-sharp/2.10.0.0__35e10195dab3c99f/glib-sharp.dll.config
/usr/lib/mono/gtk-sharp-2.0/glib-sharp.dll
/usr/lib/mono/gac/I18N.Other/1.0.5000.0__0738eb9f132ed756/I18N.Other.dll
/usr/lib/mono/gac/I18N/1.0.5000.0__0738eb9f132ed756/I18N.dll
/usr/lib/mono/gac/System.Xml/1.0.5000.0__b77a5c561934e089/System.Xml.dll
/usr/lib/mono/gac/System/1.0.5000.0__b77a5c561934e089/System.dll
/usr/lib/mono/gac/glib-sharp/2.10.0.0__35e10195dab3c99f/glib-sharp.dll
$

То есть линковка с моновскими диелелями идёт не через /usr/lib/mono/gac/
а через специальные симлинки которые указаны в *.pc файлах.  В данном
случае это /usr/lib/mono/gtk-sharp-2.0/glib-sharp.dll.

Поэтому есть возможность переместить эти симлинки в *-devel пакет,
а в основном пакете оставить только GAC ассемблию.  То есть распил
получается примерно такой:

%files
/usr/lib/mono/gac/*

%files devel
%dir /usr/lib/mono/gtk-sharp-2.0
/usr/lib/mono/gtk-sharp-2.0/*.dll

Тогда эти симлинки из *-devel пакета будут вылавливаться buildreq'ом при
линковке с диелелями.

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

             reply	other threads:[~2007-11-22  6:17 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-11-22  6:17 Alexey Tourbin [this message]
2007-11-25 14:52 ` Ildar Mulyukov
2007-11-25 16:23   ` 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=20071122061705.GG12828@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