I think an announcement may be better once it actually hits the Debian archive. Definitely one for DPN though. Neil On Wed, Feb 27, 2013 at 09:59:23AM +0200, Andrei POPESCU wrote: > Definitely worth a news entry, but what about an announcement? > > Andrei > > ----- Forwarded message from Wookey <wookey@wookware.org> ----- > > Date: Wed, 27 Feb 2013 02:10:40 +0000 > From: Wookey <wookey@wookware.org> > To: cross-distro@lists.linaro.org, debian-arm@lists.debian.org, linaro-dev@lists.linaro.org, debian-devel@lists.debian.org, > ubuntu-devel@lists.ubuntu.com > Subject: arm64 Debian/Ubuntu port image available > Mail-Followup-To: cross-distro@lists.linaro.org, debian-arm@lists.debian.org, linaro-dev@lists.linaro.org, debian-devel@lists.debian.org, > ubuntu-devel@lists.ubuntu.com > Organization: Wookware > User-Agent: Mutt/1.5.20 (2009-06-14) > > State of the Debian/Ubuntu arm64 port > ===================================== > > *** Arm64 lives! *** > > Executive summary > ----------------- > > * There is now a bootable (raring) image to download and run > * Everything has been rebuilt against glibc 2.17 so it works > * A bit more work is needed to make the rootfs useable as a native buildd > * Multiarch crossbuilding and the build-profile mechanism is mature enough to cross-build > a port from scratch (this is a big deal IMHO) > * All packages, sources and tools are in a public repo and this work should be reproducible. > * This image is fully multiarched so co-installing armhf for a > 64/32 mix should work nicely, as should multiarch crossbuilding to > legacy x86 architectures. :-) (but I haven't tried that yet...) > > > * Linaro wants 'the distros' to take this work forward from here so people interested in > Debian and Ubuntu on 64-bit arm hardware need to step up and help out. > > > Bootable images > --------------- > > A milestone was reached this week: Enough packages were built for arm64 to debootstrap an > image which booted to a prompt! After a bit of fettling (and switching to multistrap) I got > an image with all the packages configured which boots with upstart to a login prompt (I > admit, I did get quite excited about this, as it represents the coming together of nearly 3 > years work on multiarch, crossbuilding, bootstrapping, cyclic dependencies and arm64 :-) > > The images are available for download: http://wiki.debian.org/Arm64Port#Pre-built_Rootfs > And there are destructions there for making your own. > > All these packages were cross-built on raring, untangling cyclic dependencies with build > profiles (see wiki.debian.org/DebianBootstrap for how that works), making this the first > (non x86) self-bootstrapped debian port ever (so far as I know). All (?) previous ports have > been done using something else like OpenEmbedded (armel, armhf), RedHat/HardHat (arm, alpha, > mips), something IBMy (s390) to get an initial linux rootfs on which debian packages are > built. > > The new bootstrap process is (almost) just a list of sbuild commands. In practice there are > still a few rough edges around cross- build-dependencies so of the 140 packages needed for > the bootstrap, 9 had to be built manually with 'dpkg-buildpackage -aarm64 -d' (to skip > build-dep checks) instead of 'sbuild --host arm64 <package>'. > > The current bootstrap packageset status is here: > http://people.linaro.org/~wookey/buildd/raring-arm64/status-bootstrap.html > > There is no armv8 (arm64/aarch64) hardware available yet, so this image can currently only > be run in a model. ARM provide a free-beer prorietary 'Foundation model' so we do have > someting to test with. It's sluggish but perfectly useable. Booting the images takes a > couple of minutes on my fairly average machine. > > The images are using the Linaro OE release kernels which seem to work fine for this purpose. > Thanks to Marcin for modified bootloader lines in .axf files. > > > > Image status > ------------ > > I was impressed that things basically 'just worked' on first boot. There is of course plenty > of breakage, I'm sure, and I haven't looked very hard yet, but it's a lot better than I > expected after months of just building stuff and testing nothing. (Things that are poorly: > nano can't parse it's own syntax-coluring files for example, and multiarch perl has the > wrong @INC path compiled in; I'm sure there is more). Consider this alpha-grade until it's > been used a bit more. > > Things that are not yet built which would make the images a lot more useful are apt and a > dhcp client. apt needs gnupg needs curl needs nss. The nss cross-build needs fixing to > unbung that. A debian chroot without apt turns out to be disappointing quite quickly :-) > Expect an updated image with more packages very soon. > > > Multiarch crossbuilding > ----------------------- > > It's really nice to have building and crossbuilding using exactly the same mechanisms > and tools, with all files having one canonical location, and dependency mechanisms that > are reliable. The more I've used this, the more I've been impressed by it. There is > still work to do to expand the set of cross-buildable stuff, but it's a solid base to > work from. > > Getting this port working has been 'interesting' because it's attempting 4 new things all at > once: multiarch (file layouts and dependencies), crossbuilding (tools and packaging support > in a distro that historically was always natively built), arm64 (aarch64) support in > packages that need it, and build-profiles to linearise the build-order. > > The arm64 part of this is a relatively small part as the heavy lifting has been done > upstream (gcc, (e)glibc, binutils, kernel, libffi, autotools and a lot of minor fixes in > various packages). Thanks are due to doko (Matthias Klose) for sterling work getting all > that integrated into the debian and ubuntu toolchain packages, and infinity (Adam Conrad) > for merging various eglibc branches. There were also hordes of very boring patches of the > form 'update config.sub and guess before building'. > > Most of the work has been in making things cross-build (exactly the same fixes needed for > armel/hf too so I've had plenty of help there from canonical types who want cross-building > for arm to work nicely), and particular thinks to Neil Williams for taking on the perl > cross-build challenge and creating the debian-perl-cross package to manage the > cross-configury, whilst also working with upstream to make the whole thing a bit less 1996. > > Multiarchifying has been going on nicely in libraries and -dev packages, but things like > perl and python needed significant work, along with a lot of boring bugs saying 'mark this > package MA: foreign' and 'build-dep on python:any or perl-base:any'. Thanks are due to doko > for the python multiarching and Niko Tyni for the perl multiarchification. Getting all 3 > 'aspects' of multiarch perl, cross-built perl and arm64 perl config to work at the same time > was quite hard work, and there are still bugs there. Wider usage of multiarched perl would > no doubt sort this out reasonably quickly. I started a wiki page to track the status of > multiarched cross-buildable perl: http://wiki.debian.org/Multiarch/Perl . Help would be > welcome. > > The build-profile work is described on the http://wiki.debian.org/DebianBootstrap page. > Progress has been greatly helped by GSOC projects last year, with good work on the tools > (crossbuild-essential packages, build-profile support) from P.J McDermott and an impressive > contribution from Johannes Schauer on dependency analysis tools around libdose, and apt > build-profile support. > > > All of this apart from multiarch perl, crossbuildable perl and build-profile stuff (and > a few pending patches) is already in raring. > > > Building stuff yourself > ----------------------- > > Setting up an arm64 build environment is very simple. Use sbuild-createchroot or mk-sbuild > and point at the bootstrap repo, with a bit of config and some updated tools packages from > the repo (amd64 only supplied). Details are given on > https://wiki.linaro.org/Platform/DevPlatform/CrossCompile/arm64bootstrap > > Once you've created a tarball chroot builds are simply done with > sbuild -c quantal-amd64-sbuild -d quantal --host=arm64 <package.dsc> or > sbuild -c quantal-amd64-sbuild -d quantal --host=arm64 <package>_<version> (I'd love it > if sbuild got smart enough to work out the version itself when given a distro - Roger > says he's working on it) > > To deal with the chore of 'find version, run sbuild, sign result, upload to repo, import to > repo, deal with reprepro bitching if you re-upload the same version of something' for every > package build, I wrote 'dimstrap' which is a simple-minded tool to wrap that up and either do > one-off builds or run through a list. It is part of the xbuilder package here: > https://launchpad.net/~linaro-foundations/+archive/cross-build-tools/ It also includes the > logfile-parsing script ('generate html') which generates the nice status pages: > http://people.linaro.org/~wookey/buildd/raring-arm64/status-bootstrap.html > > > Image building > -------------- > > The config and instructions provided (in > http://wiki.debian.org/Arm64Port#Building_your_own_rootfs_image ) is > for multistrap. Debootstrap sort-of produces working images too but > takes a lot longer to unpack/configure, and misses out various vital > packages (like libperl5.14). I'm sure it could be kicked into > submission. In theory multistrap (apt really) should have got all the > arch all packages from the main repo, but in practice it refused to do > that so I had to rebuild them or copy them over anyway (grumble). > > Any package that installs replaced conffiles seems to generate invalid > dpkg status entries (ifupdown did this to me). I've not got to the > bottom of that yet. Deleting the offending line gets you an image that > works. > > Issues > ------ > > General: > > The build-profile patches for dpkg and apt need to be pushed into the distro to make > that feature permanent. A thread on debian-devel is working on that > (http://debian.2.n7.nabble.com/Bootstrappable-Debian-proposal-of-needed-changes-td2848200.html). > The main issue is what syntax to use '<>' or '[]' and how to deal with multiple overlapping > profiles. The patches to debian control cannot go in until at least the syntax is agreed and > the tools will parse them without barfing. Johannes ands I will send an updated spec > soonish. > > The missing piece of bootstrapping with regard to build-deps is packages that build-dep on > gcc-4.6 or binutils. When cross-building this should be satisfied by <triplet>-gcc-4.6 or > <triplet>-binutils. Nothing makes that happen currently. A scheme has been mooted but > nothing is implemented yet. > > There is debate about whether cross-toolchains should build against multiarch libraries > (libgcc, libstdc++) like everything else, or have their own internal copies. Doko and I > disagree on this matter. That will need to be worked out at some point. > > We won't get that much further with fixing cross- object-introspection, which is a > non-trivial job. > > Image-related: > > The images do essentially work but very little has been tested so far. > > Multiarch perl still needs work. > > nss needs cross-building in order to get apt cross-built > > I've not got networking working yet. Info is here: > https://fedoraproject.org/wiki/Architectures/ARM/AArch64/FoundationModel_Networking > lack of a dhcp client in the image hasn't helped there. > > > More info > --------- > > The canonical arm64 port info page is: > http://wiki.debian.org/Arm64Port > > Full arm64 cross-build status (i.e everything that has been tried) is here: > http://people.linaro.org/~wookey/buildd/raring-arm64/status.html > > All the patches generated so far are here: > http://people.debian.org/~wookey/bootstrap/patches/ > > (most that can, have been filed as bugs - there is a backlog of stuff > filed in Launchpad but not yet forwarded to the Debian BTS - yes I am > a bad boy - blame the fact that you can't use reportbug or bts from > inside ARM due to their idiotic email policies). > > > Future work > ----------- > > Firstly we should say thank you to Linaro for sponsoring this work in various ways over > the last 3 years. We wouldn't be at this point now if it wasn't for that. However > Linaro has a lot of things to do and is trying hard not to do distro's work for them, > concentrating on upstream things. This makes sense for commercially-backed distros like > Red Hat and Ubuntu, but rather less for Debian where we _are_ the distro just as much > as anyone else is, and ultimately someone has to spend the time to get stuff working. > > Anyway, I was supposed to stop work on this some time back, but have largely failed to > do so (cross-building is so moreish - there is always one more build to try before > bedtime!) and appreciate being given enough slack to get this to a point of actual > utility. However I expect to have much less time to spend on this from now on, except > insofar as it still co-oncides with things Linaro wants doing. I'd love to hear from > people who actually want to use this, to get more packages built, the Debian > cross-toolchains sorted, build-profiles finalised, and a whole pile of stuff fixed once > Wheezy is released. I'm pretty sure there are quite a lot of people who want multiarch > Debian or Ubuntu on their arm64 machines (or models). > > I hear rumours that actual hardware may appear sometime around the middle of the year > with some bagsied for Debian. Setting up the ports infrastructure for that would be > good. I don't know if anyone is interested in building slowly on models in the > meantime, or if we should just carry on crossing and see how far we get. This table > shows that 471 packages in raring can be expected to cross-build already: > http://people.canonical.com/~cjwatson/cross/armhf/raring/ > > Todo: > > Fix up multiarch/cross perl > Fix nss > Build missing packages for apt > Build missing packages for build-essential > Build Debian cross-toolchain > Get all this working in unstable as well as raring > Setup buildds > Build all the other packages > Set up automated bootstraping runs (eventually) > > > Current setup > ------------- > > Builds have all been run locally using the sbuild/chroot setup described above and on > the Arm64Port page, which should be easy for anyone to reproduce. The main irritation > is keeping up with raring: out of sync libraries are not MA-installable. Logs are > uploaded to people.linaro.org (rsync). The reprepro repo is on people.debian.org > (dupload). This stuff should probably move to ports.debian.org and ports.ubuntu.com, > but neither of those are set up for cross-building so I'm not quite sure how this will > work. > > I could go on at great length about the machinery of profiled bootstrap builds, and > interactions between tools, but it's not very exciting, so will resist. Suffice it to > say that whilst it's all pretty slick I'd still like better buildd tools. > > > Build-profile changes > --------------------- > > The build-profile patches are not yet upstreamable so are collecting in the repo. > The patch set so far is here: http://people.debian.org/~wookey/bootstrap/patches/profiles/packages/ > > > Other thanks: > Other people who have helped make this happen in various ways but not got a mention above: > Colin Watson, Dmitry Ledkovs, Steve Langasek, Harry Leibel, Thibaut Girka, Roger Leigh, > Marcus Shawcroft, James Morrisey, Jonathan Austin, Steve McIntyre, Peter Pearse, Aurelien > Jarno, and whoever does sysadmin at people.{linaro,debian}.org > > I hope I didn't forget anyone, or any important information. > > Feedback from anyone attempting to get this working outside my computer is very > welcome. I have almost certainly forgotten to write down some things, and upload > correct versions of some other things. > > > Wookey > -- > Principal hats: Linaro, Emdebian, Wookware, Balloonboard, ARM > http://wookware.org/ > > > -- > To UNSUBSCRIBE, email to debian-devel-REQUEST@lists.debian.org > with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org > Archive: http://lists.debian.org/20130227021039.GN5031@stoneboat.aleph1.co.uk > > > ----- End forwarded message ----- --
Attachment:
signature.asc
Description: Digital signature