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 --]
next 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