debian-cd-clone/etchnhalf/docs/makefile.html

150 lines
5.0 KiB
HTML
Raw Normal View History

<html>
<head>
<title>The Makefile</title>
</head>
<body>
<h1>The Makefile</h1>
<p>A quick overview of the debian-cd Makefile: what it does, and
how.</p>
<h2>Variable setup and checking</h2>
<p>Simple sanity checking that all the needed variables from CONF.sh
are present and correct, and also set up some more internal
variables:</p>
<ul>
<li><code>BUILD_DATE</code> - simply, the date and time of the build
<li><code>ARCHES_NOSRC</code> - the list of arches specified, minus
source
<li><code>SOURCEONLY</code> - set only if we're building source and no
binaries
<li><code>INC_SOURCE</code> - set if we're building source at all
<li><em>lots of variables pointing to the helper scripts</em>
<li><code>BDIR</code> - the working dir for temporary files
<li><code>ADIR</code> - an alias for APTTMP, as set in CONF.sh
<li><code>DB_DIR</code> - points to a debootstrap temp dir under BDIR
<li><code>PATH</code> - we add the debootstrap /usr/sbin dir to the
path
<li><code>LATEST_DB</code> - the full path to the most recent version
of debootstrap in the archive
<h3><code>default:</code></h3>
<p>There is not a sensible default action for the Makefile (e.g. make
all), so simply print a message and return.</p>
<h3><code>ok:</code></h3>
<p>Simple sanity checking.</p>
<h3><code>$(MIRROR)/doc:</code>, <code>$(MIRROR)/tools:</code> and
<code>need-complete-mirror</code></h3>
<p>Ensure that we have all the needed pieces of the archive.</p>
<h2>General initialisation and cleanup</h2>
<h3><code>init:</code></h3>
<p>Depends on a group of trivial small rules - make the temp dirs as
necesssary, and extract the latest debootstrap deb from LATEST_DB
above.</p>
<h3><code>clean: and dir-clean:</code></h3>
<p>Clean up build tress.</p>
<h3><code>realclean: and distclean:</code></h3>
<p>Delete all temporary state.</p>
<h2>Package lists and apt setup</h2>
<h3><code>$(CODENAME)_status:</code></h3>
<p>Use the (maybe provided) default starting package list for
$(CODENAME). If that doesn't exist, fall back to "make status".</p>
<h3><code>status:</code> and <code>$(ADIR)/status:</code></h3>
<p>Create an initial list of the packages desired.</p>
<p>First, for BC and NETINST (aka INSTALLER_CD=1 or INSTALLER_CD=2),
simply create an empty list. For other CDs, grab the list of
Required/Important/Standard/Base packages from the Packages file.</p>
<p>Secondly, create/update the temporary apt db using
<code>apt-selection</code>.</p>
<p>Finally, use <code>apt-selection</code> to check the consistency of
the standard system in terms of dependencies. If needed, run
<code>make correctstatus</code> to add/remove packages.
<h3><code>correctstatus:</code></h3>
<p>Add/remove packages as needed to fix up the dependencies.</p>
<h3><code>apt-update:</code></h3>
<p>After setting up the default list of packages, run
<code>apt-selection update</code> for each of the arches, so we're
ready to ask apt to do real work for us.</p>
<h3><code>deletelist:</code></h3>
<p>Simple list cleanup</p>
<h3><code>packagelists:</code></h3>
<p>Helper for dependencies</p>
<h3><code>$(BDIR)/rawlist:</code></h3>
<p>Using debootstrap and the task file specified, generate a "raw"
(i.e. not cleanly formatted) list of the packages desired.</p>
<h3><code>$(BDIR)/rawlist.exclude:</code></h3>
<p>Using user-specified exclude lists, generate a rawlist of packages
that <strong>must not</strong> go into the images.</p>
<h3><code>genlist:</code>, <code>$(BDIR)/list</code> and
<code>$(BDIR)/list.exclude</code></h3>
<p>Clean up the rawlist and rawlist.exclude files ready for use.</p>
<h2>Tree and image building</h2>
<h3><code>image-trees:</code></h3>
<p>Does a lot of work, via three scripts:</p>
<ul>
<li>Sort the output from genlist into dependency order using
<code>list2cds</code> for each arch in turn, outputting to
$(BDIR)/packages.$ARCH.
<li>Merge the output of those separate package lists (if necessary),
outputting to $(BDIR)/packages using <code>merge_package_lists</code>.
<li>Now we have a sorted list of (potentially multi-arch) packages
ready to start using. Make the temporary trees using that list - call
<code>make_disc_trees.pl</code>
</ul>
<h3><code>images:</code></h3>
<p>Using the trees from <code>image-trees:</code>, convert those trees
into CD/DVD ISO/jigdo files as required.</p>
<h3><code>image:</code> and <code>check-number-given:</code></h3>
<p>If you're short on space, will allow you to create images one ISO
at a time - specify <code>CD=n</code> on the make command line to just
make CD number n.</p>
<h3><code>imagesums:</code></h3>
<p>Use the <code>imagesums</code> script to generate md5sums for the
output images.</p>
<h2>Misc targets</h2>
<h3><code>update-popcon</code></h3>
<p>Update the sorting order for packages using usage stats from
popcon.debian.org.</p>
<h3><code>official_images:</code></h3>
<p>Simple wrapper that depends on all the needed bits in the right
order.</p>
<hr>
(c) Steve McIntyre &lt;steve@einval.com&gt;, December 2006. GPL v2<br>
<a href="running.html">Prev - Running</a><br>
<a href="helpers.html">Next - The helper scripts, where most of the
work happens</a>
</body>
</html>