[Server-devel] [PATCH] xs-config: Cleanup of the RPM build scripts
Martin Langhoff
martin at laptop.org
Fri Jul 25 17:55:10 EDT 2008
Now the RPM version is derived from the git tags as
per git-describe.
---
Makefile | 29 ++++++++++-----
xs-config.spec | 95 -----------------------------------------------------
xs-config.spec.in | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 114 insertions(+), 105 deletions(-)
delete mode 100644 xs-config.spec
create mode 100644 xs-config.spec.in
diff --git a/Makefile b/Makefile
index c54265e..e6eeeb6 100644
--- a/Makefile
+++ b/Makefile
@@ -15,29 +15,38 @@ $(DESTDIR):
# For developers:
# rpm target directory
-RPMDIR = /usr/src/redhat
+BUILDDIR = $(PWD)/build
# olpc configuration tree
OLPCIMG = fsroot.olpc.img
# symbols
-NAME = xs-config
-VERSION = 0.2.7
-RELEASE = 2
+PKGNAME = xs-config
+VERSION = $(shell git describe | sed 's/^v//' | sed 's/-/./g')
+RELEASE = 1
ARCH = noarch
-NV = $(NAME)-$(VERSION)
+NV = $(PKGNAME)-$(VERSION)
+
+RPMBUILD = rpmbuild \
+ --define "_topdir $(BUILDDIR)" \
SOURCES: Makefile $(SCRIPTS)
+ mkdir -p $(BUILDDIR)/BUILD $(BUILDDIR)/RPMS \
+ $(BUILDDIR)/SOURCES $(BUILDDIR)/SPECS $(BUILDDIR)/SRPMS
mkdir -p $(NV)
cp -p Makefile $(NV)
rsync -ar $(OLPCIMG)/ $(NV)/$(OLPCROOT)
cp -p $(SCRIPTS) $(NV)/$(OLPCROOT)
- tar czf $(RPMDIR)/SOURCES/$(NV).tar.gz $(NV)
+ tar czf $(BUILDDIR)/SOURCES/$(NV).tar.gz $(NV)
rm -rf $(NV)
-rpm: SOURCES
- rpmbuild -ba --target $(ARCH) $(NAME).spec
- rm -f $(NV)-*.$(ARCH).rpm
- cp -p $(RPMDIR)/RPMS/$(ARCH)/$(NV)-$(RELEASE).$(ARCH).rpm .
+xs-config.spec: xs-config.spec.in
+ sed -e 's:@VERSION@:$(VERSION):g' < $< > $@
+
+.PHONY: xs-config.spec.in
+rpm: SOURCES xs-config.spec
+ $(RPMBUILD) -ba --target $(ARCH) $(PKGNAME).spec
+ rm -fr $(BUILDDIR)/BUILD/$(NV)
+ rpmlint $(BUILDDIR)/RPMS/$(ARCH)/$(NV)-$(ARCH).rpm
diff --git a/xs-config.spec b/xs-config.spec
deleted file mode 100644
index 46607c3..0000000
--- a/xs-config.spec
+++ /dev/null
@@ -1,95 +0,0 @@
-# install root
-%define DESTDIR /
-
-%define OLPCROOT %{DESTDIR}/fsroot.olpc
-
-%define LINK %{OLPCROOT}/symlink-tree.py
-%define UNLINK %{OLPCROOT}/unlink-tree.py
-
-Requires: python
-
-# This really should just require xs-pkgs, right ?
-# or nothing at all...
-# Now a list of packages modified by xs-config
-Requires: authconfig
-Requires: bind
-Requires: glibc
-Requires: glibc-common
-Requires: httpd
-Requires: info
-Requires: initscripts
-Requires: iptables
-Requires: lighttpd
-Requires: module-init-tools
-Requires: nscd
-Requires: nss
-Requires: openssh-server
-Requires: radvd
-Requires: rpm
-Requires: selinux-policy
-Requires: setup
-Requires: smartmontools
-Requires: sudo
-Requires: sysklogd
-Requires: xml-common
-Requires: xs-pkgs
-Requires: kernel
-
-Summary: XS/XSX default configuration
-Name: xs-config
-Version: 0.2.7
-Release: 2
-BuildRoot: %{_builddir}/%{name}-root
-Distribution: OLPC XS/XSX School Server
-Group: Base System/Administration Tools
-License: GPL
-Packager: John Watlington <wad at laptop.org>
-Source: %{name}-%{version}.tar.gz
-URL: http://dev.laptop.org/git.do?p=projects/xs-config;a=summary
-Vendor: OLPC
-%description
-The default configuration of an OLPC XS School server. Don't install this if you don't understand what it is!
-
-%prep
-%setup
-%install
-rm -rf $RPM_BUILD_ROOT
-make DESTDIR=$RPM_BUILD_ROOT/%{DESTDIR} install
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%post
-%{LINK} %{OLPCROOT} %{DESTDIR}
-#
-# If any kernel modules are being installed using this mechanism, you
-# need to depmod them in...
-depmod -b %{DESTDIR} -C %{DESTDIR}/etc/depmod.d
-#
-# There are some files which must be copied, not symlinked
-# syslog.conf, sysctl.conf, and sudoers are examples.
-rm %{DESTDIR}/etc/sudoers
-cp -fp %{OLPCROOT}/etc/sudoers %{DESTDIR}/etc/
-chmod 0440 %{DESTDIR}/etc/sudoers
-rm %{DESTDIR}/etc/syslog.conf
-cp -fp %{OLPCROOT}/etc/syslog.conf %{DESTDIR}/etc/
-rm %{DESTDIR}/etc/sysctl.conf
-cp -fp %{OLPCROOT}/etc/sysctl.conf %{DESTDIR}/etc/
-rm %{DESTDIR}/etc/httpd/conf/httpd.conf
-cp -fp %{OLPCROOT}/etc/httpd/conf/httpd.conf %{DESTDIR}/etc/httpd/conf/
-#
-# Delete link script ?
-rm %{LINK}*
-# Temporary fix to remove script symlinks
-rm %{DESTDIR}/symlink-tree.py*
-rm %{DESTDIR}/unlink-tree.py*
-
-%preun
-# If this is an uninstall...
-if [ $1 -eq 0 ]
-then
- %{UNLINK} %{OLPCROOT} %{DESTDIR}
- rm %{UNLINK}*
-fi
-
-%files
-%config(noreplace) %{OLPCROOT}
diff --git a/xs-config.spec.in b/xs-config.spec.in
new file mode 100644
index 0000000..0ecb47c
--- /dev/null
+++ b/xs-config.spec.in
@@ -0,0 +1,95 @@
+# install root
+%define DESTDIR /
+
+%define OLPCROOT %{DESTDIR}/fsroot.olpc
+
+%define LINK %{OLPCROOT}/symlink-tree.py
+%define UNLINK %{OLPCROOT}/unlink-tree.py
+
+Requires: python
+
+# This really should just require xs-pkgs, right ?
+# or nothing at all...
+# Now a list of packages modified by xs-config
+Requires: authconfig
+Requires: bind
+Requires: glibc
+Requires: glibc-common
+Requires: httpd
+Requires: info
+Requires: initscripts
+Requires: iptables
+Requires: lighttpd
+Requires: module-init-tools
+Requires: nscd
+Requires: nss
+Requires: openssh-server
+Requires: radvd
+Requires: rpm
+Requires: selinux-policy
+Requires: setup
+Requires: smartmontools
+Requires: sudo
+Requires: sysklogd
+Requires: xml-common
+Requires: xs-pkgs
+Requires: kernel
+
+Summary: XS/XSX default configuration
+Name: xs-config
+Version: @VERSION@
+Release: 1
+BuildRoot: %{_builddir}/%{name}-root
+Distribution: OLPC XS/XSX School Server
+Group: Base System/Administration Tools
+License: GPL
+Packager: John Watlington <wad at laptop.org>
+Source: %{name}-%{version}.tar.gz
+URL: http://dev.laptop.org/git.do?p=projects/xs-config;a=summary
+Vendor: OLPC
+%description
+The default configuration of an OLPC XS School server. Don't install this if you don't understand what it is!
+
+%prep
+%setup
+%install
+rm -rf $RPM_BUILD_ROOT
+make DESTDIR=$RPM_BUILD_ROOT/%{DESTDIR} install
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post
+%{LINK} %{OLPCROOT} %{DESTDIR}
+#
+# If any kernel modules are being installed using this mechanism, you
+# need to depmod them in...
+depmod -b %{DESTDIR} -C %{DESTDIR}/etc/depmod.d
+#
+# There are some files which must be copied, not symlinked
+# syslog.conf, sysctl.conf, and sudoers are examples.
+rm %{DESTDIR}/etc/sudoers
+cp -fp %{OLPCROOT}/etc/sudoers %{DESTDIR}/etc/
+chmod 0440 %{DESTDIR}/etc/sudoers
+rm %{DESTDIR}/etc/syslog.conf
+cp -fp %{OLPCROOT}/etc/syslog.conf %{DESTDIR}/etc/
+rm %{DESTDIR}/etc/sysctl.conf
+cp -fp %{OLPCROOT}/etc/sysctl.conf %{DESTDIR}/etc/
+rm %{DESTDIR}/etc/httpd/conf/httpd.conf
+cp -fp %{OLPCROOT}/etc/httpd/conf/httpd.conf %{DESTDIR}/etc/httpd/conf/
+#
+# Delete link script ?
+rm %{LINK}*
+# Temporary fix to remove script symlinks
+rm %{DESTDIR}/symlink-tree.py*
+rm %{DESTDIR}/unlink-tree.py*
+
+%preun
+# If this is an uninstall...
+if [ $1 -eq 0 ]
+then
+ %{UNLINK} %{OLPCROOT} %{DESTDIR}
+ rm %{UNLINK}*
+fi
+
+%files
+%config(noreplace) %{OLPCROOT}
--
1.5.5.1
More information about the Server-devel
mailing list