From: Vitaly Lipatov <lav@altlinux.ru> To: ALT Devel discussion list <devel@lists.altlinux.org> Subject: [devel] Сборка ffmpeg в p8 Date: Fri, 21 Jul 2017 23:58:17 +0300 Message-ID: <58f1278e6dd77240719b6eb9db088beb@altlinux.ru> (raw) Всем добрый день! Вопрос о сборке ffmpeg в p8 очень интересный, потому что попытки его решения выявляют ряд проблем и ограничений, многие из которых не носят технического характера. Так получилось, что так или иначе тему ffmpeg я обсуждал с разными специалистами, но они не всегда знали мнение друг друга, поэтому я хотел бы их увидеть в этой цепочке обсуждения. На самом деле я очень мало разбираюсь в проблеме. Я не собирал ffmpeg, и не проводил ту большую работу, которую провёл rider@ в Сизифе, благодаря которой мы не только получили актуальную версию ffmpeg, но и знаем теперь о том, что переход возможен. Итак. Как обычно, всё начинается с того, что почти все программы, хотящие воспроизводить видео, хотят использовать ffmpeg. Которого — неожиданно — в p8 нет. Среди них такие базовые в наше время программы, как chromium и firefox. Кстати, у них интересное отличие. Если chromium просто несёт ffmpeg внутри себя и собирает его в библиотеку, которую носит с собой, то firefox носит с собой некоторые огрызки и headers, а потом при исполнении перебирает по списку, что он может загрузить из "libavcodec-ffmpeg.so.57", "libavcodec-ffmpeg.so.56", "libavcodec.so.57", "libavcodec.so.56", "libavcodec.so.55", "libavcodec.so.54", "libavcodec.so.53", Что интересно с chromium. Многие библиотеки, которые он несёт с собой, он собирает динамически и кладёт в свой каталог: /usr/lib64/chromium/libffmpeg.so /usr/lib64/chromium/libicui18n.so /usr/lib64/chromium/libicuuc.so /usr/lib64/chromium/libv8.so Кто даёт гарантии, что какие-то библиотеки, используемые chromium, не слинкуются с какими-то системными вариантами этих библиотек и chromium не начнёт падать? В тоже время один из аргументов против моего робкого предложения собрать ffmpeg в %_libdir/ffmpeg, чтобы он никому не мешал кроме тех, кто решит явно с ним линковаться, заключается как раз в попытке избежать такой ситуации. Далее. Сейчас очень популярным является создание desktop-программ на движке Electon (всё началось с редактора Atom, потом MS Visual Studio Code, клиенты Skype, VK Messenger, разные там Franz, WebTorrent, PopcornTime, Sia UI и пр). Если посмотреть на то, как electron собран, видно, с какими библиотеками он собран или носит с собой. $ rpm -ql electron /usr/lib64/electron/electron /usr/lib64/electron/icudtl.dat /usr/lib64/electron/libffmpeg.so /usr/lib64/electron/libnode.so Возможность собрать крупный проект, используя системные библиотеки дистрибутива — это свойство не только проекта, но ещё и показатель зрелости дистрибутива. Это же простой вопрос — можно ли построить на платформе что-то стабильное, или всё надо принести с собой. Вот у нас (а может только у меня в системе) есть 3 библиотеки libpng одновременно: $ ls /usr/lib64/libpng*.so.*.0 -1 /usr/lib64/libpng12.so.0.50.0 /usr/lib64/libpng15.so.15.28.0 /usr/lib64/libpng16.so.16.29.0 и этого не пугает никого. В тоже время появление альтернативных библиотек ffmpeg выглядит страшно. Я слышал простое предложение носить линковаться с ffmpeg статически. Конечно, я никогда не стану собирать незаметно ffmpeg внутри пакета и линковаться с ней. Я бы собрал некий ffmpeg-devel-static со статическими библиотеками и собирался с ней. Но если мы на простой проблеме так легко отказываемся от динамической линковки, зачем в других случаях рассказывать, как важно иметь возможность в случае необходимости пересобирать библиотеку с security fixes, не пересобирая все проекты, её использующие. Я уж молчу о разделении памяти и совсем отдельная тема, что смена способа линковки может вызывать лицензионные столкновения. Затрудняюсь привести все аргументы против сборки в p8, которые я услышал от уважаемых коллег. Мне показалось, что частично они защищают репозиторий от недальновидных мантейнеров, а частично выглядят немного смешно. И почти не носят технический характер. Поэтому я прошу, если аргументы против остались в силе, процитировать их здесь самостоятельно. Закончу фразой, что репозиторий, в который нельзя собрать пакет, становится не интересен. P.S. А mplayer в Сизифе слинкован с десятками сумасшедших библиотек проекта samba. Видимо, со всем содержимым /usr/lib64/samba/: ... libutil-tdb-samba4.so => /usr/lib64/samba/libutil-tdb-samba4.so (0x00007f3138760000) libsamba-sockets-samba4.so => /usr/lib64/samba/libsamba-sockets-samba4.so (0x00007f3138548000) ... $ ldd /usr/bin/mplayer | grep samba | wc -l 54 -- С уважением, Виталий Липатов, Etersoft
next reply other threads:[~2017-07-21 20:58 UTC|newest] Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-07-21 20:58 Vitaly Lipatov [this message] 2017-07-22 7:35 ` Sergey V Turchin 2017-07-22 9:30 ` [devel] bundled libraries Dmitry V. Levin 2017-07-22 10:23 ` Sergey V Turchin 2017-07-22 9:49 ` [devel] Сборка ffmpeg в p8 Alexey Gladkov 2017-07-22 10:17 ` Sergey V Turchin 2017-07-24 6:31 ` Alexey V. Vissarionov 2017-07-24 7:14 ` Hihin Ruslan 2017-07-24 7:41 ` Alexey V. Vissarionov 2017-07-24 7:48 ` Hihin Ruslan 2017-07-24 7:49 ` Hihin Ruslan 2017-07-24 7:51 ` Hihin Ruslan 2017-07-24 7:52 ` Sergey V Turchin 2017-07-24 7:52 ` Hihin Ruslan 2017-07-24 7:21 ` Sergey V Turchin 2017-07-24 7:50 ` Alexey V. Vissarionov 2017-07-24 8:05 ` Sergey V Turchin 2017-07-22 8:35 ` Motsyo Gennadi aka Drool 2017-10-07 6:56 ` Vitaly Lipatov 2017-10-09 14:35 ` Sergey V Turchin 2017-10-09 14:40 ` Sergey V Turchin 2017-10-09 14:50 ` Anton Farygin 2017-10-09 14:51 ` Sergey V Turchin 2017-10-13 14:29 ` Vitaly Lipatov 2017-10-13 14:40 ` Vitaly Lipatov 2017-10-14 7:45 ` Sergey V Turchin 2017-07-25 10:37 ` [devel] Сборка ffmpeg в p8 (mplayer в Сизифе слинкован с десятками сумасшедших библиотек проекта samba) Vladimir D. Seleznev 2017-07-27 20:32 ` Vitaly Lipatov
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=58f1278e6dd77240719b6eb9db088beb@altlinux.ru \ --to=lav@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