From: Ralf Ertzinger Date: Thu, 27 Feb 2014 15:43:52 +0000 (+0100) Subject: Add RPM build infrastructure X-Git-Tag: 0.2.98.python3.1~19 X-Git-Url: https://git.camperquake.de/gitweb.cgi?p=time-slider.git;a=commitdiff_plain;h=1a0beff62cb92275b8e2045d681a10977a344780 Add RPM build infrastructure This adds an RPM spec file (in rpm/) and two new build targets (rpm and srpm). The RPM build targets are taken from the zfsonlinux source and slightly modified. They don't work too well if you've messed with your local RPM build environment by redefining directory paths in ~/.rpmmacros. --- diff --git a/.gitignore b/.gitignore index 0d20b64..51fa109 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ *.pyc +*.rpm +*.tar.bz2 diff --git a/Makefile b/Makefile index b0f8064..42197d4 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,8 @@ ifeq ($(wildcard .git),) else VERSION=$(shell git describe) endif +MAINVER=$(shell echo $(VERSION) | cut -f1 -d'-') +RELEASE=$(shell echo $(VERSION) | cut -f2- -d'-' | sed -e 's/-/./g') mkinstalldirs = /usr/bin/mkdir -p INSTALL = /usr/bin/install @@ -12,12 +14,14 @@ INSTALL_SCRIPT = ${INSTALL} -t RM = /usr/bin/rm -f RMRF = /usr/bin/rm -Rf RMDIR = /usr/bin/rmdir +RPM = /usr/bin/rpm +RPMBUILD = /usr/bin/rpmbuild # Use python 2.6 if PYTHON environent is not set ifeq ($(strip $(PYTHON)),) PYTHON = /usr/bin/python2 endif -SUBDIRS = po data +SUBDIRS = po data rpm DISTFILES = Authors \ VERSION \ @@ -35,6 +39,7 @@ clean: $(RM) usr/share/time-slider/lib/plugin/*.pyc $(RM) usr/share/time-slider/lib/plugin/rsync/*.pyc $(RM) usr/share/time-slider/lib/plugin/zfssend/*.pyc + $(RM) rpm/time-slider.spec all: for subdir in $(SUBDIRS); do \ @@ -163,3 +168,53 @@ uninstall: $(RM) $(DESTDIR)/var/svc/manifest/application/time-slider.xml $(RM) $(DESTDIR)/var/svc/manifest/application/time-slider-plugin.xml $(RM) $(DESTDIR)/var/svc/manifest/system/filesystem/auto-snapshot.xml + + +rpm-local: + @(if test ! -x "${RPMBUILD}"; then \ + echo -e "\n" \ + "*** Required util ${RPMBUILD} missing. Please install the\n" \ + "*** package for your distribution which provides ${RPMBUILD},\n" \ + "*** re-run configure, and try again.\n"; \ + exit 1; \ + fi; \ + mkdir -p $(rpmbuild)/TMP && \ + mkdir -p $(rpmbuild)/BUILD && \ + mkdir -p $(rpmbuild)/RPMS && \ + mkdir -p $(rpmbuild)/SRPMS && \ + mkdir -p $(rpmbuild)/SPECS && \ + cp rpm/$(rpmspec) $(rpmbuild)/SPECS && \ + mkdir -p $(rpmbuild)/SOURCES && \ + cp time-slider-$(VERSION).tar.bz2 $(rpmbuild)/SOURCES) + +srpm: dist + @(dist=`$(RPM) --eval %{?dist}`; \ + rpmpkg=time-slider-$(MAINVER)-0.$(RELEASE)$$dist*src.rpm; \ + rpmspec=time-slider.spec; \ + rpmbuild=`mktemp -t -d time-slider-build-$$USER-XXXXXXXX`; \ + $(MAKE) \ + rpmbuild="$$rpmbuild" \ + rpmspec="$$rpmspec" \ + rpm-local || exit 1; \ + $(RPMBUILD) \ + --define "_tmppath $$rpmbuild/TMP" \ + --define "_topdir $$rpmbuild" \ + $(def) -bs $$rpmbuild/SPECS/$$rpmspec || exit 1; \ + cp $$rpmbuild/SRPMS/$$rpmpkg . || exit 1; \ + rm -R $$rpmbuild) + +rpm: srpm + @(dist=`$(RPM) --eval %{?dist}`; \ + rpmpkg=time-slider-$(MAINVER)-0.$(RELEASE)$$dist*src.rpm; \ + rpmspec=time-slider.spec; \ + rpmbuild=`mktemp -t -d time-slider-build-$$USER-XXXXXXXX`; \ + $(MAKE) \ + rpmbuild="$$rpmbuild" \ + rpmspec="$$rpmspec" \ + rpm-local || exit 1; \ + ${RPMBUILD} \ + --define "_tmppath $$rpmbuild/TMP" \ + --define "_topdir $$rpmbuild" \ + $(def) --rebuild $$rpmpkg || exit 1; \ + cp $$rpmbuild/RPMS/*/* . || exit 1; \ + rm -R $$rpmbuild) diff --git a/rpm/.gitignore b/rpm/.gitignore new file mode 100644 index 0000000..612654b --- /dev/null +++ b/rpm/.gitignore @@ -0,0 +1 @@ +*.spec diff --git a/rpm/Makefile b/rpm/Makefile new file mode 100644 index 0000000..078f462 --- /dev/null +++ b/rpm/Makefile @@ -0,0 +1,22 @@ +top_builddir = .. +top_srcdir = .. +SED = /usr/bin/sed +INTLTOOL_MERGE = /usr/bin/intltool-merge +spec_in_files = time-slider.spec.in +spec_DATA = $(spec_in_files:.spec.in=.spec) + +ifeq ($(wildcard $(top_srcdir)/.git),) + include $(top_srcdir)/VERSION +else + VERSION=$(shell git describe) +endif +MAINVER=$(shell echo $(VERSION) | cut -f1 -d'-') +RELEASE=$(shell echo $(VERSION) | cut -f2- -d'-' | sed -e 's/-/./g') + +all: $(spec_DATA) + +$(spec_DATA): + $(SED) -e 's,\@VERSION\@,$(MAINVER),g' \ + -e 's,\@RELEASE\@,$(RELEASE),g' \ + -e 's,\@GITVER\@,$(VERSION),g' \ + '$@.in' > '$@' diff --git a/rpm/time-slider.spec.in b/rpm/time-slider.spec.in new file mode 100644 index 0000000..761630c --- /dev/null +++ b/rpm/time-slider.spec.in @@ -0,0 +1,57 @@ +%define gitver @GITVER@ + +Name: time-slider +Version: @VERSION@ +Release: 0.@RELEASE@%{?dist} +Summary: The Solaris ZFS time slider package + +License: CDDL +URL: none +Source0: %{name}-%{gitver}.tar.bz2 + +Requires: python(abi) < 3.0 +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd +Requires(post): systemd + +BuildRequires: python(abi) < 3.0 +BuildRequires: systemd + +BuildArch: noarch + +%description +The Solaris time slider package for ZFS + +%prep +%setup -q -n %{name}-%{gitver} + +%build + +%install +rm -rf ${RPM_BUILD_ROOT} +mkdir ${RPM_BUILD_ROOT} +make DESTDIR=${RPM_BUILD_ROOT} install +rm -rf ${RPM_BUILD_ROOT}{/var,/lib,/usr/bin,/usr/share/icons,/etc/xdg/,/usr/share/applications} +%find_lang %{name} + +%files -f %{name}.lang +%{_prefix}/lib/time-slider* +%{_datadir}/time-slider +%{_sysconfdir}/dbus-1/system.d/time-slider.conf +%{_unitdir}/time-sliderd.service + +%post +# run after an installation +%systemd_post time-sliderd.service + +%preun +# run before a package is removed +%systemd_preun time-sliderd.service + +%postun +# run after a package is removed +%systemd_postun_with_restart time-sliderd.service + + +%changelog