Pull to refresh

Аpt-build. Неработающая оптимизация.

Reading time 2 min
Views 4K
Кросспостинг из блога

Опять же не пинать, это просто мысли.

Итак есть такой замечательный проект apt-build. Замечателен он тем, что создан с благой целью, а именно: пересборка бинарных пакетов под машину | архитектуру | процессор | с нужными оптимизациями. В принципе cool!
В чем же развод?

UPD: С помощью сообщества благополучно разобрался в работе apt-build. Оптимизация происходит. Но не совсем явным способом. Под катом детали.



А в том, что никакой оптимизации не происходит. Вообще. По сути apt-build пересобирает пакет до уровня пакета в репозитории, т.е работает для обогрева комнаты. Почему же такое происходит? А потому что на конфигурационный файл apt-build.conf кладется с прибором. И все оптимизации которые вы туда прописали не используются. В этом легко убедиться, если повнимательней посмотреть на вывод скрипта в начале работы, в момент присвоения значений переменным «CFLAGS», «CXXFLAGS»

---

dpkg-buildpackage: установка CFLAGS в значение по умолчанию: -g -O2
dpkg-buildpackage: установка CPPFLAGS в значение по умолчанию:
dpkg-buildpackage: установка LDFLAGS в значение по умолчанию: -Wl,-Bsymbolic-functions
dpkg-buildpackage: установка FFLAGS в значение по умолчанию: -g -O2
dpkg-buildpackage: установка CXXFLAGS в значение по умолчанию: -g -O2

---


Ага! совсем не то что скажем у меня в конфиге

#cat /etc/apt/apt-build.conf

build-dir = /var/cache/apt-build/build
repository-dir = /var/cache/apt-build/repository
Olevel = -O3
mtune = -mtune=core2
options = "-pipe -fomit-frame-pointer "
make_options = " -j2"


Гугл забит ( по крайней мере в рунете) ссылкой на одну и ту же статью про «как оптимизировать debian», кстати на хабре она тоже есть, в части apt-build абсолютно бредовая, где автор оставил по умолчанию оптимизацию «O2», и даже не потрудился проверить работает ли оно вообще. Пара постов по делу на форумах в итоге ни к чему не приводит, народ не знает как это решить ( может не зря в man написано «BUGS: Many» ;)

В общем единственное решение, и то не знаю наколько работоспособное ( тестирую) это стягивать apt-build-ом исходники, распаковывать. Потом руками в debian/rules менять флаги по вкусу, и потом продолжать сборку.

типа

#apt-build --noupdate --source build-source firefox

правим debian/rules

#apt-build --reinstall --yes --noupdate --source install firefox

--reinstall — Это потому что у меня firefox уже стоит.

UPD: Зря воду мутил. На самом деле достаточно почитать документацию

Q: gcc and g++ do not seem to be called with good options!

A: *** They are called with them! ***
What you see on your screen is the command called by make, but
the wrapper wraps (yeah, it does) calls to gcc/g++ and adds options you
specified in the apt-build configuration file.
You won't see this on your screen.
Try `ps ax | grep gcc' instead as a proof, while building.

Приношу извинения… С другой стороны разобрались… не думаю что все знали об специфике работы apt-build.
Tags:
Hubs:
+2
Comments 24
Comments Comments 24

Articles