ALT Linux Team development discussions
 help / color / mirror / Atom feed
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 --]

  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