axiom-developer
[Top][All Lists]
Advanced

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

Re: [Axiom-developer] [build-improvements] Requests for discussion


From: Gabriel Dos Reis
Subject: Re: [Axiom-developer] [build-improvements] Requests for discussion
Date: 02 Aug 2006 00:49:23 +0200

"Page, Bill" <address@hidden> writes:

[...]

| >    For that I've converted the current configure file to
| > configure.ac (which Autoconf will use to regenerate configure).
| > The main motivation here is factor out many platforms variability
| > issues and dump them on Autoconf -- who already knows how to solve
| > them.
| > 
| >    Axiom has the requirement that the source files must be
| > literate -- use of pamphlet files.  Autoconf expects its input to
| > be in particular form.  Furthermore, the pamphlet file requirement
| > introduces an unpleasant bootstrapping issue that will hopefully
| > be resolved.
| 
| Are you referring to the problem of the noweb dependency? I think
| this is not so much of a problem if we treat it properly as a
| dependency.

Currently, it if one modifies the toplevel Makefile.pamphlet, one also
needs to regenerate the corresponding Makefile.  I don't want that.

All Makefiles should be generated at configured time.

Furthermore, one needs to have noweb in order to regenerate it.  If
the target system needs to build noweb, we are hosed.  We don't want.

All that is elimintated by not having to regenarate Makefile before
actual configuration.


| configure.ac itself should be a named chunk - probably in the main
| Makefile.pamphlet. This might make regenerating ./configure a little
| more complex than usual but not much.

configure will swamp the generation of all Makefiles from the
corresponding pamphlets.  Consequently I don't want to tie the
generation of configure to Makefiles that way.  We don't need that
bootstrapping problem.

| Most open source installations ship a pre-generated ./configure
| file and I think Axiom should be no different.

Yes, that is what we will do.  That configure is generated by Autoconf
based on configure.ac.  Autoconf does not expect pamphlet files.
Autoconf want an input in a language it understands. Consequently, we
must present configure.ac in a way appropriate for Autoconf.
Therefore we cannot depend on noweb (notangle).

In my current system, the only dependency of configure on makefiles is
when the makefiles are "touched" in a way that needs reconfiguration;
and way to extract the documentation out of configure.ac.

| The first thing ./configure should do is check for noweb and tell
| you what to do about it if it is not found.

Yes, that is what is done in my current local tree.  That is one
reason why we don' want configure.ac to depends on noweb.

| One "last resort" option
| to ./configure can be to build and install noweb from the sources
| supplied with Axiom. But in general Axiom should not be in the
| business of re-distributing noweb.

That is also an implemented option in my current system.

| > So, in its current form, I put the literate stuff in comments, so
| > that if you do
| > 
| >     cat configure.ac | sed -e 's/^## //' > configure.tex
| > 
| > you can an almost LaTeX file.  "Almost" because LaTeX commands need
| > to start with a backslash.  That character used to be reserved for
| > line continuation in shell world.  So to avoid any surprise, I used
| > the percent character (which unfortunately is LaTeX comment 
| > character).  So to get the LaTeX document, one needs to apply another
| > sed that replaces the percent character with the backslash character.
| > 
| > I've tested that I can feed the file to Autoconf, get a configure
| > file out of it and launch a successful build.
| > 
| > This work is being done on the "build-improvements" branch -- and it
| > has not been committed there yet.
| > 
| > Before painting myself into a corner, I would like to have feedbacks
| > from all y'all.
| > 
| 
| All this looks like a horrible hack to me - unless I am missing
| something fairly basic. What is wrong with the usual way of using
| noweb?

See the explanations above.

This is a hack; I agree.  No more horrible than what we currently do
with noweb.  However, I don't like it.  That is why I called for
discussion and suggestions for improvements :-)

To sum up.

We need

  (1) to write configure.ac directly in a language understood by Autoconf;
  (2) a way to get the documentation out of configure.ac
  (3) no dependency of configure.ac (and therefore configure) on noweb.

For the long term, all Makefiles should be generated at configure time.


-- Gaby




reply via email to

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