From: Karel Zak Date: Tue, 10 Feb 2009 16:20:11 +0000 (+0100) Subject: blkid: start to use ABI versioning X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a0487b1cb5beffb8f6783476664b01e8833e0ea8;p=util-linux 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_. 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 ... The . 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_. SONAME: libblkid.1 .so version: libblkid.so. (e.g. 1.41) blkid_get_library_version(): @BLKID_VERSION@ (e.g. 1.41.1) (BLKID_VERSION = ..) Signed-off-by: Karel Zak --- diff --git a/configure.ac b/configure.ac index 2af03d9d..dc8374de 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 3d29d03c..f0852e45 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 26ecfe58..e08df0f5 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; +