Bug 13577

Summary: Custom version scripts support
Product: Sisyphus Reporter: Alexey Rusakov <ktirf>
Component: libtool_1.5Assignee: 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:
Description Flags
Allow custom version scripts
none
Обновлённый патч none

Description Alexey Rusakov 2007-12-04 01:12:00 MSK
На данный момент в /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'ов использовать их, а не
генерировать заглушки, как сейчас. Один из вариантов изменения воспоследует.
Comment 1 Alexey Rusakov 2007-12-04 09:30:38 MSK
Created attachment 2306 [details]
Allow custom version scripts

То же самое скоро будет у меня в git.alt.
Comment 2 Alexey Rusakov 2007-12-05 14:09:52 MSK
С предлагаемым патчем не всё хорошо, если в каком-то пакете обнаружится
"забытый" или намеренно положенный $libname.ver как раз в том месте, в котором
патч ожидает увидеть. Возможно, стоит назвать подкладываемые файлы
$libname-custom.ver, например, и при копировании в .libs менять имя.
Comment 3 Dmitry V. Levin 2007-12-11 00:41:11 MSK
(In reply to comment #2)
> С предлагаемым патчем не всё хорошо, если в каком-то пакете обнаружится
> "забытый" или намеренно положенный $libname.ver как раз в том месте, в котором
> патч ожидает увидеть.

Именно.  Поскольку в оригинале этот файл всегда создаётся заново, затирая
одноимённый файл, менять это поведение рискованно.
Наверное, лучше завести ещё какой-нибудь переключатель в libtool, с помощью
которого можно было бы управлять этим поведением (создавать заново или
пропускать), по умолчанию оставив нынешнее поведение.
Comment 4 Dmitry V. Levin 2008-01-13 21:12:44 MSK
Какие будут мнения?
Comment 5 Alexey Rusakov 2008-01-24 09:01:58 MSK
Смотрю, какой переключатель можно придумать.
Comment 6 Alexey Rusakov 2008-01-31 17:23:28 MSK
Так и не придумал, как продать это в апстрим. Исправленный патч скоро выложу.
Comment 7 Alexey Rusakov 2008-03-04 14:08:44 MSK
Created attachment 2473 [details]
Обновлённый патч

Я решил, что трудно придумать что-то лучше, чем суффикс -altlinux, для охраны
наших version scripts от причуд апстримов. Предлагаю на этом и остановиться.
Comment 8 Dmitry V. Levin 2008-03-05 04:37:15 MSK
(In reply to comment #7)
> Created an attachment (id=2473) [edit]
> Обновлённый патч

Этот патч меняет поведение libtool по умолчанию, затирая
$output_objdir/$libname.ver, чего нынешний libtool почему-то не делает.
Стоит ли так делать?
Comment 9 Alexey Rusakov 2008-03-05 05:21:18 MSK
Не делает?
_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" >
$output_objdir/$libname.ver~
Comment 10 Dmitry V. Levin 2008-03-08 03:37:42 MSK
(In reply to comment #9)
> Не делает?

Делает.  Я не туда посмотрел.

Я сделал однострочную версию этого патча и приложил её в 1.5.26-alt2