Bootstrap Sprint
Location, Date
- when: August 16-19. (Sat-Tue)
where: Irill, Paris
The full sprint will run for 4 days from 10am Sat 16th to 6pm Tue 19th. But if you prefer to arrive during Sat or leave Tue afternoon, due tue time or travel constraints, that's fine. Saturday is kind of optional
Participants
- Helmut Grohne (rebootstrap) (Arrive Sat lunchtime, leave Wed morn)
- Wookey (cross toolchains/bootstrapping) (Arrive friday night, leave Tuesday night)
- Johannes Schauer (botch and bootstrap.d.o maintainer) (Arrive friday night, leave Wed morn)
- Aron Xu (mips64el porter) (Arrive Friday night, leave Tuesday Morning)
- Guillem Jover (dpkg maintainer) (Arrive Sun night, leave Wed morning)
- Mathias Klose (gcc maintainer) (Arrive Sat lunchtimeish, leave Tuesday afternoon)
Agenda
In general work out how bootstraping should operate, particularly in terms of toolchains/cross toolchains
- Make glibc stages work. With multilib
- Decide on how apt-get-able cross toolchains *should* look like:
- Package naming patterns (there are multiple ones atm)?
Interference with native compilers? CoinstallableToolchains? tcc: 695354 gcc: 666743
- One-package-per-arch or combined?
- Cross-arch dependencies or not?
- Guillem's 'fake' cross-toolchains idea
see also: ReleaseGoals/CrossToolchains
- Discuss toolchain dependency translation (e.g. gcc-${host})
see also: CrossTranslatableBuildDeps and 695287
affected packages: http://bootstrap.debian.net/cross.html in the "conflict" table
How to ensure that build profiles work in Jessie? See 744246
- Push into archive? (trying atm)
- Set up copy of archive for testing? (painful)
- Discuss how we add missing metadata about early bootstrap into package lists. One aspect is dependency translation. Another is that dependencies on build-essential are not spelled out. In bootstrap, We need an order to cross build build-essential though, so we need to know these dependencies.
- Other cross-build pieces
- What should be in cross-build-essential (or finer-grained mechanism?)
- autofoo cache data, cmake toolchain files etc. Move out of dpkg-cross?
- hard blockers for rebootstrap
- perl doesn't cross build in any sane way. it may work with perl-cross-debian, but this needs to upstream
- gnutls28 (transitively) needs guile-2.0-libs for host (via guile-2.0-dev) and build (via autogen). gnutls28 blocks curl, apt and more
- libgpg-error got broken upstream. it doesn't cross build and it cannot be used to compile against. it blocks libgcrypt11, openldap and more.
- help2man is used during build by coreutils, bison, flex. all of them therefore fail to build
- glibc multilib builds still don't work. even after severe tweaking (partially submitted), gcc stage2 doesn't find crti.o.
- missing multiarch in general. for instance B-Ds on python which should be python:any or missing M-A:foreign on netpbm-nonfree, docbook-utils and others.
discuss need for Cross-Builds: yes/no field (or how to otherwise store that information)
at the very least it would be useful to know about package that can never be cross compiled because there does not exist a cross compiler (for example for gobject-introspection) or because of cases like 753047
- discuss the extend to which initial bootstraps can be automated (because initially no binary package dependencies are known), also known as chicken and egg problem of automated bootstrapping
discuss whether arch:all should imply m-a:foreign for build dependencies 666772 but vorlon is not present so probably no need to raise this point
- discuss the requirement that binary packages built with a build profile must be equal in functionality to those normally built (or be split or renamed) and how to enforce this (reproducible builds?)
discuss how intersecting build profiles should be applied. Either doc-generator <!profile.nodoc>, testsuite-runner <!profile.notest> or doc-generator <!profile.nodoc !profile.stage1>, testsuite-runner <!profile.notest !profile.stage1>
- discuss whether more build profiles should be introduced, how about mapping some DEB_BUILD_OPTIONS to build profiles? (nodoc, nocheck, ...)
discuss status of ReleaseGoals/CrossBuildableBase what is missing? Where are blockers? How to identify the set that must be cross-able for a minimal base system?
discuss substitution variables in Build-Depends 751437
- bootstrap info at qa.debian.org
example: https://packages.qa.debian.org/~pabs/g/ghc.html https://packages.qa.debian.org/~pabs/a/avahi.html
cross: 745618 (problem: it must be manually decided in which package the bug is)
cycles: 728298 (problem: all but self-cycles are not hard requirements)
- discuss handling of mixed positive and negative restrictions
- make similar to gentoo use flags?
- what should happen when an unknown namespace is encountered?
- the current way is complicated and it is hard to see how this makes future extensions possible
- Document the outcome of the discussions for future reference!
Useful Links
Rebootstrap: https://wiki.debian.org/HelmutGrohne/rebootstrap
Reboostrap Jenkins CI: https://jenkins.debian.net/view/rebootstrap/
Crosstoolchain alioth project: https://alioth.debian.org/projects/crosstoolchain/
Build Profiles Spec and patches: https://wiki.debian.org/BuildProfileSpec
Bootstrapability analysis: http://bootstrap.debian.net/
Bootstrap Wiki page: https://wiki.debian.org/DebianBootstrap
Reports
The sprint was very effective: Sprints/2014/BootstrapSprint/Results
Sent to Debian-devel-announce: https://lists.debian.org/debian-devel-announce/2014/08/msg00013.html
Acknowledgements
The sprint has been possible thanks to:
donations to the Debian project
- Irill, Paris for the Venue, Roberto Di Cosmo for arranging it, and Sylvestre Ledru for help with access.