In a kernel source package, which will be non-native, the kernel-wedge configuration should be placed under the debian/ directory. copy-modules, gen-control, gen-deps, install-files: If the environment variable $KW_CONFIG_DIR is set, look for configuration files in the specified directory (which may be relative). --- This adds an environment variable instead of additional parameters, as requested. I even remembered to update the documentation for this one. Please apply and then upload a new version of kernel-wedge. Ben. README | 5 +++++ commands/copy-modules | 17 +++++++++-------- commands/gen-control | 18 ++++++++++-------- commands/gen-deps | 12 +++++++----- commands/install-files | 13 +++++++------ debian/changelog | 1 + 6 files changed, 39 insertions(+), 27 deletions(-) diff --git a/README b/README index 06f061e..6bf5b87 100644 --- a/README +++ b/README @@ -9,11 +9,16 @@ looking something like this: debian/changelog debian/rules debian/control.stub + kernel-versions modules/<arch>/* exclude-packages package-list +The second group of files may be placed in a subdirectory, in which +case the environment variable $KW_CONFIG_DIR must be set to the +subdirectory name. + Let's get the easy files out of the way. The changelog is a changelog, like any other, as is the copyright. The debian/rules can be something as simple as this: diff --git a/commands/copy-modules b/commands/copy-modules index 974347d..f20ac3c 100755 --- a/commands/copy-modules +++ b/commands/copy-modules @@ -81,6 +81,7 @@ processmodules() { version=$1-$2 flavour=$2 installedname=$3 +configdir=$(readlink -f ${KW_CONFIG_DIR:-.}) arch=$(dpkg-architecture -qDEB_HOST_ARCH) os=$(dpkg-architecture -qDEB_HOST_ARCH_OS) home=$PWD @@ -102,12 +103,12 @@ if [ ! -d $moddir ]; then fi # The directory of modules lists to use. -if [ -d modules/$arch-$flavour ]; then - modlistdir=modules/$arch-$flavour -elif [ -d modules/$flavour ]; then - modlistdir=modules/$flavour +if [ -d $configdir/modules/$arch-$flavour ]; then + modlistdir=$configdir/modules/$arch-$flavour +elif [ -d $configdir/modules/$flavour ]; then + modlistdir=$configdir/modules/$flavour else - modlistdir=modules/$arch + modlistdir=$configdir/modules/$arch fi if [ "$os" = "linux" ] ; then @@ -132,9 +133,9 @@ if [ "$os" = "linux" ] ; then } ' $modulesdep | sort -k 2,2 > $tmpdir/deps - if [ ! -s $tmpdir/deps ] && [ ! -e $home/no-modules ]; then + if [ ! -s $tmpdir/deps ] && [ ! -e $configdir/no-modules ]; then echo "No module interdependencies found. This probably means your modules.dep is broken." >&2 - echo "If this is intentional, touch $home/no-modules" >&2 + echo "If this is intentional, touch $configdir/no-modules" >&2 exit 1 fi else @@ -166,7 +167,7 @@ for i in $( # preprocess file, handle includes and excludes and sort so that # the joins work, no matter what the order of the input. - kernel-wedge preprocess $home/$modlistdir/$i | sort > $tmpdir/module-list/$i + kernel-wedge preprocess $modlistdir/$i | sort > $tmpdir/module-list/$i # exclude modules in exclude from dependency list join -2 2 -v 2 $tmpdir/exclude $tmpdir/deps | diff --git a/commands/gen-control b/commands/gen-control index 9845a74..5ec7bbf 100755 --- a/commands/gen-control +++ b/commands/gen-control @@ -11,9 +11,11 @@ my %packages; my @builddeps; my %excluded; +my $configdir = ($ENV{KW_CONFIG_DIR} || '.'); + my $fixkernelversion = $ARGV[0]; -if (open(EXCLUDED, "exclude-packages")) { +if (open(EXCLUDED, "$configdir/exclude-packages")) { while (<EXCLUDED>) { chomp; $excluded{$_}=1; @@ -21,7 +23,7 @@ if (open(EXCLUDED, "exclude-packages")) { close EXCLUDED; } -open(KVERS, "kernel-versions") || die "kernel-versions: $!"; +open(KVERS, "$configdir/kernel-versions") || die "kernel-versions: $!"; while (<KVERS>) { chomp; next if /^#/ || ! length; @@ -109,7 +111,7 @@ sub read_package_list close LIST; } read_package_list("/usr/share/kernel-wedge/package-list"); -read_package_list("package-list"); +read_package_list("$configdir/package-list"); foreach my $ver (@versions) { my ($arch, $kernelversion, $flavour) = @$ver; @@ -134,14 +136,14 @@ foreach my $ver (@versions) { # Check for a modules list file for this architecture and # package. my $modlistdir=""; - if (-d "modules/$arch-$flavour") { - $modlistdir="modules/$arch-$flavour"; + if (-d "$configdir/modules/$arch-$flavour") { + $modlistdir = "$configdir/modules/$arch-$flavour"; } - elsif (-d "modules/$flavour") { - $modlistdir="modules/$flavour"; + elsif (-d "$configdir/modules/$flavour") { + $modlistdir = "$configdir/modules/$flavour"; } else { - $modlistdir="modules/$arch"; + $modlistdir = "$configdir/modules/$arch"; } next unless -e "$modlistdir/".$package->("Package"); diff --git a/commands/gen-deps b/commands/gen-deps index 94e77be..4509cc5 100755 --- a/commands/gen-deps +++ b/commands/gen-deps @@ -6,6 +6,8 @@ my $arch=`dpkg-architecture -qDEB_HOST_ARCH`; chomp $arch; +my $configdir = ($ENV{KW_CONFIG_DIR} || '.'); + my $flavour=$ARGV[0]; my @out; @@ -26,14 +28,14 @@ sub read_package_list my @depends=split(", ", $1); # Skip packages that are not built for this architecture. my $modlistdir=""; - if (-d "modules/$arch-$flavour") { - $modlistdir="modules/$arch-$flavour"; + if (-d "$configdir/modules/$arch-$flavour") { + $modlistdir = "$configdir/modules/$arch-$flavour"; } elsif (-d "modules/$flavour") { - $modlistdir="modules/$flavour"; + $modlistdir = "$configdir/modules/$flavour"; } else { - $modlistdir="modules/$arch"; + $modlistdir = "$configdir/modules/$arch"; } next unless -e "$modlistdir/$package"; foreach my $dep (@depends) { @@ -48,5 +50,5 @@ sub read_package_list } read_package_list("/usr/share/kernel-wedge/package-list"); -read_package_list("package-list"); +read_package_list("$configdir/package-list"); print sort @out; diff --git a/commands/install-files b/commands/install-files index 999cc2d..5478f1f 100755 --- a/commands/install-files +++ b/commands/install-files @@ -12,11 +12,12 @@ sub doit { my $hostarch=`dpkg-architecture -qDEB_HOST_ARCH`; chomp $hostarch; +my $configdir = ($ENV{KW_CONFIG_DIR} || '.'); my $fixsourcedir = $ENV{SOURCEDIR}; my $fixkernelversion = $ARGV[0]; -open(KVERS, "kernel-versions") || die "kernel-versions: $!"; +open(KVERS, "$configdir/kernel-versions") || die "kernel-versions: $!"; my $version = 0; while (<KVERS>) { chomp; @@ -70,14 +71,14 @@ while (<KVERS>) { } my $modlistdir; - if (-d "modules/$arch-$flavour") { - $modlistdir="modules/$arch-$flavour"; + if (-d "$configdir/modules/$arch-$flavour") { + $modlistdir = "$configdir/modules/$arch-$flavour"; } - elsif (-d "modules/$flavour") { - $modlistdir="modules/$flavour"; + elsif (-d "$configdir/modules/$flavour") { + $modlistdir = "$configdir/modules/$flavour"; } else { - $modlistdir="modules/$arch"; + $modlistdir = "$configdir/modules/$arch"; } if (! -e "$modlistdir/kernel-image") { diff --git a/debian/changelog b/debian/changelog index 9cc2682..a19ae2d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,6 +10,7 @@ kernel-wedge (2.79) UNRELEASED; urgency=low [ Ben Hutchings ] * Allow kernel source packages to use kernel-wedge on themselves * Allow kernel ABI version to be specified as command-line argument + * Allow configuration files to be placed in a subdirectory -- Samuel Thibault <sthibault@debian.org> Mon, 08 Aug 2011 18:34:12 +0200 -- 1.7.5.4
Attachment:
signature.asc
Description: This is a digitally signed message part