aboutsummaryrefslogtreecommitdiff
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/debconf7/pbuilder.tex172
-rw-r--r--Documentation/pbuilder-doc.xml40
2 files changed, 202 insertions, 10 deletions
diff --git a/Documentation/debconf7/pbuilder.tex b/Documentation/debconf7/pbuilder.tex
new file mode 100644
index 0000000..676cb1a
--- /dev/null
+++ b/Documentation/debconf7/pbuilder.tex
@@ -0,0 +1,172 @@
+\documentclass[a4paper]{article}
+\usepackage{graphicx}
+\usepackage{url}
+\usepackage{wrapfig}
+
+\begin{document}
+
+\section{What's up with pbuilder?}
+
+This is a document to explain what is pbuilder, what has been happening
+recently with pbuilder, and what will probably happen in the near
+future.
+
+\subsection{Concepts of using pbuilder}
+
+pbuilder facilitates clean-room environment testing of package building
+through using a chroot image and extracting a fresh chroot image for
+every build.
+
+There are several simple commands for operation. \texttt{pbuilder
+create}, \texttt{pbuilder update}, and \texttt{pbuilder
+build}\footnote{pdebuild command is often more convenient} commands are
+the typical commands used. If you need more details, see pbuilder
+manual, \url{/usr/share/doc/pbuilder/pbuilder-doc.html}
+
+When everything is set, \texttt{pbuilder build} will accept
+\texttt{.dsc} file (the Debian source-package) and build the package
+inside the chroot.
+
+\begin{tabular}{|l|l|l|}
+\hline
+operation & operation frequency & context \\
+\hline
+create & once per base.tgz & create the base filesystem \\
+update & once per day (unstable update) & update the base filesystem \\
+build & once per package & build the Debian package inside chroot \\
+\hline
+\end{tabular}
+
+\newpage{}
+\subsection{A developer use-case in using pbuilder}
+
+Let me examine a typical sequence of events in a day of a Debian Developer.
+
+%\begin{wrapfigure}{rt}{0.4\hsize}\includegraphics[width=1\hsize]{develcycle.eps}\end{wrapfigure}
+
+\begin{center}
+ \includegraphics[width=0.6\hsize]{develcycle.eps}
+\end{center}
+
+pbuilder is built in to the process as a checking system to ensure
+package quality. \footnote{This is an example. Some people do not build
+package locally and entirely work inside chroots.}
+
+\subsection{Development structure}
+
+Currently pbuilder is co-maintained with resources provided by Alioth.
+Development is done mostly by Lo\"ic Minier and Junichi Uekawa.
+
+Project page is available at
+\url{http://alioth.debian.org/projects/pbuilder}
+and home page is available at,
+\url{http://pbuilder.alioth.debian.org/}
+which provides the pbuilder manual.
+
+git is used for source code management, and the repository can be
+checked out by any of the following commands\footnote{ssh access
+requires account on alioth}.
+
+\begin{verbatim}
+git-clone git://git.debian.org/git/pbuilder/pbuilder.git
+git-clone http://git.debian.org/git/pbuilder/pbuilder.git
+git-clone ssh://git.debian.org/git/pbuilder/pbuilder.git
+\end{verbatim}
+
+\subsection{Derivatives and their status}
+
+\subsubsection{user-mode-linux port}
+
+pbuilder-uml port exists. Apparently, it is working for most people.
+Mattia Dongili has been working on this port.
+
+base.tgz extraction is replaced with UML cow device support, and thus is
+much faster.
+
+\subsubsection{LVM port}
+
+Someone did a port to using LVM snapshot for base-management. There was
+some mail posted, but noone really picked it up.
+
+\subsubsection{cowdancer port}
+
+Junichi Uekawa has been working on the port to cowdancer since 2005, and
+it is somewhat stable. This replaces base.tgz extraction with
+\texttt{cp -la }, which is much faster.
+
+Because of the way cowdancer hooks libc calls like open/close, it may
+interfere with package building. \footnote{etch release unfortunately
+was faced with Bug 413912}
+
+\subsubsection{qemu port}
+
+Junichi Uekawa has been working on the port to qemu/kqemu/kvm since
+early 2007. QEMU has COW block device support, so it eliminates the need
+to extract base.tgz.
+
+qemu port has an interesting advantage in that it adds
+cross-architecture-building support for pbuilder. I can potentially
+build and test ARM packages on my i386 box.
+
+\subsection{Further development ideas}
+
+\subsubsection{Installation testing}
+
+There are other projects such as piuparts which can be leveraged by
+pbuilder.
+
+pbuilder does provide example script for testing installation:
+\url{/usr/share/doc/pbuilder/examples/execute_installtest.sh}.
+
+\begin{verbatim}
+pbuilder execute \
+ /usr/share/doc/pbuilder/examples/execute_installtest.sh \
+ pbuilder
+\end{verbatim}
+
+This command will try to install the package using apt-get into the
+chroot.
+
+\subsubsection{Package testing}
+
+Package testing is a feature that is usually useful, especially since
+developer time is limited, and repeated manual testing is no fun.
+pbuilder includes an example hook script
+\url{/usr/share/doc/pbuilder/examples/B92test-pkg} which will test
+package after a successful build.
+
+The test files are shell scripts placed in
+\verb!debian/pbuilder-test/NN_name! (where NN is number) following
+run-parts standard for file names \footnote{no '.' in file names!}.
+
+\subsubsection{aptitude}
+
+pbuilder exclusively depends on apt-get. It might be time to look at
+what is missing to get aptitude working.
+
+\subsubsection{apt-key support}
+
+pbuilder currently lacks apt-key support. Since apt-key support is
+definitely available in the current stable releases, it is about time to
+start considering supporting apt-key.
+
+\subsubsection{build-dependency}
+
+Build-dependency parser has been somewhat old and suboptimal. Lo\"ic
+Minier has been working on refreshing it.
+
+\subsubsection{buildd.net-like support}
+
+pbuilder creates a bunch of useful build logs, but it lacks the
+infrastructure to aggregate and put them to use. Some projects to
+create \texttt{pbuildd} did exist, but I am not sure if it still exists
+today.
+
+\subsection{References}
+
+\begin{itemize}
+ \item \url{http://pbuilder.alioth.debian.org/} or
+ \url{/usr/share/doc/pbuilder/pbuilder-doc.html}: pbuilder manual
+\end{itemize}
+
+\end{document}
diff --git a/Documentation/pbuilder-doc.xml b/Documentation/pbuilder-doc.xml
index a367127..f9acc94 100644
--- a/Documentation/pbuilder-doc.xml
+++ b/Documentation/pbuilder-doc.xml
@@ -25,7 +25,7 @@
<para>
<command>pbuilder</command> stands for
Personal Builder, and it is an automatic Debian Package Building system
- for personal environments.
+ for personal development workstation environments.
<command>pbuilder</command> aims to be an
easy-to-setup system
for auto-building Debian packages inside a clean-room
@@ -70,18 +70,31 @@
</chapter>
<chapter id="usingpbuilder">
<title>Using pbuilder</title>
+ <para>
+ There are several simple commands for operation.
+ <command>pbuilder create</command>, <command>pbuilder
+ update</command>, and <command>pbuilder build</command> commands
+ are the typical commands used. Let us look at the commands
+ one by one.
+ </para>
<sect1 id="creatingbase">
<title>Creating a base chroot image</title>
<para>
<command>pbuilder create</command>
will create a base chroot image.
- The distribution code-name needs to be specified with
- the <command><option>--distribution</option></command>
+ All other commands will operate on the resulting base chroot image.
+
+ If the Debian release to be created within chroot is not going
+ to be "sid" (which is the default), the distribution code-name
+ needs to be specified with the
+ <command><option>--distribution</option></command>
command-line option.
- Usually, "sid" is used, and the default is now sid.
</para>
<para>
- <command>debootstrap</command> is used to create
+ <command>debootstrap</command> <footnote>
+ <para>debootstrap or cdebootstrap can be chosen</para>
+ </footnote>
+ is used to create
the bare minimum Debian installation,
and then build-essential packages are installed on top
of the minimum installation using <command>apt-get</command>
@@ -1165,14 +1178,21 @@ BINDMOUNTS="${CCACHE_DIR}"
and how things generally operate in development.
</para>
<para>
- <command>pbuilder</command> is now co-maintained at alioth.
- There is an alioth project page at
+ <command>pbuilder</command> is co-maintained with resources
+ provided by Alioth.
+
+ There is an Alioth project page at
<ulink url="http://alioth.debian.org/projects/pbuilder">
- http://alioth.debian.org/projects/pbuilder</ulink>.
- git Repository is available through http, or if you have an account on alioth,
- ssh.
+ http://alioth.debian.org/projects/pbuilder</ulink>.
+ Home page is also available,
+ at <ulink url="http://pbuilder.alioth.debian.org/">
+ http://alioth.debian.org/projects/pbuilder</ulink>
+ which shows this text.
+ git repository is available through http, git, or (if you have an
+ account on alioth, ) ssh.
</para>
<screen>
+git-clone git://git.debian.org/git/pbuilder/pbuilder.git
git-clone http://git.debian.org/git/pbuilder/pbuilder.git
git-clone ssh://git.debian.org/git/pbuilder/pbuilder.git
</screen>