]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
linux-packaging-module-build-20080701
authorSimon Wilkinson <sxw@inf.ed.ac.uk>
Tue, 1 Jul 2008 23:44:14 +0000 (23:44 +0000)
committerRuss Allbery <rra@stanford.edu>
Tue, 1 Jul 2008 23:44:14 +0000 (23:44 +0000)
LICENSE IPL10

Add --with-linux-kernel-packaging configure flag which disables building
multiple kernels for different MP flavors, sets the kernel module name to
openafs.ko with no version, and installs the modules into the standard
Linux location.

acinclude.m4
src/config/Makefile.config.in
src/libafs/MakefileProto.LINUX.in
src/libafs/make_kbuild_makefile.pl

index c76db5c6852fb7d8a29cda8b897293ffa8ef4e16..91cbd7fedf125f933a5230a25d44305c940c2634 100644 (file)
@@ -53,6 +53,18 @@ AC_ARG_WITH(bsd-kernel-headers,
 AC_ARG_WITH(bsd-kernel-build,
 [  --with-bsd-kernel-build=path        use the kernel build found at path(optional, defaults to KSRC/i386/compile/GENERIC)]
 )
+
+AC_ARG_WITH([linux-kernel-packaging],
+           AS_HELP_STRING([--with-linux-kernel-packaging],
+                          [ use standard naming conventions to aid Linux 
+                            kernel build packaging (disables MPS, sets the 
+                            kernel module name to openafs.ko, and installs 
+                            kernel modules into the standard Linux location)
+                          ]), 
+           [ AC_SUBST(LINUX_KERNEL_PACKAGING, "yes")
+             AC_SUBST(LINUX_LIBAFS_NAME, "openafs") ], 
+            [ AC_SUBST(LINUX_LIBAFS_NAME, "libafs") ] )
+
 AC_ARG_ENABLE(kernel-module,
 [  --disable-kernel-module                     disable compilation of the kernel module (defaults to enabled)],, enable_kernel_module="yes"
 )
@@ -692,7 +704,11 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*)
                  LINUX_EXPORTS_SYS_OPEN
                  LINUX_EXPORTS_SYS_WAIT4
                 LINUX_EXPORTS_RCU_READ_LOCK
-                LINUX_WHICH_MODULES
+                if test "x$with_linux_kernel_packaging" = "xno" ; then
+                  LINUX_WHICH_MODULES
+                else
+                  AC_SUBST(MPS,'SP')
+                fi
                  if test "x$ac_cv_linux_config_modversions" = "xno" -o $AFS_SYSKVERS -ge 26; then
                    AC_MSG_WARN([Cannot determine sys_call_table status. assuming it isn't exported])
                    ac_cv_linux_exports_sys_call_table=no
index 5f1308513e3e44dc760b702e8110daaade5eae22..e4f6dbae0946c6af2d8914101b8777c06abdbfd0 100644 (file)
@@ -49,6 +49,8 @@ LEX = @LEX@
 LIB_AFSDB = @LIB_AFSDB@
 LIBS = @LIBS@
 LINUX_KERNEL_PATH = @LINUX_KERNEL_PATH@
+LINUX_LIBAFS_NAME = @LINUX_LIBAFS_NAME@
+LINUX_KERNEL_PACKAGING = @LINUX_KERNEL_PACKAGING@
 LINUX_VERSION = @LINUX_VERSION@
 LINUX_VERS = @LINUX_VERSION@
 LWP_OPTMZ = @LWP_OPTMZ@
index 72b88c093c69f4d96f823a44dbd595c28565a8ad..6632ee34bb8eecc4b3ca69f8c8ac07154f058fd5 100644 (file)
@@ -213,6 +213,9 @@ ${COMPDIRS} ${INSTDIRS} ${DESTDIRS}:
 <ia64_linux24 ia64_linux26>
        ln -fs ${LINUX_KERNEL_PATH}/include/asm-ia64 asm
 <all>
+       if [ "${LINUX_KERNEL_PACKAGING}" ] ; then \
+           TARGPREFIX="pack_"; \
+       fi ; \
        for m in ${MPS} ; do \
                KDIR=${KOBJ}-${LINUX_VERSION}${LINUX_MODULE_NAME}-$$m ; \
                echo Building in directory: $${KDIR} ; \
@@ -230,7 +233,7 @@ ${COMPDIRS} ${INSTDIRS} ${DESTDIRS}:
                        TARG=libafs ; \
                fi ; \
                cd $${KDIR} ; \
-               $(MAKE) -f Makefile.afs SMP_DEF="$${SMP_DEF}" $@_$${TARG} CLIENT=${LINUX_VERSION}${LINUX_MODULE_NAME} KDIR=$${KDIR} || exit $$?; \
+               $(MAKE) -f Makefile.afs SMP_DEF="$${SMP_DEF}" $@_$${TARGPREFIX}$${TARG} CLIENT=${LINUX_VERSION}${LINUX_MODULE_NAME} KDIR=$${KDIR} || exit $$?; \
                cd ../ ; \
 <all>
        done
@@ -248,13 +251,16 @@ linux_destdirs_libafs.mp: dest_libafs.mp
 linux_destdirs_libafs.ep: dest_libafs.ep
 linux_destdirs_libafs.bm: dest_libafs.bm
 
+linux_compdirs_pack_libafs: depsrcs pack_libafs
+linux_instdirs_pack_libafs: install_pack_libafs
+linux_destdirs_pack_libafs: dest_pack_libafs
 
 # Below this line are targets when in the COMMON directory:
 # For Linux there is no kernel NFS server.
-LIBAFS = libafs-${CLIENT}.${LINUX_MODULE_EXT}
-LIBAFS_MP = libafs-${CLIENT}.mp.${LINUX_MODULE_EXT}
-LIBAFS_EP = libafs-${CLIENT}.ep.${LINUX_MODULE_EXT}
-LIBAFS_BM = libafs-${CLIENT}.bm.${LINUX_MODULE_EXT}
+LIBAFS = ${LINUX_LIBAFS_NAME}-${CLIENT}.${LINUX_MODULE_EXT}
+LIBAFS_MP = ${LINUX_LIBAFS_NAME}-${CLIENT}.mp.${LINUX_MODULE_EXT}
+LIBAFS_EP = ${LINUX_LIBAFS_NAME}-${CLIENT}.ep.${LINUX_MODULE_EXT}
+LIBAFS_BM = ${LINUX_LIBAFS_NAME}-${CLIENT}.bm.${LINUX_MODULE_EXT}
 
 INST_LIBAFS = ${DESTDIR}${afskerneldir}/${LIBAFS}
 INST_LIBAFS_MP = ${DESTDIR}${afskerneldir}/${LIBAFS_MP}
@@ -266,6 +272,10 @@ DEST_LIBAFS_MP = ${DEST}/root.client/usr/vice/etc/modload/${LIBAFS_MP}
 DEST_LIBAFS_EP = ${DEST}/root.client/usr/vice/etc/modload/${LIBAFS_EP}
 DEST_LIBAFS_BM = ${DEST}/root.client/usr/vice/etc/modload/${LIBAFS_BM}
 
+SYSTEM_LIBAFS = /lib/modules/${CLIENT}/extra/${LINUX_LIBAFS_NAME}/${LINUX_LIBAFS_NAME}.ko
+
+INST_SYSTEM = ${DESTDIR}${SYSTEM_LIBAFS}
+DEST_SYSTEM = ${DEST}/root.client${SYSTEM_LIBAFS}
 
 libafs:        $(LIBAFS) 
        echo SP Build Complete
@@ -280,14 +290,17 @@ libafs.bm: $(LIBAFS_BM)
        echo BM Build Complete
 
 <linux26 linux_26 umlinux26>
-${LIBAFS} ${LIBAFS_MP} ${LIBAFS_EP} ${LIBAFS_BM}: libafs.ko
-       cp libafs.ko $@
+pack_libafs: ${LINUX_LIBAFS_NAME}.ko
+       echo "Packaging Friendly Build Complete"
+
+${LIBAFS} ${LIBAFS_MP} ${LIBAFS_EP} ${LIBAFS_BM}: ${LINUX_LIBAFS_NAME}.ko
+       cp ${LINUX_LIBAFS_NAME}.ko $@
 
 .FORCE:
-libafs.ko afspag.ko: .FORCE
-       env EXTRA_CFLAGS="${EXTRA_CFLAGS}" @TOP_SRCDIR@/libafs/make_kbuild_makefile.pl ${KDIR} @TOP_OBJDIR@/src/config/Makefile.config Makefile.afs Makefile.common
+${LINUX_LIBAFS_NAME}.ko afspag.ko: .FORCE
+       env EXTRA_CFLAGS="${EXTRA_CFLAGS}" @TOP_SRCDIR@/libafs/make_kbuild_makefile.pl ${KDIR} $@ @TOP_OBJDIR@/src/config/Makefile.config Makefile.afs Makefile.common
        env EXTRA_CFLAGS="${EXTRA_CFLAGS}" $(MAKE) -C ${LINUX_KERNEL_PATH} M=@TOP_OBJDIR@/src/libafs/${KDIR} modules
-        
+
 <all -linux26 -linux_26 -umlinux26>
 ${LIBAFS}: $(AFSAOBJS) $(AFSNONFSOBJS)
        $(RM) -f $@
@@ -311,6 +324,11 @@ install_libafs:    $(LIBAFS)
        ${INSTALL} -m 644 $(LIBAFS) $(INST_LIBAFS)
        echo SP Install Complete
 
+install_pack_libafs: $(LINUX_LIBAFS_NAME).ko
+       ${INSTALL} -d ${DESTDIR}/lib/modules/${CLIENT}/extra/${LINUX_LIBAFS_NAME}
+       ${INSTALL} -m 644 $(LINUX_LIBAFS_NAME).ko $(INST_SYSTEM)
+       echo Packaging Friendly Install Complete
+
 install_libafs.mp: $(LIBAFS_MP)
        ${INSTALL} -d ${DESTDIR}${afskerneldir}
        ${INSTALL} -m 644 $(LIBAFS_MP) $(INST_LIBAFS_MP)
@@ -331,6 +349,11 @@ dest_libafs:       $(LIBAFS)
        ${INSTALL} -m 644 $(LIBAFS) $(DEST_LIBAFS)
        echo SP Install Complete
 
+dest_pack_libafs: $(LINUX_LIBAFS_NAME).ko
+       ${INSTALL} -d ${DEST}/root.client/lib/modules/${CLIENT}/extra/${LINUX_LIBAFS_NAME}
+       ${INSTALL} -m 644 $(LINUX_LIBAFS_NAME).ko $(DEST_SYSTEM)
+       echo Packaging Friendly Install Complete
+
 dest_libafs.mp: $(LIBAFS_MP)
        ${INSTALL} -d ${DEST}/root.client/usr/vice/etc/modload
        ${INSTALL} -m 644 $(LIBAFS_MP) $(DEST_LIBAFS_MP)
index 35dbba792a02e94cb2fe545e0682af624cdb5938..9116869a2e77aaba1224a3203ace15f33e63581c 100755 (executable)
@@ -2,10 +2,10 @@
 # make_kbuild_makefile.pl
 # Generate a Makefile for use with the Linux 2.6+ kernel build system
 #
-# Usage: make_kbuild_makefile.pl ${KDIR} Makefiles...
+# Usage: make_kbuild_makefile.pl ${KDIR} ${TARG} Makefiles...
 #
 # The specified makefiles will be scanned for variable values
-# The libafs.ko module will be built in ${TOP_SRCDIR}/src/libafs/${KDIR}.
+# The module ${TARG} will be built in ${TOP_SRCDIR}/src/libafs/${KDIR}.
 # It will include objects listed in ${AFSAOBJS} and ${AFSNFSOBJS}
 # The afspag.ko module will be built from objects listed in ${AFSPAGOBJS}.
 # Appropriate source files for each object will be symlinked into ${KDIR}
 use IO::File;
 
 
-if (@ARGV < 2) {
-  die "Usage: $0 KDIR Makefiles...\n";
+if (@ARGV < 3) {
+  die "Usage: $0 KDIR TARG Makefiles...\n";
 }
 
-($KDIR, @Makefiles) = @ARGV;
+($KDIR, $TARG, @Makefiles) = @ARGV;
+$TARG =~ s/\.k?o$//;
 
 ## Read in all of the Makefiles given on the command line
 ## Our ultimate goal is to find the correct source file for each object.
@@ -111,8 +112,8 @@ foreach (sort keys %vars) {
   print $F "$_ = $vars{$_}\n";
 }
 print $F "EXTRA_CFLAGS=$cflags\n";
-print $F "obj-m := libafs.o afspag.o\n";
-print $F "libafs-objs := ", join("\\\n $_", @libafs_objs), "\n";
+print $F "obj-m := $TARG.o afspag.o\n";
+print $F "$TARG-objs := ", join("\\\n $_", @libafs_objs), "\n";
 print $F "afspag-objs := ", join("\\\n $_", @afspag_objs), "\n";
 print $F "\n$MakefileVersion\n";
 $F->close() or die "$KDIR/Makefile: $!\n";