Bootstrappable Debian - Student Proposal
Name: Gustavo Prado Alkmim
Contact/Email:
email: alkmim@lrc.ic.unicamp.br irc: alkmim at irc.debian.org #multiarch #emdebian
Background:
General: I graduated in Computer Science at the Federal University of Lavras (Ufla/Brazil) in which I worked with virtualization using Xen. I was a member of Tecnolovre, a cooperative specialized on open-source based solutions. (http://www.tecnolivre.com.br) (They also have a very incomplete English page: \url{http://www.tecnolivre.com.br/?p[l]=en}). Currently, I am finishing my master at State University of Campinas (Unicamp/Brazil), working with Future Internet and starting my doctorate at the same university. My interest areas are network, security and general Linux management.
Linux and Programming: I use Linux since the very early of my graduation. I am one of the administrators of the LRC (Network Computer Laboratory) at Computer Institute, also in Unicamp, in which we use just Debian Linux systems. I have advanced skills on C++ and shell script and basic skills on Python and Java. If necessary, I have no problems in start on another programming language like Perl. Also I have a good experience on how to crossbuild packages and build packages
Experience with the proposed project: I worked with the bootstrap problem on Debian at GSoC 2011. So, I have a good knowledge on how to solve cycles, how to crossbuild package and how to hack the packages in order to solve cross-build and cyclic dependencies problems. Also I learned about the staged-build process, which will be necessary to complete the project. As a result of GSoC 2011, I started hacking on debian. See: [1].
Project title: Bootstrappable Debian
Synopsis: Copied from the debian project proposal in [2]
Debian is currently extremely difficult to bootstrap from scratch, which makes new ports and optimisations very difficult to do. The primary issues are breaking cyclic build-dependencies and the need to cross-build at least the initial set of packages. Work has been ongoing to first analyse and then design a fix this problem over the last year or two, but a lot of work remains to turn it into a practical reality. The design is described in http://wiki.debian.org/DebianBootstrap. The analysis at http://wiki.debian.org/CircularBuildDependencies
This project consists of doing the actual work of modifying packages to make optional the optional parts so that build-dependency cycles can be broken by building packages in 'minimal' form. These changes need to be made in an upstreamable way so they don't have to be done manually by every porter. In order to test the work you need to build modified build-tools that understand and use the extra fields, and in order to make it useful you need to make sure that the packages involved cross-build properly, using the new multiarch mechanisms.
This project is closely associated with the 'Port bootstrap build-ordering tool' project outlined elsewhere. The output of this work forms the test-data for that project, and the mechanism of this project is made automable by the output of that project. The two projects use each other's results, but both can also do their work independently. Both are required for a fully automated bootstrap.
Project details:
This is a big problem and it involves two interesting areas:
Untangling circular build dependencies in Debian. When the untangling work has been done it means that it would be possible to cross-build debian packages from scratch.
Making multiarch cross-building work. Currently, a lot of packages failed to find libraries when working with crossbuild and so it failed to crossbuild. In order to bootstrap debian it is important that all basic packages can be crossbuilded with no problems.
Some important steps that probably are going to be done: (probably in this order)
- Build a toolchain to enable the Multi-arch crossbuild on debian. Debian does not have toolchain to do the MA-crossbuild, but Ubuntu has (See [4]). So it is important to build the toolchain sources from ubuntu on Debian. Currently I'm working on this.
- Crossbuild all packages needed to bootstrap debian. As commented above, a lot of packages failed do crossbuild on Debian.
- Untangling circular build dependencies in all packages needed to bootstrap debian.
Benefits to Debian
This project is essential in order to enable Debian to bootstrap it self, since it will break cyclic dependencies and correct the crossbuild problems in some packages.
Deliverables:
- Set of patches for control and rules files to provide staged 'bootstrap' builds that break cyclic build-deps
- Multiarch cross-building patches that allow cross-building of the initial core set of packages
Project schedule:
- Now - April 23 - Work on Build the Ubuntu Toolchain for MA-crossbuild on Debian
- April 23: Accepted student proposals announced on the Google Summer of Code 2012 site.
- April 23 - May 1: Determine which packages should be on bootstrap debian (using deboostrap command [5])
- May 1 - Jun 1: solve the cyclic dependencies in packages determined in step 2, using the staged-build.
- Jun 1 - Aug 1: Solve crossbuild problems in packages determined in step 2
- July 9: 19:00 UTC: Mentors and students can begin submitting mid-term evaluations.
- July 13: 19:00 UTC: Mid-term evaluations deadline;
- Aug 1 - Aug 13: Reserved time
- August 13: Suggested 'pencils down' date. Take a week to scrub code, write tests, improve documentation, etc.
- August 20: 19:00 UTC: Firm 'pencils down' date. Mentors, students and organization administrators can begin submitting final evaluations to Google.
- August 24: 19:00 UTC: Final evaluation deadline. Google begins issuing student and mentoring organization payments provided forms and evaluations are on file.
- August 27: Final results of Google Summer of Code 2012 announced
- August 31: Students can begin submitting required code samples to Google
- October 20 - 21: Mentor Summit at Google: Representatives from each successfully participating organization are invited to Google to greet, collaborate and code. Our mission for the weekend: make the program even better, have fun and make new friends.
Exams and other commitments:
- I have two exams, but it will not be a problem.
jun/08 - jun/18 - Travel do Ottawa - Canada
Other summer plans: I plan to work on my graduate research, but a hope this will not be a problem. Many students at Unicamp have managed to complete GSoCs before with the same type of constraint, so that will not be a problem for me. Also, I successfully completed the GSoC 2011 in the same situation.
Why Debian?: I worked on Debian since 2005 and liked the organization of the SO. Also, I'm share the open-source vision. I worked on GSoC 2011 and get very excited on keep working on debian packages.
I'm going to become a Debian Manteiner (Currently I trying to find someone to sign my key)
- Are you applying for other projects in SoC? No
References
