Bug 13577 - Custom version scripts support
: Custom version scripts support
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/libtool_1.5)
: unstable
: all Linux
: P2 enhancement
Assigned To:
:
:
:
:
: 13337
  Show dependency tree
 
Reported: 2007-12-04 01:11 by
Modified: 2008-03-10 01:45 (History)


Attachments
Allow custom version scripts (1.01 KB, patch)
2007-12-04 09:30, Alexey Rusakov
no flags Details | Diff
Обновлённый патч (1.02 KB, patch)
2008-03-04 14:08, Alexey Rusakov
no flags Details | Diff


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2007-12-04 01:12:00
На данный момент в /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 From 2007-12-04 09:30:38 -------
Created an attachment (id=2306) [details]
Allow custom version scripts

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

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

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

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

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

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