+Amateur
[packaging-tutorial.git] / packaging-tutorial.tex
index dc69b21..467ee35 100644 (file)
   \tableofcontents[hideallsubsections]
 \end{frame}
 
+\section{Practical session 0: simple rebuild of dash}
+\begin{frame}{Practical session 1: simple rebuild of dash}
+  \begin{enumerate}
+  \item install the packages we need
+  \item Create a working directory
+  \item Grab a simple source package
+  \item Build the package
+  \item Check that it worked
+  \end{enumerate}
+\end{frame}
+
 \section{Introduction}
 
 \subsection{Debian}
        \begin{itemize}
                \item \textbf{GNU/Linux distribution}
                        \br
-               \item 1st major distro developed "openly in the spirit of GNU"
+               \item 1st major distro developed ``openly in the spirit of GNU''
                        \br
-               \item \textbf{Non-commercial}, built collaboratively by more than 1000 volunteers
+               \item \textbf{Non-commercial}, built collaboratively by over 1,000 volunteers
                        \br
-               \item 30000 binary packages ; 12 ports (inc. 2 non-Linux) ; 120 derivatives
+               \item 30,000 binary packages; 12 ports (inc. 2 non-Linux); 120 derivatives
                        \br
                \item 3 main features:
                        \begin{itemize}
@@ -68,6 +79,8 @@
                                \item \textbf{Independence} -- no (single) company babysitting Debian\\
                                        And open decision-making process (\textsl{do-ocracy} + \textsl{democracy})
                        \end{itemize}
+                        \br
+                \item \textbf{Amateur} in the best sense: done for the love of it
        \end{itemize}
 \end{frame}
 
@@ -161,12 +174,12 @@ rw-r--r-- 0/0 751613 Sep  5 15:43 2010 data.tar.gz
   \begin{itemize}
   \item One source package can generate several binary packages\\
     {\small e.g the \texttt{\bfseries libtar} source generates the
-      \texttt{\bfseries libtar} and \texttt{\bfseries libtar-dev} binary
+      \texttt{\bfseries libtar0} and \texttt{\bfseries libtar-dev} binary
       packages} \hbr
   \item Two kinds of packages: (if unsure, use non-native)
     \begin{itemize}
       \small
-    \item Native packages: software developed inside Debian (\textsl{dpkg}, \textsl{apt})
+    \item Native packages: normally for Debian specific software (\textsl{dpkg}, \textsl{apt})
     \item Non-native packages: software developed outside Debian
     \end{itemize}
     \hbr
