This README will be better off in pdebuild-cross.
git-svn-id: http://emdebian.org/svn/current@7262 563faec7-e20c-0410-992a-a66f704d0ccd
This commit is contained in:
parent
6d29417ef1
commit
d21a861def
1 changed files with 0 additions and 115 deletions
115
README
115
README
|
@ -1,115 +0,0 @@
|
|||
Emdebian Bootstrapping
|
||||
======================
|
||||
|
||||
Cross-building can get very confusing at times. The confusion only increases
|
||||
when dealing with a chroot. This document tries to cover some of the reasons,
|
||||
some of the problems and tries to provide some clarity, at least as far as how
|
||||
chroots can be used in Emdebian.
|
||||
|
||||
There are multiple ways that Emdebian can relate to bootstrapping and chroots.
|
||||
The most common method of using a chroot within Debian is pbuilder and the
|
||||
pdebuild wrapper and this is the primary inspiration for using chroots in
|
||||
Emdebian. Other methods revolve around QEMU or scratchbox and whilst this code
|
||||
may be able to support such uses later, there are key differences in how and
|
||||
why this method is separate.
|
||||
|
||||
EMDEBIAN PBUILDER CHROOT MODEL
|
||||
==============================
|
||||
|
||||
The Debian pbuilder package exists to ensure package dependencies are complete
|
||||
and to provide an environment to automate package building on all supported
|
||||
Debian architectures without cluttering the build machine with every library
|
||||
and dev package in the entire archive. This is particularly useful when
|
||||
building GUI packages that can have two dozen dependencies or more. In
|
||||
Emdebian, this separation between the build system packages and the chroot
|
||||
packages becomes even more useful because cross-building often involves not
|
||||
only installing the library and -dev package for the build architecture (e.g.
|
||||
i386/amd64) but also building and installing the same library and -dev package
|
||||
(with dependencies) in the TARGET architecture, e.g. arm, with apt-cross and
|
||||
dpkg-cross. The chaos that could result from trying to upgrade the packages on
|
||||
an Emdebian buildd system with a duplicate set of cross dependencies is truly
|
||||
scary.
|
||||
|
||||
In the pbuilder model, an Emdebian chroot is the SAME architecture as the
|
||||
buildd - i386 on i386 etc. This mimics how emdebian-tools normally work.
|
||||
Packages are then downloaded, patched and cross-built for the target
|
||||
architecture, just as outside the chroot. This model, the pbuilder model of an
|
||||
emdebian chroot, concentrates on dependencies rather than the actual
|
||||
cross-building process. Inside such a chroot, cache files are used as normal to
|
||||
avoid having to run the cross-compiled code during the build.
|
||||
|
||||
The Emdebian chroot is similar in size to a normal Debian pbuilder chroot,
|
||||
mainly because it is a full build environment, not an installation environment.
|
||||
|
||||
This directory contains my experiments with debootstrap, using this pbuilder
|
||||
model, trying to make a complete Emdebian cross-building environment that can
|
||||
be compressed to a base.tgz. Changes to the chroot can be discarded, just as
|
||||
with pbuilder, allowing dependencies to be tested. The main benefit is that
|
||||
packages can be built without having to install long chains of cross
|
||||
dependencies via apt-cross or dpkg-cross on the main system. To me, it's the
|
||||
only way to cross-build GUI suites like GPE against a background of changing
|
||||
dependencies.
|
||||
|
||||
In the pbuilder model, Emdebian builds a chroot for the build architecture
|
||||
(amd64/i386 etc.) - except that it will run emdebian-tools instead of pbuilder
|
||||
to create the arm binaries (or whichever architecture is the dpkg-cross
|
||||
default). I expect the same code to work for arm chroots on amd64 etc, but
|
||||
mechanisms already exist for those so it's not the priority.
|
||||
|
||||
In order to make best use of the existing pbuilder code, these are shell scripts
|
||||
whereas the rest of emdebian-tools uses perl.
|
||||
|
||||
DEPENDENCIES
|
||||
------------
|
||||
|
||||
To emdebianise and cross-build packages, the chroot needs to install
|
||||
emdebian-tools. This brings in the majority of dependencies to support building
|
||||
Debian and Emdebian packages. This (current sample) code uses part of the
|
||||
pbuilder source so that the eventual chroots behave as similarly as possible to
|
||||
pbuilder and pdebuild in Debian. Therefore, the emdebian pbuilder chroot is NOT
|
||||
designed or intended to be installed on any embedded device - it is intended for
|
||||
cross-building packages for Emdebian only. See the SLIND installer for more
|
||||
information or the emsandbox script in emdebian-tools.
|
||||
|
||||
empdebuild depends on pbuilder and installing emdebian-tools within a chroot
|
||||
causes pbuilder to be installed inside the chroot. Whilst empdebuild and emsandbox
|
||||
could be split out into a separate package to prevent pbuilder being needed inside
|
||||
the chroot, there are corner cases where this can be useful providing sufficient
|
||||
care is taken.
|
||||
|
||||
DIFFERENCES TO PBUILDER
|
||||
-----------------------
|
||||
|
||||
1. emdebian-tools handles the 'installaptlines' subroutine.
|
||||
2. emdebian-tools dependencies handle the installation of build-essential dpkg-dev
|
||||
and apt that pbuilder normally does separately.
|
||||
3. emdebian-tools handles the BUILDPLACE via debconf.
|
||||
4. Other embootstrap options are hardcoded - BUILDRESULT is placed in BUILDPLACE,
|
||||
APTCACHE also and APTCACHEHARDLINK is set to yes.
|
||||
5. emdebian-tools provides the emdebianised source package and patches.
|
||||
|
||||
EMDEBIAN NATIVE CHROOT MODEL
|
||||
============================
|
||||
|
||||
The same code should also be able to create a native chroot so that the
|
||||
cross-built packages can be installed alongside each other for more testing.
|
||||
These chroots have already been tested and instructions exist in the Wiki:
|
||||
http://wiki.debian.org/EmDebian/CrossDebootstrap
|
||||
|
||||
Trying to cross-build inside scratchbox limits you to where scratchbox will
|
||||
install which is only certain architectures. emdebian-tools is about
|
||||
cross-building Debian packages using normal Debian tools on a normal Debian
|
||||
system. Emdebian and emdebian-tools are designed to make building inside
|
||||
scratchbox redundant because it simply isn't sufficiently flexible. A
|
||||
scratchbox2 has been mooted but nothing has happened yet.
|
||||
|
||||
Cross-build using normal tools (maybe using the chroot as above) and then test
|
||||
either on a native device or via scratchbox if you really have to.
|
||||
|
||||
An Emdebian native chroot would be an arm chroot running on an amd64 system -
|
||||
indeed it would need to support creation of a chroot *for* any supported Debian
|
||||
architecture and be able to create and run that chroot *on* any supported
|
||||
Debian architecture.
|
||||
|
||||
This is only the first draft - if there are areas that need further clarification
|
||||
or updating, please email the debian-embedded mailing list.
|
Loading…
Reference in a new issue