r3250 - branches/kernel-image-2.6.11/debian

Jurij Smakov jurij-guest@costa.debian.org
Sat, 28 May 2005 05:24:12 +0000


Author: jurij-guest
Date: 2005-05-28 05:24:11 +0000 (Sat, 28 May 2005)
New Revision: 3250

Added:
   branches/kernel-image-2.6.11/debian/Makefile.subarch
Log:
Include Makefile.subarch which somehow got
left out.


Added: branches/kernel-image-2.6.11/debian/Makefile.subarch
===================================================================
--- branches/kernel-image-2.6.11/debian/Makefile.subarch	2005-05-27 23:12:02 UTC (rev 3249)
+++ branches/kernel-image-2.6.11/debian/Makefile.subarch	2005-05-28 05:24:11 UTC (rev 3250)
@@ -0,0 +1,225 @@
+#
+# This Makefile executes the unpack/build/binary targets for a single
+# subarch, which is passed in the subarch variable. Empty subarch
+# variable means that we are building for an arch without the subarch.
+# Additionally, variables version, abiname and ktver are
+# expected to be available (need to be exported from the parent process).
+# It is possible to override the flavours by setting the flavours
+# variable. 
+#
+# This Makefile is run from the debian subdir
+#
+SHELL  := sh -e
+debver := $(version)-$(abiname)
+uver   := $(subst .,_,$(version))
+debnum := -$(abiname)
+kbpkg  := kernel-kbuild-$(version)-$(abiname)
+# This will eventually have to be changed to a command, applying
+# the debian's patches from the local tree (arch/patches?)
+kpatch := /usr/src/kernel-patches/all/$(version)/apply/debian $(version)-$(ktver)
+DEBIAN_UPSTREAM_VERSION := $(version)
+ifeq (,$(DEB_HOST_ARCH))
+  DEB_HOST_ARCH  := $(shell dpkg-architecture -qDEB_HOST_ARCH)
+  DEB_BUILD_ARCH := $(shell dpkg-architecture -qDEB_BUILD_ARCH)
+endif
+export version debnum DEBIAN_UPSTREAM_VERSION
+
+karch := $(DEB_HOST_ARCH)
+#
+# Build the list of common config files to be included
+#
+ifeq ($(subarch),none)
+  basedir := arch/$(karch)
+  append  := 
+else
+  basedir := arch/$(karch)/$(subarch)
+  append  := -$(subarch)
+endif
+default := $(basedir)/config.default
+configs := $(notdir $(wildcard $(basedir)/config.*))
+configs := $(filter-out config.common config.default, $(configs))
+tkdir   := kernel-source-$(version)
+kdir    := kernel-source-$(version)-$(subarch)
+ifndef flavours
+  flavours := $(patsubst config.%,%,$(configs))
+endif
+
+-include $(basedir)/Makefile.inc
+
+#
+# Here we construct the command lines for different make-kpkg
+# calls (build, kernel-image, kernel-headers) based on the values
+# of variables defined so far and provided by the arch/subarch
+# in Makefile.inc. @flavour@ in the expressions is going to be
+# replaced by the flavour for which the command is run. 
+#
+kpkg_headers_cmd := HEADER_CLEAN_HOOK='$(CURDIR)/header-install-$(subarch)'
+kpkg_headers_cmd += make-kpkg --append-to-version $(debnum)$(append)
+kpkg_build_cmd  := make-kpkg --append-to-version $(debnum)-@flavour@
+ifdef added_patches
+  kpkg_headers_cmd += --added_patches $(subst @uver@,$(uver),$(added_patches))
+  kpkg_build_cmd   += --added_patches $(subst @uver@,$(uver),$(added_patches))
+endif
+ifdef build_subarch
+  kpkg_build_cmd += --subarch $(build_subarch)
+endif
+ifdef headers_subarch
+  kpkg_headers_cmd += --subarch $(headers_subarch)
+endif
+ifdef build_makeflags
+  kpkg_build_cmd := MAKEFLAGS=$(build_makeflags) $(kpkg_build_cmd)
+endif
+#
+# Note that next variable (kpkg_image_pre) is not going to be evaluated
+# immediately. When referenced, the variable $* will have the current
+# flavour for which the command is executed. So if this flavour will
+# happen to be in the image_prefix_flavours list, the call to make-kpkg
+# will be prepended with contents if image_prefix.
+#
+kpkg_image_pre = $(if $(filter $*,$(image_prefix_flavours)),$(image_prefix))
+kpkg_image_cmd := $(kpkg_build_cmd) --initrd kernel_image
+kpkg_build_cmd += build
+kpkg_headers_cmd += kernel-headers
+ifndef headers_dirs
+  headers_dirs = $(karch)
+endif
+ifneq (no,$(include_common_config))
+  ccommon := arch/config.common
+endif
+ccommon += arch/$(karch)/config.common arch/$(karch)/$(subarch)/config.common
+#
+# Here we build lists of directories and stamps which we will depend on.
+# For each class of such targets there is a pattern rule which will catch
+# it and do the right thing.
+#
+bdirs   := $(addprefix build-$(subarch)-, $(flavours))
+bstamps := $(addprefix build-stamp-$(subarch)-, $(flavours))
+istamps := $(addprefix install-stamp-$(subarch)-, $(flavours))
+#
+# Targets
+#
+unpack: unpack-stamp-$(subarch)
+unpack-stamp-$(subarch): $(configs) header-install-$(subarch) $(bdirs)
+	touch unpack-stamp-$(subarch)
+
+build: build-stamp-$(subarch)
+build-stamp-$(subarch): unpack-stamp-$(subarch) $(bstamps)
+	touch build-stamp-$(subarch)
+
+binary-indep: build
+binary-arch: build headers-stamp $(istamps)
+	mv *.deb ../..
+
+install-stamp-$(subarch)-%: build-$(subarch)-% build-stamp-$(subarch)-%
+	cp -al $< install-$*;
+	cd install-$*; \
+	$(strip $(kpkg_image_pre) $(subst @flavour@,$*,$(kpkg_image_cmd)))
+	cat install-$*/debian/files >> files;
+	rm -rf install-$*;
+	touch install-stamp-$(subarch)-$*
+
+headers-stamp: $(kdir)
+	dh_testdir
+	dh_clean -k
+	dh_installdirs
+	cp $(default) $(kdir)/.config
+	cd $(kdir); $(kpkg_headers_cmd)
+	cat $(kdir)/debian/files >> files
+	touch headers-stamp
+
+binary:	binary-indep binary-arch
+
+header-install-$(subarch): templates/header-install.in
+	sed -e 's,@kbpkg@,$(kbpkg),g'				\
+	    -e 's,@ksource_dir@,$(CURDIR)/$(kdir),g'		\
+	    -e 's,@headers_dirs@,$(headers_dirs),g'		\
+	    -e 's,@headers_extra@,$(headers_extra),g'		\
+            templates/header-install.in > header-install-$(subarch)
+	chmod u+x header-install-$(subarch)
+#
+# The way to make the correct package names is to make a
+# subarch-specific post-install script...
+#
+post-install-$(subarch): templates/post-install.in
+	sed -e 's,@initrd_modules@,$(initrd_modules),'	\
+	    -e 's,@append_subarch@,$(append),'		\
+	    templates/post-install.in > post-install-$(subarch)
+#
+# Generates the kernel config file for a subarch by merging
+# the arch-independent config file (arch/config.common),
+# arch-specific config file (arch/$(karch)/config.common),
+# and subarch specific one (arch/$(karch)/config.subarch).
+# It is possible to avoid the inclusion of the arch-indep
+# config file by setting include_common_config = no in the
+# arch/$(karch)/Makefile.inc.
+#
+config.%:
+	@echo "configs=$(configs)"
+	@echo "Generating configuration file $@:"
+	rm -f $@
+	for i in $(ccommon); do	\
+	  if [ -f $${i} ]; then	\
+	    cat $${i} >> $@;	\
+	  fi;			\
+	done
+#	Flavour config file must be present
+	cat $(basedir)/$@ >> $@			 
+
+$(kdir): post-install-$(subarch)
+	dh_testdir
+	tar jxf /usr/src/$(tkdir).tar.bz2
+	mkdir -p $(tkdir)/debian
+	cp debian/changelog $(tkdir)/debian
+	cp debian/control   $(tkdir)/debian
+	cp debian/copyright $(tkdir)/debian
+	touch $(tkdir)/debian/official
+	install post-install-$(subarch) $(tkdir)/debian/post-install
+	cd $(tkdir) && $(kpatch)
+#	Arch/subarch-specific patches
+	if [ -d $(basedir)/patches ] &&				\
+	   [ -s $(basedir)/patches/list ]; then			\
+	  cd $(tkdir);						\
+	  for i in $$(cat ../$(basedir)/patches/list); do	\
+	    patch -p1 < ../$(basedir)/patches/$${i};		\
+	  done;							\
+	fi
+	mv $(tkdir) $@
+#
+# This target performs a build for a particular flavour. Note
+# that in this file it should be always placed *before* the
+# build-$(subarch)-% target, which creates the build directory.
+#
+# Some arches have extra arch/${ARCH}/kernel/asm-offsets.s files
+# which have to be included in kernel-headers. The problem is that
+# they are only generated during build and we never performed a
+# full build in the directory $(kdir) where kernel-headers are
+# built. So, after build we check whether current build arch has
+# such a file and symlink it into the $(kdir) if necessary.
+# Note that to get into the kernel-headers package the arch/subarch
+# still needs variables headers_dirs and headers_extra set.
+#
+build-stamp-$(subarch)-%: build-$(subarch)-%
+	dh_testdir
+	PATH=$$PWD/bin:$$PATH;					\
+	cd $<;							\
+	$(subst @flavour@,$*,$(kpkg_build_cmd));		\
+	$(if $(image_postproc),$(image_postproc),true);		\
+	arch=$$(basename $$(readlink include/asm));		\
+	arch="$${arch#asm-}";					\
+	src="arch/$${arch}/kernel/asm-offsets.s";		\
+	dst="../$(kdir)/$${src}";				\
+	if [ -f "$${src}" ] && [ ! -e "$${dst}" ]; then		\
+	  ln -s "$$(pwd)/$${src}" "$${dst}";				\
+	fi	
+	touch build-stamp-$(subarch)-$*
+#
+# Creates a build directory for a particular flavour
+#
+build-$(subarch)-%: $(kdir) config.%
+	dh_testdir
+	if [ ! -d $@ ]; then					\
+	  cp -al $(kdir) $@;					\
+	  cp config.$* $@/.config;				\
+	fi
+
+.PHONY: build unpack binary-indep binary-arch binary