فهرست منبع

1) kill all those "for" shell loops. They are dangerous (as they don't
report install failures) and it's just overhead since $(INSTALL) can do
the same.

2) make sure to create our directories with $(INSTALL). Not sure I did
catch them all yet, but at least a good bunch. This also fix the
corosync.conf install error I introduced in the previous commit.

3) Handle SONAME automatically. This is the most intrusive change across
the board:

* configure.in now defines the system wide SOMAJOR, SOMINOR, SOMICRO
and SONAME and exports them to the Makefile.
* exec/Makefile.am, lib/Makefile.am are now updated to use those vars
rather than hardcoded version.

4) Bump the SOMAJOR to 3 as agreed since we did change both API and ABI.



git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1835 fd59a12c-fef9-0310-b244-a6a79926bd2f

Fabio M. Di Nitto 17 سال پیش
والد
کامیت
00731ff68b
6فایلهای تغییر یافته به همراه54 افزوده شده و 40 حذف شده
  1. 1 0
      Makefile.am
  2. 10 1
      configure.in
  3. 19 17
      exec/Makefile.am
  4. 2 2
      lcr/Makefile.am
  5. 20 19
      lib/Makefile.am
  6. 2 1
      services/Makefile.am

+ 1 - 0
Makefile.am

@@ -48,6 +48,7 @@ doxygen:
 	mkdir -p doc/api && doxygen
 
 install-exec-local:
+	$(INSTALL) -d $(DESTDIR)$(ETCDIR)
 	if [ ! -f $(DESTDIR)$(ETCDIR)/corosync.conf ] ; then 	   \
 		$(INSTALL) -m 644 $(srcdir)/conf/corosync.conf $(DESTDIR)$(ETCDIR) ; \
 	fi

+ 10 - 1
configure.in

@@ -1,5 +1,5 @@
 dnl
-dnl autoconf for Pacemaker
+dnl autoconf for Corosync
 dnl
 dnl License: GNU General Public License (GPL)
 
@@ -53,6 +53,15 @@ AM_INIT_AUTOMAKE($PKG_NAME, $CS_VERSION)
 AC_DEFINE_UNQUOTED(CS_VERSION, "$CS_VERSION", Current corosync version)
 AC_SUBST(PKG_NAME)
 
+dnl Project wise library soname handling
+SOMAJOR=3
+SOMINOR=0
+SOMICRO=0
+SONAME=${SOMAJOR}.${SOMINOR}.${SOMICRO}
+AC_SUBST(SOMAJOR)
+AC_SUBST(SOMINOR)
+AC_SUBST(SOMICRO)
+AC_SUBST(SONAME)
 
 LDD=ldd
 dnl Which C compiler?

+ 19 - 17
exec/Makefile.am

@@ -33,7 +33,7 @@ MAINTAINERCLEANFILES    = Makefile.in
 
 AM_CFLAGS	= -fPIC
 INCLUDES       	= -I$(top_builddir)/include  -I$(top_srcdir)/include
-DARWIN_OPTS	= -dynamiclib -bind_at_load -current_version 2.0.0 -compatibility_version 2.0.0
+DARWIN_OPTS	= -dynamiclib -bind_at_load -current_version $(SONAME) -compatibility_version $(SONAME)
 
 LCRSO		= 
 LCR_SRC		= objdb.c vsf_ykd.c coroparse.c quorum.c vsf_quorum.c
@@ -50,16 +50,16 @@ liblogsys_a_SOURCES	= $(LOGSYS_SRC)
 corosync_SOURCES = main.c mempool.c util.c sync.c apidef.c service.c ipc.c \
 		timer.c totemconfig.c mainconfig.c quorum.c ../lcr/lcr_ifact.c
 corosync_LDADD	  = -ltotem_pg -llogsys
