[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: