[DRBD-cvs] drbd by phil; * Updates to Build system. * Updates to ...

drbd-user@lists.linbit.com drbd-user@lists.linbit.com
Fri, 6 Feb 2004 09:50:19 +0100 (CET)


DRBD CVS committal

Author  : phil
Module  : drbd

Dir     : drbd


Modified Files:
	INSTALL Makefile drbd.spec.in 


Log Message:
* Updates to Build system. 
* Updates to INSTALL - readme and SMGL fixes to documentation

by Lars

===================================================================
RCS file: /var/lib/cvs/drbd/drbd/INSTALL,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- INSTALL	6 Jan 2004 10:06:25 -0000	1.4
+++ INSTALL	6 Feb 2004 08:50:14 -0000	1.5
@@ -116,6 +116,11 @@
 
        all# make clean ; make KDIR=/path/to/kernel/source
 
+   Note that it should build against preconfigured kernel-headers, too,
+   like in "make KDIR=/usr/src/linux-include/athlon". But then you
+   should be very sure that your running kernel matches the
+   configuration of that header tree exactly.
+
 == Build DRBD user space tools ==
 
        all# cd /usr/src/drbd-0.6.10/user
@@ -154,11 +159,21 @@
 
 == Building a .rpm of it: ==
 
+   There are caveats, please have a look at ./README, too,
+   you might want/need to edit the ./drbd.spec file.
+
    This should be fairly easy, there is an example spec
-   file, and you can even "make rpm" ...
+   file, and you can even "make rpm".  If this is a CVS version,
+   you might need to say "make rpm FORCE=1".
 
-   But there are caveats, please have a look at ./README, too,
-   you might want/need to edit the ./drbd.spec file.
+   Note that it should build against preconfigured kernel-headers, too,
+   like in "make rpm KDIR=/usr/src/linux-include/athlon",
+   "make rpm KDIR=/usr/src/linux-include/smp", ...
+
+   You then should find packages in dist/{S,}RPMS/*/*.rpm:
+	./dist/RPMS/i586/drbd-0.6.10+cvs-3.i586.rpm
+	./dist/RPMS/i586/kernel-module-drbd-0.6.10+cvs-3_2.4.21_166_default.i586.rpm
+	./dist/RPMS/i586/kernel-smp-module-drbd-0.6.10+cvs-3_2.4.21_166_4G.i586.rpm
 
 == Building a .deb of it: ==
 
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/Makefile,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -3 -r1.27 -r1.28
--- Makefile	5 Feb 2004 09:10:45 -0000	1.27
+++ Makefile	6 Feb 2004 08:50:14 -0000	1.28
@@ -77,6 +77,12 @@
 tgz: check_changelogs_up2date
 endif
 
+KDIR := $(shell echo /lib/modules/`uname -r`/build)
+KVER := $(shell \
+	echo -e "\#include <linux/version.h>\ndrbd_kernel_release UTS_RELEASE" | \
+        gcc -nostdinc -E -P -I$(KDIR)/include - 2>&1 | \
+        sed -ne 's/^drbd_kernel_release "\(.*\)".*/\1/p')
+
 # maybe dist/RPMS/$(ARCH) instead of i386 ?
 rpm: tgz
 	mkdir -p dist/BUILD \
@@ -97,6 +103,8 @@
 	$(RPMBUILD) -ba \
 	    --define "_topdir $(PWD)/dist" \
 	    --define "buildroot $(PWD)/dist/install" \
+	    --define "kernelversion $(KVER)" \
+	    --define "kdir $(KDIR)" \
 	    $(PWD)/dist/SPECS/drbd.spec
 
 # the INSTALL file is writen in lge-markup, which is basically
@@ -106,7 +114,7 @@
 
 INSTALL.html: INSTALL.pod
 	-pod2html --title "Howto Build and Install DRBD" \
-		< INSTALL.pod > INSTALL.html ; rm pod2htm[di].x~~
+		< INSTALL.pod > INSTALL.html ; rm -f pod2htm[di].x~~
 #	-w3m -T text/html -dump < INSTALL.html > INSTALL.txt
 
 INSTALL.pod: INSTALL
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd.spec.in,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- drbd.spec.in	5 Feb 2004 09:07:19 -0000	1.1
+++ drbd.spec.in	6 Feb 2004 08:50:14 -0000	1.2
@@ -1,6 +1,8 @@
 # "uname -r" output of the kernel to build for, the running one
 # if none was specified with "--define 'kernelversion <uname -r>'"
+# PLEASE: provide both (correctly) or none!!
 %{!?kernelversion: %{expand: %%define kernelversion %(uname -r)}}
+%{!?kdir: %{expand: %%define kdir /lib/modules/%(uname -r)/build}}
 
 %define kversion %(echo %{kernelversion} | sed -e s/smp// -)
 %define krelver  %(echo %{kversion} | tr -s '-' '_')
@@ -48,6 +50,10 @@
 
 %prep
 %setup
+test -d %{kdir}/.
+test $(echo -e "#include <linux/version.h>\ndrbd_kernel_release UTS_RELEASE" |
+       gcc -nostdinc -E -P -I%{kdir}/include - |
+       sed -ne 's/^drbd_kernel_release "\(.*\)".*/\1/p') = %{kernelversion}
 
 %build
 echo kernelversion=%{kernelversion}
@@ -58,7 +64,10 @@
 make clean
 # note: MANDIR is not used anywhere in the makefiles
 #       maybe this should be changed
-make PREFIX=%{buildroot}/ MANDIR=%{_mandir} all
+make PREFIX=%{buildroot}/ MANDIR=%{_mandir} KDIR=%{kdir} all
+
+# sanity check
+test %{kernelversion} = $(<drbd/.kernelrelease)
 
 %install
 make PREFIX=%{buildroot}/ MANDIR=%{_mandir} install
@@ -66,6 +75,9 @@
 mv HOWTO HOWTO.orig
 mkdir HOWTO
 cp -p HOWTO.orig/*.html HOWTO/
+cd ../drbd
+mv kernel.config.gz k-config-%{kernelversion}.gz
+
 FILELIST="%{_builddir}/%{name}-%{version}/file.list"
 cd %{buildroot}
 #
@@ -127,6 +139,7 @@
 %files -n kernel%{?ksmp}-module-drbd
 %defattr(-,root,root)
 /lib/modules/%{kernelversion}/
+%doc drbd/k-config-%{kernelversion}.gz
 
 %post
 uname -r | grep BOOT || /sbin/depmod -a > /dev/null 2>&1 || true
@@ -153,7 +166,7 @@
 
 %changelog
 * Wed Feb  4 2004 Lars Ellenberg <Lars.Ellenberg@linbit.com> [0.6.10-3]
-- merged Sean Reifschneiders changes with my own cahnges which already
+- merged Sean Reifschneiders changes with my own changes which already
   where in cvs
 
 * Tue Feb  3 2004 Sean Reifschneider <jafo-rpms@tummy.com> [0.6.10-2]