[Soc-coordination] GSoC updates and deadlines reminder

Wookey wookey at wookware.org
Wed Mar 7 15:49:11 UTC 2012


+++ Ana Guerrero [2012-03-06 22:14 +0100]:
> 
> Hi everybody,
> 
> First of all, MANY THANKS to everybody who is offering projects and willing
> to co-/mentor this year.
> We are getting the projects listed earlier than in the past years, and
> we are confident this will help us to attract more interested students
> this year.
> 
> If you will like to mentor a project and you haven't drafted it yet, please
> hurry up! Google will review the mentoring applications next week and showing
> that we have a solid list of projects helps to get accepted.

OK. I have added two projects to the wiki:
http://wiki.debian.org/SummerOfCode2012/Projects#Multiarch_Cross-Toolchains
http://wiki.debian.org/SummerOfCode2012/Projects#Port_bootstrap_build-ordering_tool


Feedback on these suggestions is welcome. We already have a
prospective student who has been around for a while and is keen to
work on the second task (not sure if that makes any difference to our
machinations/rankings).


Here is the same text to save you clicking:

Multiarch Cross-Toolchains

Description of the project: Cross-toolchains are very useful, and have become more important recently due to the rise of ARM devices everywhere. Having them in the distro like any other tool is a real boon for development. Debian has multiarch (the ability to install stuff for multiple architectures at once) and it has cross-toolchains, but it does not have multiarch cross-toolchains, nor cross-toolchains in the main distro.

The Embedded Debian Project has made cross-toolchains available for many years outside the main Debian archive, but toolchains in the main distro would be much more convenient. This has not been possible until now because dependencies between architectures are needed. The new 'multiarch' feature enables this possibility. Enabling this will actually simplify the builds over what goes on now, and you have the opportunity to turn something kind of ugly into something much more beautiful. This sort of infrastructure work is fascinating, as it is the bringing together of many simple pieces into a complex whole, and if you get it working many people will really appreciate your work.

The first part of the project is showing that this build mechanism works. The second part is making sure that the cross-toolchain produced searches the new multiarch library and header paths by default, so that things built with it will build correctly. The final part will be working out what is needed to merge it into the central Debian build system, which does not currently cater for these cross-arch dependencies. You will get to learn how the mysterious inner working of distributions, and Free Software communities, actually work.

    Confirmed Mentor: Hector Oron

    How to contact the mentor: zumbi at debian.org

    Confirmed co-mentors: Marcin Juszkiewicz, marcin.juszkiewicz at linaro.org

    Deliverables of the project:
        Cross-toolchain packages using cross-arch dependencies, building against multiarched libraries, and defaulting to doing cross-builds using multiarch paths.
        Tools changes to support this in the archive 

    Desirable skills:
        There are no prerequisites for this project - any intelligent person who has the right sort of attention to detail could have success.
        Knowledge of Debian packaging, toolchain building, or cross-building would make it quicker/easier to get up to speed.
        You need to be persistent and capable of learning about tools and builds - you do not need to be a great coder. This project is fundamentally very simple, but the details matter and there are a lot of them. 

    What the student will learn: You will learn how cross-toolchains are built in a distribution, how packaging works, and how amazingly cool multiarch is. You will also learn much more than you ever wanted about the sordid details of compiler build paths, but that's more fun than it sounds, honest :-) Finally you will learn about the tools, processes and people behind the scenes that make a distro like Debian happen. 

Port bootstrap build-ordering tool

Description of the project:

Bootstrapping new debian ports or rebuilds from scratch is extremely difficult, not least due to cyclic build-dependencies which mean that there are sets of packages where none can be built until at least one of the others is built. Work is ongoing to make this easier within Debian, by adding metadata to packages to allow 'staged' or 'bootstrap' builds. One of the necessary parts of the solution is a tool which can find the 'staged build' reduced dependency information within package metadata, and use that to break cyclic build-dependencies in order to generate a linear build-order for packages, including rebuilds of previously-staged packages as soon as it is possible.

Various aproaches of varying degrees of rigour can be taken to this problem. One based on edos-debcheck, a tool to analyse dependency satisfiability, is probably the 'right' way to do it. But it could also be done using python-apt and python-debian, building on what xdeb does. The tools would need to be taught to consider the Build-Depends-Stage1 info instead of the Build-Depends info in order to turn the graph into a tree. Then ensure that staged packages are rebuilt as soon as their normal build-deps are satisfied, and any other packages built against staged packages are also rebuilt to ensure consistency. Determining the optimum switchover point from cross-building to native building would be another useful feature.

Details of the staged build mechanism are here: http://wiki.debian.org/DebianBootstrap

    Confirmed Mentor: Wookey

    How to contact the mentor: wookey at debian.org

    Deliverables of the project:
        Tool to order builds for bootstrapping a new architecture 

    Desirable skills:
        Understanding of debian port bootstrapping process
        Programming ability - language not important, but existing relevant tools are in ocaml, python and perl.
        Some graph theory understanding 

    What the student will learn:
        How to bootstrap Debian, and an excellent understanding of build-dependencies, cross-build dependencies and the tools to analyse them
        How to define, break down, and solve a thorny problem
        How to write a small tool which is an interface to other tools, doing just one job and doing it well. 


Wookey
-- 
Principal hats:  Linaro, Emdebian, Wookware, Balloonboard, ARM
http://wookware.org/



More information about the Soc-coordination mailing list