Sisyphus repositório
Última atualização: 1 outubro 2023 | SRPMs: 18631 | Visitas: 37513935
en ru br
ALT Linux repositórios
S:3.1.2-alt1

Group :: Rede/Outros
RPM: openvswitch

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs e FR  Repocop 

Patch: 0001-Build-Add-support-for-shared-libraries-and-versioning.patch
Download


From 7f2f24e379d9ca65c20d072a6c0adb1c6c8a9cce Mon Sep 17 00:00:00 2001
From: Scott Mann <smann@noironetworks.com>
Date: Fri, 7 Nov 2014 19:02:09 -0800
Subject: [PATCH] Build: Add support for shared libraries and versioning.
---
 AUTHORS                   |  1 +
 configure.ac              | 43 ++++++++++++++++++++++++++++++++++++++++++-
 lib/automake.mk           |  8 ++++++--
 lib/libopenvswitch.sym.in |  4 ++++
 lib/libsflow.sym.in       |  4 ++++
 lib/util.c                |  8 +++++++-
 ofproto/automake.mk       |  4 +++-
 ofproto/libofproto.sym.in |  4 ++++
 ovsdb/automake.mk         |  4 +++-
 ovsdb/libovsdb.sym.in     |  4 ++++
 12 files changed, 81 insertions(+), 6 deletions(-)
 create mode 100644 lib/libopenvswitch.sym.in
 create mode 100644 lib/libsflow.sym.in
 create mode 100644 ofproto/libofproto.sym.in
 create mode 100644 ovsdb/libovsdb.sym.in
diff --git a/configure.ac b/configure.ac
index 62224b9..c3b26ec 100644
--- a/configure.ac
+++ b/configure.ac
@@ -43,6 +43,41 @@ AC_SYS_LARGEFILE
 LT_INIT([disable-shared])
 m4_pattern_forbid([LT_INIT]) dnl Make autoconf fail if libtool is missing.
 
+# The following explanation may help to understand the use of the
+# version number fields: current, revision, and age.
+#
+# Consider that there are three possible kinds of reactions from
+# users of your library to changes in a shared library:
+#
+# 1. Programs using the previous version may use the new version as drop-in
+#    replacement, and programs using the new version can also work with the
+#    previous one. In other words, no recompiling nor relinking is needed.
+#    In short, there are no changes to any symbols, no symbols removed,
+#    and no symbols added. In this case, bump revision only, don't touch
+#    current nor age.
+#
+# 2. Programs using the previous version may use the new version as drop-in
+#    replacement, but programs using the new version may use APIs not
+#    present in the previous one. In other words, new symbols have been
+#    added and a program linking against the new version may fail with
+#    “unresolved symbols.” If linking against the old version at runtime:
+#    set revision to 0, bump current and age.
+#
+# 3. Programs may need to be changed, recompiled, relinked in order to use
+#    the new version. This is the case when symbols have been modified or
+#    deleted. Bump current, set revision and age to 0.
+
+m4_define([libopenvswitch_lt_current],    [1])
+m4_define([libopenvswitch_lt_revision],   [0])
+m4_define([libopenvswitch_lt_age],        [0])
+
+LT_CURRENT=libopenvswitch_lt_current
+AC_SUBST([LT_CURRENT])
+LT_REVISION=libopenvswitch_lt_revision
+AC_SUBST([LT_REVISION])
+LT_AGE=libopenvswitch_lt_age
+AC_SUBST([LT_AGE])
+
 AC_SEARCH_LIBS([pow], [m])
 AC_SEARCH_LIBS([clock_gettime], [rt])
 AC_SEARCH_LIBS([timer_create], [rt])
@@ -94,7 +129,13 @@ OVS_CHECK_LINUX_HOST
 AX_FUNC_POSIX_MEMALIGN
 
 OVS_CHECK_INCLUDE_NEXT([stdio.h string.h])
-AC_CONFIG_FILES([lib/stdio.h lib/string.h])
+AC_CONFIG_FILES([
+    lib/stdio.h
+    lib/string.h
+    ovsdb/libovsdb.sym
+    ofproto/libofproto.sym
+    lib/libsflow.sym
+    lib/libopenvswitch.sym])
 
 OVS_ENABLE_OPTION([-Wall])
 OVS_ENABLE_OPTION([-Wextra])
diff --git a/lib/automake.mk b/lib/automake.mk
index 783e657..f30459c 100644
--- a/lib/automake.mk
+++ b/lib/automake.mk
@@ -13,7 +13,9 @@ if WIN32
 lib_libopenvswitch_la_LIBADD += ${PTHREAD_LIBS}
 endif
 
