% Copyright 2008 Neil Williams % % This document is free software; you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by % the Free Software Foundation; either version 3 of the License, or % (at your option) any later version. % % This program is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU General Public License for more details. % % You should have received a copy of the GNU General Public License % along with this program. If not, see http://www.gnu.org/licenses/ \documentclass{beamer} \mode { \usetheme{Emdebian} \usecolortheme{emdebian} } \usepackage[english]{babel} \usepackage[latin1]{inputenc} \title{Fosdem 2008 (Debian)} \subtitle{Cross building Debian} \author{Neil Williams} \date{\today} \begin{document} \frame{\titlepage} \section{Introduction} \subsection{Conventions and methods} \frame { \frametitle{Conventions and methods} \begin{itemize} \item<1-> Disc space is not cheap for embedded devices - minimise installation and download size at the expense of build machines and repository size. \item<2-> --builD == Desktop \item<3-> --Host == Handheld \item<4-> Remove "Essential" \& perl to allow full customisation of the installed package set. \item<5-> Drop (or split out) optional components to reduce dependencies. \end{itemize} } \section{Common problems} \subsection{dpkg-architecture support} \frame { \frametitle{dpkg-architecture support} \par Cross building autotools packages: \begin{itemize} \item<1-> DEB\_HOST\_GNU\_TYPE = \$(shell dpkg-architecture -qDEB\_HOST\_GNU\_TYPE) \item<2-> DEB\_BUILD\_GNU\_TYPE = \$(shell dpkg-architecture -qDEB\_BUILD\_GNU\_TYPE) \item<3-> ifneq (\$(DEB\_HOST\_GNU\_TYPE),\$(DEB\_BUILD\_GNU\_TYPE)) \item<4-> CROSS= --build \$(DEB\_BUILD\_GNU\_TYPE) --host \$(DEB\_HOST\_GNU\_TYPE) \item<5-> else \item<6-> CROSS= --build \$(DEB\_BUILD\_GNU\_TYPE) \item<7-> endif \item<8-> or if only using \$(MAKE), set CC=\$(DEB\_HOST\_GNU\_TYPE)-gcc only if cross building. \end{itemize} } \section{Build Options} \subsection{Emdebian changes for Debian} \frame { \frametitle{Emdebian changes for Debian packages} \par Where possible, implement support via consistent handling of DEB\_BUILD\_OPTIONS or use patches from Emdebian SVN. \begin{itemize} \item<1-> Omit all docs: generalised support for "nodocs". \item<2-> Avoid generating docs if possible. \item<3-> Omit internal build checks: "nochecks". \item<4-> No perl support in maintainer scripts - reimplement or remove. \item<5-> No need for backwards compatibility with pre-Lenny, remove. \item<6-> \end{itemize} \par Where possible, udebs are built. Main differences are the lack of maintainer scripts and lack of symlinks in library udebs. } \section{Emdebian build system changes} \subsection{build tools support} \frame { \frametitle{build tools support} \par emdebian-tools needs to implement a few workarounds for remaining issues: \begin{itemize} \item<1-> Internal library workaround using gccross from dpkg-cross is 'opt-in'. \item<2-> Set X-Build-Cross-Libtool: yes in debian/xcontrol \item<3-> debian-xcontrol also contains Build-Depends-Tools: to separate architecture-dependent build dependencies from build tools. \item<4-> LD\_LIBRARY\_PATH : (dpkg-shlibdeps) : \#453267 \item<5-> PKG\_CONFIG\_LIBDIR : (dpkg-buildpackage -a) : \#439979 \end{itemize} } \section{Emdebian TDeb implementation.} \subsection{em\_installtdeb} \frame { \frametitle{em\_installtdeb} \begin{itemize} \item<1-> Emdebian tdebs are similar to the Debian tdeb plans. \item<2-> Need "nodocs" support to be fully compatible. \item<3-> One locale, one source package, one tdeb. \item<4-> Includes support for a customized source package potentially useful for "translator-uploads". \item<5-> Packages separated into a secondary repository, using in a temporary cache. \item<6-> New C \& C++ application, langupdate, for scalability. \item<7-> Parse the supported locales and install matching locale packages for the package set. (pt\_BR falls back to pt). \end{itemize} } \section{People} \subsection{Thanks} \frame { \frametitle{Thanks} \par http://www.toby-churchill.com/ \par http://www.emdebian.org/ \par Many individuals : Wookey, Phillipe de Swert, Hector Oron, Neil Williams, Peter De Schrijver (p2), Nikita Y.Youshchenko, Peter Naulls, Jon Masters, Justin Cormack, Raphael Bossek, Allen Curtis, Benjamin Henrion \par and anyone I might have forgotten. } \end{document}