summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarel Zak2009-02-10 17:20:11 +0100
committerKarel Zak2009-02-13 11:36:59 +0100
commita0487b1cb5beffb8f6783476664b01e8833e0ea8 (patch)
treeadd0cb49636b67bcff8890004f85d28cf258d799
parentbuild-sys: add --with=fsprobe=builtin (diff)
downloadkernel-qcow2-util-linux-a0487b1cb5beffb8f6783476664b01e8833e0ea8.tar.gz
kernel-qcow2-util-linux-a0487b1cb5beffb8f6783476664b01e8833e0ea8.tar.xz
kernel-qcow2-util-linux-a0487b1cb5beffb8f6783476664b01e8833e0ea8.zip
blkid: start to use ABI versioning
The library ABI and API is backwardly compatible, so it does not make sense to change the library SONAME. This patch adds a symbol versioning, naming paradigm is: BLKID_<maj>.<min> The original libblkid from e2fsprogs uses "1.0" as a .so version and "libblkid.1" as a SONAME for all time (at least according to stuff in /lib/libblkid*) And the original library is without symbols versioning. It means that many private functions are exported to applications ;-( Note that the original blkid_get_library_version() returns E2FSPROGS_VERSION. The version in util-linux-ng returns BLKID_VERSION which is <maj>.<min>.<rel>. The <maj>.<min> is the same version as we use for ABI. This concept seems less confusing than mix a library version and package version. Summary: OLD (e2fsprogs): ABI versioning: -none- SONAME: libblkid.1 .so version: libblkid.so.1.0 blkid_get_library_version(): @E2FSPROGS_VERSION@ (e.g. 1.41.1) NEW (util-linux-ng): ABI versioning: BLKID_<maj>.<min> SONAME: libblkid.1 .so version: libblkid.so.<maj.<min> (e.g. 1.41) blkid_get_library_version(): @BLKID_VERSION@ (e.g. 1.41.1) (BLKID_VERSION = <maj>.<min>.<rel>) Signed-off-by: Karel Zak <kzak@redhat.com>
-rw-r--r--configure.ac9
-rw-r--r--libs/blkid/bin/blkid.c3
-rw-r--r--libs/blkid/src/blkid.sym50
3 files changed, 42 insertions, 20 deletions
diff --git a/configure.ac b/configure.ac
index 2af03d9db..dc8374de0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -10,12 +10,13 @@ AC_CONFIG_SRCDIR(mount/mount.c)
AC_PREFIX_DEFAULT([/usr])
-dnl libblkid version definition
-dnl -----------------------------
+dnl blkid version definition (the library SONAME is
+dnl "libblkid.so.$BLKID_VERSION_MAJOR", see blkid/Makefile.am)
+dnl ----------------------------------------------------------
BLKID_VERSION_MAJOR=1
-BLKID_VERSION_MINOR=41
+BLKID_VERSION_MINOR=42
BLKID_VERSION_RELEASE=0
-BLKID_DATE="10-Jul-2008"
+BLKID_DATE="10-Feb-2009"
BLKID_VERSION=$BLKID_VERSION_MAJOR.$BLKID_VERSION_MINOR.$BLKID_VERSION_RELEASE
diff --git a/libs/blkid/bin/blkid.c b/libs/blkid/bin/blkid.c
index 3d29d03cb..f0852e45e 100644
--- a/libs/blkid/bin/blkid.c
+++ b/libs/blkid/bin/blkid.c
@@ -44,7 +44,8 @@ const char *progname = "blkid";
static void print_version(FILE *out)
{
- fprintf(out, "%s %s (%s)\n", progname, BLKID_VERSION, BLKID_DATE);
+ fprintf(out, "%s from %s (libblkid %s, %s)\n",
+ progname, PACKAGE_STRING, BLKID_VERSION, BLKID_DATE);
}
static void usage(int error)
diff --git a/libs/blkid/src/blkid.sym b/libs/blkid/src/blkid.sym
index 26ecfe582..e08df0f52 100644
--- a/libs/blkid/src/blkid.sym
+++ b/libs/blkid/src/blkid.sym
@@ -1,4 +1,13 @@
-{ global:
+/*
+ * The symbol versioning ensures that a new application requiring symbol foo()
+ * can't run with old libblkid.so not providing foo() - the global SONAME
+ * version info can't enforce this since we never change the SONAME.
+ *
+ * The original libblkid (.so version 1.0) from e2fsprogs does not to use
+ * symbol versioning -- all the original symbols are in BLKID_1.0 now.
+ */
+BLKID_1.0 {
+global:
blkid_dev_devname;
blkid_dev_has_tag;
blkid_dev_iterate_begin;
@@ -6,12 +15,7 @@
blkid_dev_next;
blkid_devno_to_devname;
blkid_dev_set_search;
- blkid_do_probe;
- blkid_do_safeprobe;
- blkid_encode_string;
- blkid_evaluate_spec;
blkid_find_dev_with_tag;
- blkid_free_probe;
blkid_gc_cache;
blkid_get_cache;
blkid_get_dev;
@@ -20,11 +24,33 @@
blkid_get_library_version;
blkid_get_tag_value;
blkid_known_fstype;
- blkid_new_probe;
blkid_parse_tag_string;
blkid_parse_version_string;
blkid_probe_all;
blkid_probe_all_new;
+ blkid_put_cache;
+ blkid_tag_iterate_begin;
+ blkid_tag_iterate_end;
+ blkid_tag_next;
+ blkid_verify;
+local:
+ *;
+};
+
+
+/*
+ * util-linux-ng version(s)
+ */
+BLKID_1.42 {
+global:
+ blkid_do_probe;
+ blkid_do_safeprobe;
+ blkid_encode_string;
+ blkid_evaluate_spec;
+ blkid_free_probe;
+ blkid_new_probe;
+ blkid_probe_all;
+ blkid_probe_all_new;
blkid_probe_filter_types;
blkid_probe_filter_usage;
blkid_probe_get_value;
@@ -35,14 +61,8 @@
blkid_probe_reset_filter;
blkid_probe_set_device;
blkid_probe_set_request;
- blkid_put_cache;
blkid_reset_probe;
blkid_safe_string;
blkid_send_uevent;
- blkid_tag_iterate_begin;
- blkid_tag_iterate_end;
- blkid_tag_next;
- blkid_verify;
-local:
- *;
-};
+} BLKID_1.0;
+