diff options
author | Karel Zak | 2014-11-26 12:45:24 +0100 |
---|---|---|
committer | Karel Zak | 2014-11-26 12:45:24 +0100 |
commit | 0bb4c979c68ec8ffeadc3315f26c883f19c98d1e (patch) | |
tree | dfc8741f1575ed1a0ae469f4976dd990e007e1a6 | |
parent | blkdiscard: fix compiler warning (diff) | |
download | kernel-qcow2-util-linux-0bb4c979c68ec8ffeadc3315f26c883f19c98d1e.tar.gz kernel-qcow2-util-linux-0bb4c979c68ec8ffeadc3315f26c883f19c98d1e.tar.xz kernel-qcow2-util-linux-0bb4c979c68ec8ffeadc3315f26c883f19c98d1e.zip |
build-sys: create a regular shared libfdisk.so
- symbols versioning
- SONAME from configure.ac
- library version to header file
- modify build-sys to compile and install shared lib
Signed-off-by: Karel Zak <kzak@redhat.com>
-rw-r--r-- | Makefile.am | 7 | ||||
-rw-r--r-- | configure.ac | 22 | ||||
-rw-r--r-- | libfdisk/Makemodule.am | 2 | ||||
-rw-r--r-- | libfdisk/src/.gitignore | 1 | ||||
-rw-r--r-- | libfdisk/src/Makemodule.am | 70 | ||||
-rw-r--r-- | libfdisk/src/libfdisk.h.in (renamed from libfdisk/src/libfdisk.h) | 15 | ||||
-rw-r--r-- | libfdisk/src/libfdisk.sym | 232 |
7 files changed, 319 insertions, 30 deletions
diff --git a/Makefile.am b/Makefile.am index 122344e80..c7eb19584 100644 --- a/Makefile.am +++ b/Makefile.am @@ -18,14 +18,15 @@ LDADD = $(LTLIBINTL) dist_noinst_DATA = $(dist_man_MANS) # Paths to in-tree libraries (use ul_ prefix to avoid possible collisions) Note -# that blkid.h, libmount.h and libsmartcols.h are generated and stored in build -# dirs. +# that blkid.h, libmount.h, libfdisk.h and libsmartcols.h are generated and +# stored in build dirs. # ul_libblkid_incdir = $(top_builddir)/libblkid/src ul_libmount_incdir = $(top_builddir)/libmount/src ul_libsmartcols_incdir = $(top_builddir)/libsmartcols/src +ul_libfdisk_incdir = $(top_builddir)/libfdisk/src + ul_libuuid_incdir = $(top_srcdir)/libuuid/src -ul_libfdisk_incdir = $(top_srcdir)/libfdisk/src pkgconfigdir = $(usrlib_execdir)/pkgconfig diff --git a/configure.ac b/configure.ac index 6c504b8e1..0966f7bcb 100644 --- a/configure.ac +++ b/configure.ac @@ -53,6 +53,13 @@ LIBSMARTCOLS_LT_MINOR=1 LIBSMARTCOLS_LT_MICRO=0 LIBSMARTCOLS_VERSION_INFO=`expr $LIBSMARTCOLS_LT_MAJOR + $LIBSMARTCOLS_LT_MINOR`:$LIBSMARTCOLS_LT_MICRO:$LIBSMARTCOLS_LT_MINOR +dnl libfdisk version +LIBFDISK_VERSION="$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_RELEASE" +LIBFDISK_LT_MAJOR=1 +LIBFDISK_LT_MINOR=1 +LIBFDISK_LT_MICRO=0 +LIBFDISK_VERSION_INFO=`expr $LIBFDISK_LT_MAJOR + $LIBFDISK_LT_MINOR`:$LIBFDISK_LT_MICRO:$LIBFDISK_LT_MINOR + # Check whether exec_prefix=/usr: AS_CASE([$exec_prefix:$prefix], [NONE:NONE | NONE:/usr | /usr:*], @@ -843,11 +850,21 @@ AC_DEFINE_UNQUOTED([LIBSMARTCOLS_VERSION], ["$LIBSMARTCOLS_VERSION"], [libsmartc dnl -dnl libfdisk is enabled at all times if possible +dnl libfdisk dnl -UL_BUILD_INIT([libfdisk], [check]) +AC_ARG_ENABLE([libfdisk], + AS_HELP_STRING([--disable-libfdisk], [do not build libfdisk]), + [], [UL_DEFAULT_ENABLE([libfdisk], [check])] +) +UL_BUILD_INIT([libfdisk]) UL_REQUIRES_BUILD([libfdisk], [libuuid]) AM_CONDITIONAL([BUILD_LIBFDISK], [test "x$build_libfdisk" = xyes]) +AM_CONDITIONAL([BUILD_LIBFDISK_TESTS], [test "x$build_libfdisk" = xyes -a "x$enable_static" = xyes]) + +AC_SUBST([LIBFDISK_VERSION]) +AC_SUBST([LIBFDISK_VERSION_INFO]) +AC_DEFINE_UNQUOTED([LIBFDISK_VERSION], ["$LIBFDISK_VERSION"], [libfdisk version string]) + UL_BUILD_INIT([fdisk], [check]) UL_REQUIRES_BUILD([fdisk], [libfdisk]) @@ -1844,6 +1861,7 @@ libmount/src/libmount.h libsmartcols/docs/Makefile libsmartcols/docs/version.xml libsmartcols/src/libsmartcols.h +libfdisk/src/libfdisk.h po/Makefile.in ]) diff --git a/libfdisk/Makemodule.am b/libfdisk/Makemodule.am index 323a57f6f..6d1803985 100644 --- a/libfdisk/Makemodule.am +++ b/libfdisk/Makemodule.am @@ -2,4 +2,6 @@ if BUILD_LIBFDISK include libfdisk/src/Makemodule.am +EXTRA_DIST += libfdisk/COPYING + endif # BUILD_LIBFDISK diff --git a/libfdisk/src/.gitignore b/libfdisk/src/.gitignore new file mode 100644 index 000000000..7e79b6511 --- /dev/null +++ b/libfdisk/src/.gitignore @@ -0,0 +1 @@ +libfdisk.h diff --git a/libfdisk/src/Makemodule.am b/libfdisk/src/Makemodule.am index e33962bf7..727b6a9b7 100644 --- a/libfdisk/src/Makemodule.am +++ b/libfdisk/src/Makemodule.am @@ -1,13 +1,11 @@ -# -# The libfdisk is used for internal util-linux purpose. The library is not -# distributed as shared library for now. Maybe one day... -# +# libfdisk.h is generated, so it's stored in builddir! +fdiskincdir = $(includedir)/libfdisk +nodist_fdiskinc_HEADERS = $(top_builddir)/libfdisk/src/libfdisk.h -noinst_LTLIBRARIES += libfdisk.la +usrlib_exec_LTLIBRARIES += libfdisk.la libfdisk_la_SOURCES = \ - libfdisk/src/libfdisk.h \ - libfdisk/src/fdiskP.h \ + include/list.h \ \ libfdisk/src/init.c \ libfdisk/src/test.c \ @@ -26,47 +24,55 @@ libfdisk_la_SOURCES = \ libfdisk/src/sgi.c \ libfdisk/src/dos.c \ libfdisk/src/bsd.c \ - libfdisk/src/gpt.c + libfdisk/src/gpt.c \ + $(nodist_fdiskinc_HEADERS) nodist_libfdisk_la_SOURCES = libfdisk/src/fdiskP.h -libfdisk_la_LIBADD = libcommon.la -libfdisk_la_DEPENDENCIES = libcommon.la +libfdisk_la_LIBADD = libcommon.la libuuid.la libfdisk_la_CFLAGS = \ + $(SOLIB_CFLAGS) \ + -I$(ul_libuuid_incdir) \ -I$(ul_libfdisk_incdir) \ -I$(top_srcdir)/libfdisk/src +libfdisk_la_DEPENDENCIES = \ + libcommon.la \ + libuuid.la \ + libfdisk/src/libfdisk.sym \ + libfdisk/src/libfdisk.h.in + +libfdisk_la_LDFLAGS = \ + $(SOLIB_LDFLAGS) \ + -Wl,--version-script=$(top_srcdir)/libfdisk/src/libfdisk.sym \ + -version-info $(LIBFDISK_VERSION_INFO) + if BUILD_LIBBLKID libfdisk_la_LIBADD += libblkid.la libfdisk_la_DEPENDENCIES += libblkid.la libfdisk_la_CFLAGS += -I$(ul_libblkid_incdir) endif -if BUILD_LIBUUID -libfdisk_la_LIBADD += libuuid.la -libfdisk_la_DEPENDENCIES += libuuid.la -libfdisk_la_CFLAGS += -I$(ul_libuuid_incdir) -endif +EXTRA_DIST += \ + libfdisk/src/libfdisk.sym \ + libfdisk/src/libfdisk.h.in +if BUILD_LIBFDISK_TESTS check_PROGRAMS += \ test_fdisk_ask \ test_fdisk_script \ test_fdisk_utils libfdisk_tests_cflags = -DTEST_PROGRAM $(libfdisk_la_CFLAGS) -libfdisk_tests_ldflags = -static -libfdisk_tests_ldadd = libfdisk.la +libfdisk_tests_ldflags = libuuid.la -static +libfdisk_tests_ldadd = libfdisk.la $(UUID_LIBS) if BUILD_LIBBLKID libfdisk_tests_ldflags += libblkid.la endif -if BUILD_LIBUUID -libfdisk_tests_ldflags += libuuid.la -endif - test_fdisk_ask_SOURCES = libfdisk/src/ask.c test_fdisk_ask_CFLAGS = $(libfdisk_tests_cflags) test_fdisk_ask_LDFLAGS = $(libfdisk_tests_ldflags) @@ -81,3 +87,25 @@ test_fdisk_script_SOURCES = libfdisk/src/script.c test_fdisk_script_CFLAGS = $(libfdisk_tests_cflags) test_fdisk_script_LDFLAGS = $(libfdisk_tests_ldflags) test_fdisk_script_LDADD = $(libfdisk_tests_ldadd) + +endif # BUILD_LIBFDISK_TESTS + + +# move lib from $(usrlib_execdir) to $(libdir) if needed +install-exec-hook-libfdisk: + if test "$(usrlib_execdir)" != "$(libdir)" -a -f "$(DESTDIR)$(usrlib_execdir)/libfdisk.so"; then \ + mkdir -p $(DESTDIR)$(libdir); \ + mv $(DESTDIR)$(usrlib_execdir)/libfdisk.so.* $(DESTDIR)$(libdir); \ + so_img_name=$$(readlink $(DESTDIR)$(usrlib_execdir)/libfdisk.so); \ + so_img_rel_target=$$(echo $(usrlib_execdir) | sed 's,\(^/\|\)[^/][^/]*,..,g'); \ + (cd $(DESTDIR)$(usrlib_execdir) && \ + rm -f libfdisk.so && \ + $(LN_S) $$so_img_rel_target$(libdir)/$$so_img_name libfdisk.so); \ + fi + +uninstall-hook-libfdisk: + rm -f $(DESTDIR)$(libdir)/libfdisk.so* + +INSTALL_EXEC_HOOKS += install-exec-hook-libfdisk +UNINSTALL_HOOKS += uninstall-hook-libfdisk + diff --git a/libfdisk/src/libfdisk.h b/libfdisk/src/libfdisk.h.in index 1c5d2ebcd..ae1d03899 100644 --- a/libfdisk/src/libfdisk.h +++ b/libfdisk/src/libfdisk.h.in @@ -1,7 +1,7 @@ /* * libfdisk.h - libfdisk API * - * Copyright (C) 2012 Karel Zak <kzak@redhat.com> + * Copyright (C) 2012-2014 Karel Zak <kzak@redhat.com> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -18,8 +18,8 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef _LIBFDISK_FDISK_H -#define _LIBFDISK_FDISK_H +#ifndef _LIBFDISK_H +#define _LIBFDISK_H #ifdef __cplusplus extern "C" { @@ -30,6 +30,13 @@ extern "C" { #include <stdint.h> /** + * LIBFDISK_VERSION: + * + * Library version string + */ +#define LIBFDISK_VERSION "@LIBFDISK_VERSION@" + +/** * fdisk_context: * * Basic library handler. @@ -561,4 +568,4 @@ extern char *fdisk_partname(const char *dev, size_t partno); } #endif -#endif /* _LIBFDISK_FDISK_H */ +#endif /* _LIBFDISK_H */ diff --git a/libfdisk/src/libfdisk.sym b/libfdisk/src/libfdisk.sym new file mode 100644 index 000000000..7928322b8 --- /dev/null +++ b/libfdisk/src/libfdisk.sym @@ -0,0 +1,232 @@ +/* + * The symbol versioning ensures that a new application requiring symbol foo; + * can't run with old libblkid.so not providing foo; + * version info can't enforce this since we never change the SONAME. + * + * Copyright (C) 2014 Karel Zak <kzak@redhat.com> + */ +MOUNT_2.26 { +global: + fdisk_add_partition; + fdisk_align_lba; + fdisk_align_lba_in_range; + fdisk_apply_script; + fdisk_apply_script_headers; + fdisk_apply_table; + fdisk_ask_get_query; + fdisk_ask_get_type; + fdisk_ask_menu_get_default; + fdisk_ask_menu_get_item; + fdisk_ask_menu_get_nitems; + fdisk_ask_menu_get_result; + fdisk_ask_menu_set_result; + fdisk_ask_number; + fdisk_ask_number_get_base; + fdisk_ask_number_get_default; + fdisk_ask_number_get_high; + fdisk_ask_number_get_low; + fdisk_ask_number_get_range; + fdisk_ask_number_get_result; + fdisk_ask_number_get_unit; + fdisk_ask_number_inchars; + fdisk_ask_number_set_relative; + fdisk_ask_number_set_result; + fdisk_ask_partnum; + fdisk_ask_print_get_errno; + fdisk_ask_print_get_mesg; + fdisk_ask_string; + fdisk_ask_string_get_result; + fdisk_ask_string_set_result; + fdisk_ask_yesno; + fdisk_ask_yesno_get_result; + fdisk_ask_yesno_set_result; + fdisk_assign_device; + fdisk_bsd_edit_disklabel; + fdisk_bsd_link_partition; + fdisk_bsd_write_bootstrap; + fdisk_copy_parttype; + fdisk_create_disklabel; + fdisk_deassign_device; + fdisk_delete_all_partitions; + fdisk_delete_partition; + fdisk_dos_enable_compatible; + fdisk_dos_is_compatible; + fdisk_dos_move_begin; + fdisk_enable_details; + fdisk_enable_listonly; + fdisk_field_get_id; + fdisk_field_get_name; + fdisk_field_get_width; + fdisk_field_is_number; + fdisk_free_iter; + fdisk_get_alignment_offset; + fdisk_get_devfd; + fdisk_get_devname; + fdisk_get_disklabel_id; + fdisk_get_first_lba; + fdisk_get_freespaces; + fdisk_get_geom_cylinders; + fdisk_get_geom_heads; + fdisk_get_geom_sectors; + fdisk_get_grain_size; + fdisk_get_label; + fdisk_get_last_lba; + fdisk_get_minimal_iosize; + fdisk_get_nlabels; + fdisk_get_npartitions; + fdisk_get_nsectors; + fdisk_get_optimal_iosize; + fdisk_get_parent; + fdisk_get_partition; + fdisk_get_partitions; + fdisk_get_physector_size; + fdisk_get_script; + fdisk_get_sector_size; + fdisk_get_unit; + fdisk_get_units_per_sector; + fdisk_gpt_is_hybrid; + fdisk_has_label; + fdisk_has_user_device_properties; + fdisk_info; + fdisk_init_debug; + fdisk_is_details; + fdisk_is_labeltype; + fdisk_is_listonly; + fdisk_is_partition_used; + fdisk_is_readonly; + fdisk_iter_get_direction; + fdisk_label_get_field; + fdisk_label_get_field_by_name; + fdisk_label_get_fields_ids; + fdisk_label_get_name; + fdisk_label_get_nparttypes; + fdisk_label_get_parttype; + fdisk_label_get_parttype_from_code; + fdisk_label_get_parttype_from_string; + fdisk_label_get_type; + fdisk_label_has_code_parttypes; + fdisk_label_is_changed; + fdisk_label_is_disabled; + fdisk_label_parse_parttype; + fdisk_label_require_geometry; + fdisk_label_set_changed; + fdisk_label_set_disabled; + fdisk_lba_is_phy_aligned; + fdisk_list_disklabel; + fdisk_locate_disklabel; + fdisk_new_context; + fdisk_new_iter; + fdisk_new_nested_context; + fdisk_new_partition; + fdisk_new_parttype; + fdisk_new_script; + fdisk_new_script_from_file; + fdisk_new_table; + fdisk_new_unknown_parttype; + fdisk_next_label; + fdisk_override_geometry; + fdisk_partition_cmp_partno; + fdisk_partition_cmp_start; + fdisk_partition_end_follow_default; + fdisk_partition_end_is_default; + fdisk_partition_get_attrs; + fdisk_partition_get_name; + fdisk_partition_get_parent; + fdisk_partition_get_partno; + fdisk_partition_get_size; + fdisk_partition_get_start; + fdisk_partition_get_type; + fdisk_partition_get_uuid; + fdisk_partition_has_partno; + fdisk_partition_has_size; + fdisk_partition_has_start; + fdisk_partition_is_bootable; + fdisk_partition_is_container; + fdisk_partition_is_freespace; + fdisk_partition_is_nested; + fdisk_partition_is_used; + fdisk_partition_next_partno; + fdisk_partition_partno_follow_default; + fdisk_partition_set_attrs; + fdisk_partition_set_name; + fdisk_partition_set_partno; + fdisk_partition_set_size; + fdisk_partition_set_start; + fdisk_partition_set_type; + fdisk_partition_set_uuid; + fdisk_partition_size_explicit; + fdisk_partition_start_follow_default; + fdisk_partition_start_is_default; + fdisk_partition_toggle_flag; + fdisk_partition_to_string; + fdisk_partition_unset_partno; + fdisk_partition_unset_size; + fdisk_partition_unset_start; + fdisk_partname; + fdisk_parttype_get_code; + fdisk_parttype_get_name; + fdisk_parttype_get_string; + fdisk_parttype_is_unknown; + fdisk_parttype_set_code; + fdisk_parttype_set_name; + fdisk_parttype_set_typestr; + fdisk_ref_ask; + fdisk_ref_context; + fdisk_ref_partition; + fdisk_ref_parttype; + fdisk_ref_script; + fdisk_ref_table; + fdisk_reorder_partitions; + fdisk_reread_partition_table; + fdisk_reset_alignment; + fdisk_reset_device_properties; + fdisk_reset_iter; + fdisk_reset_partition; + fdisk_reset_table; + fdisk_save_user_geometry; + fdisk_save_user_sector_size; + fdisk_script_get_header; + fdisk_script_get_nlines; + fdisk_script_get_table; + fdisk_script_read_context; + fdisk_script_read_file; + fdisk_script_read_line; + fdisk_script_set_header; + fdisk_script_write_file; + fdisk_set_ask; + fdisk_set_disklabel_id; + fdisk_set_first_lba; + fdisk_set_last_lba; + fdisk_set_partition; + fdisk_set_partition_type; + fdisk_set_script; + fdisk_set_unit; + fdisk_sgi_create_info; + fdisk_sgi_set_bootfile; + fdisk_sun_set_alt_cyl; + fdisk_sun_set_ilfact; + fdisk_sun_set_pcylcount; + fdisk_sun_set_rspeed; + fdisk_sun_set_xcyl; + fdisk_table_add_partition; + fdisk_table_get_nents; + fdisk_table_get_partition; + fdisk_table_is_empty; + fdisk_table_next_partition; + fdisk_table_remove_partition; + fdisk_table_sort_partitions; + fdisk_table_wrong_order; + fdisk_unref_ask; + fdisk_unref_context; + fdisk_unref_partition; + fdisk_unref_parttype; + fdisk_unref_script; + fdisk_unref_table; + fdisk_use_cylinders; + fdisk_verify_disklabel; + fdisk_warn; + fdisk_warnx; + fdisk_write_disklabel; +local: + *; +}; |