Переглянути джерело

Add support for make srpm and make rpm targets


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2293 fd59a12c-fef9-0310-b244-a6a79926bd2f
Fabio M. Di Nitto 16 роки тому
батько
коміт
b5fc4494a3
3 змінених файлів з 245 додано та 5 видалено
  1. 40 4
      Makefile.am
  2. 0 1
      configure.ac
  3. 205 0
      corosync.spec.in

+ 40 - 4
Makefile.am

@@ -29,10 +29,15 @@
 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 # THE POSSIBILITY OF SUCH DAMAGE.
 
-EXTRA_DIST              = autogen.sh conf/corosync.conf.example
+SPEC			= $(PACKAGE_NAME).spec
+
+TARFILE			= $(PACKAGE_NAME)-$(VERSION).tar.gz
+
+EXTRA_DIST		= autogen.sh conf/corosync.conf.example $(SPEC).in
+
 AUTOMAKE_OPTIONS	= foreign
 
-MAINTAINERCLEANFILES    = Makefile.in aclocal.m4 configure depcomp \
+MAINTAINERCLEANFILES	= Makefile.in aclocal.m4 configure depcomp \
 			  config.guess config.sub missing install-sh \
 			  autoheader automake autoconf
 
@@ -63,7 +68,38 @@ doxygen:
 	mkdir -p doc/api && doxygen
 
 dist-clean-local:
-	rm -f autoconf automake autoheader $(TARFILE)
+	rm -f autoconf automake autoheader
 
 clean-generic:
-	rm -rf doc/api
+	rm -rf doc/api $(SPEC) $(TARFILE) 
+
+## make rpm/srpm section.
+
+$(SPEC): $(SPEC).in
+	rm -f $@-t $@
+	LC_ALL=C date="$(shell date "+%a %b %d %Y")" && \
+	alphatag="$(shell svnversion)" && \
+	sed \
+		-e "s#@alphatag@#r$$alphatag#g" \
+		-e "s#@version@#$(VERSION)#g" \
+		-e "s#@date@#$$date#g" \
+	$< > $@-t
+	chmod a-w $@-t
+	mv $@-t $@
+
+$(TARFILE):
+	$(MAKE) dist
+
+RPMBUILDOPTS	= --define "_sourcedir $(abs_builddir)" \
+		  --define "_specdir $(abs_builddir)" \
+		  --define "_builddir $(abs_builddir)" \
+		  --define "_srcrpmdir $(abs_builddir)" \
+		  --define "_rpmdir $(abs_builddir)"
+
+srpm: clean
+	$(MAKE) $(SPEC) $(TARFILE)
+	rpmbuild $(RPMBUILDOPTS) --nodeps -bs $(SPEC)
+
+rpm: clean
+	$(MAKE) $(SPEC) $(TARFILE)
+	rpmbuild $(RPMBUILDOPTS) -ba $(SPEC)

+ 0 - 1
configure.ac

@@ -107,7 +107,6 @@ AC_CHECK_FUNCS([alarm alphasort atexit bzero dup2 endgrent endpwent fcntl \
 		pthread_spin_unlock pthread_setschedparam \
 		sched_get_priority_max])
 