-corosync_DEPENDENCIES = libtotem_pg.so.2.0.0 liblogsys.so.2.0.0
+corosync_DEPENDENCIES = libtotem_pg.so.$(SONAME) liblogsys.so.$(SONAME)
 corosync_LDFLAGS = $(DYFLAGS) -L./
 
 TOTEM_OBJS	= $(TOTEM_SRC:%.c=%.o)
 LOGSYS_OBJS	= $(LOGSYS_SRC:%.c=%.o)
 
 if BUILD_DYNAMIC
-SHARED_LIBS	+= $(lib_LIBRARIES:%.a=%.so.2.0.0)
-SHARED_LIBS_SO	= $(SHARED_LIBS:%.so.2.0.0=%.so)
-SHARED_LIBS_SO_TWO = $(SHARED_LIBS:%.so.2.0.0=%.so.2)
+SHARED_LIBS	+= $(lib_LIBRARIES:%.a=%.so.$(SONAME))
+SHARED_LIBS_SO	= $(SHARED_LIBS:%.so.$(SONAME)=%.so)
+SHARED_LIBS_SO_TWO = $(SHARED_LIBS:%.so.$(SONAME)=%.so.$(SOMAJOR))
 LCRSO		+= $(LCR_SRC:%.c=%.lcrso)
 else
 corosync_SOURCES += $(LCR_SRC)
@@ -69,10 +69,10 @@ if BUILD_DARWIN
 %.lcrso: %.o
 	$(CC) $(CFLAGS) -bundle -bind_at_load -bundle_loader ./corosync $^ -o $@
 
-libtotem_pg.so.2.0.0: $(TOTEM_OBJS)
+libtotem_pg.so.$(SONAME): $(TOTEM_OBJS)
 	$(CC) $(LDFLAGS) $(DARWIN_OPTS) $(TOTEM_OBJS) -o $@
 
-liblogsys.so.2.0.0: $(LOGSYS_OBJS)
+liblogsys.so.$(SONAME): $(LOGSYS_OBJS)
 	$(CC) $(LDFLAGS) $(DARWIN_OPTS) $(LOGSYS_OBJS) -o $@
 
 else
@@ -80,15 +80,15 @@ else
 %.lcrso: %.o
 	$(CC) $(CFLAGS) -shared -Wl,-soname,$@ $^ -o $@
 
-libtotem_pg.so.2.0.0: $(TOTEM_OBJS)
-	$(CC) $(LDFLAGS) -shared -Wl,-soname,libtotem_pg.so.2 $^ -o $@
-	ln -sf libtotem_pg.so.2.0.0 libtotem_pg.so
-	ln -sf libtotem_pg.so.2.0.0 libtotem_pg.so.2
+libtotem_pg.so.$(SONAME): $(TOTEM_OBJS)
+	$(CC) $(LDFLAGS) -shared -Wl,-soname,libtotem_pg.so.$(SOMAJOR) $^ -o $@
+	ln -sf libtotem_pg.so.$(SONAME) libtotem_pg.so
+	ln -sf libtotem_pg.so.$(SONAME) libtotem_pg.so.$(SOMAJOR)
 
-liblogsys.so.2.0.0: $(LOGSYS_OBJS)
-	$(CC) $(LDFLAGS) -shared -Wl,-soname,liblogsys.so.2 $^ -o $@
-	ln -sf liblogsys.so.2.0.0 liblogsys.so
-	ln -sf liblogsys.so.2.0.0 liblogsys.so.2
+liblogsys.so.$(SONAME): $(LOGSYS_OBJS)
+	$(CC) $(LDFLAGS) -shared -Wl,-soname,liblogsys.so.$(SOMAJOR) $^ -o $@
+	ln -sf liblogsys.so.$(SONAME) liblogsys.so
+	ln -sf liblogsys.so.$(SONAME) liblogsys.so.$(SOMAJOR)
 endif
 
 lint:
@@ -98,8 +98,10 @@ all-local: $(LCRSO) $(SHARED_LIBS)
 	@echo Built corosync Executive
 
 install-exec-local:
