lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: build system work


From: Graham Percival
Subject: Re: build system work
Date: Thu, 10 Mar 2011 12:25:16 +0000
User-agent: Mutt/1.5.20 (2009-06-14)

On Thu, Mar 10, 2011 at 10:56:01AM +0100, John Mandereau wrote:
> Il giorno ven, 04/03/2011 alle 12.16 +0000, Graham Percival ha scritto:
> > There is widespread dissatisfaction with our current build system.
> > Replacing it is estimated to take at least 200 hours, but that's a
> > total shot in the dark.  However, a few people have expressed interest
> > in working on this.
> 
> I'm not sure how time can be spent on this in a wise way.

Well, some people /want/ to work on this, so I'm going to do my
best to find an efficient way of working on this.  Understanding
the website build process should "only" take 10-15 hours.  If they
complete that, they'll have a much better sense of the situation,
and we can have a much more informed discussion at that point.  If
they decide that their time is better spent elsewhere after seeing
how much effort went into the website build alone, that's fine!
At least we'll have better docs for the build system, so any
further effort can work from that point onwards.

> If I may, quoting makefile code
> should concentrate on the most difficult portions and features, although
> there is not a definition of what's difficult (maybe constructs you
> don't understand immediately after having read Make manual?).

IMO

$(outdir)/%.gif: %.xpm
        xpmtoppm $< | ppmtogif > $@

counts as "difficult".  So does

                ls $(OUT)/$$l/*.html | xargs grep -L 'UNTRANSLATED NODE: IGNORE
ME' | sed 's!$(OUT)/'$$l'/!!g' | xargs $(MASS_LINK)
--prepend-suffix="$$langsuf" hard $(OUT)/$$l/ $(OUT)/website/ ; \

and that's one that I wrote myself!  Look, I know that old-school
unix people will look at those and say "wow, that's pretty
trivial", but we just don't have old-school unix people working on
these.  We have two windows users, plus me.  I might be considered
a medium-school unix person (I can understand the above lines),
but I'm not going to claim that they're not difficult!

Memorizing stupid stuff like what $< does is stupid.  Our new
build system should be in python, using sensible variables names
like target_filename and source_filename.  And not using utterly
idiodic python constructions like **args.  ("let's make a readable
language!  Great!  Now let's add some random double star operators
-- everybody knows what those do, right?  I mean, whenever I see a
star, I think about unpacking stuff!")

But unfortunately, before we can switch to a new build system, we
need to know what the current system does.  That means decyphering
all that difficult syntax.

> > To that end, I've just added a new CG 12 Build system notes.  The goal
> > is to have a "wiki-like" dump of whatever info we suspect about the
> > build system.  If you think you have some info that you can add, just
> > add it.
> 
> How much interest is there in having a very general picture (possibly
> without quoting directly the makefiles) about the stepmake layer (i.e.
> makefiles build, recursive make (both inside same directory and in
> dubdirectories)), about the flaws (and desired improvements) of doc
> build?

It certainly couldn't hurt!

> I'm going away for a few days and will be busy until
> Sunday, but I should find some time next week.

This will be a multi-month process; don't worry at all about
specific days or months.  :)

Cheers,
- Graham



reply via email to

[Prev in Thread] Current Thread [Next in Thread]