| Summary: | Custom version scripts support | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | Sisyphus | Reporter: | Alexey Rusakov <ktirf> | ||||||
| Component: | libtool_1.5 | Assignee: | Dmitry V. Levin <ldv> | ||||||
| Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||||
| Severity: | enhancement | ||||||||
| Priority: | P2 | ||||||||
| Version: | unstable | ||||||||
| Hardware: | all | ||||||||
| OS: | Linux | ||||||||
| Bug Depends on: | |||||||||
| Bug Blocks: | 13337 | ||||||||
| Attachments: |
|
||||||||
Created attachment 2306 [details]
Allow custom version scripts
То же самое скоро будет у меня в git.alt.
С предлагаемым патчем не всё хорошо, если в каком-то пакете обнаружится "забытый" или намеренно положенный $libname.ver как раз в том месте, в котором патч ожидает увидеть. Возможно, стоит назвать подкладываемые файлы $libname-custom.ver, например, и при копировании в .libs менять имя. (In reply to comment #2) > С предлагаемым патчем не всё хорошо, если в каком-то пакете обнаружится > "забытый" или намеренно положенный $libname.ver как раз в том месте, в котором > патч ожидает увидеть. Именно. Поскольку в оригинале этот файл всегда создаётся заново, затирая одноимённый файл, менять это поведение рискованно. Наверное, лучше завести ещё какой-нибудь переключатель в libtool, с помощью которого можно было бы управлять этим поведением (создавать заново или пропускать), по умолчанию оставив нынешнее поведение. Какие будут мнения? Смотрю, какой переключатель можно придумать. Так и не придумал, как продать это в апстрим. Исправленный патч скоро выложу. Created attachment 2473 [details]
Обновлённый патч
Я решил, что трудно придумать что-то лучше, чем суффикс -altlinux, для охраны
наших version scripts от причуд апстримов. Предлагаю на этом и остановиться.
(In reply to comment #7) > Created an attachment (id=2473) [edit] > Обновлённый патч Этот патч меняет поведение libtool по умолчанию, затирая $output_objdir/$libname.ver, чего нынешний libtool почему-то не делает. Стоит ли так делать? Не делает?
_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" >
$output_objdir/$libname.ver~
(In reply to comment #9) > Не делает? Делает. Я не туда посмотрел. Я сделал однострочную версию этого патча и приложил её в 1.5.26-alt2 |
На данный момент в /usr/share/libtool-1.5/aclocal/libtool.m4 содержится такой вот кусок кода: if test $supports_anon_versioning = yes; then _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ $echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi В результате, всякий раз когда мы сталкиваемся с использованием version scripts апстримом, приходится патчить мейкфайлы либо вставлять в вызов make в спекфайле неочевидные добавки типа LIBTOOL_EXPORT_OPTIONS=symver.map или что-то аналогичное. Не слишком удобно. Предлагается создать в нашем libtool некий вариант "точки входа", который бы позволял при наличии привнесённых version script'ов использовать их, а не генерировать заглушки, как сейчас. Один из вариантов изменения воспоследует.