-	for lib in $(SHARED_LIBS) $(SHARED_LIBS_SO) $(SHARED_LIBS_SO_TWO); do $(INSTALL) -m 644 $$lib $(DESTDIR)/$(libdir); done
-	for lib in $(LCRSO); do	$(INSTALL) -m 644 $$lib $(DESTDIR)/$(LCRSODIR); done
+	$(INSTALL) -d $(DESTDIR)/$(libdir)
+	$(INSTALL) -m 644 $(SHARED_LIBS) $(SHARED_LIBS_SO) $(SHARED_LIBS_SO_TWO) $(DESTDIR)/$(libdir)
+	$(INSTALL) -d $(DESTDIR)/$(LCRSODIR)
+	$(INSTALL) -m 644 $(LCRSO) $(DESTDIR)/$(LCRSODIR)
 
 clean-local:
 	rm -f corosync *.o *.lcrso gmon.out *.da *.bb *.bbg *.so*

+ 2 - 2
lcr/Makefile.am

@@ -65,8 +65,8 @@ all-local: $(LCRSO)
 	@echo Built Live Component Replacement System
 
 install-exec-local:
-	mkdir -p $(DESTDIR)/$(LCRSODIR)
-	for lib in $(LCRSO); do	$(INSTALL) -m 644 $$lib $(DESTDIR)/$(LCRSODIR); done
+	$(INSTALL) -d $(DESTDIR)/$(LCRSODIR)
+	$(INSTALL) -m 644 $(LCRSO) $(DESTDIR)/$(LCRSODIR)
 
 clean-local:
 	rm -f *.o *.a *.so* *.da *.bb *.bbg *.lcrso

+ 20 - 19
lib/Makefile.am

@@ -34,12 +34,12 @@ MAINTAINERCLEANFILES    = Makefile.in
 
 AM_CFLAGS		= -fPIC
 INCLUDES       		= -I$(top_builddir)/include  -I$(top_srcdir)/include
-DARWIN_OPTS		= -dynamiclib -bind_at_load -current_version 2.0.0 -compatibility_version 2.0.0
+DARWIN_OPTS		= -dynamiclib -bind_at_load -current_version $(SONAME) -compatibility_version $(SONAME)
 
 lib_LIBRARIES	= libcpg.a libconfdb.a libevs.a libcfg.a libquorum.a libvotequorum.a libpload.a libcoroipc.a
-SHARED_LIBS		= $(lib_LIBRARIES:%.a=%.so.2.0.0)
+SHARED_LIBS		= $(lib_LIBRARIES:%.a=%.so.$(SONAME))
 SHARED_LIBS_SO		= $(lib_LIBRARIES:%.a=%.so)
-SHARED_LIBS_SO_TWO	= $(lib_LIBRARIES:%.a=%.so.2)
+SHARED_LIBS_SO_TWO	= $(lib_LIBRARIES:%.a=%.so.$(SOMAJOR))
 
 libcpg_a_SOURCES	= coroipc.c cpg.c
 libcfg_a_SOURCES	= coroipc.c cfg.c
@@ -53,31 +53,31 @@ libcoroipc_a_SOURCES	= coroipc.c
 
 if BUILD_DARWIN
 
-libcoroipc.so.2.0.0: coroipc.o
+libcoroipc.so.$(SONAME): coroipc.o
 	$(CC) $(LDFLAGS) $(DARWIN_OPTS) coroipc.o -o $@
 
-libconfdb.so.2.0.0: coroipc.o confdb.o sa-confdb.o 
+libconfdb.so.$(SONAME): coroipc.o confdb.o sa-confdb.o 
 	$(CC) $(LDFLAGS) $(DARWIN_OPTS) coroipc.o confdb.o sa-confdb.o ../lcr/lcr_ifact.o -o $@
 
-lib%.so.2.0.0: coroipc.o %.o
+lib%.so.$(SONAME): coroipc.o %.o
 	$(CC) $(DARWIN_OPTS) $^ -o $@
 
 else
 