@@ -236,6 +249,11 @@ Files:
       (\href{http://snapshot.debian.org/}{\ttfamily snapshot.d.o} provides all packages from Debian since 2005)
     \end{itemize}
     \br
+  \item From the (declared) version control system:
+    \begin{itemize}
+    \item \texttt{debcheckout \textsl{package}}
+    \end{itemize}
+    \br
   \item Once downloaded, extract with \texttt{dpkg-source -x \textsl{file.dsc}}
   \end{itemize}
 \end{frame}
@@ -266,13 +284,13 @@ Files:
   \begin{itemize}
   \item Main files:
     \begin{itemize}
-    \item \textbf{changelog} -- history of the Debian package
-    \item \textbf{copyright} -- copyright information for the package
     \item \textbf{control} -- meta-data about the package (dependencies, etc)
     \item \textbf{rules} -- specifies how to build the package
+    \item \textbf{copyright} -- copyright information for the package
+    \item \textbf{changelog} -- history of the Debian package
     \end{itemize}
     \hbr
-  \item Optional files:
+  \item Other files:
     \begin{itemize}
     \item compat
     \item watch
@@ -281,7 +299,7 @@ Files:
     \item maintainer scripts\\
       {\small *.postinst, *.prerm, \ldots}
     \item source/format
-    \item patches -- if you need to modify the upstream sources
+    \item patches/ -- if you need to modify the upstream sources
     \end{itemize}
     \hbr
   \item Several files use a format based on RFC 822 (mail headers)
@@ -293,7 +311,7 @@ Files:
   \item Lists the Debian packaging changes
   \item Edited manually or with \texttt{dch}
   \item Special format to automatically close Debian or Ubuntu bugs\\
-    Debian: \texttt{Closes:~\#595268} ; Ubuntu: \texttt{LP:~\#616929}
+    Debian: \texttt{Closes:~\#595268}; Ubuntu: \texttt{LP:~\#616929}
   \item Installed as \texttt{/usr/share/doc/\textit{package}/changelog.Debian.gz}
   \end{itemize}
   \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
@@ -374,7 +392,7 @@ Description: retrieves files from the web
   Two kinds of binary packages:
   \hbr
   \begin{itemize}
-  \item Packages with a different content on each Debian architecture
+  \item Packages with different contents on each Debian architecture
     \begin{itemize}
     \item Example: C program
     \item \texttt{Architecture:\ any} in \texttt{debian/control}
@@ -382,7 +400,7 @@ Description: retrieves files from the web
       \item Or, if it only works on a subset of architectures:\\
         \texttt{Architecture:\ amd64 i386 ia64 hurd-i386}
       \end{itemize}
-    \item Packages for other architectures built by the Debian infrastructure
+    \item buildd.debian.org: builds all the other architectures for you on upload
     \item Named \texttt{\textsl{package}\_\textsl{version}\_\textsl{architecture}.deb}
     \end{itemize}
     \br
@@ -449,8 +467,8 @@ Description: retrieves files from the web
     \item Called from \texttt{debian/rules}
     \item Configurable using command parameters or files in \texttt{debian/}
     \end{itemize}
-    {\footnotesize \ttfamily dirs, package.docs, package.examples,
-      package.install, package.manpages, \ldots} \hbr
+    {\footnotesize \ttfamily dirs, \textsl{package}.docs, \textsl{package}.examples,
+      \textsl{package}.install, \textsl{package}.manpages, \ldots} \hbr
   \item Third-party helpers for sets of packages: \textbf{python-support},
     \textbf{dh\_ocaml}, \ldots \hbr
   \item Gotcha: \texttt{debian/compat}: Debhelper compatibility version (use "7")
@@ -559,7 +577,7 @@ build/mypackage::
     \hbr
   \item Easier to customize than CDBS
     \hbr
-  \item Doc: manpages (\texttt{debhelper(7)}, \texttt{dh(1)}) + slides from DebConf'9 talk\\
+  \item Doc: manpages (\texttt{debhelper(7)}, \texttt{dh(1)}) + slides from DebConf9 talk\\
     \url{http://kitenet.net/~joey/talks/debhelper/debhelper-slides.pdf}
     \br
     \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
@@ -630,7 +648,8 @@ override_dh_auto_build:
   \item It is better to build packages in a clean \& minimal environment
     \begin{itemize}
     \item \textttc{pbuilder} -- helper to build packages in a \textsl{chroot}\\
-      Good documentation: \url{https://wiki.ubuntu.com/PbuilderHowto}
+      Good documentation: \url{https://wiki.ubuntu.com/PbuilderHowto}\\
+      (optimisation: \textttc{cowbuilder} \textttc{ccache} \textttc{distcc})
       \hbr
     \item \textttc{schroot} and \textttc{sbuild}: used on the Debian build daemons\\
       (not as easy to use as \texttt{pbuilder})
@@ -638,7 +657,7 @@ override_dh_auto_build:
     \br
   \item Generate \texttt{.deb} files and a \texttt{.changes} file
     \begin{itemize}
-    \item \texttt{.changes}: describes what was built ; used to upload the package
+    \item \texttt{.changes}: describes what was built; used to upload the package
     \end{itemize}
   \end{itemize}
 \end{frame}
@@ -811,7 +830,8 @@ http://tmrc.mit.edu/mirror/twisted/Twisted/(\d\.\d)/ \
     \textbf{Debian External Health Status}\\
     \url{http://dehs.alioth.debian.org/}
     \br
-  \item Maintainer warned by emails sent to the Packages Tracking System
+  \item Maintainer warned by emails sent to the Package Tracking System\\
+    \url{http://packages.qa.debian.org/}
     \br
   \item \texttt{uscan}: run a manual check
     \br
@@ -877,8 +897,8 @@ Vcs-Svn: svn://svn.debian.org/pkg-perl/trunk/libwww-perl
   \item Get involved in packaging teams
     \begin{itemize}
     \item Many teams that focus on set of packages, and need help
-    \item Full list on \url{http://wiki.debian.org/Teams}
-    \item An excellent way to work with more experienced contributors
+    \item List available at \url{http://wiki.debian.org/Teams}
+    \item An excellent way to learn from more experienced contributors
     \end{itemize}
     \br
   \item Bring new software to Debian
@@ -908,8 +928,8 @@ Vcs-Svn: svn://svn.debian.org/pkg-perl/trunk/libwww-perl
       \hbr
     \item Many Debian tools can help:
       \begin{itemize}
-      \item Ubuntu column on the Developer' packages overview
-      \item Ubuntu box on the Packages Tracking System
+      \item Ubuntu column on the Developer's packages overview
+      \item Ubuntu box on the Package Tracking System
       \item Receive launchpad bugmail via the PTS
       \end{itemize}
     \end{itemize}
@@ -1005,10 +1025,10 @@ Vcs-Svn: svn://svn.debian.org/pkg-perl/trunk/libwww-perl
 
 \begin{frame}{Debian dashboards for maintainers}
   \begin{itemize}
-         \item \textbf{Source package centric}: Packages Tracking System\\
+         \item \textbf{Source package centric}: Package Tracking System (PTS)\\
     \url{http://packages.qa.debian.org/dpkg}
     \br
-  \item \textbf{Maintainer/team centric}: Developer's Packages Overview\\
+  \item \textbf{Maintainer/team centric}: Developer's Packages Overview (DDPO)\\
     \url{http://qa.debian.org/developer.php?login=pkg-ruby-extras-maintainers@lists.alioth.debian.org}
   \end{itemize}
 \end{frame}
@@ -1035,7 +1055,7 @@ Vcs-Svn: svn://svn.debian.org/pkg-perl/trunk/libwww-perl
        \item Debian development organization:
                \begin{itemize}
                        \item Bug Tracking System (BTS)
-                       \item Suites: stable, testing, unstable, experimental, security, volatile, backports, \ldots
+                       \item Suites: stable, testing, unstable, experimental, security, *-updates, backports, \ldots
                        \item Debian Blends -- subsets of Debian targetting specific groups
                \end{itemize}
                \end{itemize}