From: Ivan Zakharyaschev <imz@altlinux.org> To: ALT Linux Team development discussions <devel@lists.altlinux.org> Subject: Re: [devel] I: verify-elf for plugins etc. with RPM_LD_PRELOAD_xxxx & RPM_FILES_TO_LD_PRELOAD_xxxx; was: Re: python3-3.5 unmets Date: Sun, 18 Dec 2016 13:13:47 +0300 (MSK) Message-ID: <alpine.LFD.2.20.1612181225380.1300@imap.altlinux.org> (raw) In-Reply-To: <alpine.LFD.2.20.1604050036210.1850@imap.altlinux.org> [-- Attachment #1: Type: text/plain, Size: 4784 bytes --] Хочу дописать своё мнение о том, хороший это механизм или нет, что требуется доделать. On Tue, 5 Apr 2016, Ivan Zakharyaschev wrote: > On Fri, 1 Apr 2016, Ivan Zakharyaschev wrote: > >> (Им же в verify_elf делается LD_PRELOAD, чтобы не засорять лог сборки >> несущественными сообщениями об undefined symbols. Для случая, когда >> такая библиотека кладётся в системные /usr/lib/, есть макрос >> %requires_python_ABI_for_files; пример -- пакет boost или >> python3-module-pygobject или python-module-pygobject3. Иначе пакет не >> пропустят.) > > Появился механизм для проверки всяких .so-плагинов на undefined symbols. > Можно пользоваться (например, видел краем глаза обилие саодельных проверок в > спеке apache). В качестве примера с помощью него реализована: > > 1. проверка всего внутри python*/site-packages/ (раньше были warnings) > 2. а также макрос %requires_python3_ABI_for_files с явным указанием > интересных файлов. > > Принцип такой, что verify-elf понимает пары переменных окружения вида > RPM_LD_PRELOAD_xxxx и RPM_FILES_TO_LD_PRELOAD_xxxx (в случае одного из > питоноа в качестве идентификатора вместо xxxx выбрано python3, например). В нынешнем состоянии это нехорошо вот чем. Одна из прелестей успешного прохождения verify-elf (с unresolved=strict) в том, что наш автомат получается обучен тому, как загружать библиотеки и откуда взять все нужные символы. Это формальное знание можно использовать в lib.req, чтобы получить точные зависимости на множества требуемых символов. Принципиально этому ничего не мешает. Например, в случае расставления настоящих RPATH/RUNPATH достигается и прохождение verify-elf без замечаний, и получение кучи правильных зависимостей, которых бы иначе не увидел автомат. Но в случае с этим механизмом LD_PRELOAD для обработки "плагинов" первая часть реализована (verify-elf), а вторая-то в общем виде нет (lib.req). Конечно, макрос %requires_python3_ABI_for_files делает костыль-зависимость (вместо зависимости на конкретную libpython3.so или /usr/bin/python3, которые одинаковое ABI им предоставляют). Так что в этом случае вторая часть решена, но костыльно (и неточно, без завсимости на множества символов, что было бы ещё лучше). А в общем случае в нынешнем виде не очень хочется рекомендовать использовать этот механизм без реализации второй части, т.е. пользы от lib.req. Я тогда это не так хорошо осознавал, что они должны идти для пользы рука об руку: verify-elf и lib.req, поэтому предлагал вторую часть всем по-своему дописывать: > Поверх этого можно реализовывать нужные Вам макросы или задействовать > напрямую. > > Как предлагает glebfm@, чтобы ld-preload-ить программы, а не библиотеки, они > должны быть PIE. Думаю, можно было бы связать их теснее, и для RPM_LD_PRELOAD_xxxx генерировать просто всегда жёсткую зависимость вида: Requires: xxxx >= set:....... Тогда останется мейнтейнерам пакетов с xxxx ещё обеспечить появление соответствующих: Provides: xxxx = set:....... -- Best regards, Ivan
next prev parent reply other threads:[~2016-12-18 10:13 UTC|newest] Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-02-20 16:01 [devel] " Ivan Zakharyaschev 2016-03-02 6:40 ` Ivan Zakharyaschev 2016-03-02 7:46 ` Denis Medvedev 2016-03-02 10:01 ` Ivan Zakharyaschev 2016-03-03 6:44 ` Yuri N. Sedunov 2016-03-04 19:02 ` Ivan Zakharyaschev 2016-03-04 19:31 ` Denis Medvedev 2016-03-04 19:40 ` [devel] aiohttp native build problems; was: " Ivan Zakharyaschev 2016-03-04 20:36 ` [devel] " Ivan Zakharyaschev 2016-03-04 21:55 ` Ivan Zakharyaschev 2016-03-09 8:50 ` Ivan Zakharyaschev 2016-03-09 9:02 ` Ivan Zakharyaschev 2016-03-09 9:45 ` Ivan Zakharyaschev 2016-03-09 12:53 ` Ivan Zakharyaschev 2016-04-01 19:49 ` Ivan Zakharyaschev 2016-04-02 8:24 ` [devel] please approve python3-3.5 rebuild of pkgs; was:Re: " Ivan Zakharyaschev 2016-04-04 10:48 ` sbolshakov 2016-04-04 11:17 ` sbolshakov 2016-04-04 13:34 ` Alexey Shabalin 2016-04-05 19:42 ` sbolshakov 2016-04-05 21:19 ` Gleb Fotengauer-Malinovskiy 2016-04-05 22:13 ` Igor Vlasenko 2016-04-06 8:38 ` sbolshakov 2016-04-19 16:41 ` Ivan Zakharyaschev 2016-04-19 18:37 ` Igor Vlasenko 2016-04-04 21:45 ` [devel] I: verify-elf for plugins etc. with RPM_LD_PRELOAD_xxxx & RPM_FILES_TO_LD_PRELOAD_xxxx; was: " Ivan Zakharyaschev 2016-04-07 20:46 ` Alexey Tourbin 2016-12-18 10:13 ` Ivan Zakharyaschev [this message] 2016-12-18 15:14 ` Ivan Zakharyaschev 2016-12-18 16:02 ` Michael Shigorin 2016-12-18 16:32 ` Ivan Zakharyaschev 2016-12-19 12:25 ` Alexey Gladkov 2016-12-19 13:28 ` Ivan Zakharyaschev 2016-12-19 13:55 ` Alexey Gladkov
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=alpine.LFD.2.20.1612181225380.1300@imap.altlinux.org \ --to=imz@altlinux.org \ --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