diff --git a/debian.manta/control.d/flavour-control.stub b/debian.manta/control.d/flavour-control.stub index 5ea910a5080..0b791165232 100644 --- a/debian.manta/control.d/flavour-control.stub +++ b/debian.manta/control.d/flavour-control.stub @@ -26,11 +26,10 @@ Architecture: ARCH Section: admin Priority: optional Pre-Depends: dpkg (>= 1.10.24) -#Provides: linux-image, linux-image-2.6, fuse-module, =PROVIDES= Depends: ${misc:Depends}, ${shlibs:Depends}, initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>= 4.0), module-init-tools (>= 3.3-pre11-4ubuntu3), wireless-crda Conflicts: hotplug (<< 0.0.20040105-1) Recommends: BOOTLOADER -Suggests: fdutils, SRCPKGNAME-doc-PKGVER | SRCPKGNAME-source-PKGVER, SRCPKGNAME-tools +Suggests: fdutils, SRCPKGNAME-source-PKGVER Description: Linux kernel image for version PKGVER on DESC This package contains the Linux kernel image for version PKGVER on DESC. @@ -51,8 +50,7 @@ Package: linux-headers-PKGVER-ABINUM-FLAVOUR Architecture: ARCH Section: devel Priority: optional -Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0), linux-headers-PKGVER-ABINUM, ${shlibs:Depends} -#Provides: SRCPKGNAME-headers, SRCPKGNAME-headers-2.6 +Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0), SRCPKGNAME-headers-PKGVER-ABINUM, ${shlibs:Depends} Description: Linux kernel headers for version PKGVER on DESC This package provides kernel header files for version PKGVER on DESC. @@ -60,7 +58,7 @@ Description: Linux kernel headers for version PKGVER on DESC This is for sites that want the latest kernel headers. Please read /usr/share/doc/SRCPKGNAME-headers-PKGVER-ABINUM/debian.README.gz for details. -Package: linux-image-PKGVER-ABINUM-FLAVOUR-dbgsym +Package: SRCPKGNAME-image-PKGVER-ABINUM-FLAVOUR-dbgsym Architecture: ARCH Section: devel Priority: optional diff --git a/debian.manta/control.stub.in b/debian.manta/control.stub.in index 19cbc3c1110..f07f144a2e3 100644 --- a/debian.manta/control.stub.in +++ b/debian.manta/control.stub.in @@ -8,12 +8,11 @@ Build-Depends-Indep: xmlto, docbook-utils, ghostscript, transfig, bzip2, sharuti Build-Conflicts: findutils (= 4.4.1-1ubuntu1) Vcs-Git: git://kernel.ubuntu.com/ubuntu/ubuntu-saucy.git manta -Package: linux-headers-PKGVER-ABINUM +Package: SRCPKGNAME-headers-PKGVER-ABINUM Architecture: armhf Section: devel Priority: optional Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0) -#Provides: SRCPKGNAME-headers, SRCPKGNAME-headers-2.6 Description: Header files related to Linux kernel version PKGVER This package provides kernel header files for version PKGVER, for sites that want the latest kernel headers. Please read diff --git a/debian.master/config/enforce b/debian.master/config/enforce new file mode 100644 index 00000000000..e69de29bb2d diff --git a/debian/commit-templates/external-driver b/debian/commit-templates/external-driver index 652275c1e4f..decdc897bdd 100644 --- a/debian/commit-templates/external-driver +++ b/debian/commit-templates/external-driver @@ -11,9 +11,9 @@ # # to the commit, and you can remove all other tags (except UBUNTU:). # -UBUNTU: +UBUNTU: -ExternalDriver: +ExternalDriver: Description: Url: Mask: diff --git a/debian/commit-templates/sauce-patch b/debian/commit-templates/sauce-patch index 530b1dd62d5..08720a8c20f 100644 --- a/debian/commit-templates/sauce-patch +++ b/debian/commit-templates/sauce-patch @@ -5,7 +5,7 @@ # # SAUCE refers to the fact that this patch might not go upstream, but we need to # carry it to successive releases. In most cases you DONOT want to use this -# template. +# template. # # An example of a SAUCE patch is the ACPI DSDT-in-initramfs patch which has been # refused upstream, but still provides useful functionality to users with broken @@ -29,12 +29,12 @@ # # Ignore: yes will keep this commit from showing up in the changelog. # -UBUNTU: SAUCE: +UBUNTU: SAUCE: -# OriginalAuthor: -# OriginalLocation: +# OriginalAuthor: +# OriginalLocation: # BugLink: http://bugs.launchpad.net/bugs/ # Ignore: yes # Other text below here. diff --git a/debian/commit-templates/upstream-patch b/debian/commit-templates/upstream-patch index bf9e18f9e0a..671ab6a0921 100644 --- a/debian/commit-templates/upstream-patch +++ b/debian/commit-templates/upstream-patch @@ -20,8 +20,8 @@ # UBUNTU: [Upstream] -# OriginalAuthor: -# OriginalLocation: +# OriginalAuthor: +# OriginalLocation: # BugLink: http://bugs.launchpad.net/bugs/ # Ignore: yes # Other text below here. diff --git a/debian/control-scripts/headers-postinst b/debian/control-scripts/headers-postinst index cbbfc01dc7e..2fb2be858a4 100644 --- a/debian/control-scripts/headers-postinst +++ b/debian/control-scripts/headers-postinst @@ -1,5 +1,5 @@ #!/usr/bin/perl -# -*- Mode: Cperl -*- +# -*- Mode: Cperl -*- # debian.postinst --- # Author : Manoj Srivastava ( srivasta@pilgrim.umass.edu ) # Created On : Sat Apr 27 05:42:43 1996 diff --git a/debian/control-scripts/postinst b/debian/control-scripts/postinst index 00529e1fe60..b6ed9f845cc 100644 --- a/debian/control-scripts/postinst +++ b/debian/control-scripts/postinst @@ -254,16 +254,16 @@ sub test_relative { # while (@work) { # my $seg = shift @work; # if ($seg eq "." || $seg eq "") { -# } +# } # elsif ($seg eq "..") { # if (@out && $out[-1] ne "..") { # pop @out; -# } +# } # else { # # Leading "..", or "../..", etc. # push @out, $seg; # } -# } +# } # else { # push @out, $seg; # } @@ -332,7 +332,7 @@ sub really_move_image { " $target"); if ($ret) { die("Failed to move " . $src_dir . "$target to " - . $dest_dir . "$target.\n"); + . $dest_dir . "$target"); } # Ok, now we may clobber the previous .old files if (-e "$target.$$") { @@ -342,9 +342,9 @@ sub really_move_image { } } -# Normally called after really_move_image; and only called if we asked for -# reversed link this routine reverses the symbolic link that is notmally -# created. Since the real kernel image has been moved over to +# Normally called after really_move_image; and only called if we asked for +# reversed link this routine reverses the symbolic link that is notmally +# created. Since the real kernel image has been moved over to # $image_dest/$kimage-$version. So, this routine links # From: $image_dest/$kimage-$version (/vmlinuz-2.6.12) # To: $realimageloc/$kimage-$version (/boot/vmlinuz-2.6.12) @@ -366,14 +366,14 @@ sub really_reverse_link { if ($use_hard_links =~ m/YES/i) { link($Old . "$link_name", $src_dir . "$link_name") || - die("Failed to link " . $dest_dir . "$link_name to " . $src_dir . - "$link_name .\n"); + die("Failed to link " . $dest_dir . "$link_name to " . $src_dir . + "$link_name:$!"); warn "ln " . $Old . "$link_name " . $src_dir . "$link_name" if $DEBUG; } else { symlink($Old . "$link_name", $src_dir . "$link_name") || die("Failed to symbolic-link " . $dest_dir . "$link_name to " . $src_dir - . "$link_name : $!\n"); + . "$link_name:$!"); warn "ln -s " . $Old . "$link_name " . $src_dir . "$link_name" if $DEBUG; } } @@ -385,8 +385,8 @@ sub really_reverse_link { sub move_p { my $kimage = $_[0]; # Name of the symbolic link my $image_dest = $_[1]; # The directory the links goes into - my $image_name = $_[2]; - my $src_dir = $_[3]; + my $image_name = $_[2]; + my $src_dir = $_[3]; my $force_move = 0; warn "Move?: kimage=$kimage, image_dest=$image_dest, \n" . "\timage_name=$image_name, src_dir=$src_dir" if $DEBUG; @@ -448,24 +448,24 @@ sub move_p { $force_move = 1; warn "DEBUG: Old link ($old_target) does not point to us ($target)\n" if $DEBUG; - } + } else { # The .old points to the current warn "$kimage.old --> $target -- doing nothing"; $force_move = 0; } - } - else { + } + else { warn "DEBUG: Well, the old link does not exist -- so we move\n" if $DEBUG; $force_move = 1; } - } + } else { warn "DEBUG: No .old link -- OK to move\n" if $DEBUG; $force_move = 1; } - } + } else { warn "DEBUG: ok, minimal swap is no-- so we move.\n" if $DEBUG; @@ -486,8 +486,8 @@ sub move_p { sub really_move_link { my $kimage = $_[0]; # Name of the symbolic link my $image_dest = $_[1]; # The directory the links goes into - my $image_name = $_[2]; - my $src_dir = $_[3]; + my $image_name = $_[2]; + my $src_dir = $_[3]; warn "really_move_link: kimage=$kimage, image_dest=$image_dest\n" . "\t image_name=$image_name, src_dir=$src_dir" if $DEBUG; @@ -512,15 +512,15 @@ sub really_move_link { if (! link("${Old}${image_name}", "$kimage")) { rename("$kimage.$$", "$kimage"); die("Failed to link ${Old}${image_name} to " . - "${image_dest}${kimage}.\n"); + "${image_dest}${kimage}:$!"); } - } + } else { warn "ln -s ${Old}${image_name} $kimage" if $DEBUG; if (! symlink("${Old}${image_name}", "$kimage")) { rename("$kimage.$$", "$kimage"); die("Failed to symbolic-link ${Old}${image_name} to " . - "${image_dest}${kimage}: $!\n"); + "${image_dest}${kimage}:$!"); } } @@ -544,8 +544,8 @@ sub really_move_link { sub handle_missing_link { my $kimage = $_[0]; # Name of the symbolic link my $image_dest = $_[1]; # The directory the links goes into - my $image_name = $_[2]; - my $src_dir = $_[3]; + my $image_name = $_[2]; + my $src_dir = $_[3]; warn "handle_missing_link: kimage=$kimage, image_dest=$image_dest\n" . "\t image_name=$image_name, src_dir=$src_dir" if $DEBUG; @@ -555,18 +555,18 @@ sub handle_missing_link { "$image_name " . " $kimage"); if ($ret) { die("Failed to copy " . $realimageloc . "$image_name to " - . $image_dest . "$kimage .\n"); + . $image_dest . "$kimage"); } - } + } elsif ($reverse_symlink) { warn "mv -f $realimageloc$image_name $kimage" if $DEBUG; my $ret = system("mv -f " . $realimageloc . "$image_name " . "$kimage"); if ($ret) { die("Failed to move " . $realimageloc . "$image_name to " - . $image_dest . "$kimage .\n"); + . $image_dest . "$kimage"); } - } + } else { if (! $have_conffile) { my $ret; @@ -612,28 +612,28 @@ sub handle_missing_link { $Old ="" if $rel_path =~ m/^\s*$/o; symlink($Old . "$Name", "$Link_Dest") || - die("Failed to symbolic-link ${Old}$Name to $Link_Dest: $!\n"); + die("Failed to symbolic-link ${Old}$Name to $Link_Dest:$!"); warn "ln -s ${Old}$Name $Link_Dest" if $DEBUG; } } -# This routine handles the rest of the cases, where the user has requested +# This routine handles the rest of the cases, where the user has requested # non-traditional handling, like using cp, or reverse symlinks, or hard links. sub handle_non_symlinks { my $kimage = $_[0]; # Name of the symbolic link my $image_dest = $_[1]; # The directory the links goes into - my $image_name = $_[2]; - my $src_dir = $_[3]; + my $image_name = $_[2]; + my $src_dir = $_[3]; warn "handle_non_link: kimage=$kimage, image_dest=$image_dest\n" . "\t image_name=$image_name, src_dir=$src_dir" if $DEBUG; # Save the current image. We do this in all four cases - rename("$kimage", "$kimage.$$") || + rename("$kimage", "$kimage.$$") || die "failed to move " . $image_dest . "$kimage:$!"; warn "mv $kimage $kimage.$$" if $DEBUG; - ##,#### + ##,#### # case One #`#### if ($no_symlink) { @@ -647,10 +647,10 @@ sub handle_non_symlinks { warn "mv $kimage.$$ $kimage" if $DEBUG; } die("Failed to copy " . $realimageloc . "$image_name to " - . $image_dest . "$kimage .\n"); + . $image_dest . "$kimage"); } } - ##,#### + ##,#### # case Two #`#### elsif ($reverse_symlink) { # Maybe /$image_dest is on a dos system? @@ -663,7 +663,7 @@ sub handle_non_symlinks { warn "mv $kimage.$$ $kimage" if $DEBUG; } die("Failed to move " . $realimageloc . "$image_name to " - . $image_dest . "$kimage .\n"); + . $image_dest . "$kimage"); } my $Old = $image_dest; if (test_relative ('Old Dir' => $Old, 'New Dir' => $realimageloc, @@ -711,7 +711,7 @@ sub handle_non_symlinks { warn "mv $kimage.$$ $kimage" if $DEBUG; rename("$kimage.$$", "$kimage"); die("Failed to link " . $realimageloc . "$image_name to " - . $image_dest . "$kimage .\n"); + . $image_dest . "$kimage"); } } ##,#### @@ -728,7 +728,7 @@ sub handle_non_symlinks { rename("$kimage.$$", "$kimage"); } die("Failed to copy " . $realimageloc . "$image_name to " - . $image_dest . "$kimage .\n"); + . $image_dest . "$kimage"); } } # Ok, now we may clobber the previous .old file @@ -811,7 +811,7 @@ sub find_initrd_tool { print STDERR "Finding valid ramdisk creators.\n"; my @ramdisks = grep { - my $args = + my $args = "$_ " . "--supported-host-version=$hostversion " . "--supported-target-version=$version " . @@ -863,7 +863,7 @@ if ($initrd) { } else { # Not making an initrd emage if (-l "initrd.img") { - # Ooh, last image was an initrd image? in any case, we should move it. + # Ooh, last image was an initrd image? in any case, we should move it. my $target = readlink "initrd.img"; my $real_target = ''; $real_target = abs_path($target) if defined ($target); @@ -900,7 +900,7 @@ if (! defined $ARGV[1] || ! $ARGV[1] || $ARGV[1] =~ m//og) { } else { if (! -e "$kimage") { - handle_missing_link($kimage, $image_dest, "$kimage-$version", + handle_missing_link($kimage, $image_dest, "$kimage-$version", $realimageloc); } else { @@ -1092,3 +1092,4 @@ sub run_lilo (){ exit 0; __END__ + diff --git a/debian/control-scripts/postrm b/debian/control-scripts/postrm index d1119f06227..227e351fc59 100644 --- a/debian/control-scripts/postrm +++ b/debian/control-scripts/postrm @@ -1,7 +1,7 @@ #! /usr/bin/perl -# -*- Mode: Cperl -*- -# image.postrm --- -# Author : Manoj Srivastava ( srivasta@glaurung.green-gryphon.com ) +# -*- Mode: Cperl -*- +# image.postrm --- +# Author : Manoj Srivastava ( srivasta@glaurung.green-gryphon.com ) # Created On : Sat May 15 11:05:13 1999 # Created On Node : glaurung.green-gryphon.com # Last Modified By : Manoj Srivastava @@ -9,14 +9,14 @@ # Last Machine Used: glaurung.internal.golden-gryphon.com # Update Count : 57 # Status : Unknown, Use with caution! -# HISTORY : -# Description : -# +# HISTORY : +# Description : +# # $Id: image.postrm,v 1.31 2003/10/07 16:24:20 srivasta Exp $ # -# +# #use strict; #for debugging use Cwd 'abs_path'; @@ -52,7 +52,7 @@ my $kernel_arch = "=B"; my $ramdisk = "/usr/sbin/update-initramfs"; my $package_name = "linux-image-$version"; -my $Loader = "NoLOADER"; # +my $Loader = "NoLOADER"; # $Loader = "LILO" if $loader =~ /^lilo/io; $Loader = "SILO" if $loader =~ /^silo/io; $Loader = "QUIK" if $loader =~ /^quik/io; @@ -189,7 +189,7 @@ sub remove_sym_link { my $bad_image = $_[0]; warn "Removing symbolic link $bad_image \n"; - if ($loader =~ /lilo/i) + if ($loader =~ /lilo/i) { warn "Unless you used the optional flag in lilo, \n"; } @@ -236,8 +236,8 @@ sub CanonicalizePath { ############ ###################################################################### ###################################################################### -# This removes dangling symlinks. What do we do about hard links? Surely a -# something with the nane $image_dest . "$kimage" ought not to be left behind? +# This removes dangling symlinks. What do we do about hard links? Surely a +# something with the nane $image_dest . "$kimage" ought not to be left behind? sub image_magic { my $kimage = $_[0]; my $image_dest = $_[1]; @@ -353,3 +353,9 @@ if ($ARGV[0] !~ /upgrade/) { exit 0; __END__ + + + + + + diff --git a/debian/control-scripts/preinst b/debian/control-scripts/preinst index fd5ac5baf88..972377609fc 100644 --- a/debian/control-scripts/preinst +++ b/debian/control-scripts/preinst @@ -90,6 +90,15 @@ die "Pre inst Internal error. Aborting." unless $version; exit 0 if $ARGV[0] =~ /abort-upgrade/; exit 1 unless $ARGV[0] =~ /(install|upgrade)/; +$arch = `uname -i`; +if ($arch =~ m/86/) { + system ("grep -q ' pae ' /proc/cpuinfo"); + if ($?) { + print STDERR "This kernel does not support a non-PAE CPU.\n"; + exit 1; + } +} + # remove multiple leading slashes; make sure there is at least one. $realimageloc =~ s|^/*|/|o; $realimageloc =~ s|/+|/|o; @@ -163,7 +172,7 @@ sub find_initrd_tool { my $version = shift; my @ramdisks = grep { - my $args = + my $args = "$_ " . "--supported-host-version=$hostversion " . "--supported-target-version=$version " . @@ -302,3 +311,5 @@ print STDERR "Done.\n"; exit 0; __END__ + + diff --git a/debian/control-scripts/prerm b/debian/control-scripts/prerm index 22fc86d18da..07e41461d3a 100644 --- a/debian/control-scripts/prerm +++ b/debian/control-scripts/prerm @@ -1,7 +1,7 @@ #! /usr/bin/perl -# -*- Mode: Perl -*- -# image.prerm --- -# Author : root ( root@melkor.pilgrim.umass.edu ) +# -*- Mode: Perl -*- +# image.prerm --- +# Author : root ( root@melkor.pilgrim.umass.edu ) # Created On : Fri May 17 03:28:59 1996 # Created On Node : melkor.pilgrim.umass.edu # Last Modified By : Manoj Srivastava @@ -9,13 +9,13 @@ # Last Machine Used: glaurung.internal.golden-gryphon.com # Update Count : 85 # Status : Unknown, Use with caution! -# HISTORY : -# Description : -# +# HISTORY : +# Description : +# # # $Id: image.prerm,v 1.22 2003/10/07 16:24:20 srivasta Exp $ # -# +# #use strict; $|=1; @@ -47,7 +47,7 @@ my $kernel_arch = "=B"; my $ramdisk = "/usr/sbin/update-initramfs"; my $package_name = "linux-image-$version"; -my $Loader = "NoLOADER"; # +my $Loader = "NoLOADER"; # $Loader = "LILO" if $loader =~ /^lilo/io; $Loader = "SILO" if $loader =~ /^silo/io; $Loader = "QUIK" if $loader =~ /^quik/io; @@ -272,7 +272,7 @@ if (-x "$prerm_hook") { } if (-d "/etc/kernel/prerm.d") { print STDERR "Examining /etc/kernel/prerm.d.\n"; - system ("run-parts --verbose --exit-on-error --arg=$version " . + system ("run-parts --verbose --exit-on-error --arg=$version " . "--arg=$realimageloc$kimage-$version /etc/kernel/prerm.d") && die "Failed to process /etc/kernel/prerm.d"; } @@ -305,3 +305,8 @@ sub success () { &success(); exit 0; __END__ + + + + + diff --git a/debian/docs/README.inclusion-list b/debian/docs/README.inclusion-list index 0c36c4b8fa7..b025393e7c1 100644 --- a/debian/docs/README.inclusion-list +++ b/debian/docs/README.inclusion-list @@ -22,7 +22,7 @@ order to continue to keep the minimal number of modules. A module inclusion list is applied on a per-flavour basis. For example, debian./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 +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, diff --git a/debian/rules b/debian/rules index 92ec033af3e..6777aaed979 100755 --- a/debian/rules +++ b/debian/rules @@ -29,8 +29,11 @@ include $(DROOT)/rules.d/0-common-vars.mk # Maintainer targets include $(DROOT)/rules.d/1-maintainer.mk -# Stages +# Stages -- support both DEB_STAGE=stage1 and DEB_BUILD_PROFILE=bootstrap ifeq ($(DEB_STAGE),stage1) + DEB_BUILD_PROFILE=bootstrap +endif +ifeq ($(DEB_BUILD_PROFILE),bootstrap) do_tools=false do_doc_package=false do_source_package=false @@ -38,6 +41,12 @@ ifeq ($(DEB_STAGE),stage1) do_flavour_header_package=false endif +# autopkgtest -- rebuild support +# only build the first flavour on the assumption it is representative +ifeq ($(DEB_BUILD_PROFILE),autopkgtest) +flavours := $(firstword $(flavours)) +endif + # Debian Build System targets binary: binary-indep binary-arch @@ -82,6 +91,7 @@ include $(DROOT)/rules.d/3-binary-indep.mk include $(DROOT)/rules.d/4-checks.mk # Misc stuff +.PHONY: $(DEBIAN)/control.stub $(DEBIAN)/control.stub: $(DEBIAN)/d-i/kernel-versions.in \ $(DROOT)/scripts/control-create \ $(DEBIAN)/control.stub.in \ @@ -92,6 +102,7 @@ $(DEBIAN)/control.stub: $(DEBIAN)/d-i/kernel-versions.in \ cat $$i | sed -e 's/PKGVER/$(release)/g' \ -e 's/ABINUM/$(abinum)/g' \ -e 's/SRCPKGNAME/$(src_pkg_name)/g' \ + -e 's/=HUMAN=/$(human_arch)/g' \ > $$new; \ done flavours="$(wildcard $(DEBIAN)/control.d/vars.* $(DEBIAN)/sub-flavours/*.vars)";\ @@ -100,6 +111,7 @@ $(DEBIAN)/control.stub: $(DEBIAN)/d-i/kernel-versions.in \ sed -e 's/PKGVER/$(release)/g' \ -e 's/ABINUM/$(abinum)/g' \ -e 's/SRCPKGNAME/$(src_pkg_name)/g' \ + -e 's/=HUMAN=/$(human_arch)/g' \ >> $(DEBIAN)/control.stub; \ done cp $(DEBIAN)/control.stub $(DEBIAN)/control diff --git a/debian/rules.d/0-common-vars.mk b/debian/rules.d/0-common-vars.mk index 1e7da52dac9..c2dfe6cad64 100644 --- a/debian/rules.d/0-common-vars.mk +++ b/debian/rules.d/0-common-vars.mk @@ -4,13 +4,14 @@ src_pkg_name=$(shell sed -n '1s/^\(.*\) (.*).*$$/\1/p' $(DEBIAN)/changelog) # Get some version info -series := maverick release := $(shell sed -n '1s/^$(src_pkg_name).*(\(.*\)-.*).*$$/\1/p' $(DEBIAN)/changelog) revisions := $(shell sed -n 's/^$(src_pkg_name)\ .*($(release)-\(.*\)).*$$/\1/p' $(DEBIAN)/changelog | tac) revision ?= $(word $(words $(revisions)),$(revisions)) prev_revisions := $(filter-out $(revision),0.0 $(revisions)) prev_revision := $(word $(words $(prev_revisions)),$(prev_revisions)) +prev_fullver ?= $(shell dpkg-parsechangelog -l$(DEBIAN)/changelog -o1 -c1 | sed -ne 's/^Version: *//p') + family=ubuntu # This is an internally used mechanism for the daily kernel builds. It @@ -23,16 +24,6 @@ family=ubuntu # or configs. AUTOBUILD= -# -# This is a way to support some external variables. A good example is -# a local setup for ccache and distcc See LOCAL_ENV_CC and -# LOCAL_ENV_DISTCC_HOSTS in the definition of kmake. -# For example: -# LOCAL_ENV_CC="ccache distcc" -# LOCAL_ENV_DISTCC_HOSTS="localhost 10.0.2.5 10.0.2.221" -# --include $(CURDIR)/../.$(series)-env - ifneq ($(AUTOBUILD),) skipabi = true skipmodule = true @@ -51,7 +42,7 @@ ubuntu_log_opts += --print-shas endif # Get the kernels own extra version to be added to the release signature. -extraversion=$(shell awk '/EXTRAVERSION =/ { print $$3 }' /dev/null)- +endif + +# +# Detect invocations of the form 'dpkg-buildpackage -B -aarmhf' within +# an x86'en schroot. This is the only way to build all of the packages +# (except for tools). +# +ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + CROSS_COMPILE ?= $(DEB_HOST_GNU_TYPE)- +endif -arch := $(shell dpkg-architecture -qDEB_HOST_ARCH) abidir := $(CURDIR)/$(DEBIAN)/abi/$(release)-$(revision)/$(arch) prev_abidir := $(CURDIR)/$(DEBIAN)/abi/$(release)-$(prev_revision)/$(arch) commonconfdir := $(CURDIR)/$(DEBIAN)/config archconfdir := $(CURDIR)/$(DEBIAN)/config/$(arch) -sharedconfdir := $(CURDIR)/$(DEBIAN)/config +sharedconfdir := $(CURDIR)/debian.master/config builddir := $(CURDIR)/debian/build stampdir := $(CURDIR)/debian/stamps @@ -99,7 +121,10 @@ stampdir := $(CURDIR)/debian/stamps # assumption that the binary package always starts with linux-image will never change. # bin_pkg_name=linux-image-$(abi_release) +extra_pkg_name=linux-image-extra-$(abi_release) hdrs_pkg_name=linux-headers-$(abi_release) +indep_hdrs_pkg_name=$(src_pkg_name)-headers-$(abi_release) + # # The generation of content in the doc package depends on both 'AUTOBUILD=' and # 'do_doc_package_content=true'. There are usually build errors during the development @@ -134,9 +159,14 @@ do_full_source=false # build tools ifneq ($(wildcard $(CURDIR)/tools),) -do_tools?=true + ifeq ($(do_tools),) + ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) + do_tools=false + endif + endif + do_tools?=true else -do_tools?=false + do_tools?=false endif tools_pkg_name=$(src_pkg_name)-tools-$(abi_release) tools_common_pkg_name=$(src_pkg_name)-tools-common @@ -179,8 +209,22 @@ conc_level = -j$(CONCURRENCY_LEVEL) # target_flavour is filled in for each step kmake = make ARCH=$(build_arch) \ - EXTRAVERSION=-$(abinum)-$(target_flavour) \ - CONFIG_DEBUG_SECTION_MISMATCH=y SUBLEVEL=$(SUBLEVEL) \ + CROSS_COMPILE=$(CROSS_COMPILE) \ + KERNELVERSION=$(abi_release)-$(target_flavour) \ + CONFIG_DEBUG_SECTION_MISMATCH=y \ KBUILD_BUILD_VERSION="$(uploadnum)" \ - LOCALVERSION= localver-extra= \ - CC=gcc-4.7 + LOCALVERSION= localver-extra= +ifneq ($(LOCAL_ENV_CC),) +kmake += CC=$(LOCAL_ENV_CC) DISTCC_HOSTS=$(LOCAL_ENV_DISTCC_HOSTS) +endif + +# Locking is required in parallel builds to prevent loss of contents +# of the debian/files. +lockme_file = $(CURDIR)/debian/.LOCK +lockme_cmd = flock -w 60 +lockme = $(lockme_cmd) $(lockme_file) + +# Checks if a var is overriden by the custom rules. Called with var and +# flavour as arguments. +custom_override = \ + $(shell if [ -n "$($(1)_$(2))" ]; then echo "$($(1)_$(2))"; else echo "$($(1))"; fi) diff --git a/debian/rules.d/1-maintainer.mk b/debian/rules.d/1-maintainer.mk index c481c84352a..0aa7e4fc101 100644 --- a/debian/rules.d/1-maintainer.mk +++ b/debian/rules.d/1-maintainer.mk @@ -39,39 +39,14 @@ help: printdebian: @echo "$(DEBIAN)" -updateconfigs: +updateconfigs defaultconfigs editconfigs genconfigs dumpconfigs: dh_testdir; - $(SHELL) $(DROOT)/scripts/misc/kernelconfig oldconfig + $(SHELL) $(DROOT)/scripts/misc/kernelconfig $@ rm -rf build -defaultconfigs: +updateportsconfigs defaultportsconfigs editportsconfigs genportsconfigs askconfigs: dh_testdir; - yes "" | $(SHELL) $(DROOT)/scripts/misc/kernelconfig defaultconfig - rm -rf build - -editconfigs: - dh_testdir - $(SHELL) $(DROOT)/scripts/misc/kernelconfig editconfig - rm -rf build - -genconfigs: - dh_testdir - $(SHELL) $(DROOT)/scripts/misc/kernelconfig genconfig - rm -rf build - -updateportsconfigs: - dh_testdir; - $(SHELL) $(DROOT)/scripts/misc/kernelconfig oldconfig ports - rm -rf build - -editportsconfigs: - dh_testdir - $(SHELL) $(DROOT)/scripts/misc/kernelconfig editconfig ports - rm -rf build - -genportsconfigs: - dh_testdir - $(SHELL) $(DROOT)/scripts/misc/kernelconfig genconfig ports + $(SHELL) $(DROOT)/scripts/misc/kernelconfig $@ ports rm -rf build printenv: @@ -90,9 +65,6 @@ printenv: @echo "skipmodule = $(skipmodule)" @echo "skipdbg = $(skipdbg)" @echo "ubuntu_log_opts = $(ubuntu_log_opts)" -ifneq ($(SUBLEVEL),) - @echo "SUBLEVEL = $(SUBLEVEL)" -endif @echo "CONCURRENCY_LEVEL = $(CONCURRENCY_LEVEL)" @echo "bin package name = $(bin_pkg_name)" @echo "hdr package name = $(hdrs_pkg_name)" @@ -108,15 +80,22 @@ endif @echo "do_full_source = $(do_full_source)" @echo "do_tools = $(do_tools)" @echo "full_build = $(full_build)" + @echo "libc_dev_version = $(libc_dev_version)" + @echo "DEB_HOST_GNU_TYPE = $(DEB_HOST_GNU_TYPE)" + @echo "DEB_BUILD_GNU_TYPE = $(DEB_BUILD_GNU_TYPE)" + @echo "DEB_HOST_ARCH = $(DEB_HOST_ARCH)" + @echo "DEB_BUILD_ARCH = $(DEB_BUILD_ARCH)" + @echo "arch = $(arch)" + @echo "kmake = $(kmake)" printchanges: @baseCommit=$$(git log --pretty=format:'%H %s' | \ - awk '/UBUNTU: '".*Ubuntu.*-$(release)-$(prev_revision)"'$$/ { print $$1; exit }'); \ + awk '/UBUNTU: '".*Ubuntu-$(prev_fullver)"'$$/ { print $$1; exit }'); \ git log "$$baseCommit"..HEAD | \ perl -w -f $(DROOT)/scripts/misc/git-ubuntu-log $(ubuntu_log_opts) insertchanges: - @perl -w -f $(DROOT)/scripts/misc/insert-changes.pl $(DROOT) $(DEBIAN) + @perl -w -f $(DROOT)/scripts/misc/insert-changes.pl $(DROOT) $(DEBIAN) diffupstream: @git diff-tree -p refs/remotes/linux-2.6/master..HEAD $(shell ls | grep -vE '^(ubuntu|$(DEBIAN)|\.git.*)') @@ -137,3 +116,4 @@ startnewrelease: $(DEBIAN)/changelog.new ; \ cat $(DEBIAN)/changelog >> $(DEBIAN)/changelog.new; \ mv $(DEBIAN)/changelog.new $(DEBIAN)/changelog + diff --git a/debian/rules.d/2-binary-arch.mk b/debian/rules.d/2-binary-arch.mk index b0cc12a5e66..5059f86f8c1 100644 --- a/debian/rules.d/2-binary-arch.mk +++ b/debian/rules.d/2-binary-arch.mk @@ -10,89 +10,135 @@ build_cd = build_O = O=$(builddir)/build-$* endif -prepare-%: $(stampdir)/stamp-prepare-% - @# Empty for make to be happy -$(stampdir)/stamp-prepare-%: $(stampdir)/stamp-prepare-tree-% prepare-checks-% +$(stampdir)/stamp-prepare-%: config-prepare-check-% + @echo Debug: $@ @touch $@ $(stampdir)/stamp-prepare-tree-%: target_flavour = $* $(stampdir)/stamp-prepare-tree-%: $(commonconfdir)/config.common.$(family) $(archconfdir)/config.common.$(arch) $(archconfdir)/config.flavour.% - @echo "Preparing $*..." + @echo Debug: $@ install -d $(builddir)/build-$* touch $(builddir)/build-$*/ubuntu-build [ "$(do_full_source)" != 'true' ] && true || \ rsync -a --exclude debian --exclude debian.master --exclude $(DEBIAN) * $(builddir)/build-$* - cat $^ | sed -e 's/.*CONFIG_VERSION_SIGNATURE.*/CONFIG_VERSION_SIGNATURE="Ubuntu $(release)-$(revision)-$* $(release)$(extraversion)"/' > $(builddir)/build-$*/.config + cat $^ | sed -e 's/.*CONFIG_VERSION_SIGNATURE.*/CONFIG_VERSION_SIGNATURE="Ubuntu $(release)-$(revision)-$* $(raw_kernelversion)"/' > $(builddir)/build-$*/.config find $(builddir)/build-$* -name "*.ko" | xargs rm -f - $(build_cd) $(kmake) $(build_O) silentoldconfig prepare scripts + $(build_cd) $(kmake) $(build_O) -j1 silentoldconfig prepare scripts touch $@ -# Do the actual build, including image and modules +# Used by developers as a shortcut to prepare a tree for compilation. +prepare-%: $(stampdir)/stamp-prepare-% + @echo Debug: $@ +# Used by developers to allow efficient pre-building without fakeroot. build-%: $(stampdir)/stamp-build-% - @# Empty for make to be happy + @echo Debug: $@ + +# Do the actual build, including image and modules $(stampdir)/stamp-build-%: target_flavour = $* -$(stampdir)/stamp-build-%: prepare-% - @echo "Building $*..." - $(build_cd) $(kmake) $(build_O) $(conc_level) $(build_image) - $(build_cd) $(kmake) $(build_O) $(conc_level) modules +$(stampdir)/stamp-build-%: bldimg = $(call custom_override,build_image,$*) +$(stampdir)/stamp-build-%: dtb_target = $(dtb_files_$*) +$(stampdir)/stamp-build-%: $(stampdir)/stamp-prepare-% + @echo Debug: $@ build_image $(build_image) bldimg $(bldimg) + $(build_cd) $(kmake) $(build_O) $(conc_level) $(bldimg) modules $(dtb_target) @touch $@ # Install the finished build install-%: pkgdir = $(CURDIR)/debian/$(bin_pkg_name)-$* +install-%: pkgdir_ex = $(CURDIR)/debian/$(extra_pkg_name)-$* install-%: bindoc = $(pkgdir)/usr/share/doc/$(bin_pkg_name)-$* install-%: dbgpkgdir = $(CURDIR)/debian/$(bin_pkg_name)-$*-dbgsym +install-%: signed = $(CURDIR)/debian/$(bin_pkg_name)-signed install-%: basepkg = $(hdrs_pkg_name) +install-%: indeppkg = $(indep_hdrs_pkg_name) +install-%: kernfile = $(call custom_override,kernel_file,$*) +install-%: instfile = $(call custom_override,install_file,$*) install-%: hdrdir = $(CURDIR)/debian/$(basepkg)-$*/usr/src/$(basepkg)-$* install-%: target_flavour = $* -install-%: $(stampdir)/stamp-build-% checks-% +install-%: dtb_files = $(dtb_files_$*) +install-%: checks-% + @echo Debug: $@ kernel_file $(kernel_file) kernfile $(kernfile) install_file $(install_file) instfile $(instfile) dh_testdir dh_testroot - dh_prep -p$(bin_pkg_name)-$* - dh_prep -p$(hdrs_pkg_name)-$* - dh_prep -p$(dbg_pkg_name)-$* - dh_prep -p$(tools_pkg_name)-$* + dh_clean -k -p$(bin_pkg_name)-$* + dh_clean -k -p$(hdrs_pkg_name)-$* +ifneq ($(skipdbg),true) + dh_clean -k -p$(dbg_pkg_name)-$* +endif # The main image # compress_file logic required because not all architectures # generate a zImage automatically out of the box ifeq ($(compress_file),) - install -m644 -D $(builddir)/build-$*/$(kernel_file) \ - $(pkgdir)/boot/$(install_file)-$(abi_release)-$* + install -m600 -D $(builddir)/build-$*/$(kernfile) \ + $(pkgdir)/boot/$(instfile)-$(abi_release)-$* else install -d $(pkgdir)/boot - gzip -c9v $(builddir)/build-$*/$(kernel_file) > \ - $(pkgdir)/boot/$(install_file)-$(abi_release)-$* - chmod 644 $(pkgdir)/boot/$(install_file)-$(abi_release)-$* + gzip -c9v $(builddir)/build-$*/$(kernfile) > \ + $(pkgdir)/boot/$(instfile)-$(abi_release)-$* + chmod 600 $(pkgdir)/boot/$(instfile)-$(abi_release)-$* +endif + +ifeq ($(arch),amd64) +ifeq ($(uefi_signed),true) + install -d $(signed)/$(release)-$(revision) + # Check to see if this supports handoff, if not do not sign it. + # Check the identification area magic and version >= 0x020b + handoff=`dd if="$(pkgdir)/boot/$(instfile)-$(abi_release)-$*" bs=1 skip=514 count=6 2>/dev/null | od -s | awk '($$1 == 0 && $$2 == 25672 && $$3 == 21362 && $$4 >= 523) { print "GOOD" }'`; \ + if [ "$$handoff" = "GOOD" ]; then \ + cp -p $(pkgdir)/boot/$(instfile)-$(abi_release)-$* \ + $(signed)/$(release)-$(revision)/$(instfile)-$(abi_release)-$*.efi; \ + fi +endif endif install -m644 $(builddir)/build-$*/.config \ $(pkgdir)/boot/config-$(abi_release)-$* install -m644 $(abidir)/$* \ $(pkgdir)/boot/abi-$(abi_release)-$* - install -m644 $(builddir)/build-$*/System.map \ + install -m600 $(builddir)/build-$*/System.map \ $(pkgdir)/boot/System.map-$(abi_release)-$* + if [ "$(dtb_files)" ]; then \ + install -d $(pkgdir)/lib/firmware/$(abi_release)-$*/device-tree; \ + for dtb_file in $(dtb_files); do \ + install -m644 $(builddir)/build-$*/arch/$(build_arch)/boot/dts/$$dtb_file \ + $(pkgdir)/lib/firmware/$(abi_release)-$*/device-tree/$$dtb_file; \ + done \ + fi ifeq ($(no_dumpfile),) makedumpfile -g $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$* \ -x $(builddir)/build-$*/vmlinux + chmod 0600 $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$* endif - $(build_cd) $(kmake) $(build_O) modules_install \ + $(build_cd) $(kmake) $(build_O) $(conc_level) modules_install \ INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=$(pkgdir)/ \ INSTALL_FW_PATH=$(pkgdir)/lib/firmware/$(abi_release)-$* +ifeq ($(do_extras_package),true) # # 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 \ + mkdir -p $(pkgdir_ex)/lib/modules/$(abi_release)-$*; \ + mv $(pkgdir)/lib/modules/$(abi_release)-$*/kernel \ + $(pkgdir_ex)/lib/modules/$(abi_release)-$*/kernel; \ + $(SHELL) $(DROOT)/scripts/module-inclusion --master \ + $(pkgdir_ex)/lib/modules/$(abi_release)-$*/kernel \ + $(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; \ + if [ `grep -c 'unknown symbol' $(target_flavour).depmod.log` -gt 0 ]; then \ + echo "EE: Unresolved module dependencies in base package!"; \ + exit 1; \ + fi \ fi +endif ifeq ($(no_dumpfile),) makedumpfile -g $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$* \ -x $(builddir)/build-$*/vmlinux + chmod 0600 $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$* endif rm -f $(pkgdir)/lib/modules/$(abi_release)-$*/build rm -f $(pkgdir)/lib/modules/$(abi_release)-$*/source @@ -107,11 +153,23 @@ endif # Now the image scripts install -d $(pkgdir)/DEBIAN for script in postinst postrm preinst prerm; do \ - sed -e 's/=V/$(abi_release)-$*/g' -e 's/=K/$(install_file)/g' \ + sed -e 's/=V/$(abi_release)-$*/g' -e 's/=K/$(instfile)/g' \ -e 's/=L/$(loader)/g' -e 's@=B@$(build_arch)@g' \ $(DROOT)/control-scripts/$$script > $(pkgdir)/DEBIAN/$$script; \ chmod 755 $(pkgdir)/DEBIAN/$$script; \ done +ifeq ($(do_extras_package),true) + # Install the postinit/postrm scripts in the extras package. + if [ -f $(DEBIAN)/control.d/$(target_flavour).inclusion-list ] ; then \ + install -d $(pkgdir_ex)/DEBIAN; \ + for script in postinst postrm ; do \ + sed -e 's/=V/$(abi_release)-$*/g' -e 's/=K/$(instfile)/g' \ + -e 's/=L/$(loader)/g' -e 's@=B@$(build_arch)@g' \ + debian/control-scripts/$$script > $(pkgdir_ex)/DEBIAN/$$script; \ + chmod 755 $(pkgdir_ex)/DEBIAN/$$script; \ + done; \ + fi +endif # Install the full changelog. ifeq ($(do_doc_package),true) @@ -131,7 +189,7 @@ ifneq ($(skipsub),true) install -d debian/$(bin_pkg_name)-$$sub/DEBIAN; \ for script in postinst postrm preinst prerm; do \ sed -e 's/=V/$(abi_release)-$*/g' \ - -e 's/=K/$(install_file)/g' \ + -e 's/=K/$(instfile)/g' \ -e 's/=L/$(loader)/g' \ -e 's@=B@$(build_arch)@g' \ $(DROOT)/control-scripts/$$script > \ @@ -147,6 +205,15 @@ ifneq ($(skipdbg),true) $(dbgpkgdir)/usr/lib/debug/boot/vmlinux-$(abi_release)-$* $(build_cd) $(kmake) $(build_O) modules_install \ INSTALL_MOD_PATH=$(dbgpkgdir)/usr/lib/debug + # Add .gnu_debuglink sections to each stripped .ko + # pointing to unstripped verson + find $(pkgdir) -name '*.ko' | sed 's|$(pkgdir)||'| while read module ; do \ + if [[ -f "$(dbgpkgdir)/usr/lib/debug/$$module" ]] ; then \ + $(CROSS_COMPILE)objcopy \ + --add-gnu-debuglink=$(dbgpkgdir)/usr/lib/debug/$$module \ + $(pkgdir)/$$module; \ + fi; \ + done rm -f $(dbgpkgdir)/usr/lib/debug/lib/modules/$(abi_release)-$*/build rm -f $(dbgpkgdir)/usr/lib/debug/lib/modules/$(abi_release)-$*/source rm -f $(dbgpkgdir)/usr/lib/debug/lib/modules/$(abi_release)-$*/modules.* @@ -160,20 +227,20 @@ endif sed -e 's/.*CONFIG_DEBUG_INFO=.*/# CONFIG_DEBUG_INFO is not set/g' > \ $(hdrdir)/.config chmod 644 $(hdrdir)/.config - $(kmake) O=$(hdrdir) silentoldconfig prepare scripts + $(kmake) O=$(hdrdir) -j1 silentoldconfig prepare scripts # We'll symlink this stuff rm -f $(hdrdir)/Makefile - rm -rf $(hdrdir)/include2 + rm -rf $(hdrdir)/include2 $(hdrdir)/source + # Copy over the compilation version. + cp "$(builddir)/build-$*/include/generated/compile.h" \ + "$(hdrdir)/include/generated/compile.h" # powerpc seems to need some .o files for external module linking. Add them in. ifeq ($(arch),powerpc) mkdir -p $(hdrdir)/arch/powerpc/lib cp $(builddir)/build-$*/arch/powerpc/lib/*.o $(hdrdir)/arch/powerpc/lib endif # Script to symlink everything up - $(SHELL) $(DROOT)/scripts/link-headers "$(hdrdir)" "$(basepkg)" "$*" - # Setup the proper asm symlink - rm -f $(hdrdir)/include/asm - ln -s asm-$(asm_link) $(hdrdir)/include/asm + $(SHELL) $(DROOT)/scripts/link-headers "$(hdrdir)" "$(indeppkg)" "$*" # The build symlink install -d debian/$(basepkg)-$*/lib/modules/$(abi_release)-$* ln -s /usr/src/$(basepkg)-$* \ @@ -185,7 +252,7 @@ endif # Now the header scripts install -d $(CURDIR)/debian/$(basepkg)-$*/DEBIAN for script in postinst; do \ - sed -e 's/=V/$(abi_release)-$*/g' -e 's/=K/$(install_file)/g' \ + sed -e 's/=V/$(abi_release)-$*/g' -e 's/=K/$(instfile)/g' \ $(DROOT)/control-scripts/headers-$$script > \ $(CURDIR)/debian/$(basepkg)-$*/DEBIAN/$$script; \ chmod 755 $(CURDIR)/debian/$(basepkg)-$*/DEBIAN/$$script; \ @@ -197,12 +264,12 @@ endif PREV_REVISION="$(prev_revision)" ABI_NUM="$(abinum)" \ PREV_ABI_NUM="$(prev_abinum)" BUILD_DIR="$(builddir)/build-$*" \ INSTALL_DIR="$(pkgdir)" SOURCE_DIR="$(CURDIR)" \ - run-parts -v $(DROOT)/tests + run-parts -v $(DROOT)/tests-build # # Remove files which are generated at installation by postinst, # except for modules.order and modules.builtin - # + # # NOTE: need to keep this list in sync with postrm # mkdir $(pkgdir)/lib/modules/$(abi_release)-$*/_ @@ -220,14 +287,15 @@ endif headers_tmp := $(CURDIR)/debian/tmp-headers headers_dir := $(CURDIR)/debian/linux-libc-dev -hmake := $(MAKE) -C $(CURDIR) O=$(headers_tmp) SUBLEVEL=$(SUBLEVEL) \ - EXTRAVERSION=-$(abinum) INSTALL_HDR_PATH=$(headers_tmp)/install \ +hmake := $(MAKE) -C $(CURDIR) O=$(headers_tmp) \ + KERNELVERSION=$(abi_release) INSTALL_HDR_PATH=$(headers_tmp)/install \ SHELL="$(SHELL)" ARCH=$(header_arch) install-arch-headers: + @echo Debug: $@ dh_testdir dh_testroot - dh_prep -plinux-libc-dev + dh_clean -k -plinux-libc-dev rm -rf $(headers_tmp) install -d $(headers_tmp) $(headers_dir)/usr/include/ @@ -244,47 +312,72 @@ install-arch-headers: find . -name '.' -o -name '.*' -prune -o -print | \ cpio -pvd --preserve-modification-time \ $(headers_dir)/usr/include/ ) + mkdir $(headers_dir)/usr/include/$(DEB_HOST_MULTIARCH) + mv $(headers_dir)/usr/include/asm $(headers_dir)/usr/include/$(DEB_HOST_MULTIARCH)/ rm -rf $(headers_tmp) binary-arch-headers: install-arch-headers + @echo Debug: $@ dh_testdir dh_testroot ifeq ($(do_libc_dev_package),true) +ifneq ($(DEBIAN),debian.master) + echo "non-master branch building linux-libc-dev, aborting" + exit 1 +endif dh_installchangelogs -plinux-libc-dev dh_installdocs -plinux-libc-dev dh_compress -plinux-libc-dev dh_fixperms -plinux-libc-dev dh_installdeb -plinux-libc-dev - dh_gencontrol -plinux-libc-dev + $(lockme) dh_gencontrol -plinux-libc-dev -- $(libc_dev_version) dh_md5sums -plinux-libc-dev dh_builddeb -plinux-libc-dev endif binary-%: pkgimg = $(bin_pkg_name)-$* +binary-%: pkgimg_ex = $(extra_pkg_name)-$* binary-%: pkghdr = $(hdrs_pkg_name)-$* binary-%: dbgpkg = $(bin_pkg_name)-$*-dbgsym +binary-%: dbgpkgdir = $(CURDIR)/debian/$(bin_pkg_name)-$*-dbgsym +binary-%: target_flavour = $* binary-%: install-% + @echo Debug: $@ dh_testdir dh_testroot dh_installchangelogs -p$(pkgimg) dh_installdocs -p$(pkgimg) dh_compress -p$(pkgimg) - dh_fixperms -p$(pkgimg) + dh_fixperms -p$(pkgimg) -X/boot/ dh_installdeb -p$(pkgimg) dh_shlibdeps -p$(pkgimg) - dh_gencontrol -p$(pkgimg) + $(lockme) dh_gencontrol -p$(pkgimg) dh_md5sums -p$(pkgimg) dh_builddeb -p$(pkgimg) -- -Zbzip2 -z9 +ifeq ($(do_extras_package),true) + if [ -f $(DEBIAN)/control.d/$(target_flavour).inclusion-list ] ; then \ + dh_installchangelogs -p$(pkgimg_ex); \ + dh_installdocs -p$(pkgimg_ex); \ + dh_compress -p$(pkgimg_ex); \ + dh_fixperms -p$(pkgimg_ex) -X/boot/; \ + dh_installdeb -p$(pkgimg_ex); \ + dh_shlibdeps -p$(pkgimg_ex); \ + $(lockme) dh_gencontrol -p$(pkgimg_ex); \ + dh_md5sums -p$(pkgimg_ex); \ + dh_builddeb -p$(pkgimg_ex) -- -Zbzip2 -z9; \ + fi +endif + dh_installchangelogs -p$(pkghdr) dh_installdocs -p$(pkghdr) dh_compress -p$(pkghdr) dh_fixperms -p$(pkghdr) dh_shlibdeps -p$(pkghdr) dh_installdeb -p$(pkghdr) - dh_gencontrol -p$(pkghdr) + $(lockme) dh_gencontrol -p$(pkghdr) dh_md5sums -p$(pkghdr) dh_builddeb -p$(pkghdr) @@ -294,10 +387,10 @@ ifneq ($(skipsub),true) dh_installchangelogs -p$$pkg; \ dh_installdocs -p$$pkg; \ dh_compress -p$$pkg; \ - dh_fixperms -p$$pkg; \ + dh_fixperms -p$$pkg -X/boot/; \ dh_shlibdeps -p$$pkg; \ dh_installdeb -p$$pkg; \ - dh_gencontrol -p$$pkg; \ + $(lockme) dh_gencontrol -p$$pkg; \ dh_md5sums -p$$pkg; \ dh_builddeb -p$$pkg; \ done @@ -309,7 +402,7 @@ ifneq ($(skipdbg),true) dh_compress -p$(dbgpkg) dh_fixperms -p$(dbgpkg) dh_installdeb -p$(dbgpkg) - dh_gencontrol -p$(dbgpkg) + $(lockme) dh_gencontrol -p$(dbgpkg) dh_md5sums -p$(dbgpkg) dh_builddeb -p$(dbgpkg) @@ -322,74 +415,123 @@ ifneq ($(skipdbg),true) mv ../$(dbgpkg)_$(release)-$(revision)_$(arch).deb \ ../$(dbgpkg)_$(release)-$(revision)_$(arch).ddeb set -e; \ - if grep -qs '^Build-Debug-Symbols: yes$$' /CurrentlyBuilding; then \ - sed -i '/^$(dbgpkg)_/s/\.deb /.ddeb /' debian/files; \ - else \ - grep -v '^$(dbgpkg)_.*$$' debian/files > debian/files.new; \ - mv debian/files.new debian/files; \ - fi + ( \ + $(lockme_cmd) 9 || exit 1; \ + if grep -qs '^Build-Debug-Symbols: yes$$' /CurrentlyBuilding; then \ + sed -i '/^$(dbgpkg)_/s/\.deb /.ddeb /' debian/files; \ + else \ + grep -v '^$(dbgpkg)_.*$$' debian/files > debian/files.new; \ + mv debian/files.new debian/files; \ + fi; \ + ) 9>$(lockme_file) # Now, the package wont get into the archive, but it will get put # into the debug system. endif - -$(stampdir)/stamp-flavours: - @echo $(flavours) > $@ +ifneq ($(full_build),false) + # Clean out this flavours build directory. + rm -rf $(builddir)/build-$* + # Clean out the debugging package source directory. + rm -rf $(dbgpkgdir) +endif # # per-architecture packages # +builddirpa = $(builddir)/tools-perarch + $(stampdir)/stamp-prepare-perarch: - @echo "Preparing perarch ..." + @echo Debug: $@ ifeq ($(do_tools),true) - install -d $(builddir)/tools-$* - for i in *; do ln -sf $(CURDIR)/$$i $(builddir)/tools-$*/; done - rm $(builddir)/tools-$*/tools - rsync -a tools/ $(builddir)/tools-$*/tools/ + rm -rf $(builddirpa) + install -d $(builddirpa) + for i in *; do ln -s $(CURDIR)/$$i $(builddirpa); done + rm $(builddirpa)/tools + rsync -a tools/ $(builddirpa)/tools/ endif touch $@ -$(stampdir)/stamp-build-perarch: prepare-perarch +$(stampdir)/stamp-build-perarch: $(stampdir)/stamp-prepare-perarch + @echo Debug: $@ ifeq ($(do_tools),true) - cd $(builddir)/tools-$*/tools/perf && make +ifeq ($(do_tools_perf),true) + cd $(builddirpa)/tools/perf && \ + make HAVE_CPLUS_DEMANGLE=1 CROSS_COMPILE=$(CROSS_COMPILE) NO_LIBPYTHON=1 NO_LIBPERL=1 PYTHON=python2.7 +endif + if [ "$(arch)" = "amd64" ] || [ "$(arch)" = "i386" ]; then \ + cd $(builddirpa)/tools/power/x86/x86_energy_perf_policy && make CROSS_COMPILE=$(CROSS_COMPILE); \ + cd $(builddirpa)/tools/power/x86/turbostat && make CROSS_COMPILE=$(CROSS_COMPILE); \ + if [ "$(do_hyperv)" = "true" ]; then \ + cd $(builddirpa)/tools/hv && make CROSS_COMPILE=$(CROSS_COMPILE); \ + fi; \ + fi endif @touch $@ install-perarch: toolspkgdir = $(CURDIR)/debian/$(tools_pkg_name) install-perarch: $(stampdir)/stamp-build-perarch + @echo Debug: $@ # Add the tools. ifeq ($(do_tools),true) install -d $(toolspkgdir)/usr/bin - install -m755 $(builddir)/tools-$*/tools/perf/perf \ +ifeq ($(do_tools_perf),true) + install -s -m755 $(builddirpa)/tools/perf/perf \ $(toolspkgdir)/usr/bin/perf_$(abi_release) endif + if [ "$(arch)" = "amd64" ] || [ "$(arch)" = "i386" ]; then \ + install -s -m755 $(builddirpa)/tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy \ + $(toolspkgdir)/usr/bin/x86_energy_perf_policy_$(abi_release); \ + install -s -m755 $(builddirpa)/tools/power/x86/turbostat/turbostat \ + $(toolspkgdir)/usr/bin/turbostat_$(abi_release); \ + if [ "$(do_hyperv)" = "true" ]; then \ + install -d $(toolspkgdir)/usr/sbin; \ + install -s -m755 $(builddirpa)/tools/hv/hv_kvp_daemon \ + $(toolspkgdir)/usr/sbin/hv_kvp_daemon_$(abi_release); \ + fi; \ + fi +endif binary-perarch: toolspkg = $(tools_pkg_name) binary-perarch: install-perarch - @# Empty for make to be happy + @echo Debug: $@ ifeq ($(do_tools),true) dh_installchangelogs -p$(toolspkg) dh_installdocs -p$(toolspkg) dh_compress -p$(toolspkg) dh_fixperms -p$(toolspkg) - dh_strip -p$(toolspkg) dh_shlibdeps -p$(toolspkg) dh_installdeb -p$(toolspkg) - dh_gencontrol -p$(toolspkg) + $(lockme) dh_gencontrol -p$(toolspkg) dh_md5sums -p$(toolspkg) dh_builddeb -p$(toolspkg) endif -binary-debs: binary-perarch $(stampdir)/stamp-flavours $(addprefix binary-,$(flavours)) +binary-debs: signed = $(CURDIR)/debian/$(bin_pkg_name)-signed +binary-debs: signedv = $(CURDIR)/debian/$(bin_pkg_name)-signed/$(release)-$(revision) +binary-debs: signed_tar = $(src_pkg_name)_$(release)-$(revision)_$(arch).tar.gz +binary-debs: binary-perarch $(addprefix binary-,$(flavours)) + @echo Debug: $@ +ifeq ($(arch),amd64) +ifeq ($(uefi_signed),true) + echo $(release)-$(revision) > $(signedv)/version + cd $(signedv) && ls *.efi >flavours + cd $(signed) && tar czvf ../../../$(signed_tar) . + dpkg-distaddfile $(signed_tar) raw-uefi - +endif +endif -build-arch-deps-$(do_flavour_image_package) += $(addprefix build-,$(flavours)) +build-arch-deps-$(do_flavour_image_package) += $(addprefix $(stampdir)/stamp-build-,$(flavours)) build-arch: $(build-arch-deps-true) + @echo Debug: $@ -binary-arch-deps-$(do_flavour_image_package) = binary-debs ifeq ($(AUTOBUILD),) binary-arch-deps-$(do_flavour_image_package) += binary-udebs +else +binary-arch-deps-$(do_flavour_image_package) = binary-debs endif binary-arch-deps-$(do_libc_dev_package) += binary-arch-headers ifneq ($(do_common_headers_indep),true) binary-arch-deps-$(do_flavour_header_package) += binary-headers endif binary-arch: $(binary-arch-deps-true) + @echo Debug: $@ + diff --git a/debian/rules.d/3-binary-indep.mk b/debian/rules.d/3-binary-indep.mk index 4319aa831e1..ea6ce688573 100644 --- a/debian/rules.d/3-binary-indep.mk +++ b/debian/rules.d/3-binary-indep.mk @@ -1,11 +1,40 @@ build-indep: + @echo Debug: $@ + +# The binary-indep dependency chain is: +# +# install-headers <- install-doc <- install-source <- install-tools <- install-indep <- binary-indep +# install-headers <- binary-headers +# +indep_hdrpkg = $(indep_hdrs_pkg_name) +indep_hdrdir = $(CURDIR)/debian/$(indep_hdrpkg)/usr/src/$(indep_hdrpkg) +install-headers: + @echo Debug: $@ + dh_testdir + dh_testroot + dh_prep + +ifeq ($(do_flavour_header_package),true) + install -d $(indep_hdrdir) + find . -path './debian' -prune -o -path './$(DEBIAN)' -prune \ + -o -path './include/*' -prune \ + -o -path './scripts/*' -prune -o -type f \ + \( -name 'Makefile*' -o -name 'Kconfig*' -o -name 'Kbuild*' -o \ + -name '*.sh' -o -name '*.pl' -o -name '*.lds' \) \ + -print | cpio -pd --preserve-modification-time $(indep_hdrdir) + cp -a scripts include $(indep_hdrdir) + (find arch -name include -type d -print | \ + xargs -n1 -i: find : -type f) | \ + cpio -pd --preserve-modification-time $(indep_hdrdir) +endif docpkg = $(doc_pkg_name) docdir = $(CURDIR)/debian/$(docpkg)/usr/share/doc/$(docpkg) -install-doc: +install-doc: install-headers + @echo Debug: $@ +ifeq ($(do_doc_package),true) dh_testdir dh_testroot - dh_prep -p$(docpkg) install -d $(docdir) ifeq ($(do_doc_package_content),true) @@ -22,36 +51,14 @@ endif cp -a Documentation/* $(docdir) rm -rf $(docdir)/DocBook find $(docdir) -name .gitignore | xargs rm -f - -indep_hdrpkg = $(hdrs_pkg_name) -indep_hdrdir = $(CURDIR)/debian/$(indep_hdrpkg)/usr/src/$(indep_hdrpkg) -install-headers: - dh_testdir - dh_testroot - dh_prep -p$(indep_hdrpkg) - - install -d $(indep_hdrdir) - find . -path './debian' -prune -o -path './$(DEBIAN)' -prune \ - -o -path './include/*' -prune \ - -o -path './scripts/*' -prune -o -type f \ - \( -name 'Makefile*' -o -name 'Kconfig*' -o -name 'Kbuild*' -o \ - -name '*.sh' -o -name '*.pl' -o -name '*.lds' \) \ - -print | cpio -pd --preserve-modification-time $(indep_hdrdir) - cp -a drivers/media/dvb/dvb-core/*.h $(indep_hdrdir)/drivers/media/dvb/dvb-core - cp -a drivers/media/video/*.h $(indep_hdrdir)/drivers/media/video - cp -a drivers/media/dvb/frontends/*.h $(indep_hdrdir)/drivers/media/dvb/frontends - cp -a scripts include $(indep_hdrdir) - (find arch -name include -type d -print | \ - xargs -n1 -i: find : -type f) | \ - cpio -pd --preserve-modification-time $(indep_hdrdir) +endif srcpkg = $(src_pkg_name)-source-$(release) srcdir = $(CURDIR)/debian/$(srcpkg)/usr/src/$(srcpkg) balldir = $(CURDIR)/debian/$(srcpkg)/usr/src/$(srcpkg)/$(srcpkg) -install-source: - dh_testdir - dh_testroot - dh_prep -p$(srcpkg) +install-source: install-doc + @echo Debug: $@ +ifeq ($(do_source_package),true) install -d $(srcdir) ifeq ($(do_source_package_content),true) @@ -72,60 +79,76 @@ ifeq ($(do_source_package_content),true) cpio -pd --preserve-modification-time $(srcdir) ln -s $(srcpkg)/$(srcpkg).tar.bz2 $(srcdir)/.. endif +endif install-tools: toolspkg = $(tools_common_pkg_name) install-tools: toolsbin = $(CURDIR)/debian/$(toolspkg)/usr/bin +install-tools: toolssbin = $(CURDIR)/debian/$(toolspkg)/usr/sbin install-tools: toolsman = $(CURDIR)/debian/$(toolspkg)/usr/share/man -install-tools: - dh_testdir - dh_testroot - dh_prep -p$(toolspkg) +install-tools: install-source $(stampdir)/stamp-build-perarch + @echo Debug: $@ +ifeq ($(do_tools),true) install -d $(toolsbin) install -d $(toolsman)/man1 +ifeq ($(do_tools_perf),true) install -m755 debian/tools/perf $(toolsbin)/perf +endif + if [ "$(arch)" = "amd64" ] || [ "$(arch)" = "i386" ]; then \ + install -m755 debian/tools/x86_energy_perf_policy $(toolsbin)/x86_energy_perf_policy; \ + install -m755 debian/tools/turbostat $(toolsbin)/turbostat; \ + if [ "$(do_hyperv)" = "true" ]; then \ + install -d $(toolssbin) ; \ + install -m755 debian/tools/generic $(toolssbin)/hv_kvp_daemon; \ + fi; \ + fi + rm -rf $(builddir)/tools install -d $(builddir)/tools - for i in *; do ln -sf $(CURDIR)/$$i $(builddir)/tools/; done + for i in *; do ln -s $(CURDIR)/$$i $(builddir)/tools/; done rm $(builddir)/tools/tools rsync -a tools/ $(builddir)/tools/tools/ +ifeq ($(do_tools_perf),true) cd $(builddir)/tools/tools/perf && make man install -m644 $(builddir)/tools/tools/perf/Documentation/*.1 \ $(toolsman)/man1 - -ifeq ($(do_common_headers_indep),true) -install-indep-deps-$(do_flavour_header_package) += install-headers endif -install-indep-deps-$(do_doc_package) += install-doc -install-indep-deps-$(do_source_package) += install-source -install-indep-deps-$(do_tools) += install-tools -install-indep: $(install-indep-deps-true) + if [ "$(arch)" = "amd64" ] || [ "$(arch)" = "i386" ]; then \ + install -d $(toolsman)/man8; \ + install -m644 $(CURDIR)/tools/power/x86/x86_energy_perf_policy/*.8 $(toolsman)/man8; \ + install -m644 $(CURDIR)/tools/power/x86/turbostat/*.8 $(toolsman)/man8; \ + if [ "$(do_hyperv)" = "true" ]; then \ + install -m644 $(CURDIR)/tools/hv/*.8 $(toolsman)/man8; \ + fi; \ + fi +endif + +install-indep: install-tools + @echo Debug: $@ # This is just to make it easy to call manually. Normally done in # binary-indep target during builds. binary-headers: install-headers - dh_testdir - dh_testroot + @echo Debug: $@ dh_installchangelogs -p$(indep_hdrpkg) dh_installdocs -p$(indep_hdrpkg) dh_compress -p$(indep_hdrpkg) dh_fixperms -p$(indep_hdrpkg) dh_installdeb -p$(indep_hdrpkg) - dh_gencontrol -p$(indep_hdrpkg) + $(lockme) dh_gencontrol -p$(indep_hdrpkg) dh_md5sums -p$(indep_hdrpkg) dh_builddeb -p$(indep_hdrpkg) binary-indep: install-indep - dh_testdir - dh_testroot + @echo Debug: $@ dh_installchangelogs -i dh_installdocs -i dh_compress -i dh_fixperms -i dh_installdeb -i - dh_gencontrol -i + $(lockme) dh_gencontrol -i dh_md5sums -i dh_builddeb -i diff --git a/debian/rules.d/4-checks.mk b/debian/rules.d/4-checks.mk index d48c05d6260..a3c8ed98330 100644 --- a/debian/rules.d/4-checks.mk +++ b/debian/rules.d/4-checks.mk @@ -1,34 +1,27 @@ # Check ABI for package against last release (if not same abinum) -abi-%: $(abidir)/% - @# Empty for make to be happy -$(abidir)/%: $(stampdir)/stamp-build-% +abi-check-%: $(stampdir)/stamp-build-% + @echo Debug: $@ install -d $(abidir) sed -e 's/^\(.\+\)[[:space:]]\+\(.\+\)[[:space:]]\(.\+\)$$/\3 \2 \1/' \ - $(builddir)/build-$*/Module.symvers | sort > $@ - -abi-check-%: $(abidir)/% + $(builddir)/build-$*/Module.symvers | sort > $(abidir)/$* @perl -f $(DROOT)/scripts/abi-check "$*" "$(prev_abinum)" "$(abinum)" \ "$(prev_abidir)" "$(abidir)" "$(skipabi)" # Check the module list against the last release (always) -module-%: $(abidir)/%.modules - @# Empty for make to be happy -$(abidir)/%.modules: $(stampdir)/stamp-build-% +module-check-%: $(stampdir)/stamp-build-% + @echo Debug: $@ install -d $(abidir) find $(builddir)/build-$*/ -name \*.ko | \ - sed -e 's/.*\/\([^\/]*\)\.ko/\1/' | sort > $@ - -module-check-%: $(abidir)/%.modules + sed -e 's/.*\/\([^\/]*\)\.ko/\1/' | sort > $(abidir)/$*.modules @perl -f $(DROOT)/scripts/module-check "$*" \ "$(prev_abidir)" "$(abidir)" $(skipmodule) -checks-%: abi-check-% module-check-% - @# Will be calling more stuff later +checks-%: module-check-% abi-check-% + @echo Debug: $@ # Check the config against the known options list. config-prepare-check-%: $(stampdir)/stamp-prepare-tree-% + @echo Debug: $@ @perl -f $(DROOT)/scripts/config-check \ $(builddir)/build-$*/.config "$(arch)" "$*" "$(sharedconfdir)" "$(skipconfig)" -prepare-checks-%: config-prepare-check-% - @# Will be calling more stuff later diff --git a/debian/rules.d/5-udebs.mk b/debian/rules.d/5-udebs.mk index 1df51c1ab2e..87d646c06ba 100644 --- a/debian/rules.d/5-udebs.mk +++ b/debian/rules.d/5-udebs.mk @@ -1,11 +1,13 @@ # Do udebs if not disabled in the arch-specific makefile -binary-udebs: binary-debs debian/control +binary-udebs: binary-debs + @echo Debug: $@ ifeq ($(disable_d_i),) @$(MAKE) --no-print-directory -f $(DROOT)/rules DEBIAN=$(DEBIAN) \ do-binary-udebs endif -do-binary-udebs: +do-binary-udebs: debian/control + @echo Debug: $@ dh_testdir dh_testroot @@ -16,6 +18,10 @@ do-binary-udebs: for i in $$imagelist; do \ dpkg -x $$(ls ../linux-image-$$i\_$(release)-$(revision)_${arch}.deb) \ debian/d-i-${arch}; \ + if [ -f ../linux-image-extra-$$i\_$(release)-$(revision)_${arch}.deb ] ; then \ + dpkg -x ../linux-image-extra-$$i\_$(release)-$(revision)_${arch}.deb \ + debian/d-i-${arch}; \ + fi; \ /sbin/depmod -b debian/d-i-${arch} $$i; \ done @@ -26,13 +32,13 @@ do-binary-udebs: export SOURCEDIR=$(CURDIR)/debian/d-i-${arch} && \ cd $(builddir) && \ kernel-wedge install-files && \ - kernel-wedge check || true + kernel-wedge check # Build just the udebs dilist=$$(dh_listpackages -s | grep "\-di$$") && \ [ -z "$dilist" ] || \ for i in $$dilist; do \ dh_fixperms -p$$i; \ - dh_gencontrol -p$$i; \ + $(lockme) dh_gencontrol -p$$i; \ dh_builddeb -p$$i; \ done diff --git a/debian/scripts/config-check b/debian/scripts/config-check index d3e1d8b47e6..9e497c10d99 100755 --- a/debian/scripts/config-check +++ b/debian/scripts/config-check @@ -32,7 +32,7 @@ sub pred_first { my $off; my $char; my $pred; - + for ($off = 0; $off <= length($rest); $off++) { $char = substr($rest, $off, 1); if ($char eq '(') { @@ -59,19 +59,26 @@ sub pred_first { #print "pred<$pred> rest<$rest> char<$char>\n"; ($pred, $rest, $char); } - + sub pred_do { my ($pred) = @_; my (@a) = split(' ', $pred); + my $possible; if ($a[0] eq 'arch') { - die "$P: $pred: malformed -- $pred \n" if ($#a != 1); - #print " *** ARCH<$arch ?? $a[1]>\n"; - return ($arch eq $a[1]) + die "$P: $pred: malformed -- $pred \n" if ($#a < 1); + for $possible (@a[1..$#a]) { + #print " *** ARCH<$flavour ?? $possible>\n"; + return 1 if ($arch eq $possible); + } + return 0; } elsif ($a[0] eq 'flavour') { - die "$P: $pred: malformed -- $pred \n" if ($#a != 1); - #print " *** FLAVOUR<$flavour ?? $a[1]>\n"; - return ($flavour eq $a[1]) + die "$P: $pred: malformed -- $pred \n" if ($#a < 1); + for $possible (@a[1..$#a]) { + #print " *** FLAVOUR<$flavour ?? $possible>\n"; + return 1 if ($flavour eq $possible); + } + return 0; } elsif ($a[0] eq 'value') { die "$P: $pred: malformed -- $pred \n" if ($#a != 2); #print " *** CHECK<$a[1] $a[2] ?? " . $values{$a[1]} . ">\n"; @@ -87,6 +94,7 @@ sub pred_do { sub pred_exec { my ($rest) = @_; my $pred; + my $cut = 0; my $res; my $sep; @@ -97,12 +105,19 @@ sub pred_exec { # Leading ! implies inversion. if ($pred =~ /^\s*!\s*(.*)$/) { #print " invert<$1>\n"; - $res = !pred_exec($1); + ($cut, $res) = pred_exec($1); + $res = !$res; + + # Leading / implies a CUT operation. + } elsif ($pred =~ /^\s*\/\s*(.*)$/) { + #print " cut<$1>\n"; + ($cut, $res) = pred_exec($1); + $cut = 1; # Recurse left for complex expressions. } elsif ($pred =~ /^\s*\((.*)\)\s*$/) { #print " left<$1>\n"; - $res = pred_exec($1); + ($cut, $res) = pred_exec($1); # Check for common syntax issues. } elsif ($pred eq '') { @@ -111,7 +126,7 @@ sub pred_exec { } else { die "$P: $pred$rest: syntax error\n"; } - + # A predicate, execute it. } else { #print " DO<$pred> sep<$sep>\n"; @@ -121,23 +136,23 @@ sub pred_exec { #print " pre-return res<$res> sep<$sep>\n"; if ($sep eq '') { # - + # Recurse right for binary operators -- note these are lazy. } elsif ($sep eq '&' || $sep eq '|') { #print " right<$rest> ? sep<$sep> res<$res>\n"; if ($rest =~ /^\s*($|\||\&)/) { die "$P: $pred$rest: malformed binary operator\n"; } - if (($res && $sep eq '&') || (!$res && $sep eq '|')) { + if ($cut == 0 && (($res && $sep eq '&') || (!$res && $sep eq '|'))) { #print " right<$rest>\n"; - $res = pred_exec($rest); + ($cut, $res) = pred_exec($rest); } } else { die "$P: $pred$rest: malformed predicate\n"; } - #print " return res<$res> sep<$sep>\n"; - return $res; + #warn " return cut<$cut> res<$res> sep<$sep>\n"; + return ($cut, $res); } # @@ -147,7 +162,7 @@ my $test_total = 1; my $test_good = 0; sub pred_test { my ($pred, $eres, $eerr) = @_; - my ($res, $err, $fail); + my ($cut, $res, $err, $fail); $test_total++; if ($test != 0 && $test != $test_total - 1) { @@ -155,7 +170,7 @@ sub pred_test { } eval { - $res = pred_exec($pred); + ($cut, $res) = pred_exec($pred); }; $err = $@; chomp($err); @@ -174,7 +189,7 @@ sub pred_test { } elsif (!defined $eerr && $err ne '') { $fail = "error missmatch, expected success returned '$err'"; } - + if ($fail eq '') { $test_good++; } else { @@ -199,13 +214,18 @@ if ($test >= 0) { pred_test('nosuchcommand', undef, $eunkn); pred_test('arch', undef, $epred); - pred_test('arch MYARCH MYARCH', undef, $epred); pred_test('arch MYARCH', 1, undef); + pred_test('arch MYARCH NOTMYARCH', 1, undef); + pred_test('arch NOTMYARCH MYARCH', 1, undef); + pred_test('arch NOTMYARCH NOTMYARCH MYARCH', 1, undef); + pred_test('arch NOTMYARCH MYARCH NOTMYARCH', 1, undef); pred_test('arch NOTMYARCH', 0, undef); pred_test('flavour', undef, $epred); - pred_test('flavour MYFLAVOUR myflavour', undef, $epred); pred_test('flavour MYFLAVOUR', 1, undef); + pred_test('flavour NOTMYFLAVOUR MYFLAVOUR', 1, undef); + pred_test('flavour NOTMYFLAVOUR NOTMYFLAVOUR MYFLAVOUR', 1, undef); + pred_test('flavour NOTMYFLAVOUR MYFLAVOUR NOTMYFLAVOUR', 1, undef); pred_test('flavour NOTMYFLAVOUR', 0, undef); pred_test('value', undef, $epred); @@ -222,7 +242,7 @@ if ($test >= 0) { pred_test('exists DISABLED', 1, undef); pred_test('exists MISSING', 0, undef); - print "TEST: $test_total: inversion tests ...\n"; + print "TEST: $test_total: inversion tests ...\n"; pred_test('!exists ENABLED', 0, undef); pred_test('!exists MISSING', 1, undef); pred_test('!!exists ENABLED', 1, undef); @@ -230,7 +250,7 @@ if ($test >= 0) { pred_test('!!!exists ENABLED', 0, undef); pred_test('!!!exists MISSING', 1, undef); - print "TEST: $test_total: parentheses tests ...\n"; + print "TEST: $test_total: parentheses tests ...\n"; pred_test('(exists ENABLED)', 1, undef); pred_test('((exists ENABLED))', 1, undef); pred_test('(((exists ENABLED)))', 1, undef); @@ -333,6 +353,10 @@ if ($test >= 0) { pred_test('exists ENABLED & exists ENABLED | exists MISSING', 1, undef); pred_test('exists ENABLED & exists ENABLED | exists ENABLED', 1, undef); + print "TEST: $test_total: cut tests ...\n"; + pred_test('(arch MYARCH & exists MISSING) | exists ENABLED', 1, undef); + pred_test('(arch MYARCH &/ exists MISSING) | exists ENABLED', 0, undef); + $test_total--; print "TEST: $test_good/$test_total succeeded\n"; @@ -373,7 +397,7 @@ while () { #print "CHECK: <$line>\n"; $total++; - my $result = pred_exec($line); + my (undef, $result) = pred_exec($line); if (!$result) { print "$P: FAIL: $line\n"; $exit_val = $fail_exit; diff --git a/debian/scripts/misc/find-obsolete-firmware b/debian/scripts/misc/find-obsolete-firmware new file mode 100755 index 00000000000..97a1f3074d2 --- /dev/null +++ b/debian/scripts/misc/find-obsolete-firmware @@ -0,0 +1,91 @@ +#!/bin/bash +# +# Find all duplicate or obsolete firmware that is being carried +# in the kernel firmware directory. Compare these files against +# the linux-firmware package for the approriate release. For example, +# assuming this is raring, then compare the kernel firmware files +# against the raring branch of linux-firmware. +# +# Example: $0 ~/ubuntu/linux-firmware-raring + +USEAGE="$0 LINUX-FIRMWARE" + +. debian/debian.env + +NFWINFO="`find $DEBIAN -name fwinfo|wc -l`" +if [ ! "$NFWINFO" = "1" ] +then + echo Your repo is hosed. There can only be one fwinfo file. + find $DEBIAN -name fwinfo + exit 1 +fi + +FWINFO="`pwd`/`find $DEBIAN -name fwinfo`" + +if [ "$1" = "" ] +then + echo $USEAGE + exit 1 +fi +FW="$1" + +if [ ! -f $FW/WHENCE ] +then + echo Bogus linux-firmware directory + exit 1 +fi +if ! egrep -q "^firmware:" $FWINFO +then + echo Bogus firmware info file + exit 1 +fi + +# +# Prepare the tree and make firmware. +# +TEE="tee -a" +LO=`pwd`/firmware.txt +LF=`pwd`/lib/firmware +rm -rf debian/build $LF $LO +fakeroot debian/rules clean prepare-generic +cp debian/build/build-generic/.config . +mkdir -p $LF +make firmware_install INSTALL_MOD_PATH=`pwd` + +(cd $LF +find . -type f | while read f +do + BN="`basename $f`" + + if ! grep -q $BN $FWINFO + then + echo "Unused firmware: $f" | $TEE $LO + else + if [ -f $FW/$f ] + then + if ! cmp $FW/$f $f + then + echo "$f differs" | $TEE $LO + else + echo "$f is duplicated" | $TEE $LO + fi + else + echo "$f does not exist in $FW" | $TEE $LO + fi + fi +done) + +# +# Check for firmware files referenced by the kernel +# that do not exist in either location. +# +cat $FWINFO | while read fwi f +do + if [ -s lib/firmware/$f ] || [ -s $FW/$f ] + then + continue + else + echo "Missing firmware $f" | $TEE $LO + fi +done + diff --git a/debian/scripts/misc/fw-to-ihex.sh b/debian/scripts/misc/fw-to-ihex.sh new file mode 100755 index 00000000000..a63fe67b4f5 --- /dev/null +++ b/debian/scripts/misc/fw-to-ihex.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +F=$1 +if [ "$F" = "" ] +then + echo You must supply a firmware file. + exit 1 +fi + +echo "unsigned char d[] = {" > $F.c +hexdump -v -e '"\t" 8/1 "0x%02x, " "\n"' $F >> $F.c +echo "};" >> $F.c +sed -i 's/0x .*$//' $F.c + +O="`dirname $F`/`basename $F`.o" +gcc -o $O -c $F.c +objcopy -Oihex $F.o $F.ihex + diff --git a/debian/scripts/misc/get-firmware b/debian/scripts/misc/get-firmware new file mode 100755 index 00000000000..b1ed8e68985 --- /dev/null +++ b/debian/scripts/misc/get-firmware @@ -0,0 +1,62 @@ +#!/bin/bash +# +# Find all files in linux-firmware that are new or different since the previous release +# and copy them into the kernel firmware directory. You should only do this on the +# backport branch since it would be redundant on the released kernel. It assumed you've +# unpacked linux-firmware from each release into separate directories. +# +# Example: $0 ~/ubuntu/linux-firmware-precise ~/ubuntu/linux-firmware-quantal + +if [ "$1" = "" ] || [ "$2" = "" ] || [ ! -f $1/WHENCE ] || [ ! -f $2/WHENCE ] +then + echo You must supply 2 firmware directories. + exit 1 +fi + +if [ ! -f debian/debian.env ] +then + echo You must run this script from the root of the repo + exit 1 +fi +. debian/debian.env + +NFWINFO="`find $DEBIAN -name fwinfo|wc -l`" +if [ ! "$NFWINFO" = "1" ] +then + echo Your repo is hosed. There can only be one fwinfo file. + find $DEBIAN -name fwinfo + exit 1 +fi + +FWINFO="`pwd`/`find $DEBIAN -name fwinfo`" + +CDIR=`pwd` +OFW=$1 +NFW=$2 + +cd $NFW +# +# Find all files in $NFW that are new or different from $1 +# +(find . -type f | egrep -v "debian|git|LICEN|WHEN|READ|Make|configure" | sed 's;\./;;' | \ +while read f +do + if grep -q $f $FWINFO + then + if [ ! -f $OFW/$f ] + then + echo $f + elif ! cmp $f $OFW/$f > /dev/null + then + echo $f + fi + fi +done) |\ +while read f +do + mkdir -p $CDIR/firmware/`dirname $f` + if [ ! -f $CDIR/firmware/`dirname $f`/`basename $f`.ihex ] + then + cp -v $f $CDIR/firmware/`dirname $f` + fi +done diff --git a/debian/scripts/misc/getabis b/debian/scripts/misc/getabis index 44602a963b0..c48199de512 100755 --- a/debian/scripts/misc/getabis +++ b/debian/scripts/misc/getabis @@ -1,12 +1,14 @@ #!/bin/bash -. debian/debian.env - if [ "$#" != "2" ]; then echo "Usage: $0 " 1>&2 exit 1 fi +if [ "$DEBIAN" = "" ]; then + . debian/debian.env +fi + ver=$1 revision=$2 abi=$(echo $revision | awk -F. '{print $1}') @@ -14,16 +16,19 @@ abi=$(echo $revision | awk -F. '{print $1}') verabi=$ver-$abi verfull=$ver-$revision -src_pkg_name=$(dpkg-parsechangelog -l${DEBIAN}/changelog|grep Source|sed 's/^.*Source: //') - -WGET="wget --quiet -c" +WGET="wget --tries=1 --timeout=10 --quiet -c" abidir="`pwd`/$DEBIAN/abi/$verfull" tmpdir="`pwd`/abi-tmp-$verfull" origdir="`pwd`" +fwinfo=$abidir/fwinfo test -d $tmpdir || mkdir $tmpdir +package_prefixes() { + __package_prefixes="$@" +} + getall() { arch=$1 shift @@ -35,19 +40,34 @@ getall() { echo "Exists: $sub" continue fi - echo -n "Fetching $sub..." - filename=linux-image-${verabi}-${sub}_${verfull}_${arch}.deb + echo -n "Fetching $sub($arch)..." + prefixes="" + filenames="" cd $tmpdir - for r in "${repo_list[@]}" + for prefix in $__package_prefixes do - url="`echo $r | sed 's/linux$/'${src_pkg_name}'/'`" - if ! [ -f $filename ]; then - $WGET $url/$filename - fi + filename=${prefix}-${verabi}-${sub}_${verfull}_${arch}.deb + for r in "${repo_list[@]}" + do + if ! [ -f $filename ]; then + $WGET $r/$filename + fi + if [ -f $filename ]; then + prefixes="$prefixes $prefix" + filenames="$filenames $filename" + break + fi + done done - if [ "$?" = "0" ]; then - echo -n "extracting..." - dpkg-deb --extract $filename tmp + if [ "$filenames" != "" ]; then + echo -n "extracting$prefixes..." + for filename in $filenames + do + dpkg-deb --extract $filename tmp + done + find tmp -name "*.ko" | while read f; do + modinfo $f | grep ^firmware >> $fwinfo + done if [ -f tmp/boot/abi-* ]; then mv tmp/boot/abi-* $abidir/$arch/$sub else @@ -56,7 +76,24 @@ getall() { (cd tmp; find lib/modules/$verabi-$sub/kernel -name '*.ko') | \ sed -e 's/.*\/\([^\/]*\)\.ko/\1/' | sort > \ $abidir/$arch/$sub.modules - rm -rf tmp $filename + ( + cd tmp; + # Prevent exposing some errors when called by python scripts. SIGPIPE seems to get + # exposed when using the `find ...` form of the command. + ko=$(find lib/modules/$verabi-$sub/kernel \ + -name '*.ko' | head -1) + readelf -p .comment "$ko" | awk ' + ($1 == "[") { + printf("%s", $3); + for (n=4; n<=NF; n++) { + printf(" %s", $n); + } + print "" + }' | sort -u >$abidir/$arch/$sub.compiler + version=`cat $abidir/$arch/$sub.compiler` + echo -n "$version..." + ) + rm -rf tmp $filenames echo "done." else echo "FAILED." @@ -74,6 +111,16 @@ echo $abi > $abidir/abiname # NOTE: The flavours are hardcoded, because they may have changed from the # current build. +__package_prefixes="linux-image" + . $DEBIAN/etc/getabis +compilers=`cat $abidir/*/*.compiler | sort -u | wc -l` +if [ "$compilers" != 1 ]; then + echo "WARNING: inconsistant compiler versions detected" 1>&2 +fi + +sort < $fwinfo | uniq > fwinfo.tmp +mv fwinfo.tmp $fwinfo + rmdir $tmpdir diff --git a/debian/scripts/misc/git-ubuntu-log b/debian/scripts/misc/git-ubuntu-log index 1a244cf0ba4..2967d875bd6 100755 --- a/debian/scripts/misc/git-ubuntu-log +++ b/debian/scripts/misc/git-ubuntu-log @@ -215,7 +215,7 @@ sub changelog_input { $pstate++; } } - + else { die "invalid parse state $pstate"; } @@ -223,7 +223,7 @@ sub changelog_input { foreach $entry (@reverts) { add_entry($entry); - } + } } &changelog_input; diff --git a/debian/scripts/misc/insert-mainline-changes b/debian/scripts/misc/insert-mainline-changes new file mode 100755 index 00000000000..5678b1031e5 --- /dev/null +++ b/debian/scripts/misc/insert-mainline-changes @@ -0,0 +1,42 @@ +#!/usr/bin/perl + +if ($#ARGV != 2) { + warn "Usage: $0 \n"; + die " $0 debian.master/changelog v3.2.3 v3.2.2..v3.2.3\n"; +} +my ($changelog, $to, $range) = @ARGV; + +my @changes = (); + +push(@changes, "\n"); +push(@changes, " [ Upstream Kernel Changes ]\n\n"); +push(@changes, " * rebase to $to\n"); + +open(LOG, "git log '$range'|") || die "$0: git log failed: - $!\n"; +while () { + if (m@BugLink: .*launchpad.net/.*/([0-9]+)\s$@) { + push(@changes, " - LP: #$1\n"); + } +} +close(LOG); + +open(CHANGELOG, "< $changelog") or die "Cannot open changelog"; +open(NEW, "> $changelog.new") or die "Cannot open new changelog"; + +$printed = 3; +while () { + if (/^ CHANGELOG: /) { + $printed--; + print NEW; + if ($printed == 0) { + print NEW @changes; + } + next; + } + print NEW; +} + +close(NEW); +close(CHANGELOG); + +rename("$changelog.new", "$changelog"); diff --git a/debian/scripts/misc/insert-ubuntu-changes b/debian/scripts/misc/insert-ubuntu-changes index e3e13dced18..9ede7f3950d 100755 --- a/debian/scripts/misc/insert-ubuntu-changes +++ b/debian/scripts/misc/insert-ubuntu-changes @@ -10,7 +10,7 @@ $start =~ s/.*\.//; my @changes = (); my $output = 0; -open(CHG, ") { diff --git a/debian/scripts/misc/kernelconfig b/debian/scripts/misc/kernelconfig index 074b4a5793e..310d1f8951f 100755 --- a/debian/scripts/misc/kernelconfig +++ b/debian/scripts/misc/kernelconfig @@ -12,17 +12,19 @@ if [ ! -f MAINTAINERS ] || [ ! -f Makefile ]; then fi mode=${1:?"Usage: $0 [oldconfig|editconfig]"} +yes=0 case "$mode" in - oldconfig) ;; # All is good - defaultconfig) ;; # All is good - editconfig) ;; # All is good - genconfig) ;; # All is good + update*configs) mode='silentoldconfig' ;; + default*configs) mode='oldconfig'; yes=1 ;; + edit*configs) ;; # All is good + gen*configs) mode='genconfigs' ;; # All is good + dump*configs) mode='config'; yes=1 ;; *) echo "$0 called with invalid mode" 1>&2 exit 1 ;; esac kerneldir="`pwd`" confdir="$kerneldir/${DEBIAN}/config" -sharedconfdir="$kerneldir/debian.manta/config" +sharedconfdir="$kerneldir/debian.master/config" variant="$2" . $DEBIAN/etc/kernelconfig @@ -32,7 +34,7 @@ common_conf="$confdir/config.common.$family" tmpdir=`mktemp -d` mkdir "$tmpdir/CONFIGS" -if [ "$mode" = "genconfig" ]; then +if [ "$mode" = "genconfigs" ]; then keep=1 mode="oldconfig" test -d CONFIGS || mkdir CONFIGS @@ -44,12 +46,12 @@ for arch in $archs; do # Map debian archs to kernel archs case "$arch" in - amd64) kernarch="x86_64" ;; - lpia) kernarch="x86" ;; - sparc) kernarch="sparc64" ;; - armel) kernarch="arm" ;; - armhf) kernarch="arm" ;; - *) kernarch="$arch" ;; + ppc64) kernarch="powerpc" ;; + amd64) kernarch="x86_64" ;; + lpia) kernarch="x86" ;; + sparc) kernarch="sparc64" ;; + armel|armhf) kernarch="arm" ;; + *) kernarch="$arch" ;; esac archconfdir=$confdir/$arch @@ -84,20 +86,12 @@ for arch in $archs; do cat "$fullconf" > build/.config # Call oldconfig or menuconfig case "$mode" in - oldconfig) - # Weed out incorrect config parameters - echo "* Run silentoldconfig on $arch/$config ..." - make O=`pwd`/build ARCH=$kernarch silentoldconfig ;; - defaultconfig) - # Weed out incorrect config parameters - echo "* Run oldconfig on $arch/$config ..." - make O=`pwd`/build ARCH=$kernarch oldconfig ;; - editconfig) + editconfigs) # Interactively edit config parameters while : ; do echo -n "Do you want to edit config: $arch/$config? [Y/n] " read choice - + case "$choice" in y* | Y* | "" ) make O=`pwd`/build ARCH=$kernarch menuconfig @@ -109,8 +103,13 @@ for arch in $archs; do esac done ;; - *) # Bad! - exit 1 ;; + *) + echo "* Run $mode (yes=$yes) on $arch/$config ..." + if [ "$yes" -eq 1 ]; then + yes "" | make O=`pwd`/build ARCH=$kernarch "$mode" + else + make O=`pwd`/build ARCH=$kernarch "$mode" + fi ;; esac cat build/.config > $archconfdir/$config cat build/.config > "$tmpdir/CONFIGS/$arch-$config" @@ -128,7 +127,7 @@ for arch in $archs; do # Can we make this more robust by avoiding $tmpdir completely? # This approach was used for now because I didn't want to change # splitconfig.pl - (cd $archconfdir; $bindir/splitconfig.pl; mv config.common \ + (cd $archconfdir; $bindir/splitconfig.pl config.flavour.*; mv config.common \ config.common.$arch; cp config.common.$arch $tmpdir) done @@ -136,7 +135,7 @@ rm -f $common_conf # Now run splitconfig.pl on all the config.common. copied to # $tmpdir -(cd $tmpdir; $bindir/splitconfig.pl) +(cd $tmpdir; $bindir/splitconfig.pl *) ( cd $confdir; rm -f *-full @@ -155,9 +154,10 @@ for arch in $archs; do archconfdir=$confdir/$arch flavourconfigs=$(cd $archconfdir && ls config.flavour.*) for config in $flavourconfigs; do + flavour="${config##*.}" if [ -f $archconfdir/$config ]; then fullconf="$tmpdir/CONFIGS/$arch-$config" - "$bindir/../config-check" "$fullconf" "$arch" "$config" "$sharedconfdir" "0" || let "fail=$fail+1" + "$bindir/../config-check" "$fullconf" "$arch" "$flavour" "$sharedconfdir" "0" || let "fail=$fail+1" fi done done @@ -169,3 +169,4 @@ if [ "$fail" != 0 ]; then fi rm -rf build + diff --git a/debian/scripts/misc/splitconfig.pl b/debian/scripts/misc/splitconfig.pl index 3dca468fca6..3270edeb4e0 100755 --- a/debian/scripts/misc/splitconfig.pl +++ b/debian/scripts/misc/splitconfig.pl @@ -5,9 +5,7 @@ print "Reading config's ...\n"; -opendir(DIR, "."); - -while (defined($config = readdir(DIR))) { +for $config (@ARGV) { # Only config.* next if $config !~ /^config\..*/; # Nothing that is disabled, or remnant @@ -33,8 +31,6 @@ while (defined($config = readdir(DIR))) { print "done.\n"; } -closedir(DIR); - print "\n"; print "Merging lists ... \n"; diff --git a/debian/scripts/module-inclusion b/debian/scripts/module-inclusion index 310b1a7adde..deb07a8133a 100755 --- a/debian/scripts/module-inclusion +++ b/debian/scripts/module-inclusion @@ -5,17 +5,33 @@ # The includsion list format must be a bash regular expression. # # usage: $0 ROOT INCLUSION_LIST -# example: $0 debian/build/build-virtual debian.linaro/control.d/virtual.inclusion-list -ROOT=$1 -ILIST=$2 +# example: $0 debian/build/build-virtual \ +# debian/build/build-virtual-ALL debian/build/build-virtual \ +# debian.master/control.d/virtual.inclusion-list +master=0 +if [ "$1" = "--master" ]; then + master=1 + shift +fi -NROOT=${ROOT}.new +ROOT=$1 +NROOT=$2 +ILIST=$3 # # Prep a destination directory. # mkdir -p ${NROOT} -rsync -a --exclude="*.ko" ${ROOT}/ ${NROOT} + +# Copy over the framework... +if [ "$master" -eq 1 ]; then + (cd ${ROOT}; find . ! -name "*.ko" -type f) | \ + while read f + do + mkdir -p ${NROOT}/`dirname $f` + mv ${ROOT}/$f ${NROOT}/$f + done +fi cat ${ILIST} |while read i do @@ -27,13 +43,13 @@ do (cd ${ROOT}; eval find "${i}" -name "*.ko") |while read f do mkdir -p ${NROOT}/`dirname $f` - cp ${ROOT}/$f ${NROOT}/$f + mv ${ROOT}/$f ${NROOT}/$f done else if [ -f "${ROOT}/$i" ] then mkdir -p ${NROOT}/`dirname $i` - cp ${ROOT}/$i ${NROOT}/$i + mv ${ROOT}/$i ${NROOT}/$i else echo Warning: Could not find ${ROOT}/$i fi @@ -41,10 +57,4 @@ do done -# -# Cleanup -# -rm -rf ${ROOT} -mv ${NROOT} ${ROOT} - exit 0 diff --git a/debian/scripts/sub-flavour b/debian/scripts/sub-flavour index c0093a6809e..01004939617 100644 --- a/debian/scripts/sub-flavour +++ b/debian/scripts/sub-flavour @@ -11,7 +11,9 @@ from_moddir="debian/$from_pkg/lib/modules/$ABI_RELEASE-$FROM" to_moddir="debian/$to_pkg/lib/modules/$ABI_RELEASE-$FROM" install -d "debian/$to_pkg/boot" -install -m644 debian/$from_pkg/boot/{vmlinuz,System.map,config}-$ABI_RELEASE-$FROM \ +install -m644 debian/$from_pkg/boot/config-$ABI_RELEASE-$FROM \ + debian/$to_pkg/boot/ +install -m600 debian/$from_pkg/boot/{vmlinuz,System.map}-$ABI_RELEASE-$FROM \ debian/$to_pkg/boot/ # diff --git a/debian/source/format b/debian/source/format index 89ae9db8f88..d3827e75a5c 100644 --- a/debian/source/format +++ b/debian/source/format @@ -1 +1 @@ -3.0 (native) +1.0 diff --git a/debian/tests-build/README b/debian/tests-build/README new file mode 100644 index 00000000000..c74d1c4aef8 --- /dev/null +++ b/debian/tests-build/README @@ -0,0 +1,21 @@ +Scripts placed in this directory get called one at a time by run-parts(8). +The scripts are expected to perform some sort of sanity checks on the +finished build. Scripts will be called once for each flavour. + +Some environment variables are exported to make life a little easier: + +DPKG_ARCH : The dpkg architecture (e.g. "amd64") +KERN_ARCH : The kernel architecture (e.g. "x86_64") +FLAVOUR : The specific flavour for this run (e.g. "generic") +VERSION : The full version of this build (e.g. 2.6.22-1) +REVISION : The exact revision of this build (e.g. 1.3) +PREV_REVISION : The revision prior to this one +ABI_NUM : The specific ABI number for this build (e.g. 2) +PREV_ABI_NUM : The previous ABI number. Can be the same as ABI_NUM. +BUILD_DIR : The directory where this build took place +INSTALL_DIR : The directory where the package is prepared +SOURCE_DIR : Where the main kernel source is + +Scripts are expected to have a zero exit status when no problems occur, +and non-zero when an error occurs that should stop the build. Scripts +should print whatever info they deem needed to deduce the problem. diff --git a/debian/tests-build/check-aliases b/debian/tests-build/check-aliases new file mode 100755 index 00000000000..b85118ff12c --- /dev/null +++ b/debian/tests-build/check-aliases @@ -0,0 +1,24 @@ +#!/usr/bin/perl -w + +my %map; + +print "Checking for dupe aliases in $ENV{'FLAVOUR'}...\n"; + +$aliases = + "$ENV{'INSTALL_DIR'}/lib/modules/$ENV{'VERSION'}-$ENV{'FLAVOUR'}/modules.alias"; + +open(ALIASES, "< $aliases") or die "Could not open $aliases"; + +while () { + chomp; + my ($junk, $alias, $module) = split; + + if (defined($map{$alias})) { + printf("%s %20s / %-20s : %s \n", ("$map{$alias}" eq "$module") + ? "INT" : " ", $map{$alias}, $module, $alias); + } else { + $map{$alias} = $module; + } +} + +exit(0); diff --git a/debian/tests/control b/debian/tests/control new file mode 100644 index 00000000000..bdc92026a93 --- /dev/null +++ b/debian/tests/control @@ -0,0 +1,3 @@ +Tests: rebuild +Depends: +Restrictions: build-needed diff --git a/debian/tests/rebuild b/debian/tests/rebuild new file mode 100755 index 00000000000..b23e55619b2 --- /dev/null +++ b/debian/tests/rebuild @@ -0,0 +1 @@ +#!/bin/true diff --git a/debian/tools/generic b/debian/tools/generic new file mode 100644 index 00000000000..61b427d3334 --- /dev/null +++ b/debian/tools/generic @@ -0,0 +1,16 @@ +#!/bin/bash +full_version=`uname -r` + +# Removing flavour from version i.e. generic or server. +flavour_abi=${full_version#*-} +flavour=${flavour_abi#*-} +version=${full_version%-$flavour} +this="$0_$version" + +if [ ! -f "$this" ]; then + echo "$this not found" >&2 + echo "You may need to install linux-tools-$version" >&2 + exit 2 +fi + +exec "$this" "$@" diff --git a/debian/tools/turbostat b/debian/tools/turbostat new file mode 100644 index 00000000000..ac4af7c9acc --- /dev/null +++ b/debian/tools/turbostat @@ -0,0 +1,16 @@ +#!/bin/bash +full_version=`uname -r` + +# Removing flavour from version i.e. generic or server. +flavour_abi=${full_version#*-} +flavour=${flavour_abi#*-} +version=${full_version%-$flavour} +turbostat="turbostat_$version" + +if ! which "$turbostat" > /dev/null; then + echo "$turbostat not found" >&2 + echo "You may need to install linux-tools-$version" >&2 + exit 2 +fi + +exec "$turbostat" "$@" diff --git a/debian/tools/x86_energy_perf_policy b/debian/tools/x86_energy_perf_policy new file mode 100644 index 00000000000..7b97a9e091b --- /dev/null +++ b/debian/tools/x86_energy_perf_policy @@ -0,0 +1,16 @@ +#!/bin/bash +full_version=`uname -r` + +# Removing flavour from version i.e. generic or server. +flavour_abi=${full_version#*-} +flavour=${flavour_abi#*-} +version=${full_version%-$flavour} +x86_energy_perf_policy="x86_energy_perf_policy_$version" + +if ! which "$x86_energy_perf_policy" > /dev/null; then + echo "$x86_energy_perf_policy not found" >&2 + echo "You may need to install linux-tools-$version" >&2 + exit 2 +fi + +exec "$x86_energy_perf_policy" "$@"