On Mar 14, 2008, at 2:23 PM, Pete Wyckoff wrote:
This one I also think is good. But it installs things like this: titan$ ll /usr/local/pvfs-test/lib total 2712 drwxr-xr-x 2 pw pw 4096 2008-03-14 15:16 ./ drwxr-xr-x 7 pw pw 4096 2008-03-14 15:16 ../lrwxrwxrwx 1 pw pw 13 2008-03-14 15:16 libpvfs2.so -> libpvfs2.so.2* lrwxrwxrwx 1 pw pw 17 2008-03-14 15:16 libpvfs2.so.2 -> libpvfs2.so.2.7.1*-rwxr-xr-x 1 pw pw 2763856 2008-03-14 15:16 libpvfs2.so.2.7.1* which is a bit different, but hopefully causes no damage. Now would be a good opportunity to rename pvfs2 -> pvfs above since we have the major version in the version string already. Also we should remember to do the numbers properly. If making no change to the ABI, increment just the release part. If making upward compatible changes, increment minor. Else increment major.
Works for me.
We can look into doing in-library symbol versioning too for future changes like tweaking the create API without breaking old pre-compiled apps, if anyone is compelled.
That would be cool. -sam
-- Pete This patch adds a version code to the installed shared libraries, libpvfs2.so and possibly libpvfs2-threaded.so. Library versioning is considered a good thing, in that apps can know what version of the library they need. Use the actual PVFS version numbers to build the library version string. This is not always the right thing to do, but works for us because we pay attention to the meaning of "major","minor" and "release" changes. Adapted from a patch by Justin Bronder.--- Makefile.in | 22 +++++++++++++++++++--- configure | 33 +++++++++++++++++++++------------ configure.in | 19 +++++++++++-------- 3 files changed, 51 insertions(+), 23 deletions(-) diff --git a/Makefile.in b/Makefile.in index 777afd3..a9e9f30 100644 --- a/Makefile.in +++ b/Makefile.in @@ -65,6 +65,7 @@ INSTALL = @INSTALL@ # TODO: should probably check for bison and flex in configure BISON = bison FLEX = flex +LN_S = ln -snf BUILD_BMI_TCP = @BUILD_BMI_TCP@ BUILD_GM = @BUILD_GM@ BUILD_MX = @BUILD_MX@ @@ -166,6 +167,10 @@ TRUSTED_CONNECTIONS = @TRUSTED_CONNECTIONS@ REDHAT_RELEASE = @REDHAT_RELEASE@ NPTL_WORKAROUND = @NPTL_WORKAROUND@ STRICT_CFLAGS = @STRICT_CFLAGS@ +SO_VER = @PVFS2_VERSION_MAJOR@ +SO_MINOR = @PVFS2_VERSION_MINOR@ +SO_RELEASE = @PVFS2_VERSION_SUB@ +SO_FULLVER = $(SO_VER).$(SO_MINOR).$(SO_RELEASE) # for Solaris: # LIBS += -lsocket -lnsl @@ -647,13 +652,13 @@ lib/libpvfs2-threaded.a: $(LIBTHREADEDOBJS) lib/libpvfs2.so: $(LIBPICOBJS) $(Q) " LDSO $@" $(E)$(INSTALL) -d lib - $(E)$(LDSHARED) -o $@ $(LIBPICOBJS) $(DEPLIBS)+ $(E)$(LDSHARED) -Wl,-soname,libpvfs2.so -o $@ $(LIBPICOBJS) $ (DEPLIBS)# rule for building the pvfs2 _multithreaded_ library lib/libpvfs2-threaded.so: $(LIBTHREADEDPICOBJS) $(Q) " LDSO $@" $(E)$(INSTALL) -d lib - $(E)$(LDSHARED) -o $@ $(LIBTHREADEDPICOBJS) $(DEPLIBS)+ $(E)$(LDSHARED) -Wl,-soname,libpvfs2-threaded.so -o $@ $ (LIBTHREADEDPICOBJS) $(DEPLIBS)# rule for building the pvfs2 server library lib/libpvfs2-server.a: $(SERVEROBJS) @@ -915,7 +920,18 @@ install:: all install_doc install -m 644 $(srcdir)/include/pvfs2-encode-stubs.h $(includedir) install -d $(libdir) - install -m 755 $(LIBRARIES) $(libdir) +ifneq (,$(LIBRARIES_STATIC)) + for i in $(notdir $(LIBRARIES_STATIC)) ; do \ + install -m 755 lib/$$i $(libdir) ;\ + done +endif +ifneq (,$(LIBRARIES_SHARED)) + for i in $(notdir $(LIBRARIES_SHARED)) ; do \ + install -m 755 lib/$$i $(libdir)/$$i.$(SO_FULLVER) ;\ + $(LN_S) $$i.$(SO_FULLVER) $(libdir)/$$i.$(SO_VER) ;\ + $(LN_S) $$i.$(SO_VER) $(libdir)/$$i ;\ + done +endif ifdef TARGET_OS_DARWIN # TOC needs to be regenerated in libs after they get moved diff --git a/configure b/configure index 1b27ffb..195c440 100755 --- a/configure +++ b/configure @@ -651,6 +651,9 @@ build_alias host_alias target_alias PVFS2_VERSION +PVFS2_VERSION_MAJOR +PVFS2_VERSION_MINOR +PVFS2_VERSION_SUB build build_cpu build_vendor@@ -1841,30 +1844,33 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.CONFIGURE_TIME=`date -u +"%Y-%m-%d-%H%M%S"` -PVFS2_MAJOR=2 -PVFS2_MINOR=7 -PVFS2_SUB=1 +PVFS2_VERSION_MAJOR=2 +PVFS2_VERSION_MINOR=7 +PVFS2_VERSION_SUB=1 #PVFS2_PRE="" -PVFS2_PRE="pre1-$CONFIGURE_TIME" +PVFS2_VERSION_PRE="pre1-$CONFIGURE_TIME" -PVFS2_VERSION=$PVFS2_MAJOR.$PVFS2_MINOR.$PVFS2_SUB$PVFS2_PRE+PVFS2_VERSION=$PVFS2_VERSION_MAJOR.$PVFS2_VERSION_MINOR. $PVFS2_VERSION_SUB$PVFS2_VERSION_PREcat >>confdefs.h <<_ACEOF -#define PVFS2_VERSION_MAJOR $PVFS2_MAJOR +#define PVFS2_VERSION_MAJOR $PVFS2_VERSION_MAJOR _ACEOF cat >>confdefs.h <<_ACEOF -#define PVFS2_VERSION_MINOR $PVFS2_MINOR +#define PVFS2_VERSION_MINOR $PVFS2_VERSION_MINOR _ACEOF cat >>confdefs.h <<_ACEOF -#define PVFS2_VERSION_SUB $PVFS2_SUB +#define PVFS2_VERSION_SUB $PVFS2_VERSION_SUB _ACEOF + + + # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||{ { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/ config.sub" >&5@@ -18543,6 +18549,9 @@ build_alias!$build_alias$ac_delim host_alias!$host_alias$ac_delim target_alias!$target_alias$ac_delim PVFS2_VERSION!$PVFS2_VERSION$ac_delim +PVFS2_VERSION_MAJOR!$PVFS2_VERSION_MAJOR$ac_delim +PVFS2_VERSION_MINOR!$PVFS2_VERSION_MINOR$ac_delim +PVFS2_VERSION_SUB!$PVFS2_VERSION_SUB$ac_delim build!$build$ac_delim build_cpu!$build_cpu$ac_delim build_vendor!$build_vendor$ac_delim@@ -18599,9 +18608,6 @@ PVFS2_SEGV_BACKTRACE!$PVFS2_SEGV_BACKTRACE $ac_delimbuild_shared!$build_shared$ac_delim INTELC!$INTELC$ac_delim GNUC!$GNUC$ac_delim -DB_CFLAGS!$DB_CFLAGS$ac_delim -DB_LIB!$DB_LIB$ac_delim -NEEDS_LIBRT!$NEEDS_LIBRT$ac_delim _ACEOFif test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then@@ -18643,6 +18649,9 @@ _ACEOF ac_delim='%!_!# ' for ac_last_try in false false false false false :; do cat >conf$$subs.sed <<_ACEOF +DB_CFLAGS!$DB_CFLAGS$ac_delim +DB_LIB!$DB_LIB$ac_delim +NEEDS_LIBRT!$NEEDS_LIBRT$ac_delim TARGET_OS_DARWIN!$TARGET_OS_DARWIN$ac_delim TARGET_OS_LINUX!$TARGET_OS_LINUX$ac_delim BUILD_BMI_TCP!$BUILD_BMI_TCP$ac_delim @@ -18670,7 +18679,7 @@ LIBOBJS!$LIBOBJS$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 25; then + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 28; thenbreak elif $ac_last_try; then{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5diff --git a/configure.in b/configure.in index d4a34f3..3fecc6b 100644 --- a/configure.in +++ b/configure.in @@ -16,17 +16,20 @@ dnl dnl PVFS2 versioning information. dnl An @ in the date string can confuse e.g. scp and 'make kmod' CONFIGURE_TIME=`date -u +"%Y-%m-%d-%H%M%S"` -PVFS2_MAJOR=2 -PVFS2_MINOR=7 -PVFS2_SUB=1 +PVFS2_VERSION_MAJOR=2 +PVFS2_VERSION_MINOR=7 +PVFS2_VERSION_SUB=1 #PVFS2_PRE="" -PVFS2_PRE="pre1-$CONFIGURE_TIME" +PVFS2_VERSION_PRE="pre1-$CONFIGURE_TIME" -PVFS2_VERSION=$PVFS2_MAJOR.$PVFS2_MINOR.$PVFS2_SUB$PVFS2_PRE+PVFS2_VERSION=$PVFS2_VERSION_MAJOR.$PVFS2_VERSION_MINOR. $PVFS2_VERSION_SUB$PVFS2_VERSION_PREAC_SUBST(PVFS2_VERSION)-AC_DEFINE_UNQUOTED(PVFS2_VERSION_MAJOR, $PVFS2_MAJOR, major version number) -AC_DEFINE_UNQUOTED(PVFS2_VERSION_MINOR, $PVFS2_MINOR, minor version number)-AC_DEFINE_UNQUOTED(PVFS2_VERSION_SUB, $PVFS2_SUB, sub version number)+AC_DEFINE_UNQUOTED(PVFS2_VERSION_MAJOR, $PVFS2_VERSION_MAJOR, major version number) +AC_DEFINE_UNQUOTED(PVFS2_VERSION_MINOR, $PVFS2_VERSION_MINOR, minor version number) +AC_DEFINE_UNQUOTED(PVFS2_VERSION_SUB, $PVFS2_VERSION_SUB, sub version number)+AC_SUBST(PVFS2_VERSION_MAJOR) +AC_SUBST(PVFS2_VERSION_MINOR) +AC_SUBST(PVFS2_VERSION_SUB) dnl Checks for host type dnl Ensures we can compile on this OS -- 1.5.4.1 _______________________________________________ Pvfs2-developers mailing list Pvfs2-developers@beowulf-underground.org http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ Pvfs2-developers mailing list Pvfs2-developers@beowulf-underground.org http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers