diff mbox

Maverick pull request, LP587893

Message ID 4C068CD7.5080003@canonical.com
State Accepted
Delegated to: Leann Ogasawara
Headers show

Commit Message

Tim Gardner June 2, 2010, 4:54 p.m. UTC
Leann,

Please find included a pull request to correct the virtual flavour size 
issues. I've added debian/docs/README.inclusion-list which explains
my reasoning.

rtg

Comments

Leann Ogasawara June 2, 2010, 8:02 p.m. UTC | #1
Applied to Maverick master.

Thanks,
Leann
diff mbox

Patch

diff --git a/debian.master/d-i/modules/block-modules b/debian.master/d-i/modules/block-modules
index ada17c5..27f9e9d 100644
--- a/debian.master/d-i/modules/block-modules
+++ b/debian.master/d-i/modules/block-modules
@@ -5,7 +5,7 @@  bpck6 ?
 cciss ?
 comm ?
 cpqarray ?
-DAC960
+DAC960 ?
 dstr ?
 epat ?
 epia ?
-- 
1.7.0.4


From e2f71a8c2da1ec118abe50a7a5e9d85a4c936b1d Mon Sep 17 00:00:00 2001
From: Tim Gardner <tim.gardner@canonical.com>
Date: Tue, 1 Jun 2010 11:39:15 -0600
Subject: [PATCH 2/3] UBUNTU: [Config] Added module inclusion support

In order to preserve some semblance of commonality in the
config files, I decided to build the virtual flavour by compiling all
of the default modules, then whittling the package down by removing modules
not specifically required for the virtual flavour. The package construction
process looks for a file in debian.<BRANCH>/control.d/<FLAVOUR>.inclusion-list
for a recipe. Note that you may also have to define some udeb module flavour
exclusions in debian.<BRANCH>/d-i/exclude-<ARCH>-<FLAVOUR>.

Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
---
 debian/docs/README.inclusion-list |   51 +++++++++++++++++++++++++++++++++++++
 debian/rules.d/2-binary-arch.mk   |   11 ++++++++
 debian/scripts/module-inclusion   |   51 +++++++++++++++++++++++++++++++++++++
 3 files changed, 113 insertions(+), 0 deletions(-)
 create mode 100644 debian/docs/README.inclusion-list
 create mode 100755 debian/scripts/module-inclusion

diff --git a/debian/docs/README.inclusion-list b/debian/docs/README.inclusion-list
new file mode 100644
index 0000000..b025393
--- /dev/null
+++ b/debian/docs/README.inclusion-list
@@ -0,0 +1,51 @@ 
+This README describes the reason for, and the use of, module
+inclusion lists.
+
+The original Hardy release had the notion of sub-flavours,
+e.g., a flavour that was constructed as a subset of an existing flavour.
+For example, the virtual flavour was extracted from the server flavour using
+a subset of the server flavour modules. However, there were some difficult
+mainteneance issues with regard to packaging, make rules, and scripts. This
+re-implementation of the sub-flavours philosophy is hopefully simpler,
+and retrofitable to all releases.
+
+A module inclusion list looks at the problem of of constructing a package
+from the perspective of what modules do we _want_ in the package, as opposed
+to what modules we _don't_ want. As the kernel matures, more and more devices are added
+which makes the problem of configuration maintenance a real pain in the ass.
+If we took the approach of disabling all of the config options that we don't want,
+then the differences between flavours will quickly become quite large, making
+it difficult to quickly compare the individual flavour configs.  Each time a
+new config option is added then we also have to make a decision about disabling in
+order to continue to keep the minimal number of modules.
+
+A module inclusion list is applied on a per-flavour basis. For example,
+debian.<BRANCH>/control.d/${flavour}.inclusion-list. For example, the
+config for virtual is very close to server and generic, but the inclusion list
+causes the virtual package to be constructed with _only_ the modules described 
+in the inclusion list.
+
+The inclusion list format is a simple bash regular expression list of files. For example,
+
+arch/*/{crypto,kernel,oprofile}
+drivers/acpi/*
+drivers/ata/ahci.ko
+
+These 3 regular expression forms are suitable for expansion by bash and as inputs to 'find'.
+See debian/scripts/module-inclusion for details.
+
+There are 2 log files created as a side effect of the application of the module
+inclusion list; $(flavour).inclusion-list.log and $(flavour).depmod.log.
+
+$(flavour).inclusion-list.log : This log is created while the inclusion list
+modules are being copied. If any are missing, then those warnings go in this log.
+While its not considered a fatal error, you should endevour to correct your inclusion
+list such that there are no missing modules.
+
+$(flavour).depmod.log : The log is created as a result of running depmod on the
+resulting set of modules. If there are missing symbols then you'll find that information
+here. Again, you should modify your inclusion list such that there are no missing
+symbols.
+
+Tim Gardner <tim.gardner@canonical.com>
+June 2, 2010
diff --git a/debian/rules.d/2-binary-arch.mk b/debian/rules.d/2-binary-arch.mk
index c9b0c2e..0b2e03d 100644
--- a/debian/rules.d/2-binary-arch.mk
+++ b/debian/rules.d/2-binary-arch.mk
@@ -78,6 +78,17 @@  endif
 		INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=$(pkgdir)/ \
 		INSTALL_FW_PATH=$(pkgdir)/lib/firmware/$(abi_release)-$*
 
+	#
+	# Remove all modules not in the inclusion list.
+	#
+	if [ -f $(DEBIAN)/control.d/$(target_flavour).inclusion-list ] ; then \
+		$(DROOT)/scripts/module-inclusion $(pkgdir)/lib/modules/$(abi_release)-$*/kernel \
+			$(DEBIAN)/control.d/$(target_flavour).inclusion-list 2>&1 | \
+				tee $(target_flavour).inclusion-list.log; \
+		/sbin/depmod -b $(pkgdir) -ea -F $(pkgdir)/boot/System.map-$(abi_release)-$* \
+			$(abi_release)-$* 2>&1 |tee $(target_flavour).depmod.log; \
+	fi
+
 ifeq ($(no_dumpfile),)
 	makedumpfile -g $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$* \
 		-x $(builddir)/build-$*/vmlinux
diff --git a/debian/scripts/module-inclusion b/debian/scripts/module-inclusion
new file mode 100755
index 0000000..ec3ce5e
--- /dev/null
+++ b/debian/scripts/module-inclusion
@@ -0,0 +1,51 @@ 
+#!/bin/bash
+
+#
+# Build a new directory of modules based on an inclusion list.
+# The includsion list format must be a bash regular expression.
+#
+# usage: $0 ROOT INCLUSION_LIST
+# example: $0 debian/build/build-virtual debian.master/control.d/virtual.inclusion-list
+ROOT=$1
+ILIST=$2
+
+NROOT=${ROOT}.new
+
+#
+# Prep a destination directory.
+#
+mkdir -p ${NROOT}
+rsync -a --exclude="*.ko" ${ROOT}/ ${NROOT}
+
+cat ${ILIST} |while read i
+do
+	#
+	# 'find' blurts a warning if it cannot find any ko files.
+	#
+	if echo "$i" | grep '\*' > /dev/null
+	then
+		(cd ${ROOT}; eval find "${i}" -name "*.ko") |while read f
+		do
+			mkdir -p ${NROOT}/`dirname $f`
+			cp ${ROOT}/$f ${NROOT}/$f
+		done
+	else
+		if [ -f "${ROOT}/$i" ]
+		then
+			mkdir -p ${NROOT}/`dirname $i`
+			cp ${ROOT}/$i ${NROOT}/$i
+		else
+			echo Warning: Could not find ${ROOT}/$i
+		fi
+	fi
+
+done
+
+#
+# Cleanup
+#
+rm -rf ${ROOT}
+mv ${NROOT} ${ROOT}
+
+exit 0
+
-- 
1.7.0.4


From fde00e3837e66e5305216e935228472dbc5c1836 Mon Sep 17 00:00:00 2001
From: Tim Gardner <tim.gardner@canonical.com>
Date: Tue, 1 Jun 2010 19:21:40 -0600
Subject: [PATCH 3/3] UBUNTU: [Config] Added virtual flavour module inclusion list and d-i package definitions

BugLink: http://bugs.launchpad.net/bugs/lp587893

Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
---
 debian.master/control.d/virtual.inclusion-list  |  131 +++++++++++++++++++++++
 debian.master/d-i/exclude-modules.amd64-virtual |   12 ++
 debian.master/d-i/exclude-modules.i386-virtual  |   12 ++
 3 files changed, 155 insertions(+), 0 deletions(-)
 create mode 100644 debian.master/control.d/virtual.inclusion-list
 create mode 100644 debian.master/d-i/exclude-modules.amd64-virtual
 create mode 100644 debian.master/d-i/exclude-modules.i386-virtual

