>From 99cd145f34b7d18e8982b92a77d7b10daacbb955 Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik Date: Mon, 9 Jun 2014 14:38:31 +0200 Subject: [PATCH] BUILD: Add version symbol files for public libraries. Version symbol files will help package systems to catch backward compatible changes (newly added functions) into library. The difference between libraries libsss_nss_idmap_test.so and libsss_nss_idmap.so is that the 1st library will not be installed and has more exported functions, which are necessary for mocking with cmocka for test sss_nss_idmap-test. Resolves: https://fedorahosted.org/sssd/ticket/2194 --- Makefile.am | 31 +++++++++++++-- src/lib/idmap/sss_idmap.exports | 56 +++++++++++++++++++++++++++ src/providers/ipa/ipa_hbac.exports | 15 +++++++ src/sss_client/idmap/sss_nss_idmap.exports | 14 +++++++ src/sss_client/idmap/sss_nss_idmap.unit_tests | 6 +++ 5 files changed, 119 insertions(+), 3 deletions(-) create mode 100644 src/lib/idmap/sss_idmap.exports create mode 100644 src/providers/ipa/ipa_hbac.exports create mode 100644 src/sss_client/idmap/sss_nss_idmap.exports create mode 100644 src/sss_client/idmap/sss_nss_idmap.unit_tests diff --git a/Makefile.am b/Makefile.am index 1c423fc6d40754852a9775dc72016703e398f17c..a44969ba79acf0c63115bc6ff7da0abdd45f0c46 100644 --- a/Makefile.am +++ b/Makefile.am @@ -711,23 +711,32 @@ endif # BUILD_IFP lib_LTLIBRARIES = libipa_hbac.la libsss_idmap.la libsss_nss_idmap.la pkgconfig_DATA += src/providers/ipa/ipa_hbac.pc +libipa_hbac_la_DEPENDENCIES = src/providers/ipa/ipa_hbac.exports libipa_hbac_la_SOURCES = \ src/providers/ipa/hbac_evaluator.c \ src/util/sss_utf8.c libipa_hbac_la_LIBADD = \ $(UNICODE_LIBS) libipa_hbac_la_LDFLAGS = \ + -Wl,--version-script,$(srcdir)/src/providers/ipa/ipa_hbac.exports \ -version-info 0:1:0 +dist_noinst_DATA += src/providers/ipa/ipa_hbac.exports + pkgconfig_DATA += src/lib/idmap/sss_idmap.pc +libsss_idmap_la_DEPENDENCIES = src/lib/idmap/sss_idmap.exports libsss_idmap_la_SOURCES = \ src/lib/idmap/sss_idmap.c \ src/lib/idmap/sss_idmap_conv.c \ src/util/murmurhash3.c libsss_idmap_la_LDFLAGS = \ + -Wl,--version-script,$(srcdir)/src/lib/idmap/sss_idmap.exports \ -version-info 4:0:4 +dist_noinst_DATA += src/lib/idmap/sss_idmap.exports + pkgconfig_DATA += src/sss_client/idmap/sss_nss_idmap.pc +libsss_nss_idmap_la_DEPENDENCIES = src/sss_client/idmap/sss_nss_idmap.exports libsss_nss_idmap_la_SOURCES = \ src/sss_client/idmap/sss_nss_idmap.c \ src/sss_client/common.c \ @@ -735,8 +744,12 @@ libsss_nss_idmap_la_SOURCES = \ libsss_nss_idmap_la_LIBADD = \ $(CLIENT_LIBS) libsss_nss_idmap_la_LDFLAGS = \ + -Wl,--version-script,$(srcdir)/src/sss_client/idmap/sss_nss_idmap.exports \ -version-info 0:1:0 +dist_noinst_DATA += src/sss_client/idmap/sss_nss_idmap.exports + + include_HEADERS = \ src/providers/ipa/ipa_hbac.h \ src/lib/idmap/sss_idmap.h \ @@ -1105,7 +1118,9 @@ libsss_test_common_la_SOURCES += \ src/tests/common_check.c check_LTLIBRARIES += \ - libdlopen_test_providers.la + libdlopen_test_providers.la \ + libsss_nss_idmap_tests.la \ + $(NULL) libdlopen_test_providers_la_SOURCES = \ $(sssd_be_SOURCES) @@ -1125,6 +1140,16 @@ libdlopen_test_providers_la_LDFLAGS = \ -rpath $(abs_top_builddir) \ -export-dynamic +libsss_nss_idmap_tests_la_SOURCES = $(libsss_nss_idmap_la_SOURCES) +libsss_nss_idmap_tests_la_LIBADD = $(libsss_nss_idmap_la_LIBADD) +libsss_nss_idmap_tests_la_LDFLAGS = \ + $(libsss_nss_idmap_la_LDFLAGS) \ + -shared \ + -rpath $(libdir) \ + -Wl,--version-script,$(srcdir)/src/sss_client/idmap/sss_nss_idmap.unit_tests + +dist_noinst_DATA += src/sss_client/idmap/sss_nss_idmap.unit_tests + dlopen_tests_SOURCES = \ src/tests/dlopen-tests.c dlopen_tests_CFLAGS = \ @@ -1664,7 +1689,8 @@ sss_nss_idmap_tests_CFLAGS = \ $(AM_CFLAGS) sss_nss_idmap_tests_LDADD = \ $(CMOCKA_LIBS) \ - libsss_nss_idmap.la + libsss_nss_idmap_tests.la \ + $(NULL) EXTRA_dyndns_tests_DEPENDENCIES = \ $(ldblib_LTLIBRARIES) @@ -2689,4 +2715,3 @@ prerelease-srpm: $(MAKE) srpm mv $(srcdir)/version.m4.orig $(srcdir)/version.m4 endif - diff --git a/src/lib/idmap/sss_idmap.exports b/src/lib/idmap/sss_idmap.exports new file mode 100644 index 0000000000000000000000000000000000000000..52115636d5a6b936f18b4392e9d12adc26c85f53 --- /dev/null +++ b/src/lib/idmap/sss_idmap.exports @@ -0,0 +1,56 @@ +SSS_IDMAP_0.4 { + + # public functions + global: + + sss_idmap_init; + sss_idmap_ctx_set_autorid; + sss_idmap_ctx_set_lower; + sss_idmap_ctx_set_upper; + sss_idmap_ctx_set_rangesize; + sss_idmap_ctx_get_autorid; + sss_idmap_ctx_get_lower; + sss_idmap_ctx_get_upper; + sss_idmap_ctx_get_rangesize; + sss_idmap_calculate_range; + sss_idmap_add_domain; + sss_idmap_add_domain_ex; + sss_idmap_check_collision; + sss_idmap_check_collision_ex; + sss_idmap_sid_to_unix; + sss_idmap_dom_sid_to_unix; + sss_idmap_bin_sid_to_unix; + sss_idmap_smb_sid_to_unix; + sss_idmap_check_sid_unix; + sss_idmap_check_dom_sid_to_unix; + sss_idmap_check_bin_sid_unix; + sss_idmap_check_smb_sid_unix; + sss_idmap_unix_to_sid; + sss_idmap_unix_to_dom_sid; + sss_idmap_unix_to_bin_sid; + sss_idmap_free; + sss_idmap_free_sid; + sss_idmap_free_dom_sid; + sss_idmap_free_smb_sid; + sss_idmap_free_bin_sid; + idmap_error_string; + is_domain_sid; + sss_idmap_domain_has_algorithmic_mapping; + sss_idmap_domain_by_name_has_algorithmic_mapping; + sss_idmap_bin_sid_to_dom_sid; + sss_idmap_bin_sid_to_sid; + sss_idmap_dom_sid_to_bin_sid; + sss_idmap_sid_to_bin_sid; + sss_idmap_dom_sid_to_sid; + sss_idmap_sid_to_dom_sid; + sss_idmap_sid_to_smb_sid; + sss_idmap_smb_sid_to_sid; + sss_idmap_dom_sid_to_smb_sid; + sss_idmap_smb_sid_to_dom_sid; + sss_idmap_bin_sid_to_smb_sid; + sss_idmap_smb_sid_to_bin_sid; + + # everything else is local + local: + *; +}; diff --git a/src/providers/ipa/ipa_hbac.exports b/src/providers/ipa/ipa_hbac.exports new file mode 100644 index 0000000000000000000000000000000000000000..0115084e2b3a66569f97c4e7c035dffdb6450b43 --- /dev/null +++ b/src/providers/ipa/ipa_hbac.exports @@ -0,0 +1,15 @@ +IPA_HBAC_0.0.1 { + + # public functions + global: + + hbac_evaluate; + hbac_result_string; + hbac_error_string; + hbac_free_info; + hbac_rule_is_complete; + + # everything else is local + local: + *; +}; diff --git a/src/sss_client/idmap/sss_nss_idmap.exports b/src/sss_client/idmap/sss_nss_idmap.exports new file mode 100644 index 0000000000000000000000000000000000000000..7b8488b2ae1ca0d562d2d782e0bd6965b3beaecf --- /dev/null +++ b/src/sss_client/idmap/sss_nss_idmap.exports @@ -0,0 +1,14 @@ +SSS_NSS_IDMAP_0.0.1 { + + # public functions + global: + + sss_nss_getsidbyname; + sss_nss_getsidbyid; + sss_nss_getnamebysid; + sss_nss_getidbysid; + + # everything else is local + local: + *; +}; diff --git a/src/sss_client/idmap/sss_nss_idmap.unit_tests b/src/sss_client/idmap/sss_nss_idmap.unit_tests new file mode 100644 index 0000000000000000000000000000000000000000..361cc3b134ead52cf458afe27c055739d6728441 --- /dev/null +++ b/src/sss_client/idmap/sss_nss_idmap.unit_tests @@ -0,0 +1,6 @@ +# version script files can be combined. They needn't be in single file +UNIT_TEST_ONLY { + # should not be part of installed library + global: + sss_nss_make_request; +}; -- 1.9.3