[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Hopeful get Emdebian on i386 working! with a little help!! please

On Wed, 2008-01-23 at 16:11 +0000, Tim Massey wrote:
> Hello
> I am looking to get emdebian working on i386, so I have started a trac site
> for the use of anyone who want to its available at
> http://temsc.co.uk/emdebian 

Please re-read the manpages - you've misunderstood several parts of

1. there is no point using emsandbox to create a build chroot - that is
for building root filesystems from the Emdebian repository (currently
only ARM packages exist). Use debootstrap as normal - omit the --foreign
option. (Don't use empdebuild either.)
"emsandbox is a wrapper for debootstrap to prepare an Emdebian root
filesystem, using Emdebian packages and a native chroot via 'debootstrap
--foreign' and code from pbuilder. The native chroot is intended to
support testing of a rootfs and package installability."

You don't want an Emdebian root filesystem (you haven't got any packages
to put into it), you want a build chroot in order to create the packages
in the first place.

2. em_make is *not* equivalent to emsource. em_make is an automated
attempt to remove some of the elements that Emdebian does not need but
most of the changes cannot be automated. em_make is a helper, it just
does the simplest substitutions that almost every package needs - it
cannot do anything specific to particular packages. Most packages need
specific patches and these created by hand and obtained by emsource.
"em_make only does so much - many packages will require manual editing
of debian/rules or other files to make a usable emdebian package."
Maybe, one day, em_make could be enough but only when all packages have
had cross-building support patches applied in Debian and when the Debian
build tools have been further tweaked to support DEB_BUILD_OPTIONS

3. You describe installing the version of emdebian-tools from testing
onto Etch. This is completely unsupported. emdebian-tools is best run
within unstable and it is advisable to create a debootstrap chroot for
Debian unstable for this purpose and build all of your packages in a
genuine 'Debian unstable' environment (and use dependencies from
unstable). You also need to ensure you are using the latest version of
emdebian-tools that is available via the Emdebian unstable toolchain
repository - even though you aren't using a cross building toolchain.
(Installing emdebian-tools makes this repository available to you but
only unstable is supported.) Current release is 0.7.4.

     0.7.4 0
        500 http://www.emdebian.org unstable/main Packages
     0.7.0 0
        500 ftp://ftp.uk.debian.org unstable/main Packages

> I have come across my first major stopping point so I would love some help I
> go all the source I needed to get me started... 
> apt apt-utils adduser attr base-files base-passwd bsdutils bsdmainutils
> cdebconf cron coreutils cpio dhcp3-client dhcp3-common dpkg dselect
> debianutils diff e2fslibs e2fsprogs findutils grep gzip iptables hostname
> ifupdown initscripts iputils-ping ed aptitude libdevmapper1.02 libbz2-1.0
> libattr1 libc6 libncurses5 libpam0g libpam-modules libpam-runtime logrotate
> libselinux1 libncursesw5 libpopt0 libreadline5 lsb-base libsepol1 login
> libacl1 libwrap0 libcomerr2 libblkid1 libuuid1 libss2 liblzo1 libtasn1-3
> libsigc++-2.0-0c2a makedev mawk mount module-init-tools mktemp ncurses-base
> ncurses-bin net-tools netbase netcat readline-common passwd procps sed
> sysv-rc sysvinit sysvinit-utils tar tzdata tcpd openbsd-inetd traceroute
> nano util-linux update-inetd wget zlib1g

All those packages need customised patches to work for Emdebian and
where those patches already exist, they are in Emdebian SVN. Some of
those patches (the cache-file patches) are ARM-specific and these would
need work to adapt them for another architecture. *HOWEVER* you are not
cross building so the cache files are not relevant to your build.

Some of those packages cannot *be* cross built right now or have
dependencies that cannot be cross built. Emdebian does not need that
list because you'll need busybox instead of coreutils et al.

BUT - you are *not* cross building here so you need to make your own
selections. To build Emdebian packages, you need emdebian patch files
which are in Emdebian SVN and are made available by emsource. Note that
these patch files might not exist for all your packages and those that
do exist may be in need of an update if a new Debian release has been
uploaded to unstable recently. If emsource cannot apply the patches, it
will warn you and you will need to adapt the patches in your favourite
editor and/or with the help of 'meld'.

Take a look at the packages used by the Emdebian root filesystem (i.e.
the ones you need to build for i386 in order to create an i386 root
filesystem for installation onto your device)
in /usr/lib/emdebian-tools/emdebian.crossd

> and then started with apt did the em_make no errors then tried emdebuild but
> got errors I thought this was likely so I thought I would move on to the
> next package same thing happened for the first 4 packages!

That is probably because you have confused the purpose of em_make.
em_make is like dh_make - it prepares the package for later (manual)
work. Few packages will build immediately after running dh_make (CDBS
usually does quite a good job) and the same applies to em_make. Both are
intended to be run prior to manual editing of the specific package
files. Even if a package builds first time after dh_make, it clearly
needs more work before it can be made available to others.

emsource includes the results of other (manual) changes to complete the
emdebianisation [sic] of the package, building on what em_make has
already done and the manual changes that follow.

99% of all changes within packages need to be done manually - you edit
the files yourself, you bug test it yourself, you implement the changes
yourself. To do this, you need a thorough understanding of *all* methods
of building Debian packages including dpkg, debhelper, dbs and cdbs as
well as a familiarity with the autotools documentation, libtool docs,
dpatch, quilt, Debian Policy and scripts from the devscripts package. OR
you use the patches already in Emdebian SVN via emsource which are the
result of my manual changes in the relevant packages.

OK, the tickets:
You haven't installed the native build dependencies of this package. You
are not cross building so you need the native build dependencies, just
as with a normal build. Always ensure that the normal Debian package
builds correctly in your environment before blaming emdebian-tools.
Checking cross-build dependencies is not a trivial task and you don't
need them anyway, you need native. (emdebuild does not check native
build dependencies because cross build dependencies may differ and
cannot depend on the native versions so in some ways, it is useful *not*
to have the native versions installed, especially in a build chroot
# apt-get build-dep $package

Same for 2.

3 is the result of not checking what em_make has done and doing the
manual edits in debian/rules, leaving an invalid rules file. Use 'meld'
to compare the original version against the modified one - often this
results from em_make being unable to determine the end of a split line,
leaving a stub behind. This is one benefit of using emdebuild - it
ensures that you have a copy of the debian/* files
in ../$package.old/debian/ for use with meld.

4 is build dependencies again.

You need to ensure that the packages build normally in your setup, then
proceed to make your changes.

emdebian-tools describes itself as the "emdebian crossbuilding tool set"
- you are not cross building so most of emdebian-tools is of no
relevance to your system. By all means use the patches provided by
emsource but be careful *not* to cross build the package itself.

You are a *long* way from getting Emdebian working on i386. I'd estimate
several months of work lie ahead.


Neil Williams

Attachment: signature.asc
Description: This is a digitally signed message part

Reply to: