> 
> 4. How to work with gnu autotools.  Writing a build system.

Writing a build system from scratch is actually not a requirement.
However one should understand basics of the most popular build systems
and probably have some advanced understaning of Makefiles and how flags
work, where they should be placed and so on which leads me to what you'v
been missing a bit:

QA

Why we do it and what the most common QA issues are (things like
disrespected CFLAGS/CC/LDFLAGS, bundled libs, broken parallel make,
portage QA notices (i.e. broken strict-aliasing), automagic dependencies
and so on).

That's what seperates us from many other distros.

> 
> 5.  How to write ebuilds, ie the dev manual.  How to work with cvs and git.

a few more specific thoughts on this...

IMO one of the more important points of writing ebuilds is to figure out
the dependencies correctly and how to implement use flags properly.
So figuring out dependencies usually involves reading the build system
and might even involve grepping/reading source files for includes/dlopen
or language specific things (note the differences in ruby, perl and
python...), cause assuming that the information from upstreams
INSTALL/README file suffices is almost always wrong.
Regarding useflags it's important to a) decide whether it makes sense to
offer that useflag/choice at all, b) what name to choose, so we don't
confuse the user, c) give descriptions in metadata.xml if the usecase
differs from the global description and d) test them all (which leads us
to point 6)

And that's exactly how I usually begin writing an ebuild:
- figure out all dependencies
- figure out what useflags to provide and how to implement them
- fix QA issues/patch the build system

Then the next thing is just understanding phase functions and the
regular helpers like econf/cmake-utils.eclass/eutils.eclass which you
can read up quite easily.

I would probably leave a few things behind like java ebuilds, ruby
ebuilds or even python ebuilds (due to the current eclass
conversion/confusion) and focus on autotools, cmake and plain Makefile
related things.

Give a few good and bad examples for each of them, so people understand
that every build system can be messed up.


Reply via email to