crosstoolchains in debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf ·...
TRANSCRIPT
![Page 1: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/1.jpg)
Crosstoolchains in Debian
Wookey
The Cross-building victim
Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 1 / 32
![Page 2: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/2.jpg)
MultiarchCross
Historical Context
Toolchain build flavours
Packaging for Jessie
Current status
Future craziness
Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 2 / 32
![Page 3: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/3.jpg)
Outline
1 Toolchain Basics
2 Toolchain Packaging
3 Current Packages
4 Future goodness
Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 3 / 32
![Page 4: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/4.jpg)
Nomenclature
Build : Machine/architecture you are building on
Host : Machine/architecture package is being built for
Target : Machine/architecture a compiler generates code for
Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 4 / 32
![Page 5: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/5.jpg)
Toolchain
There are 2 aspects to multiarching toolchains
System search pathsI path for libs and system headers (<> includes)I Previously /usr/include/ (native), /usr/<triplet>/include (cross)I Now always /usr/include/<triplet>:/usr/include/I Previously /usr/lib/ (native), /usr/<triplet>/lib (cross)I Now always /usr/lib/<triplet>:/usr/lib:/lib/<triplet>:/lib
Build mechanismI Standalone libc6-armel-cross arch allI Multiarch Depend on libc6:armel, libgcc1:armel
Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 5 / 32
![Page 6: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/6.jpg)
Toolchain History
2003 - emdebian cross-toolchains (non MA)
2010 - linaro/ubuntu cross-toolchains (MA paths)
2012 - multiarch-built cross-toolchains (MA paths, MA built)
2013 - bare-metal cross-toolchains (MA irrelevant)
2014 - secretsauce.net cross-toolchains (MA paths, MA built)
2014 - cross-toolchains in archive (MA paths, MA built)
Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 6 / 32
![Page 7: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/7.jpg)
Bits and Bobs
Other things are needed for a smooth experience
build-essential-<arch> packages
<triplet>-pkg-config → pkg-config-crosswrapper
toolchain defaults links (arm-linux-gnueabi-gcc →arm-linux-gnueabi-gcc-4.9)
autoconf cache/cmake TOOLCHAIN file (in dpkg-cross)
<triplet>-tools
sbuild support for crossbuilding
multiarched libraries and -dev packages
multiarch foreign tools
Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 7 / 32
![Page 8: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/8.jpg)
Actually building
Build locally:
sbuild –host <arch>
Best in a chroot:
sbuild –host <arch> -d <distro> <package> <version>
1 chroot into <distro> (clean) chroot
2 update/upgrade
3 dpkg –add-architecture <arch>
4 apt-get install crossbuild-essential-<arch> (configurable)
5 apt-get -a <arch> build-dep <package>
6 CONFIG SITE=/etc/dpkg-cross/cross-config.<arch>dpkg-buildpackage -a <arch>
7 clean up after build (throw away chroot)
Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32
![Page 9: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/9.jpg)
Outline
1 Toolchain Basics
2 Toolchain Packaging
3 Current Packages
4 Future goodness
Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 9 / 32
![Page 10: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/10.jpg)
Cross-toolchain-base packaging
‘3-stage’ bootstrap
1 Linux stage1 linux-libc-dev headers2 Binutils Binutils3 GCC stage1 Bare C-compiler4 glibc stage1 Minimal libc5 GCC stage2 C-compiler against eglibc6 glibc stage2 Full libc build (without libselinux)7 GCC stage3 All compilers
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 10 /
32
![Page 11: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/11.jpg)
Multiarch Toolchain build
Source: linux ⇒ linux-libc-dev:armhf
Source: binutils-cross ⇒ binutils-arm-linux-gnueabihf
Source: gcc-4.9 ⇒ libgcc1:armhf, libstdc++:armhf
Source: cross-gcc-4.9-armhf ⇒ gcc-4.9-arm-linux-gnueabihfwith deps on target arch pkgs=yes dpkg-buildpackage
--target-arch armhf -d -T control
with deps on target arch pkgs=yes dpkg-buildpackage
--target-arch armhf -b
Build-depends: gcc-4.9-source:all, libc6-dev:armhf, libgcc1:armhf,libstdc++-dev:armhf
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 11 /
32
![Page 12: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/12.jpg)
Standalone Toolchain build
Source: linux ⇒ linux-libc-dev-armhf-cross:all
Source: binutils-cross ⇒ binutils-arm-linux-gnueabihf
Source: gcc-4.9 ⇒ libgcc1-armhf-cross:all, libstdc++-armhf-cross:all
Source: cross-gcc-4.9-armhf ⇒ gcc-4.9-arm-linux-gnueabihfdpkg-buildpackage --target-arch armhf -d -T control
dpkg-buildpackage --target-arch armhf -b
Build-depends: gcc-4.9-source:all, libc6-dev-armhf-cross:all,libgcc1-armhf-cross:all,libstdc++-dev-armhf-cross:all
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 12 /
32
![Page 13: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/13.jpg)
Considerations - multiarch
Only one libc, libstdc++, libgcc
Simple gcc build using existing stuff, aginst deps
Build against deps is normal case, bootstrap is exceptional
Can be used for bootstrap (rebootstrap)
Multiarch sync makes unstable uninstallable (gcc upload once/week)
Needs multiarch-build-ready infrastructure
Does not do multilib
Works today
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 13 /
32
![Page 14: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/14.jpg)
Considerations - multiarch
Only one libc, libstdc++, libgcc
Simple gcc build using existing stuff, aginst deps
Build against deps is normal case, bootstrap is exceptional
Can be used for bootstrap (rebootstrap)
Multiarch sync makes unstable uninstallable (gcc upload once/week)
Needs multiarch-build-ready infrastructure
Does not do multilib
Works today
Makes Doko angry
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 13 /
32
![Page 15: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/15.jpg)
Considerations - standalone
2 copies of libc, libstdc++, libgcclets configure/linker find/use the wrong one
3-stage bootstrap builds stuff we already have(kernel headers, libc, libgcc, libstdc++)
Slow, lots to break
Can install and build kernels without multiarch sync
Multiarch sync for package builds (libgcc1)
Useful for new arch, not yet in archive
No buildd/wanna-build changes needed
Broken on Debian for last 2 years
Not keen to maintain this
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 14 /
32
![Page 16: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/16.jpg)
Possible 3rd way
Split binutils out (done)
Separate gcc build from libraries build (mostly done)
Build cross-gcc standalone
Toolchain-base generates -cross libraries using dpkg-cross
Toolchain-base has foreign-arch build-deps
Sbuild+wanna-build update, but not britney
Avoids glibc/gcc dance
Unstable toolchains remain installable
Quick, simple builds
Only slightly ugly
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 15 /
32
![Page 17: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/17.jpg)
Multilib vs Multiarch
build i386 binaries
i386-linux-gnu-gccx86 64-linux-gnu-gcc -m32
build armel binaries
armel-linux-gnueabi-gccarmhf-linux-gnueabihf -mfloat-abi=softfp
Current cross-gcc built with DEB CROSS NO BIARCH=yes
What needs multilib?
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 16 /
32
![Page 18: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/18.jpg)
Outline
1 Toolchain Basics
2 Toolchain Packaging
3 Current Packages
4 Future goodness
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 17 /
32
![Page 19: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/19.jpg)
cross-binutils
Built for all released linux arches
arm64 binutils-aarch64-linux-gnu
armel binutils-arm-linux-gnueabi
armhf binutils-arm-linux-gnueabihf
i386 binutils-i586-linux-gnu
mips binutils-mips-linux-gnu
mipsel binutils-mipsel-linux-gnu
mips64el binutils-mips64el-linux-gnuabi64
powerpc binutils-powerpc-linux-gnu
ppc64le binutils-powerpc64le-linux-gnu
amd64 binutils-x86-64-linux-gnu
Right set?
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 18 /
32
![Page 20: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/20.jpg)
cross-gcc
One source package per arch.jessie linux non-x86 archesBuilt on amd64cpp, gcc, g++, gfortran (gccgo, gobj in p.d.o repo).
arm64 cross-gcc-4.9-arm64
armel cross-gcc-4.9-armel
armhf cross-gcc-4.9-armhf
mips cross-gcc-4.9-mips
mipsel cross-gcc-4.9-mipsel
powerpc cross-gcc-4.9-powerpc
ppc64el cross-gcc-4.9-ppc64el
Right set?
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 19 /
32
![Page 21: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/21.jpg)
cross-gcc-defaults
Exactly like gcc-defaults
cross-gcc-4.9-armhf (arch any)
cpp-4.9-arm-linux-gnueabihfgcc-4.9-arm-linux-gnueabihfg++-4.9-arm-linux-gnueabihfgfortran-4.9-arm-linux-gnueabihf
cross-gcc-defaults (arch all)
cpp-arm-linux-gnueabihf ⇒ cpp-4.9-arm-linux-gnueabihfgcc-arm-linux-gnueabihf ⇒ gcc-4.9-arm-linux-gnueabihfg++-arm-linux-gnueabihf ⇒ g++-4.9-arm-linux-gnueabihfgfortran-arm-linux-gnueabihf ⇒ gfortran-4.9-arm-linux-gnueabihf
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 20 /
32
![Page 22: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/22.jpg)
crossbuild-essential
Built from build-essential source package
crossbuild-essential-armhf
crossbuild-essential-armel
crossbuild-essential-mips . . .
Empty package depending on:
gcc-<triplet>
g++-<triplet>
libc-dev:<arch>
build-essential:native
Installed by default by sbuild when crossingObsoleted by multiarch/gcc-for-host in Jessie+1
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 21 /
32
![Page 23: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/23.jpg)
Crosstoolchain Release Goal
So near and yet so far . . .
cross-binutils uploaded April, in testing 22nd Sept.
sbuild (multiarch-build) in testing 8th Oct
wanna-build patches tested/done 15th Oct
cross-gcc uploaded 22nd Oct
rebuilt against testing gcc 4.9.1-19 29th Oct
cross-gcc-defaults 24th Oct
cross-gcc must wait for last gcc upload - will be late
cross-gcc only builds in jessie, not stable
wanna-build/britney updates needed
build-essential went to experimental 25th Oct (trouble!)
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 22 /
32
![Page 24: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/24.jpg)
Consistent Target Arch Specifier
Consistent target arch env var
binutils: $TARGETgcc: $DEB GCC TARGET or $GCC TARGETgdb: $GDB TARGET
Should be $DEB TARGET ARCH everywhere
Consistent dpkg-buildpackage usage
dpkg-buildpackage –target-arch <arch>(sets $DEB TARGET ARCH, in dpkg 1.17.17)
overrides DEB TARGET ARCH in env
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 23 /
32
![Page 25: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/25.jpg)
dh-autoreconf is good
Consensus for dh-autoreconf (and/or autotools-dev)
http://wiki.debian.org/Autoreconf
Remove loads of makework, permanently
Actually build from source
No more 60K packages with 1Mb autotools diffs!
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 24 /
32
![Page 26: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/26.jpg)
Outline
1 Toolchain Basics
2 Toolchain Packaging
3 Current Packages
4 Future goodness
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 25 /
32
![Page 27: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/27.jpg)
Co-installable toolchains
https://wiki.debian.org/CoinstallableToolchains
Currently not possible to install gcc:i386 and gcc:amd64 together
Currently
gcc-<ver> contains the native compilergcc-<ver>-<triplet> contains a cross-compiler
Proposed
gcc-<ver>-x86 64-linux-gnugcc-<ver>-i386-linux-gnugcc-<ver>-arm-linux-gnueabihf
Need some symlinks swapping in the packaging to work
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 26 /
32
![Page 28: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/28.jpg)
Build dependency translation
Some build-deps change name when crossing
binutils → binutils-<triplet>gcc-4.8 → gcc-4.8-<triplet>pkg-config → pkg-config-<triplet>g-ir-scanner → g-ir-scanner-<triplet>
6 possible solutions:https://wiki.debian.org/CrossTranslatableBuildDeps
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 27 /
32
![Page 29: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/29.jpg)
Orthogonal toolchains
Package Layout
for amd64Package: gcc-for-buildArchitecture: allMulti-Arch: foreignDepends: gccContents: empty
Package: gcc-for-hostArchitecture: mipsMulti-Arch: sameDepends: gcc-mips-linux-gnuContents: empty
for mipsPackage: gcc-for-buildArchitecture: allMulti-Arch: foreignDepends: gccContents: empty
Package: gcc-for-hostArchitecture: amd64Multi-Arch: sameDepends: gcc-x86-64-linux-gnuContents: empty
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 28 /
32
![Page 30: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/30.jpg)
Orthogonal toolchains 2
Package Layout
for amd64Package: gcc-mips-linux-gnuArchitecture: amd64Multi-Arch: foreignContents:
/usr/bin/mips-linux-gnu-gcc
Package: gcc-x86-64-linux-gnuArchitecture: amd64Multi-Arch: foreignDepends: gccContents: empty
for mipsPackage: gcc-mips-linux-gnuArchitecture: mipsMulti-Arch: foreignDepends: gccContents: empty
Package: gcc-x86-64-linux-gnuArchitecture: mipsMulti-Arch: foreignContents:
/usr/bin/x86 64-linux-gnu-gcc
wiki.debian.org/Sprints/2014/BootstrapSprint/Results
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 29 /
32
![Page 31: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/31.jpg)
Source Build Depends?
Binary-source packages are a workaroundBuild-depends: binutils:src nicer(gcc-4.9-source is patched, gcc-4.9:source is not)
What would it take to fix?What directory to install to?Allow apt-get source foo during build?
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 30 /
32
![Page 32: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/32.jpg)
Policy needs updating
Multiarch is not described in policy.We need to fix that!
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 31 /
32
![Page 33: Crosstoolchains in Debian - wookware.orgwookware.org/talks/crosscompilers-minidebconf2014.pdf · Wookey (Linaro) Crosstoolchains in Debian MiniDebconf, Cambridge, 2014 8 / 32. Outline](https://reader031.vdocuments.site/reader031/viewer/2022020114/5c4d124393f3c3245e28c18a/html5/thumbnails/33.jpg)
The End
Thanks to various people
Linaro for funding this work
Cross-toolchains teamI Dima Kogan (toolchain, sbuild, wanna-build fixes)I Thibaut Girka (multiarch cross-toochains)I Helmut Grohne (toolchain fixes, rebootstrap)I Agustin Henze, Thomas Preud’homme, Keith Packard (bare-metal)
Various useful people: Johannes Schauer, Steve Langasek, ColinWatson, Marcin Juskiewicz, Mattias Klose, Hector Oron, NeilWilliams
Further reading: https://wiki.debian.org/CrossToolchains
Further reading: https:
//wiki.debian.org/Sprints/2014/BootstrapSprint/Results
Wookey (Linaro) Crosstoolchains in DebianMiniDebconf, Cambridge, 2014 32 /
32