-libcoroipc.so.2.0.0: coroipc.o
-	$(CC) $(LDFLAGS) -shared -Wl,-soname,libcoroipc.so.2,-version-script=$(srcdir)/libcoroipc.versions coroipc.o -o $@
-	ln -sf libcoroipc.so.2.0.0 libcoroipc.so
-	ln -sf libcoroipc.so.2.0.0 libcoroipc.so.2
+libcoroipc.so.$(SONAME): coroipc.o
+	$(CC) $(LDFLAGS) -shared -Wl,-soname,libcoroipc.so.$(SOMAJOR),-version-script=$(srcdir)/libcoroipc.versions coroipc.o -o $@
+	ln -sf libcoroipc.so.$(SONAME) libcoroipc.so
+	ln -sf libcoroipc.so.$(SONAME) libcoroipc.so.$(SOMAJOR)
 
-libconfdb.so.2.0.0: coroipc.o confdb.o sa-confdb.o 
-	$(CC) $(LDFLAGS) $(DYFLAGS) -shared -Wl,-soname,libconfdb.so.2,-version-script=$(srcdir)/libconfdb.versions coroipc.o confdb.o sa-confdb.o ../lcr/lcr_ifact.o -o $@
-	ln -sf libconfdb.so.2.0.0 libconfdb.so
-	ln -sf libconfdb.so.2.0.0 libconfdb.so.2
+libconfdb.so.$(SONAME): coroipc.o confdb.o sa-confdb.o 
+	$(CC) $(LDFLAGS) $(DYFLAGS) -shared -Wl,-soname,libconfdb.so.$(SOMAJOR),-version-script=$(srcdir)/libconfdb.versions coroipc.o confdb.o sa-confdb.o ../lcr/lcr_ifact.o -o $@
+	ln -sf libconfdb.so.$(SONAME) libconfdb.so
+	ln -sf libconfdb.so.$(SONAME) libconfdb.so.$(SOMAJOR)
 
-lib%.so.2.0.0: coroipc.o %.o
-	$(CC) -shared -Wl,-soname,lib$*.so.2,-version-script=$(srcdir)/lib$*.versions $^ -o $@
-	ln -sf lib$*.so.2.0.0 lib$*.so
-	ln -sf lib$*.so.2.0.0 lib$*.so.2
+lib%.so.$(SONAME): coroipc.o %.o
+	$(CC) -shared -Wl,-soname,lib$*.so.$(SOMAJOR),-version-script=$(srcdir)/lib$*.versions $^ -o $@
+	ln -sf lib$*.so.$(SONAME) lib$*.so
+	ln -sf lib$*.so.$(SONAME) lib$*.so.$(SOMAJOR)
 
 endif
 
@@ -85,7 +85,8 @@ all-local: $(SHARED_LIBS)
 	@echo Built shared libs
 
 install-exec-local:
-	for lib in $(SHARED_LIBS) $(SHARED_LIBS_SO) $(SHARED_LIBS_SO_TWO); do $(INSTALL) -m 644 $$lib $(DESTDIR)/$(libdir); done
+	$(INSTALL) -d $(DESTDIR)/$(libdir)
+	$(INSTALL) -m 644 $(SHARED_LIBS) $(SHARED_LIBS_SO) $(SHARED_LIBS_SO_TWO) $(DESTDIR)/$(libdir)
 
 clean-local:
 	rm -f *.o *.a *.so* *.da *.bb *.bbg

+ 2 - 1
services/Makefile.am

@@ -53,7 +53,8 @@ all-local: $(LCRSO)
 	@echo Built Service Engines
 
 install-exec-local:
-	for lib in $(LCRSO); do	$(INSTALL) -m 644 $$lib $(DESTDIR)/$(LCRSODIR); done
+	$(INSTALL) -d $(DESTDIR)/$(LCRSODIR)
+	$(INSTALL) -m 644 $(LCRSO) $(DESTDIR)/$(LCRSODIR)
 
 clean-local:
 	rm -f *.o *.a *.so* *.da *.bb *.bbg *.lcrso