summaryrefslogtreecommitdiff
path: root/debian/rules.d
diff options
context:
space:
mode:
Diffstat (limited to 'debian/rules.d')
-rw-r--r--debian/rules.d/0-common-vars.mk188
-rw-r--r--debian/rules.d/1-maintainer.mk139
-rw-r--r--debian/rules.d/2-binary-arch.mk393
-rw-r--r--debian/rules.d/3-binary-indep.mk131
-rw-r--r--debian/rules.d/4-checks.mk34
-rw-r--r--debian/rules.d/5-udebs.mk38
6 files changed, 923 insertions, 0 deletions
diff --git a/debian/rules.d/0-common-vars.mk b/debian/rules.d/0-common-vars.mk
new file mode 100644
index 00000000000..72ab3e822fb
--- /dev/null
+++ b/debian/rules.d/0-common-vars.mk
@@ -0,0 +1,188 @@
+#
+# The source package name will be the first token from $(DEBIAN)/changelog
+#
+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))
+
+family=ubuntu
+
+# This is an internally used mechanism for the daily kernel builds. It
+# creates packages whose ABI is suffixed with a minimal representation of
+# the current git HEAD sha. If .git/HEAD is not present, then it uses the
+# uuidgen program,
+#
+# AUTOBUILD can also be used by anyone wanting to build a custom kernel
+# image, or rebuild the entire set of Ubuntu packages using custom patches
+# 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
+skipdbg = true
+gitver=$(shell if test -f .git/HEAD; then cat .git/HEAD; else uuidgen; fi)
+gitverpre=$(shell echo $(gitver) | cut -b -3)
+gitverpost=$(shell echo $(gitver) | cut -b 38-40)
+abi_suffix = -$(gitverpre)$(gitverpost)
+endif
+
+ifneq ($(NOKERNLOG),)
+ubuntu_log_opts += --no-kern-log
+endif
+ifneq ($(PRINTSHAS),)
+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 }' <Makefile)
+
+#
+# full_build -- are we doing a full buildd style build
+#
+ifeq ($(wildcard /CurrentlyBuilding),)
+full_build?=false
+else
+full_build?=true
+endif
+
+#
+# The debug packages are ginormous, so you probably want to skip
+# building them (as a developer).
+#
+ifeq ($(full_build),false)
+skipdbg=true
+endif
+
+abinum := $(shell echo $(revision) | sed -e 's/\..*//')$(abi_suffix)
+prev_abinum := $(shell echo $(prev_revision) | sed -e 's/\..*//')$(abi_suffix)
+abi_release := $(release)-$(abinum)
+
+uploadnum := $(shell echo $(revision) | sed -e 's/.*\.//')
+ifneq ($(full_build),false)
+ uploadnum := $(uploadnum)-Ubuntu
+endif
+
+# We force the sublevel to be exactly what we want. The actual source may
+# be an in development git tree. We want to force it here instead of
+# committing changes to the top level Makefile
+SUBLEVEL := $(shell echo $(release) | awk -F. '{print $$3}')
+
+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.linaro/config
+builddir := $(CURDIR)/debian/build
+stampdir := $(CURDIR)/debian/stamps
+
+#
+# The binary package name always starts with linux-image-$KVER-$ABI.$UPLOAD_NUM. There
+# are places that you'll find linux-image hard coded, but I guess thats OK since the
+# assumption that the binary package always starts with linux-image will never change.
+#
+bin_pkg_name=linux-image-$(abi_release)
+hdrs_pkg_name=linux-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
+# cycle, so its OK to leave 'do_doc_package_content=false' until those build
+# failures get sorted out. Finally, the doc package doesn't really need to be built
+# for developer testing (its kind of slow), so only do it if on a buildd.
+do_doc_package=true
+do_doc_package_content=true
+ifeq ($(full_build),false)
+do_doc_package_content=false
+endif
+doc_pkg_name=$(src_pkg_name)-doc
+
+#
+# Similarly with the linux-source package, you need not build it as a developer. Its
+# somewhat I/O intensive and utterly useless.
+#
+do_source_package=true
+do_source_package_content=true
+ifeq ($(full_build),false)
+do_source_package_content=false
+endif
+
+# linux-libc-dev may not be needed, default to building it.
+do_libc_dev_package=true
+
+# common headers normally is built as an indep package, but may be arch
+do_common_headers_indep=true
+
+# add a 'full source' mode
+do_full_source=false
+
+# build tools
+ifneq ($(wildcard $(CURDIR)/tools),)
+do_tools?=true
+else
+do_tools?=false
+endif
+tools_pkg_name=$(src_pkg_name)-tools-$(abi_release)
+tools_common_pkg_name=$(src_pkg_name)-tools-common
+
+# The general flavour specific image package.
+do_flavour_image_package=true
+
+# The general flavour specific header package.
+do_flavour_header_package=true
+
+# Support parallel=<n> in DEB_BUILD_OPTIONS (see #209008)
+#
+# These 2 environment variables set the -j value of the kernel build. For example,
+# CONCURRENCY_LEVEL=16 fakeroot $(DEBIAN)/rules binary-debs
+# or
+# DEB_BUILD_OPTIONS=parallel=16 fakeroot $(DEBIAN)/rules binary-debs
+#
+# The default is to use the number of CPUs.
+#
+COMMA=,
+DEB_BUILD_OPTIONS_PARA = $(subst parallel=,,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS))))
+ifneq (,$(DEB_BUILD_OPTIONS_PARA))
+ CONCURRENCY_LEVEL := $(DEB_BUILD_OPTIONS_PARA)
+endif
+
+ifeq ($(CONCURRENCY_LEVEL),)
+ # Check the environment
+ CONCURRENCY_LEVEL := $(shell echo $$CONCURRENCY_LEVEL)
+ # No? Then build with the number of CPUs on the host.
+ ifeq ($(CONCURRENCY_LEVEL),)
+ CONCURRENCY_LEVEL := $(shell expr `getconf _NPROCESSORS_ONLN` \* 1)
+ endif
+ # Oh hell, give 'em one
+ ifeq ($(CONCURRENCY_LEVEL),)
+ CONCURRENCY_LEVEL := 1
+ endif
+endif
+
+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) \
+ KBUILD_BUILD_VERSION="$(uploadnum)" \
+ LOCALVERSION= localver-extra=
+ifneq ($(LOCAL_ENV_CC),)
+kmake += CC=$(LOCAL_ENV_CC) DISTCC_HOSTS=$(LOCAL_ENV_DISTCC_HOSTS)
+endif
diff --git a/debian/rules.d/1-maintainer.mk b/debian/rules.d/1-maintainer.mk
new file mode 100644
index 00000000000..34e04bae943
--- /dev/null
+++ b/debian/rules.d/1-maintainer.mk
@@ -0,0 +1,139 @@
+# The following targets are for the maintainer only! do not run if you don't
+# know what they do.
+
+.PHONY: printenv updateconfigs printchanges insertchanges startnewrelease diffupstream help updateportsconfigs editportsconfigs
+
+help:
+ @echo "These are the targets in addition to the normal $(DEBIAN) ones:"
+ @echo
+ @echo " printenv : Print some variables used in the build"
+ @echo
+ @echo " updateconfigs : Update core arch configs"
+ @echo
+ @echo " editconfigs : Update core arch configs interractively"
+ @echo " genconfigs : Generate core arch configs in CONFIGS/*"
+ @echo
+ @echo " updateportsconfigs : Update ports arch configs"
+ @echo
+ @echo " editportsconfigs : Update ports arch configs interactivly"
+ @echo " genportconfigs : Generate ports arch configs in CONFIGS/*"
+ @echo
+ @echo " printchanges : Print the current changelog entries (from git)"
+ @echo
+ @echo " insertchanges : Insert current changelog entries (from git)"
+ @echo
+ @echo " startnewrelease : Start a new changelog set"
+ @echo
+ @echo " diffupstream : Diff stock kernel code against upstream (git)"
+ @echo
+ @echo " help : If you are kernel hacking, you need the professional"
+ @echo " version of this"
+ @echo
+ @echo "Environment variables:"
+ @echo
+ @echo " NOKERNLOG : Do not add upstream kernel commits to changelog"
+ @echo " CONCURRENCY_LEVEL=X"
+ @echo " : Use -jX for kernel compile"
+ @echo " PRINTSHAS : Include SHAs for commits in changelog"
+
+printdebian:
+ @echo "$(DEBIAN)"
+
+updateconfigs:
+ dh_testdir;
+ $(SHELL) $(DROOT)/scripts/misc/kernelconfig oldconfig
+ rm -rf build
+
+defaultconfigs:
+ 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
+ rm -rf build
+
+printenv:
+ dh_testdir
+ @echo "src package name = $(src_pkg_name)"
+ @echo "release = $(release)"
+ @echo "revisions = $(revisions)"
+ @echo "revision = $(revision)"
+ @echo "uploadnum = $(uploadnum)"
+ @echo "prev_revisions = $(prev_revisions)"
+ @echo "prev_revision = $(prev_revision)"
+ @echo "abinum = $(abinum)"
+ @echo "gitver = $(gitver)"
+ @echo "flavours = $(flavours)"
+ @echo "skipabi = $(skipabi)"
+ @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)"
+ @echo "doc package name = $(doc_pkg_name)"
+ @echo "do_doc_package = $(do_doc_package)"
+ @echo "do_doc_package_content = $(do_doc_package_content)"
+ @echo "do_source_package = $(do_source_package)"
+ @echo "do_source_package_content = $(do_source_package_content)"
+ @echo "do_libc_dev_package = $(do_libc_dev_package)"
+ @echo "do_flavour_image_package = $(do_flavour_image_package)"
+ @echo "do_flavour_header_package = $(do_flavour_header_package)"
+ @echo "do_common_headers_indep = $(do_common_headers_indep)"
+ @echo "do_full_source = $(do_full_source)"
+ @echo "do_tools = $(do_tools)"
+ @echo "full_build = $(full_build)"
+
+printchanges:
+ @baseCommit=$$(git log --pretty=format:'%H %s' | \
+ awk '/LINARO: '".*Linaro-$(release)-$(prev_revision)"'$$/ { 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)
+
+diffupstream:
+ @git diff-tree -p refs/remotes/linux-2.6/master..HEAD $(shell ls | grep -vE '^(ubuntu|$(DEBIAN)|\.git.*)')
+
+startnewrelease:
+ dh_testdir
+ @nextminor=$(shell expr `echo $(revision) | awk -F. '{print $$2}'` + 1); \
+ now="$(shell date -R)"; \
+ echo "Creating new changelog set for $(abi_release).$$nextminor..."; \
+ echo -e "$(src_pkg_name) ($(abi_release).$$nextminor) UNRELEASED; urgency=low\n" > $(DEBIAN)/changelog.new; \
+ echo " CHANGELOG: Do not edit directly. Autogenerated at release." >> \
+ $(DEBIAN)/changelog.new; \
+ echo " CHANGELOG: Use the printchanges target to see the curent changes." \
+ >> $(DEBIAN)/changelog.new; \
+ echo " CHANGELOG: Use the insertchanges target to create the final log." \
+ >> $(DEBIAN)/changelog.new; \
+ echo -e "\n -- $$DEBFULLNAME <$$DEBEMAIL> $$now\n" >> \
+ $(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
new file mode 100644
index 00000000000..56bf93773aa
--- /dev/null
+++ b/debian/rules.d/2-binary-arch.mk
@@ -0,0 +1,393 @@
+# We don't want make removing intermediary stamps
+.SECONDARY :
+
+# Prepare the out-of-tree build directory
+ifeq ($(do_full_source),true)
+build_cd = cd $(builddir)/build-$*; #
+build_O =
+else
+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-%
+ @touch $@
+$(stampdir)/stamp-prepare-tree-%: target_flavour = $*
+$(stampdir)/stamp-prepare-tree-%: $(commonconfdir)/config.common.$(family) $(archconfdir)/config.common.$(arch) $(archconfdir)/config.flavour.%
+ @echo "Preparing $*..."
+ install -d $(builddir)/build-$*
+ touch $(builddir)/build-$*/ubuntu-build
+ [ "$(do_full_source)" != 'true' ] && true || \
+ rsync -a --exclude debian --exclude debian.master --exclude debian.linaro --exclude $(DEBIAN) * $(builddir)/build-$*
+ cat $^ | sed -e 's/.*CONFIG_VERSION_SIGNATURE.*/CONFIG_VERSION_SIGNATURE="Ubuntu $(release)-$(revision)-$* $(release)$(extraversion)"/' > $(builddir)/build-$*/.config
+ find $(builddir)/build-$* -name "*.ko" | xargs rm -f
+ $(build_cd) $(kmake) $(build_O) silentoldconfig prepare scripts
+ touch $@
+
+# Do the actual build, including image and modules
+build-%: $(stampdir)/stamp-build-%
+ @# Empty for make to be happy
+$(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
+ @touch $@
+
+# Install the finished build
+install-%: pkgdir = $(CURDIR)/debian/$(bin_pkg_name)-$*
+install-%: bindoc = $(pkgdir)/usr/share/doc/$(bin_pkg_name)-$*
+install-%: dbgpkgdir = $(CURDIR)/debian/$(bin_pkg_name)-$*-dbgsym
+install-%: basepkg = $(hdrs_pkg_name)
+install-%: hdrdir = $(CURDIR)/debian/$(basepkg)-$*/usr/src/$(basepkg)-$*
+install-%: target_flavour = $*
+install-%: $(stampdir)/stamp-build-% checks-%
+ dh_testdir
+ dh_testroot
+ dh_clean -k -p$(bin_pkg_name)-$*
+ dh_clean -k -p$(hdrs_pkg_name)-$*
+ dh_clean -k -p$(dbg_pkg_name)-$*
+
+ # 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)-$*
+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)-$*
+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 \
+ $(pkgdir)/boot/System.map-$(abi_release)-$*
+ifeq ($(no_dumpfile),)
+ makedumpfile -g $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$* \
+ -x $(builddir)/build-$*/vmlinux
+endif
+
+ $(build_cd) $(kmake) $(build_O) modules_install \
+ 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
+endif
+ rm -f $(pkgdir)/lib/modules/$(abi_release)-$*/build
+ rm -f $(pkgdir)/lib/modules/$(abi_release)-$*/source
+
+ # Some initramfs-tools specific modules
+ install -d $(pkgdir)/lib/modules/$(abi_release)-$*/initrd
+ if [ -f $(pkgdir)/lib/modules/$(abi_release)-$*/kernel/drivers/video/vesafb.ko ]; then\
+ ln -f $(pkgdir)/lib/modules/$(abi_release)-$*/kernel/drivers/video/vesafb.ko \
+ $(pkgdir)/lib/modules/$(abi_release)-$*/initrd/; \
+ fi
+
+ # 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' \
+ -e 's/=L/$(loader)/g' -e 's@=B@$(build_arch)@g' \
+ $(DROOT)/control-scripts/$$script > $(pkgdir)/DEBIAN/$$script; \
+ chmod 755 $(pkgdir)/DEBIAN/$$script; \
+ done
+
+ # Install the full changelog.
+ifeq ($(do_doc_package),true)
+ install -d $(bindoc)
+ cat $(DEBIAN)/changelog $(DEBIAN)/changelog.historical | \
+ gzip -9 >$(bindoc)/changelog.Debian.old.gz
+ chmod 644 $(bindoc)/changelog.Debian.old.gz
+endif
+
+ifneq ($(skipsub),true)
+ for sub in $($(*)_sub); do \
+ if ! (TO=$$sub FROM=$* ABI_RELEASE=$(abi_release) $(SHELL) \
+ $(DROOT)/scripts/sub-flavour); then exit 1; fi; \
+ /sbin/depmod -b debian/$(bin_pkg_name)-$$sub \
+ -ea -F debian/$(bin_pkg_name)-$$sub/boot/System.map-$(abi_release)-$* \
+ $(abi_release)-$*; \
+ 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/=L/$(loader)/g' \
+ -e 's@=B@$(build_arch)@g' \
+ $(DROOT)/control-scripts/$$script > \
+ debian/$(bin_pkg_name)-$$sub/DEBIAN/$$script;\
+ chmod 755 debian/$(bin_pkg_name)-$$sub/DEBIAN/$$script;\
+ done; \
+ done
+endif
+
+ifneq ($(skipdbg),true)
+ # Debug image is simple
+ install -m644 -D $(builddir)/build-$*/vmlinux \
+ $(dbgpkgdir)/usr/lib/debug/boot/vmlinux-$(abi_release)-$*
+ $(build_cd) $(kmake) $(build_O) modules_install \
+ INSTALL_MOD_PATH=$(dbgpkgdir)/usr/lib/debug
+ 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.*
+ rm -fr $(dbgpkgdir)/usr/lib/debug/lib/firmware
+endif
+
+ # The flavour specific headers image
+ # TODO: Would be nice if we didn't have to dupe the original builddir
+ install -d -m755 $(hdrdir)
+ cat $(builddir)/build-$*/.config | \
+ 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
+ # We'll symlink this stuff
+ rm -f $(hdrdir)/Makefile
+ rm -rf $(hdrdir)/include2
+ # 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
+ # The build symlink
+ install -d debian/$(basepkg)-$*/lib/modules/$(abi_release)-$*
+ ln -s /usr/src/$(basepkg)-$* \
+ debian/$(basepkg)-$*/lib/modules/$(abi_release)-$*/build
+ # And finally the symvers
+ install -m644 $(builddir)/build-$*/Module.symvers \
+ $(hdrdir)/Module.symvers
+
+ # 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' \
+ $(DROOT)/control-scripts/headers-$$script > \
+ $(CURDIR)/debian/$(basepkg)-$*/DEBIAN/$$script; \
+ chmod 755 $(CURDIR)/debian/$(basepkg)-$*/DEBIAN/$$script; \
+ done
+
+ # At the end of the package prep, call the tests
+ DPKG_ARCH="$(arch)" KERN_ARCH="$(build_arch)" FLAVOUR="$*" \
+ VERSION="$(abi_release)" REVISION="$(revision)" \
+ 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
+
+ #
+ # 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)-$*/_
+ mv $(pkgdir)/lib/modules/$(abi_release)-$*/modules.order \
+ $(pkgdir)/lib/modules/$(abi_release)-$*/_
+ if [ -f $(pkgdir)/lib/modules/$(abi_release)-$*/modules.builtin ] ; then \
+ mv $(pkgdir)/lib/modules/$(abi_release)-$*/modules.builtin \
+ $(pkgdir)/lib/modules/$(abi_release)-$*/_; \
+ fi
+ rm -f $(pkgdir)/lib/modules/$(abi_release)-$*/modules.*
+ mv $(pkgdir)/lib/modules/$(abi_release)-$*/_/* \
+ $(pkgdir)/lib/modules/$(abi_release)-$*
+ rmdir $(pkgdir)/lib/modules/$(abi_release)-$*/_
+
+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 \
+ SHELL="$(SHELL)" ARCH=$(header_arch)
+
+install-arch-headers:
+ dh_testdir
+ dh_testroot
+ dh_clean -k -plinux-libc-dev
+
+ rm -rf $(headers_tmp)
+ install -d $(headers_tmp) $(headers_dir)/usr/include/
+
+ $(hmake) $(defconfig)
+ mv $(headers_tmp)/.config $(headers_tmp)/.config.old
+ sed -e 's/^# \(CONFIG_MODVERSIONS\) is not set$$/\1=y/' \
+ -e 's/.*CONFIG_LOCALVERSION_AUTO.*/# CONFIG_LOCALVERSION_AUTO is not set/' \
+ $(headers_tmp)/.config.old > $(headers_tmp)/.config
+ $(hmake) silentoldconfig
+ $(hmake) headers_install
+
+ ( cd $(headers_tmp)/install/include/ && \
+ find . -name '.' -o -name '.*' -prune -o -print | \
+ cpio -pvd --preserve-modification-time \
+ $(headers_dir)/usr/include/ )
+
+ rm -rf $(headers_tmp)
+
+binary-arch-headers: install-arch-headers
+ dh_testdir
+ dh_testroot
+ifeq ($(do_libc_dev_package),true)
+ 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
+ dh_md5sums -plinux-libc-dev
+ dh_builddeb -plinux-libc-dev
+endif
+
+binary-%: pkgimg = $(bin_pkg_name)-$*
+binary-%: pkghdr = $(hdrs_pkg_name)-$*
+binary-%: dbgpkg = $(bin_pkg_name)-$*-dbgsym
+binary-%: install-%
+ dh_testdir
+ dh_testroot
+
+ dh_installchangelogs -p$(pkgimg)
+ dh_installdocs -p$(pkgimg)
+ dh_compress -p$(pkgimg)
+ dh_fixperms -p$(pkgimg)
+ dh_installdeb -p$(pkgimg)
+ dh_shlibdeps -p$(pkgimg)
+ dh_gencontrol -p$(pkgimg)
+ dh_md5sums -p$(pkgimg)
+ dh_builddeb -p$(pkgimg) -- -Zbzip2 -z9
+
+ 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)
+ dh_md5sums -p$(pkghdr)
+ dh_builddeb -p$(pkghdr)
+
+ifneq ($(skipsub),true)
+ @set -e; for sub in $($(*)_sub); do \
+ pkg=$(bin_pkg_name)-$$sub; \
+ dh_installchangelogs -p$$pkg; \
+ dh_installdocs -p$$pkg; \
+ dh_compress -p$$pkg; \
+ dh_fixperms -p$$pkg; \
+ dh_shlibdeps -p$$pkg; \
+ dh_installdeb -p$$pkg; \
+ dh_gencontrol -p$$pkg; \
+ dh_md5sums -p$$pkg; \
+ dh_builddeb -p$$pkg; \
+ done
+endif
+
+ifneq ($(skipdbg),true)
+ dh_installchangelogs -p$(dbgpkg)
+ dh_installdocs -p$(dbgpkg)
+ dh_compress -p$(dbgpkg)
+ dh_fixperms -p$(dbgpkg)
+ dh_installdeb -p$(dbgpkg)
+ dh_gencontrol -p$(dbgpkg)
+ dh_md5sums -p$(dbgpkg)
+ dh_builddeb -p$(dbgpkg)
+
+ # Hokay...here's where we do a little twiddling...
+ # Renaming the debug package prevents it from getting into
+ # the primary archive, and therefore prevents this very large
+ # package from being mirrored. It is instead, through some
+ # archive admin hackery, copied to http://ddebs.ubuntu.com.
+ #
+ 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
+ # Now, the package wont get into the archive, but it will get put
+ # into the debug system.
+endif
+
+$(stampdir)/stamp-flavours:
+ @echo $(flavours) > $@
+
+#
+# per-architecture packages
+#
+$(stampdir)/stamp-prepare-perarch:
+ @echo "Preparing perarch ..."
+ifeq ($(do_tools),true)
+ install -d $(builddir)/tools-$*
+ for i in *; do ln -s $(CURDIR)/$$i $(builddir)/tools-$*/; done
+ rm $(builddir)/tools-$*/tools
+ rsync -a tools/ $(builddir)/tools-$*/tools/
+endif
+ touch $@
+
+$(stampdir)/stamp-build-perarch: prepare-perarch
+ifeq ($(do_tools),true)
+ cd $(builddir)/tools-$*/tools/perf && make
+endif
+ @touch $@
+
+install-perarch: toolspkgdir = $(CURDIR)/debian/$(tools_pkg_name)
+install-perarch: $(stampdir)/stamp-build-perarch
+ # Add the tools.
+ifeq ($(do_tools),true)
+ install -d $(toolspkgdir)/usr/bin
+ install -s -m755 $(builddir)/tools-$*/tools/perf/perf \
+ $(toolspkgdir)/usr/bin/perf_$(abi_release)
+endif
+
+binary-perarch: toolspkg = $(tools_pkg_name)
+binary-perarch: install-perarch
+ @# Empty for make to be happy
+ifeq ($(do_tools),true)
+ dh_installchangelogs -p$(toolspkg)
+ dh_installdocs -p$(toolspkg)
+ dh_compress -p$(toolspkg)
+ dh_fixperms -p$(toolspkg)
+ dh_shlibdeps -p$(toolspkg)
+ dh_installdeb -p$(toolspkg)
+ dh_gencontrol -p$(toolspkg)
+ dh_md5sums -p$(toolspkg)
+ dh_builddeb -p$(toolspkg)
+endif
+
+binary-debs: binary-perarch $(stampdir)/stamp-flavours $(addprefix binary-,$(flavours))
+
+build-arch-deps-$(do_flavour_image_package) += $(addprefix build-,$(flavours))
+build-arch: $(build-arch-deps-true)
+
+binary-arch-deps-$(do_flavour_image_package) = binary-debs
+ifeq ($(AUTOBUILD),)
+binary-arch-deps-$(do_flavour_image_package) += binary-udebs
+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)
diff --git a/debian/rules.d/3-binary-indep.mk b/debian/rules.d/3-binary-indep.mk
new file mode 100644
index 00000000000..793e1e9f803
--- /dev/null
+++ b/debian/rules.d/3-binary-indep.mk
@@ -0,0 +1,131 @@
+build-indep:
+
+docpkg = $(doc_pkg_name)
+docdir = $(CURDIR)/debian/$(docpkg)/usr/share/doc/$(docpkg)
+install-doc:
+ dh_testdir
+ dh_testroot
+ dh_clean -k -p$(docpkg)
+
+ install -d $(docdir)
+ifeq ($(do_doc_package_content),true)
+ # First the html docs. We skip these for autobuilds
+ if [ -z "$(AUTOBUILD)" ]; then \
+ install -d $(docdir)/$(doc_pkg_name)-tmp; \
+ $(kmake) O=$(docdir)/$(doc_pkg_name)-tmp htmldocs; \
+ mv $(docdir)/$(doc_pkg_name)-tmp/Documentation/DocBook \
+ $(docdir)/html; \
+ rm -rf $(docdir)/$(doc_pkg_name)-tmp; \
+ fi
+endif
+ # Copy the rest
+ 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_clean -k -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)
+
+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_clean -k -p$(srcpkg)
+
+ install -d $(srcdir)
+ifeq ($(do_source_package_content),true)
+ find . -path './debian' -prune -o -path './$(DEBIAN)' -prune -o \
+ -path './.*' -prune -o -print | \
+ cpio -pd --preserve-modification-time $(balldir)
+ (cd $(srcdir); tar cf - $(srcpkg)) | bzip2 -9c > \
+ $(srcdir)/$(srcpkg).tar.bz2
+ rm -rf $(balldir)
+ find './debian' './$(DEBIAN)' \
+ -path './debian/linux-*' -prune -o \
+ -path './debian/$(src_pkg_name)-*' -prune -o \
+ -path './debian/build' -prune -o \
+ -path './debian/files' -prune -o \
+ -path './debian/stamps' -prune -o \
+ -path './debian/tmp' -prune -o \
+ -print | \
+ cpio -pd --preserve-modification-time $(srcdir)
+ ln -s $(srcpkg)/$(srcpkg).tar.bz2 $(srcdir)/..
+endif
+
+install-tools: toolspkg = $(tools_common_pkg_name)
+install-tools: toolsbin = $(CURDIR)/debian/$(toolspkg)/usr/bin
+install-tools: toolsman = $(CURDIR)/debian/$(toolspkg)/usr/share/man
+install-tools:
+ dh_testdir
+ dh_testroot
+ dh_clean -k -p$(toolspkg)
+
+ install -d $(toolsbin)
+ install -d $(toolsman)/man1
+
+ install -m755 debian/tools/perf $(toolsbin)/perf
+
+ install -d $(builddir)/tools
+ for i in *; do ln -s $(CURDIR)/$$i $(builddir)/tools/; done
+ rm $(builddir)/tools/tools
+ rsync -a tools/ $(builddir)/tools/tools/
+
+ 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)
+
+# 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
+ 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)
+ dh_md5sums -p$(indep_hdrpkg)
+ dh_builddeb -p$(indep_hdrpkg)
+
+binary-indep: install-indep
+ dh_testdir
+ dh_testroot
+
+ dh_installchangelogs -i
+ dh_installdocs -i
+ dh_compress -i
+ dh_fixperms -i
+ dh_installdeb -i
+ 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
new file mode 100644
index 00000000000..d48c05d6260
--- /dev/null
+++ b/debian/rules.d/4-checks.mk
@@ -0,0 +1,34 @@
+# Check ABI for package against last release (if not same abinum)
+abi-%: $(abidir)/%
+ @# Empty for make to be happy
+$(abidir)/%: $(stampdir)/stamp-build-%
+ install -d $(abidir)
+ sed -e 's/^\(.\+\)[[:space:]]\+\(.\+\)[[:space:]]\(.\+\)$$/\3 \2 \1/' \
+ $(builddir)/build-$*/Module.symvers | sort > $@
+
+abi-check-%: $(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-%
+ install -d $(abidir)
+ find $(builddir)/build-$*/ -name \*.ko | \
+ sed -e 's/.*\/\([^\/]*\)\.ko/\1/' | sort > $@
+
+module-check-%: $(abidir)/%.modules
+ @perl -f $(DROOT)/scripts/module-check "$*" \
+ "$(prev_abidir)" "$(abidir)" $(skipmodule)
+
+checks-%: abi-check-% module-check-%
+ @# Will be calling more stuff later
+
+# Check the config against the known options list.
+config-prepare-check-%: $(stampdir)/stamp-prepare-tree-%
+ @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
new file mode 100644
index 00000000000..24fbadffc8d
--- /dev/null
+++ b/debian/rules.d/5-udebs.mk
@@ -0,0 +1,38 @@
+# Do udebs if not disabled in the arch-specific makefile
+binary-udebs: binary-debs debian/control
+ifeq ($(disable_d_i),)
+ @$(MAKE) --no-print-directory -f $(DROOT)/rules DEBIAN=$(DEBIAN) \
+ do-binary-udebs
+endif
+
+do-binary-udebs:
+ dh_testdir
+ dh_testroot
+
+ # unpack the kernels into a temporary directory
+ mkdir -p debian/d-i-${arch}
+
+ imagelist=$$(cat $(builddir)/kernel-versions | grep ^${arch} | awk '{print $$4}') && \
+ for i in $$imagelist; do \
+ dpkg -x $$(ls ../linux-image-$$i\_$(release)-$(revision)_${arch}.deb) \
+ debian/d-i-${arch}; \
+ /sbin/depmod -b debian/d-i-${arch} $$i; \
+ done
+
+ # kernel-wedge will error if no modules unless this is touched
+ touch $(CURDIR)/debian/build/no-modules
+
+ touch ignore-dups
+ export SOURCEDIR=$(CURDIR)/debian/d-i-${arch} && \
+ cd $(builddir) && \
+ kernel-wedge install-files && \
+ 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; \
+ dh_builddeb -p$$i; \
+ done