-# add man and init dirs?
 AC_CONFIG_FILES([Makefile
 		 exec/Makefile
 		 include/Makefile

+ 205 - 0
corosync.spec.in

@@ -0,0 +1,205 @@
+%define alphatag @alphatag@
+
+Name: corosync
+Summary: The Corosync Cluster Engine and Application Programming Interfaces
+Version: @version@
+Release: 1%{?alphatag:.%{alphatag}}%{?dist}
+License: BSD
+Group: System Environment/Base
+URL: http://www.openais.org
+Source0: http://developer.osdl.org/dev/openais/downloads/corosync-%{version}/corosync-%{version}.tar.gz
+
+# Runtime bits
+Requires: corosynclib = %{version}-%{release}
+Requires(pre): /usr/sbin/useradd
+Requires(post): /sbin/chkconfig
+Requires(preun): /sbin/chkconfig
+Conflicts: openais <= 0.89, openais-devel <= 0.89
+
+%define buildtrunk 0
+%{?_with_buildtrunk: %define buildtrunk 1}
+
+%if %{buildtrunk}
+BuildRequires: autoconf automake
+%endif
+BuildRequires: nss-devel
+
+BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
+
+%prep
+%setup -q -n corosync-%{version}
+
+%if %{buildtrunk}
+./autogen.sh
+%endif
+
+%{_configure}	CFLAGS="$(echo '%{optflags}')" \
+		--prefix=/usr \
+		--sysconfdir=/etc \
+		--localstatedir=/var \
+		--libdir=%{_libdir}
+
+%build
+make %{_smp_mflags}
+
+%install
+rm -rf %{buildroot}
+
+make install DESTDIR=%{buildroot}
+install -d %{buildroot}%{_initddir}
+install -m 755 init/redhat %{buildroot}%{_initddir}/corosync
+
+## tree fixup
+# drop static libs
+rm -f %{buildroot}%{_libdir}/*.a
+# drop docs and html docs for now
+rm -rf %{buildroot}%{_docdir}/*
+
+%clean
+rm -rf %{buildroot}
+
+%description 
+This package contains the Corosync Cluster Engine Executive, several default
+APIs and libraries, default configuration files, and an init script.
+
+%post
+/sbin/chkconfig --add corosync || :
+
+%preun
+if [ $1 -eq 0 ]; then
+	/sbin/service corosync stop &>/dev/null || :
+	/sbin/chkconfig --del corosync || :
+fi
+
+%postun
+[ "$1" -ge "1" ] && /sbin/service corosync condrestart &>/dev/null || :
+
+%files 
+%defattr(-,root,root,-)
+%doc LICENSE SECURITY
+%{_sbindir}/corosync
+%{_sbindir}/corosync-keygen
+%{_sbindir}/corosync-objctl
+%{_sbindir}/corosync-cfgtool
+%{_sbindir}/corosync-fplay
+%{_sbindir}/corosync-pload
+%dir /etc/corosync
+%dir /etc/corosync/uidgid.d
+%config(noreplace) /etc/corosync/corosync.conf.example
+%{_initddir}/corosync
+%dir %{_libexecdir}/lcrso
+%{_libexecdir}/lcrso/coroparse.lcrso
+%{_libexecdir}/lcrso/objdb.lcrso
+%{_libexecdir}/lcrso/service_cfg.lcrso
+%{_libexecdir}/lcrso/service_cpg.lcrso
+%{_libexecdir}/lcrso/service_evs.lcrso
+%{_libexecdir}/lcrso/service_confdb.lcrso
+%{_libexecdir}/lcrso/service_pload.lcrso
+%{_libexecdir}/lcrso/quorum_votequorum.lcrso
+%{_libexecdir}/lcrso/quorum_testquorum.lcrso
+%{_libexecdir}/lcrso/vsf_quorum.lcrso
+%{_libexecdir}/lcrso/vsf_ykd.lcrso
+%{_mandir}/man8/corosync_overview.8*
+%{_mandir}/man8/corosync-objctl.8*
+%{_mandir}/man5/corosync.conf.5*
+
+%package -n corosynclib
+Summary: The Corosync Cluster Engine Libraries
+Group: System Environment/Libraries
+Conflicts: corosync < 0.92-7
+
+%description -n corosynclib
+This package contains corosync libraries.
+
+%files -n corosynclib
+%defattr(-,root,root,-)
+%doc LICENSE
+%{_libdir}/libcfg.so.*
+%{_libdir}/libcpg.so.*
+%{_libdir}/libconfdb.so.*
+%{_libdir}/libevs.so.*
+%{_libdir}/libtotem_pg.so.*
+%{_libdir}/liblogsys.so.*
+%{_libdir}/libcoroipcc.so.*
+%{_libdir}/libcoroipcs.so.*
+%{_libdir}/libquorum.so.*
+%{_libdir}/libvotequorum.so.*
+%{_libdir}/libpload.so.*
+
+%post -n corosynclib -p /sbin/ldconfig
+
+%postun -n corosynclib -p /sbin/ldconfig
+
+%package -n corosynclib-devel
+Summary: The Corosync Cluster Engine Development Kit
+Group: Development/Libraries
+Requires: corosynclib = %{version}-%{release}
+Requires: pkgconfig
+Provides: corosync-devel = %{version}
+Obsoletes: corosync-devel < 0.92-7
+
+%description -n corosynclib-devel
+This package contains include files and man pages used to develop using
+The Corosync Cluster Engine APIs.
+
+%files -n corosynclib-devel
+%defattr(-,root,root,-)
+%doc LICENSE README.devmap
+%dir %{_includedir}/corosync/
+%{_includedir}/corosync/cs_config.h
+%{_includedir}/corosync/corodefs.h
+%{_includedir}/corosync/coroipc_types.h
+%{_includedir}/corosync/coroipcs.h
+%{_includedir}/corosync/coroipcc.h
+%{_includedir}/corosync/cfg.h
+%{_includedir}/corosync/confdb.h
+%{_includedir}/corosync/corotypes.h
+%{_includedir}/corosync/cpg.h
+%{_includedir}/corosync/evs.h
+%{_includedir}/corosync/hdb.h
+%{_includedir}/corosync/list.h
+%{_includedir}/corosync/mar_gen.h
+%{_includedir}/corosync/swab.h
+%{_includedir}/corosync/quorum.h
+%{_includedir}/corosync/votequorum.h
+%dir %{_includedir}/corosync/totem/
+%{_includedir}/corosync/totem/coropoll.h
+%{_includedir}/corosync/totem/totem.h
+%{_includedir}/corosync/totem/totemip.h
+%{_includedir}/corosync/totem/totempg.h
+%dir %{_includedir}/corosync/lcr/
+%{_includedir}/corosync/lcr/lcr_ckpt.h
+%{_includedir}/corosync/lcr/lcr_comp.h
+%{_includedir}/corosync/lcr/lcr_ifact.h
+%dir %{_includedir}/corosync/engine
+%{_includedir}/corosync/engine/config.h
+%{_includedir}/corosync/engine/coroapi.h
+%{_includedir}/corosync/engine/logsys.h
+%{_includedir}/corosync/engine/objdb.h
+%{_includedir}/corosync/engine/quorum.h
+%{_libdir}/libcfg.so
+%{_libdir}/libcpg.so
+%{_libdir}/libconfdb.so
+%{_libdir}/libevs.so
+%{_libdir}/libtotem_pg.so
+%{_libdir}/liblogsys.so
+%{_libdir}/libcoroipcc.so
+%{_libdir}/libcoroipcs.so
+%{_libdir}/libquorum.so
+%{_libdir}/libvotequorum.so
+%{_libdir}/libpload.so
+%{_libdir}/pkgconfig/*.pc
+%{_mandir}/man3/cpg_*3*
+%{_mandir}/man3/evs_*3*
+%{_mandir}/man3/confdb_*3*
+%{_mandir}/man3/votequorum_*3*
+%{_mandir}/man8/cpg_overview.8*
+%{_mandir}/man8/evs_overview.8*
+%{_mandir}/man8/confdb_overview.8*
+%{_mandir}/man8/logsys_overview.8*
+%{_mandir}/man8/votequorum_overview.8*
+%{_mandir}/man8/coroipc_overview.8*
+
+%changelog
+* @date@ Autotools generated version <nobody@nowhere.org> - @version@-1.@alphatag@
+- Autotools generated version