]> git.ipfire.org Git - people/ms/talks.git/commitdiff
2012 - Introduction of the Pakfire Build Service
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 27 Apr 2012 10:00:00 +0000 (12:00 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 7 Sep 2014 21:44:49 +0000 (23:44 +0200)
23 files changed:
.gitignore [new file with mode: 0644]
2012_-_Introduction_to_the_Pakfire_Build_Service/main.tex [new file with mode: 0644]
2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-jobs.png [new file with mode: 0644]
2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-log.png [new file with mode: 0644]
2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-mdl.png [new file with mode: 0644]
2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-properties.png [new file with mode: 0644]
2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-social.png [new file with mode: 0644]
2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-top.png [new file with mode: 0644]
2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc.png [new file with mode: 0644]
2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-kernel-comment.png [new file with mode: 0644]
2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-homepage.png [new file with mode: 0644]
2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-job-gcc-buildroot.png [new file with mode: 0644]
2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-job-gcc-files.png [new file with mode: 0644]
2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-job-gcc-logfiles.png [new file with mode: 0644]
2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-job-gcc-top.png [new file with mode: 0644]
2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-gcc-btm.png [new file with mode: 0644]
2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-gcc-top.png [new file with mode: 0644]
2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-gcc.png [new file with mode: 0644]
2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-kernel.png [new file with mode: 0644]
2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-libgcc-deps.png [new file with mode: 0644]
2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-libgcc-files.png [new file with mode: 0644]
2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-libgcc-top.png [new file with mode: 0644]
render.sh [new file with mode: 0755]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..fded31e
--- /dev/null
@@ -0,0 +1,8 @@
+/*/main.pdf
+/*.pdf
+*.aux
+*.log
+*.nav
+*.out
+*.snm
+*.toc
diff --git a/2012_-_Introduction_to_the_Pakfire_Build_Service/main.tex b/2012_-_Introduction_to_the_Pakfire_Build_Service/main.tex
new file mode 100644 (file)
index 0000000..92a3a8c
--- /dev/null
@@ -0,0 +1,696 @@
+
+\documentclass[serif,mathserif]{beamer}
+
+\usepackage{beamerthemesplit}
+
+\usetheme{default}
+\useoutertheme{default}
+
+\usepackage{amsmath}
+\usepackage{amsfonts}
+\usepackage{color}
+\usepackage{epsfig}
+\usepackage{marvosym}
+\usepackage{texnansi}
+\usepackage{verbatim}
+\usepackage{xspace}
+
+% Make this a 16:9 presentation
+%\setlength{\paperwidth}{171 mm}
+%\setlength{\paperheight}{96 mm}
+%\setlength{\textwidth}{151 mm}
+%\setlength{\textheight}{86 mm}
+
+% Set sans-serif font.
+\renewcommand\sfdefault{phv}
+\renewcommand\familydefault{\sfdefault}
+
+% Define some colours.
+\definecolor{myred}{rgb}{0.53,0.01,0}
+\definecolor{mygrey}{rgb}{0.4,0.4,0.4}
+
+% Make a nice gradient as background.
+\setbeamertemplate{background canvas}[vertical shading]
+[bottom=black, middle=myred, top=myred]
+
+% Highlight elements in some sort of grey.
+\setbeamercolor{structure}{fg=mygrey}
+\setbeamercolor{normal text}{bg=black, fg=white}
+
+% Use round bullets in lists.
+\setbeamertemplate{items}[circle]
+
+% Use bigger fonts for titles.
+\setbeamerfont{title}{size=\Huge}
+\setbeamerfont{frametitle}{size=\large}
+\setbeamertemplate{frametitle}[default]
+
+% Don't clutter the pages with useless navigations.
+\setbeamertemplate{navigation symbols}{}
+
+% Author information.
+\author[Michael Tremer]{Michael Tremer}
+\institute{IPFire Project}
+
+% The title of the presentation.
+\title{Introduction to the\\ Pakfire Build Service}
+\subtitle{The new IPFire build system}
+
+\date{April 28, 2012}
+
+\newcommand{\spacer}{\vspace{4 mm}}
+
+\newcommand{\screenshot}[1]{\centerline{%
+    \includegraphics[width=\textwidth]{#1}}}
+
+\begin{document}
+       \maketitle
+
+       %\section*{Outline}
+       %\frame{\tableofcontents}
+
+       \section{Introduction}
+       \subsection{What is the Pakfire Build Service?}
+       \frame{
+               \begin{center}
+                       The Pakfire Build Service is the central build system
+                       of the IPFire firewall distribution.
+               \end{center}
+       }
+       \frame{
+               \begin{center}
+                       It automates the whole process from source code to a binary package
+                       that can be easily installed on any IPFire system.
+               \end{center}
+       }
+
+       \subsection{First things first\dots Terminology}
+       \frame{
+               \frametitle{What is a package?}
+
+               In general, a package is a collection of files and their metadata.
+               \spacer \pause
+
+               It is a single file and hence can easily be sent around for further
+                       development or distribution. File Extension: pfm.
+               \spacer \pause
+
+               There are two different types of packages\dots
+               \pause
+
+               \begin{itemize}
+                       \item<4-> Source packages
+                       \item<5-> Binary packages
+               \end{itemize}
+       }
+
+       \subsubsection{Source packages}
+       \frame{
+               \frametitle{Source packages}
+
+               \begin{itemize}
+                       \item<2-> A source package contains source code and
+                               build instructions to compile the sources.
+
+                       \item<3-> Source code is considered to be the release tarball
+                               of an upstream project and a number of patches.
+
+                       \item<4-> The result after putting a source package into a build
+                               is one or more binary packages.
+               \end{itemize}
+       }
+       %\frame{
+       %       \frametitle{Source packages: Makefiles}
+       %
+       %       The heart of a source package is the \emph{Makefile} which is always
+       %       called \emph{package-name.nm}.
+       %       \spacer
+       %}
+
+       \subsubsection{Binary packages}
+       \frame{
+               \frametitle{Binary packages}
+
+               Binary packages are ready for installation on target systems.
+               \spacer
+
+               It's easy:
+               \begin{center}
+                       \emph{pakfire install htop-1.0.1-1.ip3.x86\_64.pfm}
+               \end{center}
+       }
+       \frame{
+               \frametitle{Binary packages: Example}
+
+               \emph{audit - User space tools for 2.6 kernel auditing}
+
+               \begin{itemize}
+                       \item audit-2.2-2.ip3.src.pfm
+               \end{itemize}
+               \spacer \pause
+
+               The source package produces a whole set of binary packages:
+               \begin{itemize}
+                       \item audit-2.2-2.ip3.x86\_64.pfm
+                       \item audit-debuginfo-2.2-2.ip3.x86\_64.pfm
+                       \item audit-devel-2.2-2.ip3.x86\_64.pfm
+                       \item audit-libs-2.2-2.ip3.ip3.x86\_64.pfm
+               \end{itemize}
+       }
+
+       \subsubsection{Packages have got dependencies}
+       \frame{
+               \frametitle{Packages have got dependencies}
+
+               Packages have different kinds of \emph{dependencies}
+               which define relationships to each other.
+               \spacer \pause
+
+               A dependency can be defined as:
+               \spacer
+
+               \begin{itemize}
+                       \item<3-> An other package by name (\emph{openssl, beep or zlib-devel}).
+                       \item<4-> An other package by name and version (\emph{glibc >= 2.15 or udev < 182}).
+                       \item<5-> A filename like \emph{/usr/bin/bash}.
+                       \item<6-> A string that is provided by any package (e.g. \emph{bootloader}).
+                               You should not use this.
+               \end{itemize}
+       }
+       \frame{
+               \frametitle{Packages have got dependencies}
+
+               A given package \emph{X} may have the following dependencies:
+               \spacer \pause
+
+               \begin{itemize}
+                       \item<2-> \emph{Requires}: The installation of package \emph{X}
+                               requires the availability of everything in this list.
+                       \item<3-> \emph{Provides}: The package in hand comes with the
+                               features in this list.
+                       \item<4-> \emph{Conflicts}: Package X cannot be installed if
+                               any of these dependencies is provided by an other package.
+                       \item<5-> \emph{Obsoletes}: If package X is installed, there is
+                               no need for anything in this list.
+               \end{itemize}
+       }
+       \frame{
+               \frametitle{Benefits of the package division}
+
+               For users:
+               \begin{itemize}
+                       \item<2-> Install only what you need.
+                       \begin{itemize}
+                               \item Keeps the system small and fast.
+                       \end{itemize}
+
+                       \item<3-> Better updates:
+                       \begin{itemize}
+                               \item Update only what you want (e.g. only security updates).
+                               \item Faster distribution of hotfixes.
+                               \item Rollback bad updates.
+                       \end{itemize}
+
+                       \item<4-> Use other package sources.
+                       \begin{itemize}
+                               \item Third party repositories for closed source stuff.
+                               \item Packages we don't want to have in IPFire.
+                               \item Whatever you might think of...
+                       \end{itemize}
+               \end{itemize}
+       }
+       \frame{
+               \frametitle{Benefits of the package division}
+
+               For developers:
+               \begin{itemize}
+                       \item<2-> Each developer gets a small chunk to maintain.
+                       \item<3-> One broken package does not break the whole distribution.
+                       \item<4-> Faster builds:
+                       \begin{itemize}
+                               \item Just rebuild one package.
+                               \item Never the whole distribution.
+                       \end{itemize}
+
+                       \item<5-> Send unstable updates to each other. Test them.
+
+                       \item<6-> Push out updates earlier:
+                       \begin{itemize}
+                               \item No release planning for core updates.
+                               \item Don't bother with issues that have already been fixed.
+                       \end{itemize}
+               \end{itemize}
+       }
+
+       \subsection{Conclusion}
+       \frame{
+               \frametitle{Conclusion}
+
+               Packages have a lot of advantages.
+               \spacer \pause
+
+               But the management of more than 1250 packages per architecture
+               is a tough job.
+               \spacer \pause
+
+               We need a management tool for that!
+               \spacer
+       }
+
+       \section{The Pakfire Build Service}
+       \frame{
+               \frametitle{The Pakfire Build Service (PBS)}
+
+               \only<1>{
+                       \begin{figure}
+                               \screenshot{res/pbs-homepage.png}
+                       \end{figure}
+               }
+
+               \begin{itemize}
+                       \item<2-> It has been developed by developers of the IPFire project to
+                               achieve a very high level of quality in the build process in
+                               conjunction with the community.
+                       \item<3-> Written in pure Python.
+                       \item<4-> Comes with a web user interface and an XMLRPC management
+                               interface.
+                       \item<5-> Heavily based on the Pakfire package management system.
+               \end{itemize}
+       }
+
+       \subsection{Excursion: pakfire}
+       \frame{
+               \frametitle{Excursion: pakfire}
+
+               The Pakfire package management system manages installations, updates,
+               removes and more of packages on an IPFire system.
+               \spacer
+
+               \begin{itemize}
+                       \item<2-> Written in Python with performance critical code in C.
+                       \item<3-> Fast and most robust dependency solving algorithm in the world.
+                       \item<4-> Very tiny. Runs on embedded systems.
+                       \item<5-> Built-in build system.
+               \end{itemize}
+               \spacer
+       }
+
+       \subsection{More definitions}
+       \frame{
+               \frametitle{More definitions}
+
+               \begin{block}{Package}
+                       Primarily, the term \emph{package} describes a source package.
+                       It also can rarely mean the actual package file.
+               \end{block}
+               \pause
+
+               \begin{block}{Build}
+                       A build is an ordering unit which contains a source package
+                       and multiple \emph{build jobs}. There is also some meta information
+                       about the reason of the build (commit message, associated bugs).\par
+                       A build is what we are managing here. We don't bother about
+                       a single package file.
+               \end{block}
+               \pause
+
+               \begin{block}{Build job or just: job}
+                       A build contains several jobs. One for each architecture the
+                       build is built for.
+               \end{block}
+               \pause
+       }
+
+       \subsection{A package}
+       \frame{
+               \frametitle{PBS by example: A package}
+
+               \begin{columns}[c]
+                       \column{.5\textwidth}
+                       \begin{figure}
+                               \screenshot{res/pbs-package-kernel.png}
+                       \end{figure}
+
+                       \column{.5\textwidth}
+                       This is the kernel package.
+                       \spacer
+
+                       The page contains some general information about the package
+                       and in the row below a list of all known builds.
+                       \spacer
+
+                       At the bottom: Open bugs, some statistics.
+               \end{columns}
+       }
+
+       \subsection{A build}
+       \frame{
+               \frametitle{PBS by example: A build}
+
+               A build can be created in two ways and thus they
+               distinguish themselves in two categories.
+               \spacer
+
+               \begin{itemize}
+                       \item<2-> Release builds.
+                       \item<3-> Scratch builds.
+               \end{itemize}
+       }
+
+       \subsubsection{A release build}
+       \frame{
+               \frametitle{A release build}
+
+               A release build is created out of a commit in
+               a git repository.
+               \spacer
+
+               \begin{itemize}
+                       \item<2-> It is automatically created from source.
+                       \item<3-> Always linked to a distribution.
+                       \item<4-> Goes its way through all repositories of the distribution
+                               (i.e. from testing to stable).
+               \end{itemize}
+       }
+
+       \subsubsection{A scratch build}
+       \frame{
+               \frametitle{A scratch build}
+
+               In contrast to the release builds, a scratch build
+               is created by an individual.
+               \spacer
+
+               \begin{center}
+                       Command: \emph{ pakfire-client build beep/beep.nm}
+               \end{center}
+
+               \begin{itemize}
+                       \item<2-> Used to test if a packages does build on all architectures.
+                       \item<3-> Used to distribute experimental packages.
+               \end{itemize}
+               \spacer \pause \pause \pause
+
+               We will learn what exciting things we can
+               do with them in a minute\dots
+       }
+
+       \section{Learning by example}
+
+       \subsection{Step by step}
+       \frame{
+               \frametitle{Step by step}
+
+               \begin{center}
+                       Going step by step through the web user interface of the Pakfire
+                       Build Service, you will get an impression about what it can do...
+               \end{center}
+       }
+
+       \subsection{A package}
+       \frame{
+               \frametitle{A package}
+
+               \begin{figure}
+                       \screenshot{res/pbs-package-gcc.png}
+               \end{figure}
+       }
+       \frame{
+               \frametitle{A package}
+
+               \begin{figure}
+                       \screenshot{res/pbs-package-gcc-top.png}
+               \end{figure}
+
+               At the top of the page, you will find the most important metadata of
+               the package \pause which is:\par name and a short sentence what the package
+               does (headline)\pause, a longer description\pause, the home of the
+               package (we call this upstream)\pause, license\pause,
+               and the maintainer within the IPFire project.
+       }
+       \frame{
+               \frametitle{A package}
+
+               \begin{figure}
+                       \screenshot{res/pbs-package-gcc-btm.png}
+               \end{figure}
+
+               At the bottom you will find a list of all builds for this package.
+               \spacer
+               
+               That are two release builds for this example, one in testing,
+               the other already in stable state.
+               \spacer
+
+               Let's have a closer look at them...
+       }
+
+       \subsection{A build}
+       \frame{
+               \frametitle{A build}
+
+               \begin{figure}
+                       \screenshot{res/pbs-build-gcc.png}
+               \end{figure}
+       }
+       \frame{
+               \frametitle{A build}
+
+               \begin{figure}
+                       \screenshot{res/pbs-build-gcc-top.png}
+               \end{figure}
+
+               The same metadata as we already know from the package page.
+               \spacer
+
+               Additionally tagged as a release build or scratch build in the top
+               right corner.
+       }
+       \frame{
+               \frametitle{A build}
+
+               Further down, there is a block that shows us more information about
+               the reason for this build and the current state.
+               \spacer
+
+               \begin{figure}
+                       \screenshot{res/pbs-build-gcc-mdl.png}
+               \end{figure}
+               \pause
+
+               This build for example was created by commit \emph{c6952ba} and
+               is in the testing repository.
+       }
+       \frame{
+               \frametitle{A build}
+
+               At the bottom of a package is a short summary of the build jobs.
+
+               You get an overview about how the build of the package goes.
+               \spacer
+               
+               \begin{figure}
+                       \screenshot{res/pbs-build-gcc-jobs.png}
+               \end{figure}
+       }
+       \frame{
+               \frametitle{A build}
+
+               By clicking on the \emph{Properties} tab, you can see a couple
+               of more meta information about this build.
+               \spacer
+
+               \begin{figure}
+                       \screenshot{res/pbs-build-gcc-properties.png}
+               \end{figure}
+       }
+       \frame{
+               \frametitle{A build: Comments \& score}
+
+               One major design goal of the PBS was the involvement of the community
+               of testers into the development process.
+               \spacer \pause
+
+               We achieved that by giving our users the opportunity to comment on
+               builds and rate them like in this example:
+               \spacer
+
+               \begin{figure}
+                       \screenshot{res/pbs-build-gcc-log.png}
+               \end{figure}
+       }
+       \frame{
+               We gain the following advantages:
+
+               \begin{itemize}
+                       \item<2-> Users get go and grab a newer package if they are experiencing
+                               an issue with the current version.
+                       \item<3-> If the package fixes their bug, they only need to type a few
+                               lines into the comment box and rate the build.
+                       \item<4-> The developer gets immediate feedback about what he has
+                               created. This has been difficult in the past.
+                       \item<5-> If things don't go that well, it's the same game.
+               \end{itemize}
+               \pause \pause \pause \pause \pause
+
+               At the end of the day, it is much easier for the developer to decide if
+               a package is broken or if the update is working well and worth being
+               \emph{pushed}.
+       }
+       \frame{
+               \begin{columns}[c]
+                       \column{.5\textwidth}
+                       Who is allowed to comment and vote?
+                       \spacer
+
+                       Every registered user is allowed to comment builds.
+                       \spacer
+
+                       At the current point in time, it is necessary to be enabled
+                       by an admin to vote to assure a certain quality.
+                       \spacer
+
+                       \column{.5\textwidth}
+                       \begin{figure}
+                               \screenshot{res/pbs-build-kernel-comment.png}
+                       \end{figure}
+               \end{columns}
+       }
+
+       \subsection{A job}
+       \frame{
+               \frametitle{A job}
+
+               \begin{figure}
+                       \screenshot{res/pbs-job-gcc-top.png}
+               \end{figure}
+
+               On a job page, you will find a lot of information about the state
+               and progress of a build job for a certain architecture.
+               \spacer
+
+               \begin{center}
+                       \small NOTE: The interface may still change a bit.
+               \end{center}
+       }
+       \frame{
+               You have access to the build log files which contain the whole
+               build process and are very useful for debugging.
+               \spacer
+
+               \begin{figure}
+                       \screenshot{res/pbs-job-gcc-logfiles.png}
+               \end{figure}
+
+               They are easy to download or can be directly viewed in the web browser.
+       }
+       \frame{
+               Another very important feature is the so called \emph{buildroot}.
+               \spacer \pause
+
+               If there is a package with a serious bug which affected other packages
+               that have been built with that package, we need to know which
+               packages are infected.
+               \spacer \pause
+
+               The buildroot gives us a list of all packages that were extracted to
+               the buildroot at this build job.
+               \spacer \pause
+
+               Another application: If a build fails, we are able to create the
+               \underline{exactly} same buildroot and reproduce the complete build
+               process.
+       }
+       \frame{
+               \begin{figure}
+                       \screenshot{res/pbs-job-gcc-buildroot.png}
+               \end{figure}
+       }
+       \frame{
+               A build job also owns the package files that came out of the build process.
+
+               \begin{figure}
+                       \screenshot{res/pbs-job-gcc-files.png}
+               \end{figure}
+       }
+       \frame{
+               \begin{center}
+                       Let's click on one of these...
+               \end{center}
+       }
+
+       \subsection{A package file}
+       \frame{
+               \frametitle{A package file}
+
+                Again, we have a lot of meta information which explains itself.
+
+               \begin{figure}
+                       \screenshot{res/pbs-package-libgcc-top.png}
+               \end{figure}
+       }
+       \frame{
+               \begin{columns}[c]
+                       \column{.5\textwidth}
+                       You may view the dependencies of a package online\dots
+
+                       \column{.5\textwidth}
+                       \begin{figure}
+                               \screenshot{res/pbs-package-libgcc-deps.png}
+                       \end{figure}
+               \end{columns}
+       }
+       \frame{
+               \dots as well as the list of files in the package (with permissions
+               and user) which is both very useful for debugging.
+       
+               \begin{figure}
+                       \screenshot{res/pbs-package-libgcc-files.png}
+               \end{figure}
+       }
+
+       \section{The end}
+       \subsection{Conclusion}
+       \frame{
+               \frametitle{Conclusion}
+
+               In conclusion, the Pakfire Build Service has increased our productivity
+               enormously, because it is so much faster in bringing out package updates.
+               \spacer \pause
+
+               Bugs get fixed very fast and do not stop you working on something.
+               \spacer \pause
+
+               Developers are able to test each others changes very easily and
+               provide feedback at a central place. So are users.
+               \spacer \pause
+
+               The integration with the bugtracker (Bugzilla) closes bugs
+               and makes sure that the reporter of a bug is informed about a fix
+               and encouraged to test it.
+               \spacer
+       }
+       \frame{
+               Altogether, we are very proud of what we have done.
+               \spacer \pause
+
+               The Pakfire Build Service makes development fun. It helps to achieve
+               higher goals.
+               \spacer \pause
+
+               We don't consider the service fully done, because we have so many
+               ideas on our minds\dots
+       }
+
+       \frame{
+               \begin{center}
+                       \Huge{THE END}
+                       \spacer
+               \end{center}
+               
+               \begin{center}
+                       Now go out and show what you have learned today at
+                       \spacer \url{https://pakfire.ipfire.org}
+               \end{center}
+       }
+\end{document}
diff --git a/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-jobs.png b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-jobs.png
new file mode 100644 (file)
index 0000000..52448ef
Binary files /dev/null and b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-jobs.png differ
diff --git a/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-log.png b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-log.png
new file mode 100644 (file)
index 0000000..6d88a5a
Binary files /dev/null and b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-log.png differ
diff --git a/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-mdl.png b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-mdl.png
new file mode 100644 (file)
index 0000000..7070b66
Binary files /dev/null and b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-mdl.png differ
diff --git a/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-properties.png b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-properties.png
new file mode 100644 (file)
index 0000000..cf6afd6
Binary files /dev/null and b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-properties.png differ
diff --git a/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-social.png b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-social.png
new file mode 100644 (file)
index 0000000..e547fc0
Binary files /dev/null and b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-social.png differ
diff --git a/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-top.png b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-top.png
new file mode 100644 (file)
index 0000000..77a2efb
Binary files /dev/null and b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc-top.png differ
diff --git a/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc.png b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc.png
new file mode 100644 (file)
index 0000000..b93755b
Binary files /dev/null and b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-gcc.png differ
diff --git a/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-kernel-comment.png b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-kernel-comment.png
new file mode 100644 (file)
index 0000000..7e16745
Binary files /dev/null and b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-build-kernel-comment.png differ
diff --git a/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-homepage.png b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-homepage.png
new file mode 100644 (file)
index 0000000..39fb7ec
Binary files /dev/null and b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-homepage.png differ
diff --git a/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-job-gcc-buildroot.png b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-job-gcc-buildroot.png
new file mode 100644 (file)
index 0000000..1c59bb7
Binary files /dev/null and b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-job-gcc-buildroot.png differ
diff --git a/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-job-gcc-files.png b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-job-gcc-files.png
new file mode 100644 (file)
index 0000000..7735294
Binary files /dev/null and b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-job-gcc-files.png differ
diff --git a/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-job-gcc-logfiles.png b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-job-gcc-logfiles.png
new file mode 100644 (file)
index 0000000..94d12e6
Binary files /dev/null and b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-job-gcc-logfiles.png differ
diff --git a/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-job-gcc-top.png b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-job-gcc-top.png
new file mode 100644 (file)
index 0000000..a5177f3
Binary files /dev/null and b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-job-gcc-top.png differ
diff --git a/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-gcc-btm.png b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-gcc-btm.png
new file mode 100644 (file)
index 0000000..d0c6351
Binary files /dev/null and b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-gcc-btm.png differ
diff --git a/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-gcc-top.png b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-gcc-top.png
new file mode 100644 (file)
index 0000000..e0e5bfe
Binary files /dev/null and b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-gcc-top.png differ
diff --git a/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-gcc.png b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-gcc.png
new file mode 100644 (file)
index 0000000..4977696
Binary files /dev/null and b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-gcc.png differ
diff --git a/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-kernel.png b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-kernel.png
new file mode 100644 (file)
index 0000000..2ccb40c
Binary files /dev/null and b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-kernel.png differ
diff --git a/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-libgcc-deps.png b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-libgcc-deps.png
new file mode 100644 (file)
index 0000000..3c9bf27
Binary files /dev/null and b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-libgcc-deps.png differ
diff --git a/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-libgcc-files.png b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-libgcc-files.png
new file mode 100644 (file)
index 0000000..eef688d
Binary files /dev/null and b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-libgcc-files.png differ
diff --git a/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-libgcc-top.png b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-libgcc-top.png
new file mode 100644 (file)
index 0000000..54c8d74
Binary files /dev/null and b/2012_-_Introduction_to_the_Pakfire_Build_Service/res/pbs-package-libgcc-top.png differ
diff --git a/render.sh b/render.sh
new file mode 100755 (executable)
index 0000000..8b2b3fa
--- /dev/null
+++ b/render.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+PDFLATEX="pdflatex"
+
+TALKS="2012_-_Introduction_to_the_Pakfire_Build_Service"
+
+for talk in ${TALKS}; do
+       (
+               pushd "${talk}"
+               if ${PDFLATEX} main < /dev/null; then
+                       cat "main.pdf" > "../${talk}.pdf"
+               fi
+               popd
+       )
+done