-lib_libopenvswitch_la_LDFLAGS = -release $(VERSION)
+lib_libopenvswitch_la_LDFLAGS = \
+        -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+        -Wl,--version-script=$(top_builddir)/lib/libopenvswitch.sym
 
 lib_libopenvswitch_la_SOURCES = \
 	lib/aes128.c \
@@ -291,7 +293,9 @@ nodist_lib_libopenvswitch_la_SOURCES = \
 CLEANFILES += $(nodist_lib_libopenvswitch_la_SOURCES)
 
 lib_LTLIBRARIES += lib/libsflow.la
-lib_libsflow_la_LDFLAGS = -release $(VERSION)
+lib_libsflow_la_LDFLAGS = \
+        -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+        -Wl,--version-script=$(top_builddir)/lib/libsflow.sym
 lib_libsflow_la_SOURCES = \
 	lib/sflow_api.h \
 	lib/sflow.h \
diff --git a/lib/libopenvswitch.sym.in b/lib/libopenvswitch.sym.in
new file mode 100644
index 0000000..fdfc5bb
--- /dev/null
+++ b/lib/libopenvswitch.sym.in
@@ -0,0 +1,4 @@
+libopenvswitch_@LT_CURRENT@ {
+global:
+        *;
+};
diff --git a/lib/libsflow.sym.in b/lib/libsflow.sym.in
new file mode 100644
index 0000000..88b9cc1
--- /dev/null
+++ b/lib/libsflow.sym.in
@@ -0,0 +1,4 @@
+libsflow_@LT_CURRENT@ {
+global:
+        *;
+};
diff --git a/lib/util.c b/lib/util.c
index fb2ff51..1b9eea6 100644
--- a/lib/util.c
+++ b/lib/util.c
@@ -471,9 +471,15 @@ set_program_name__(const char *argv0, const char *version, const char *date,
 
     assert_single_threaded();
     free(program_name);
+    /* Remove libtool prefix, if it is there */
+    if (strncmp(basename, "lt-", 3) == 0) {
+        char *tmp_name = basename;
+        basename = xstrdup(basename + 3);
+        free(tmp_name);
+    }
     program_name = basename;
-    free(program_version);
 
+    free(program_version);
     if (!strcmp(version, VERSION)) {
         program_version = xasprintf("%s (Open vSwitch) "VERSION"\n"
                                     "Compiled %s %s\n",
diff --git a/ofproto/automake.mk b/ofproto/automake.mk
index 399f2b6..bb4bc7e 100644
--- a/ofproto/automake.mk
+++ b/ofproto/automake.mk
@@ -6,7 +6,9 @@
 # without warranty of any kind.
 
 lib_LTLIBRARIES += ofproto/libofproto.la
-ofproto_libofproto_la_LDFLAGS = -release $(VERSION)
+ofproto_libofproto_la_LDFLAGS = \
+        -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+        -Wl,--version-script=$(top_builddir)/ofproto/libofproto.sym
 ofproto_libofproto_la_SOURCES = \
 	ofproto/bond.c \
 	ofproto/bond.h \
diff --git a/ofproto/libofproto.sym.in b/ofproto/libofproto.sym.in
new file mode 100644
index 0000000..cdd4327
--- /dev/null
+++ b/ofproto/libofproto.sym.in
@@ -0,0 +1,4 @@
+libofproto_@LT_CURRENT@ {
+global:
+        *;
+};
diff --git a/ovsdb/automake.mk b/ovsdb/automake.mk
index 00a0b01..7a8d7d2 100644
--- a/ovsdb/automake.mk
+++ b/ovsdb/automake.mk
@@ -1,6 +1,8 @@
 # libovsdb
 lib_LTLIBRARIES += ovsdb/libovsdb.la
-ovsdb_libovsdb_la_LDFLAGS = -release $(VERSION)
+ovsdb_libovsdb_la_LDFLAGS = \
+        -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+        -Wl,--version-script=$(top_builddir)/ovsdb/libovsdb.sym
 ovsdb_libovsdb_la_SOURCES = \
 	ovsdb/column.c \
 	ovsdb/column.h \
diff --git a/ovsdb/libovsdb.sym.in b/ovsdb/libovsdb.sym.in
new file mode 100644
index 0000000..71ae4e8
--- /dev/null
+++ b/ovsdb/libovsdb.sym.in
@@ -0,0 +1,4 @@
+libovsdb_@LT_CURRENT@ {
+global:
+        *;
+};
--
libgit2 0.21.4
 
projeto & código: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
mantenedor atual: Michael Shigorin
mantenedor da tradução: Fernando Martini aka fmartini © 2009