На данный момент в /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'ов использовать их, а не генерировать заглушки, как сейчас. Один из вариантов изменения воспоследует.
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