diff --git a/debian.master/control.d/virtual.inclusion-list b/debian.master/control.d/virtual.inclusion-list
new file mode 100644
index 0000000..de1ce7b
--- /dev/null
+++ b/debian.master/control.d/virtual.inclusion-list
@@ -0,0 +1,131 @@ 
+arch/*/{crypto,kernel,oprofile}
+crypto/*
+drivers/acpi/*
+drivers/ata/ahci.ko
+drivers/block/nbd.ko
+drivers/block/floppy.ko
+drivers/block/cryptoloop.ko
+drivers/block/xen-blkfront.ko
+drivers/char/hangcheck-timer.ko
+drivers/char/lp.ko
+drivers/char/nvram.ko
+drivers/char/ppdev.ko
+drivers/char/raw.ko
+drivers/input/evbug.ko
+drivers/input/gameport/gameport.ko
+drivers/input/mouse/psmouse.ko
+drivers/input/serio/serio_raw.ko
+drivers/input/serio/serport.ko
+drivers/input/joydev.ko
+drivers/input/misc/uinput.ko
+drivers/input/touchscreen/usbtouchscreen.ko
+drivers/input/xen-kbdfront.ko
+drivers/md/*
+drivers/message/fusion*
+drivers/net/8390.ko
+drivers/net/8139too.ko
+drivers/net/8139cp.ko
+drivers/net/appletalk/ipddp.ko
+drivers/net/bonding/bonding.ko
+drivers/net/bsd_comp.ko
+drivers/net/dummy.ko
+drivers/net/e1000/e1000.ko
+drivers/net/e1000e/e1000e.ko
+drivers/net/eql.ko
+drivers/net/ifb.ko
+drivers/net/mii.ko
+drivers/net/ne2k-pci.ko
+drivers/net/netconsole.ko
+drivers/net/pcnet32.ko
+drivers/net/ppp_async.ko
+drivers/net/ppp_deflate.ko
+drivers/net/ppp_mppe.ko
+drivers/net/pppoe.ko
+drivers/net/pppol2tp.ko
+drivers/net/pppox.ko
+drivers/net/ppp_synctty.ko
+drivers/net/slip.ko
+drivers/net/veth.ko
+drivers/net/vmxnet3/vmxnet3.ko
+drivers/net/xen-netfront.ko
+drivers/parport/parport.ko
+drivers/parport/parport_pc.ko
+drivers/pci/hotplug/acpiphp.ko
+drivers/net/tulip/tulip.ko
+drivers/scsi/BusLogic.ko
+drivers/scsi/iscsi_tcp.ko
+drivers/scsi/libiscsi.ko
+drivers/scsi/libiscsi_tcp.ko
+drivers/scsi/libsas/*
+drivers/scsi/libsas/libsas.ko
+drivers/scsi/qla1280.ko
+drivers/scsi/raid_class.ko
+drivers/scsi/scsi_transport_fc.ko
+drivers/scsi/scsi_transport_iscsi.ko
+drivers/scsi/scsi_transport_sas.ko
+drivers/scsi/scsi_wait_scan.ko
+drivers/scsi/scsi_tgt.ko
+drivers/scsi/vmw_pvscsi.ko
+drivers/usb/storage/usb-storage.ko
+drivers/video/cirrusfb.ko
+drivers/video/output.ko
+drivers/video/syscopyarea.ko
+drivers/video/sysfillrect.ko
+drivers/video/sysimgblt.ko
+drivers/video/vesafb.ko
+drivers/video/vga16fb.ko
+drivers/video/vgastate.ko
+drivers/video/xen-fbfront.ko
+drivers/video/fb_sys_fops.ko
+drivers/virtio/virtio_balloon.ko
+drivers/watchdog/softdog.ko
+drivers/xen/*
+fs/binfmt_misc.ko
+fs/btrfs/*
+fs/configfs/*
+fs/exportfs/*
+fs/fat/*
+fs/isofs/*
+fs/cifs/*
+fs/xfs/*
+fs/ufs/*
+fs/smbfs/*
+fs/squashfs/*
+lib/*
+net/802/*
+net/8021q/*
+net/appletalk/*
+net/atm/*
+net/ax25/*
+net/bridge/*
+net/can/*
+net/core/*
+net/dccp/*
+net/decnet/*
+net/econet/*
+net/ieee802154/*
+net/ipv4/*
+net/ipv6/*
+net/ipx/*
+net/irda/*
+net/key/*
+net/lapb/*
+net/llc/*
+net/mac80211/*
+net/netfilter/*
+net/netrom/*
+net/phonet/*
+net/rose/*
+net/rxrpc/*
+net/sched/*
+net/sctp/*
+net/tipc/*
+net/wanrouter/*
+net/wireless/*
+net/x25/*
+net/xfrm/*
+sound/soundcore.ko
+sound/core/*
+sound/pci/snd-ens1370.ko
+sound/drivers/pcsp/snd-pcsp.ko
+ubuntu/iscsitarget/iscsi_trgt.ko
diff --git a/debian.master/d-i/exclude-modules.amd64-virtual b/debian.master/d-i/exclude-modules.amd64-virtual
new file mode 100644
index 0000000..e17fd2f
--- /dev/null
+++ b/debian.master/d-i/exclude-modules.amd64-virtual
@@ -0,0 +1,12 @@ 
+pata-modules
+serial-modules
+firewire-core-modules
+plip-modules
+usb-modules
+pcmcia-storage-modules
+input-modules
+nic-pcmcia-modules
+pcmcia-modules
+nic-usb-modules
+char-modules
+nfs-modules
diff --git a/debian.master/d-i/exclude-modules.i386-virtual b/debian.master/d-i/exclude-modules.i386-virtual
new file mode 100644
index 0000000..e17fd2f
--- /dev/null
+++ b/debian.master/d-i/exclude-modules.i386-virtual
@@ -0,0 +1,12 @@ 
+pata-modules
+serial-modules
+firewire-core-modules
+plip-modules
+usb-modules
+pcmcia-storage-modules
+input-modules
+nic-pcmcia-modules
+pcmcia-modules
+nic-usb-modules
+char-modules
+nfs-modules