This README explains how packages are added to full CDs and DVDs based on tasks defined in tasksel. Note that this document describes the default configuration for debian-cd. Overview ======== One of the main factors deciding in what order packages are added, especially for the first DVD and earlier CDs, is the definition of which tasksel tasks should be used. The list of packages to be added is generated dynamically at build time. The procedure is somewhat complex and involves a number of (intermediate) files. The general sequence in which packages are added for "complete" images is: 1) Packages required by Debian Installer 2) Packages required to install the base system (debootstrap) 3) Any packages with priority "standard" or higher 4) Packages from tasksel tasks a) Packages defined as "key" packages for primary tasksel tasks b) Packages defined as "key" packages for language tasks (in the order: '', '-desktop', '--desktop'); only language desktop tasks that correspond to a primary task are included c) Regular packages from primary tasksel tasks d) Regular packages from language tasks e) Key packages from secondary tasksel tasks f) Key packages from language tasks corresponding to secondary tasksel tasks g) Regular packages from secondary tasksel tasks h) Regular packages from language tasks corresponding to secondary tasksel tasks 5) Other packages in the order of their popularity (popcon score) A tasksel task is defined as "secondary" by adding a '-' after its name in a task.list file; other tasksel tasks are "primary". Language tasks are added grouped per type, not per language. So with three languages (A, B, C) and 'desktop' and 'gnome-desktop' as tasks you'll get: A B C A-desktop B-desktop C-desktop A-gnome-desktop B-gnome-desktop C-gnome-desktop Note that -desktop tasks are always sorted before any --desktop tasks. Files involved ============== Static task files (can be found in tasks/codename): - Debian-generic or Debian-: top level task file; defines order of other task files to be used, including task-essential-[generic|] and task-full-[generic|] - task.list.generic or task.list.: tasksel tasks to be included Dynamically generated task files created at build time (can be found in the subdirectory tasks under the working directory for the build): - task.languages copy of the actual language list to be used to add language tasks (see "Language list used at build time" below) - task.gen.[generic|].primary: contains primary tasks from task.list.[generic|] followed by corresponding language tasks - task.gen.[generic|].secondary: contains secondary tasks from task.list.[generic|] and corresponding language tasks - task-essential-[generic|]: list of key packages based on task.gen.[generic|].primary; corresponds to 3a/3b from overview above - task-full-[generic|]: list of packages based on both task.gen.[generic|].primary and task.gen.[generic|].secondary; corresponds to 3c-3h from overview above The generation of these files is done early in a build by the script tools/update_tasks.