From: Alexey Tourbin <at@altlinux.ru>
To: ALT Devel discussion list <devel@lists.altlinux.org>
Subject: Re: [devel] libopenobex-1.3 symbol versioning patch
Date: Fri, 11 Aug 2006 23:42:54 +0400
Message-ID: <20060811194254.GC15751@localhost.localdomain> (raw)
In-Reply-To: <20060811184453.GD15128@procyon.home>
[-- Attachment #1: Type: text/plain, Size: 3904 bytes --]
On Fri, Aug 11, 2006 at 10:44:53PM +0400, Sergey Vlasov wrote:
> Hello!
>
> Прошу высказать замечания по прилагаемому патчу, который добавляет
> symbol versioning в libopenobex-1.3 (сейчас в Сизифе лежит 1.0.1).
[ Перепутал сначала с openbox:
А что, кто-то ещё линкуется с libopenbox, кроме самого openbox?
В apt-cache пока не видно.
Теперь посмотрел внимательнее и вижу, что не openbox. ]
> Глубже версии 1.0.0 я копать не стал (это конец 2002 года, 1.0.1, где
> не сделали ничего существенного - октябрь 2003). На то, что было в
> этих версиях, я поставил версию OPENOBEX_1.0 (можно было, конечно,
> написать 1.0.0, но позднее формат версий немного сменился).
>
> Функции OBEX_SetUserCallBack, OBEX_SetTransportMTU, OBEX_ServerAccept,
> OBEX_ObjectReParseHeaders на самом деле были ещё в 1.0.0, но
> фактически не были доступны из-за фильтрации символов по lib/obex.sym,
> где они были пропущены (эта ошибка была исправлена уже после выхода
> 1.0.1, и первый релиз, в который попало исправление - 1.1), поэтому я
> поставил для этих символов версию OPENOBEX_1.1, как и для добавленных
> позднее в ходе разработки 1.1 OBEX_SuspendRequest, OBEX_ResumeRequest,
> OBEX_InterfaceConnect, OBEX_FindInterfaces, OBEX_FreeInterfaces.
> После 1.1 вроде бы изменений ABI больше не было (во всяком случае,
> файл lib/obex.sym больше не менялся).
>
> Тест для autoconf самопальный - возможно, у кого-то есть варианты
> лучше?
Круто!
> --- openobex-1.3/lib/obex.ver.alt-symbol-versions 2006-08-11 22:05:23 +0400
> +++ openobex-1.3/lib/obex.ver 2006-08-11 22:05:23 +0400
> @@ -0,0 +1,57 @@
> +OPENOBEX_1.0 {
> +global:
> +
> + OBEX_Init;
> + OBEX_Cleanup;
> + OBEX_RegisterCTransport;
> + OBEX_SetCustomData;
> + OBEX_GetCustomData;
> + OBEX_TransportConnect;
> + OBEX_TransportDisconnect;
> + OBEX_CustomDataFeed;
> + OBEX_GetFD;
> + OBEX_HandleInput;
> + OBEX_ServerRegister;
> + OBEX_Request;
> + OBEX_CancelRequest;
> + OBEX_SetUserData;
> + OBEX_GetUserData;
> + OBEX_ObjectNew;
> + OBEX_ObjectDelete;
> + OBEX_ObjectAddHeader;
> + OBEX_ObjectGetNextHeader;
> + OBEX_ObjectReadStream;
> + OBEX_ObjectSetRsp;
> + OBEX_ObjectGetNonHdrData;
> + OBEX_ObjectSetNonHdrData;
> + OBEX_ObjectSetHdrOffset;
> + OBEX_UnicodeToChar;
> + OBEX_CharToUnicode;
> + OBEX_ResponseToString;
> + OBEX_GetResponseMessage;
> + InOBEX_ServerRegister;
> + InOBEX_TransportConnect;
> + IrOBEX_ServerRegister;
> + IrOBEX_TransportConnect;
> + BtOBEX_ServerRegister;
> + BtOBEX_TransportConnect;
> + FdOBEX_TransportSetup;
> +
> +local:
> + *;
> +};
Здесь вот что получается: "базовые" символы, у которых раньше интерфейса
не было, теперь получат интерфейс по умолчанию OPENOBEX_1.0; и при
линковке с этой библиотекой появится зависимость на OPENOBEX_1.0. Это
может быть не очень желательно, но может быть и нормально.
Я в таких случаях для базовых символов отдельного интерфейса не делаю,
чтобы после добавления versioning при пересборке других пакетов не
появлялось новых зависимостей. Но приходится более тщательно
контролировать секцию local: в первом блоке.
> +OPENOBEX_1.1 {
> +global:
> +
> + OBEX_FindInterfaces;
> + OBEX_FreeInterfaces;
> + OBEX_InterfaceConnect;
> + OBEX_ObjectReParseHeaders;
> + OBEX_ResumeRequest;
> + OBEX_ServerAccept;
> + OBEX_SetTransportMTU;
> + OBEX_SetUserCallBack;
> + OBEX_SuspendRequest;
Т.е. OPENOBEX_1.0 можно было не писать, а вот здесь вот (т.е.
обязательно в первом блоке) написать секцию local: и перечислить все
символы, которые не относятся к базовым. Это можно сделать паттерном
типа [^OIBF]*, но всё равно желательно каждый раз проверять, что там
получается. В общем тут есть свои мелкие преимущества и свои мелкие
недостатки, я бы не рискнул дать однозначный совет.
> +} OPENOBEX_1.0;
Кстати список можно проверить с помощью rpmsodiff из пакета qa-robot.
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
next prev parent reply other threads:[~2006-08-11 19:42 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-11 18:44 [devel] [RFC] " Sergey Vlasov
2006-08-11 19:42 ` Alexey Tourbin [this message]
2006-08-12 10:43 ` [devel] " Sergey Vlasov
2006-08-12 11:19 ` Alexey Tourbin
2006-08-12 13:00 ` Sergey Vlasov
2006-08-12 13:32 ` Alexey Tourbin
2006-08-12 13:46 ` Alexey Tourbin
2006-08-12 14:08 ` Sergey Vlasov
2006-08-15 17:19 ` Dmitry V. Levin
2006-08-12 13:50 ` [devel] [RFC] " Sergey Vlasov
2006-08-12 14:05 ` [devel] " Alexey Tourbin
2006-08-12 14:36 ` Alexey Tourbin
2006-08-12 15:49 ` Sergey Vlasov
2006-08-13 7:51 ` Alexey Tourbin
2006-08-13 12:13 ` Sergey Vlasov
2006-08-13 12:20 ` Alexey Tourbin
2006-08-13 14:55 ` Sergey Vlasov
2006-08-13 16:00 ` Alexey Tourbin
2006-08-13 18:57 ` Sergey Vlasov
2006-08-15 19:27 ` [devel] [RFC] " Sergey Vlasov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060811194254.GC15751@localhost.localdomain \
--to=at@altlinux.ru \
--cc=devel@lists.altlinux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git