kernel-package 10.003 headed towards experimental
Hi,
This is a major reorganization of the rules file that helps
create kernel related packages. The crusty old mechanism has been
removed, the targets are now streamlined, and the policy mandated
dependencies are now called out into a separate file. This should
allow a future enhancement to allow end users to override the
behavior of kernel-package in a fine grained fashion. Also,
separating out the variable setting for each arch into a separate
file should facilitate the delegation of that file to the person
responsible for kernel images for that architecture. And, separating
out the policy mandated targets into fine grained double colon
targets allows people to add in any additional make targets for a
particular architecture, something long requested.
One of the factors that made the build mechanism so complex
was that the rules file had a dual purpose: Initially, when ./debian
was not present or not populated, it was responsible for populating
that, and then it was responsible for building the kernel packages,
incorporating any user customizations.
Unfortunately, since Make reads all the commands at startup,
it was difficult to incorporate any customizations, but the
modularization of the rules file makes it possible to have two top
level files, a minimal make file whose sole responsibility is to
populate ./debian (and run clean even when ./debian does not exist),
and which uses some of the same variable setting make snippets that
the final top level Make file uses when it resides in ./debian. The
task of deciding which top level makefile to use has now been
relegated to /usr/bin/make-kpkg -- which, if there ./debian is empty
or not present, first calls the minimal Makefile to populate it, and
_then_ calls the real ./debian/rules file to perform the actual task
that it was asked. This little intelligence in make-kpkg allows the
minimal makefile, and ./debian/rules, to be far simpler, and allows
them to conform to the standards my other Debian packages adhere to.
The goal of this release was to handle the bugs in the
previous experimental release, but to create a set of packages
indistinguishable from the ones created before. Pointedly, non-of the
minor lacunae in the Debian kernel image postinst scripts have been
addressed yet. Also, the build process is a little more verbose at
the moment than it needs to be.
manoj
__> baz diff | diffstat
107 files changed, 5076 insertions(+), 2887 deletions(-)
* Bug fix: "can not clean up the kernel source tree", thanks to
Chun-Chung Chen. (Closes: #336409)
* Bug fix: "kernel-package creates packages depending on
linux-initramfs-tools, should use linux-initramfs-tool", thanks to
Thomas Luzat. (Closes: #336724)
* Bug fix: "/usr/share/doc/kernel-package seems to contain broken
symlinks", thanks to Thomas Luzat (Closes: #336744)
* Makefile (DOCFILES): Removed package specific readme files (which
really do not belong in kernel-package documentation, and added new
docs that had been neglected.
* kernel/Control (Build-Depends): Added build dependencies on po-debconf
and gettext, in preparation for the forthcoming debconfication of the
kernel packages.
* kernel/Control (Recommends): Add recommendations for po-debconf and
gettext in the source package.
* kernel/Control (Pre-Depends): Made the imagfe package pre-depend on
debconf, since the preinst shall be using debconf to ask questions.
* kernel/rules: Continued the process of skeletonizing the top level
Makefile. Moved some more variables into their own files, and also
moved the top level policy mandated targets into a separate file (so
one does not have to worry about proper dependency relations between
those targets).
* kernel/ruleset/architecture.mk: Converted this file into an
skeleton/outline, to better allow delegation of responsibility for each
architecture to the person in charge of kernel images for that arch.
* kernel/ruleset/arches/README.txt: New file. Describes what the files in
this directory do.
* kernel/ruleset/arches/alpha.mk: New file to handle the architecture
specific variables.
* kernel/ruleset/arches/amd64.mk: New file to handle the architecture
specific variables.
* kernel/ruleset/arches/hppa.mk: New file to handle the architecture
specific variables.
* kernel/ruleset/arches/i386.mk: New file to handle the architecture
specific variables.
* kernel/ruleset/arches/ia64.mk: New file to handle the architecture
specific variables.
* kernel/ruleset/arches/m32r.mk: New file to handle the architecture
specific variables.
* kernel/ruleset/arches/m68k.mk: New file to handle the architecture
specific variables.
* kernel/ruleset/arches/mips.mk: New file to handle the architecture
specific variables.
* kernel/ruleset/arches/mipsel.mk: New file to handle the architecture
specific variables.
* kernel/ruleset/arches/ppc.mk: New file to handle the architecture
specific variables.
* kernel/ruleset/arches/ppc64.mk: New file to handle the architecture
specific variables.
* kernel/ruleset/arches/s390.mk: New file to handle the architecture
specific variables.
* kernel/ruleset/arches/sparc.mk: New file to handle the architecture
specific variables.
* kernel/ruleset/arches/uml.mk: New file to handle the architecture
specific variables.
* kernel/ruleset/arches/xen.mk: New file to handle the architecture
specific variables.
* kernel/ruleset/common/archvars.mk (REASON): Changed the wording for
non-file targets.
* kernel/ruleset/common/targets.mk: Made all the targets verbose. This is
likely to be a temporary measure, but who knows.
* kernel/ruleset/local-vars.mk: Made this file a skeleton/outline as
well. All actual variable settings (apart from the stuff to clean) are
now done in separate files (which allows us to have a minimal.mk in the
first place).
* kernel/ruleset/local.mk: This is yet another of the files that has been
reduced to an outline. Apart from the buildpackage target, every thing
else has been moved out to file in the targets subdirectory (the top
level targets were already moved to common/targets)
* kernel/scripts/kpkg-vercheck (main): Emit a warning if called with an
empty argument.
* make-kpkg (main): Create an alternate command (including an alternate
rules file, the minimal one) in case ./debian has not yet been
populated. This means that the default rules file for the main command
is always fixed to be ./debian/rules, and we now just check
/usr/share/kernel-package/rules for existence. If ./debian is not
populated, the alternate command is built up, according to the
following logic: if the target is clean or debian, we just set the
alternate command accordingly. If the target is anything else, then the
alternate command is set to be debian -- so that ./debian is properly
populated first. So, id ./debian is not populated, and the command is
clean or debian, just the alternate command is run. If the target was
anything else (with an UN-populated ./debian), then first the alternate
command is run to populate ./debian, then the normal command is run
using the newly created ./debian.
* kernel/ruleset/common/debconf.mk: New file, in preparation for the
forthcoming debconfication.
* kernel/ruleset/common/install_cmds.mk: New file, pulling these out of
the local-vars file.
* kernel/ruleset/common/pkgvars.mk: New file. This is what allows us to
separate out the top level targets, by determining which packages need
to be built.
* kernel/ruleset/common/README: Describes what this directory is used for.
* kernel/ruleset/minimal.mk: New file. This is the new top level file used when
./debian is not populated yet. The major tasks for this file is to run
the clean target (which does not populate ./debian, indeed, can remove
it if present), and to populate ./debian, if more complex tasks are to
be performed. The population of ./debian requires that certain
variables be set, and this file ensures we use the same makefile
snippets that ./debian/rules shall use when actually performing the
tasks, so there is no mismatch.
* kernel/ruleset/misc/checks.mk: Various checks that would let the build
process detect and abort on various error conditions.
* kernel/ruleset/misc/config.mk: Various internal variable set based on
defaults and the user configuration files, or from environment vars.
* kernel/ruleset/misc/defaults.mk: This file sets default values for
variables _before_ the user configuration files are read.
* kernel/ruleset/misc/initrd.mk: This snippet uses hard coded version based
heuristics to determine which set of tools would be viable for providing
an initrd or initramdisk for the kernel being built, if initrd's are
selected by the user as desired.
* kernel/ruleset/misc/modules.mk: This file deals with setting up
variables, looking at directories, and creating a list of valid third
party modules available for the kernel being built.
* kernel/ruleset/misc/patches.mk: This file deals with setting up
variables, looking at directories, and creating a list of valid third
party patches available for the kernel being built.
* kernel/ruleset/misc/pkg_names.mk: This file sets up package names for
the packages we can build (based on kernel version), the locations
under ./debian where these packages shall be built, and the
corresponding relative directory paths
* kernel/ruleset/misc/version_vars.mk: This file looks at the top level
kernel Makefile, and extracts the components of the version string. It
uses the kernel Makefile itself, so it takes into account everything
the kernel Makefile itrself pays attention to. This file also
calculated the obsolete Debian specific Flavour variable.
* kernel/ruleset/modules.mk: This file contains the targets responsible
for third party module interaction.
* kernel/ruleset/targets/doc.mk: This file is responsible for creating
the kernel-doc packages
* kernel/ruleset/targets/headers.mk: This file is responsible for
creating the kernel-headers packages
* kernel/ruleset/targets/image.mk: This file is responsible for creating
the kernel-image packages
* kernel/ruleset/targets/manual.mk: This file is responsible for creating
the kernel-manual packages
* kernel/ruleset/targets/sanity_check.mk: This contains a sanity check
that must be passed before creating a kernel package
* kernel/ruleset/targets/source.mk: This file is responsible forcreating
the kernel-source packages
* kernel/ruleset/targets/target.mk: This file provides the commands
commaon to a number of packages built, and also includes the files
providing commands to build each of the packages we create.
--
Out of the crooked timber of humanity no straight thing can ever be
made. Immanuel Kant
Manoj Srivastava <srivasta@acm.org> <http://www.golden-gryphon.com/>
1024D/BF24424C print 4966 F272 D093 B493 410B 924B 21BA DABB BF24 424C
Reply to: