LINUX.ORG.RU

Небольшая проблема с rpm


0

0

Обнаружил сегодня. Дистрибутив - fedora core, rpm 4.3 (development).

В ходе переписки с товарищами, пищущими sim, выяснилось, что у меня где-то подглюкивает rpm.

В некоторых приложениях он не делает strip, Помню, что был такой глюк в девятом rh. Взял, исправил макросы, все равно strip не делает (и install-strip работает как install). Ладно бы на мелких приложениях - сегодня собрал kde, так его разнесло ужас как...

Не подскажите что конкретно почитать или какой параметр куда вставить?

★★★★★

Попробуй поискать Packaging HOWTO. Цитата из него:
Автоматическое удаление отладочной информации из ELF-файлов с поддержкой различных стратегий выбора файлов,
подлежащих обработке.

Зачастую возможно уменьшить размер получаемых в результате сборки пакета ELF-файлов без потери
качества за счет удаления из них отладочной информации. Поэтому по окончании работы секции %install
все ELF-файлы выбранных типов обрабатываются программой strip. Выбор типов файлов определяется
значением макроса %_strip_method, которое есть набор из следующих возможных значений:
* executable: ELF executable;
* relocatable: ELF relocatable;
* shared: ELF shared object;
* static: ar archive.

Кроме того, есть возможность вызывать strip вручную, для этой цели предназначены макросы
%strip_executable, %strip_relocatable, %strip_shared, %strip_static. Синтаксис этих макросов
подробно изложен в ``/usr/lib/rpm/brp-strip -help''.

anonymous
()

strip не должен сам посебе вызываться, мало что там пишет rpmbuild,
его нужно в спек файле как то активизировать, сейчас не помню как,
а вот для KDE в спек файлах есть опция для стирпа которая в 0:
%define strip_bin 0
вот надо 1 поставить перед сборкой, если спек от fc/rh...

McMCC ★★★
()
Ответ на: комментарий от McMCC

Уже ;)
После чего сидел и думал: во дурак...

Другой момент - sim.

У них там для цели стрипа вызывается некий install-strip.

Утверждают, что у них на fc1 все собралось и застрипилось (однако бинарники у них на сайте есть), я беру их исходники, их спек и получаю... 60 с копейками метров ;)

jackill ★★★★★
() автор топика
Ответ на: комментарий от jackill

Дело в том, что rpm вызывает не все strip скрипты, они лежат
в  /usr/lib/rpm/redhat, вот их список:
brp-strip
brp-strip-comment-note
brp-strip-shared
brp-strip-static-archive

Из этих 4х не вызывается brp-strip-shared, и естественно все *.so 
не стрипятся. Попробуй его вставить в /usr/lib/rpm/redhat/macros,
секция %__os_install_post
типа так
%__os_install_post    \
    /usr/lib/rpm/redhat/brp-compress \
    /usr/lib/rpm/redhat/brp-strip %{__strip} \
    /usr/lib/rpm/redhat/brp-strip-shared %{__strip} \
    /usr/lib/rpm/redhat/brp-strip-static-archive %{__strip} \
    /usr/lib/rpm/redhat/brp-strip-comment-note %{__strip} %{__objdump} \
%{nil}

И все будет стрипаться, только я давно, что бы не делать изменения
в рабочих макросах, завел /etc/rpm/macros, лучше в него все ставить:
%debug_package %{nil}
%_missing_doc_files_terminate_build 0
%_unpackaged_files_terminate_build 0
%__os_install_post    \
    /usr/lib/rpm/redhat/brp-compress \
    /usr/lib/rpm/redhat/brp-strip %{__strip} \
    /usr/lib/rpm/redhat/brp-strip-shared %{__strip} \
    /usr/lib/rpm/redhat/brp-strip-static-archive %{__strip} \
    /usr/lib/rpm/redhat/brp-strip-comment-note %{__strip} %{__objdump} \
%{nil}
В будущем, когда будешь менять очередную версию rpm, не придется
ничего править в самих макросах из rpm, этот конфиг у тебя будет раз
и навсегда, вот в него все параметры и прописывай...

McMCC ★★★
()
Ответ на: комментарий от McMCC

Замечательно. Я думаю, это можно скрестить с еще одним вопросом и отправить в faq. Спасибо.

jackill ★★★★★
() автор топика
Ответ на: комментарий от anonymous

>т.е на либы можно безболезненно strip -X ?

можно -x, -S, -d, -g, -X, и со многими еще прокатит --strip-unneeded...

McMCC ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.