commit -m "better"
2.96K subscribers
868 photos
105 videos
3 files
2.07K links
just random thoughts
Download Telegram
Мне тут в комментариях посоветовали вместо gnome files собрать https://wiki.lxde.org/ru/PCManFM #pcmanfm

Мне это показалось хорошим вариантом, часть LXDE, ни от чего не зависит(ну, почти), на вид выглядит не очень страшно.

Что характерно, поддержку gtk3 в нем запилило сообщество Arch, а, значит, проект пользуется некоторой популярностью, потому что так-то сообщество - жопа ленивая обычно.

Замечания по ходу процесса:

* libfm для сборки потребовало gtk-doc, причем практически неотключаемым образом.

Про свои муки с #docbook я уже как-то писал, но тут получилось, что просто так обойти эту зависимость не получается.

Небольшое лирическое отступление. Проекты на GNU #autohell требуют для построения configure наличие dev части некоторых зависимых пакетов, даже если ты потом не захочешь использовать этот пакет, и отключишь его через —disable-XXX.

Поэтому зависимость от gtk-doc я пока решил так - у меня корректно собирается и устанавливается часть gtk-doc, нужная для генерации autohell скриптов, а вот потом, если не позвать —disable-gtk-doc в configure, все будет взрываться самым неприятным образом. Я, конечно, нужный —disable- зову.

* libfm потребовала некую libmenu-cache, которая потребовала libfm. Я тут немного прифигел, но таки да:

https://github.com/lxde/menu-cache

"Since version 0.7.0 the Libmenu-cache requires Libfm-extra for the menu-cache-gen menu cache generation binary. Since Libfm depends on Libmenu-cache, there is some hint for bootstrapers how to build those libraries together: you need create Libfm-extra first, you can easily do this by passing '--with-extra-only' option to configure script and installing Libfm-extra."

С моей точки зрения:

* коллега нагадил посреди комнаты

* вместо того, чтобы тихонько прибраться, повесил табличку "я нагадил, обход тут"

"А что подумал по этому поводу Кролик, никто так и не узнал, потому что Кролик был очень воспитанный"

(нет, Кролик был в ахуе, и выпал в осадок так-то)

* К сожалению, посреди процесса сборки уже самого pcmanfm, я обнаружил, что оно таки непосредственно зависит от X11, и я не могу это собрать и использовать.

Сначала я решил, что ну и хер с ним, но потом внимательнее посмотрел на код, и понял, что могу изящно обойти эту зависимость от X, потому что она используется только если запустить этот FM в качестве X Desktop.

https://git.sr.ht/~pg/mix/tree/main/item/pkgs/bin/pcmanfm/mix.sh#L34

По сути, мне пришлось заменить один файлик размером 200К на несколько заглушек. Попрошу отметить, как я изящно расставил abort() в некоторых местах, чтобы быть уверенным, что мы не обсчитываем мусор. Все очень надежно!

Короче, оно даже запустилось, и даже заработало, с некоторыми глюками. Не работает прокрутка мышью, я это списываю на то, что никто и никогда этот код с Wayland не запускал, по понятным причинам. На вид чистенько, бедненько, все, как я люблю в софте.

Самое неприятное, конечно, в другом: #libmagic

Я успел прочитать часть кода, связанную с mime info, и с запуском приложений. Код рыхлый, неприятный, видно, что проект затащили грубой силой. Знаете, вот возникает момент, когда надо выделить функцию, а ты все равно в 10 местах вставляешь еще 1 if.

Поэтому за час у меня не получилось переделать всю эту машинерию на запуск xdg-open вместо своей таблицы отображения mime types на команду, а без этого у меня оно пока неюзабельно.

Пока отложил в сторону.
🔥8👍1
Сегодня довольно технический текст, но, тем не менее.

Много раз рассказывал, что мои пакеты - это, на самом деле, не просто пакеты, а шаблоны, которые можно настраивать снаружи, с помощью аргументов.

Вот, хочу рассказать про два забавных способа использовать эту фичу.

Иногда сборка того или иного пакета требует то, чего у меня просто нет.

Например, того, чего нет в данный момент времени - #docbook скрипты для генерации документации. Да, так и не собрался их занести.

Или, программа хочет принудительно линковаться с libstdc++. Ну, то есть, у нее так написано в makefile - " -lstdc++ ".

Раньше я решал эти проблемы ad hoc - делал патч, который правил makefile, убирал вызовы тулзы, или вырезал библиотеки, которых у меня нет.

Но мне это надоело, и я это сильно упростил!

Я завел два метапакета:

* Шаблонную библиотеку, которая добавляеет в путь компилятора статическую библиотеку с заранее заданным именем. https://github.com/stal-ix/ix/blob/main/pkgs/lib/shim/fake/ix.sh#L14

* И шаблонный скрипт, который для заданного output просто делает пустой файл, который дальше игнорируется.

Используется это примерно так:

https://github.com/stal-ix/ix/blob/main/pkgs/lib/jxr/ix.sh#L16

https://github.com/stal-ix/ix/blob/main/pkgs/bin/porto/ix.sh#L20

Чаще всего я это использую для документогенераторов, потому что, по умолчанию, доки я не генерю, это сильно увеличивает цепочку сборки, или пока мне не доступно (pandoc == haskell)

https://github.com/stal-ix/ix/blob/main/pkgs/bin/showfont/ix.sh#L5 - вот тут забавно. Часто библиотеки проверяют наличие open gl по наличию libOpenGL.a, или libGLX.a. Ни та, ни другая, библиотеки, не нужна для функционирования #mesa

https://github.com/stal-ix/ix/blob/main/pkgs/bin/qemu/ix.sh#L35 - самая частая ошибка - принудительная линковка с libstdc++

Кажется, мелочь, но вот программная генерация пакетов позволила вычистить кучу дичи из примерно 60 сборочных файлов!
👍11😐5🔥3🤔1