login  home  contents  what's new  discussion  bug reports     help  links  subscribe  changes  refresh  edit

Edit detail for #131 awk backslash causes failure in src/algebra/Makefile revision 3 of 3

1 2 3
Editor: japp
Time: 2008/10/23 06:02:30 GMT-7
Note:

added:

From japp Thu Oct 23 06:02:30 -0700 2008
From: japp
Date: Thu, 23 Oct 2008 06:02:30 -0700
Subject: 
Message-ID: <20081023060230-0700@axiom-wiki.newsynthesis.org>

Status: open => closed 


Submitted by : (unknown) at: 2007-11-17T21:56:01-08:00 (16 years ago)
Name :
Axiom Version :
Category : Severity : Status :
Optional subject :  
Optional comment :

Hi,
Both the current cvs sources (Feb 1, release)
and 20050201 debian package fail to build
on Woody with the same error message given
below .

make[4]: *** No rule to make target
`/home/bt/archive/axiom/int/algebra/ABELGRP.o', needed by `src'.  Stop.
make[4]: Leaving directory `/home/bt/archive/axiom/src/algebra'
make[3]: *** [algebradir] Error 2
make[3]: Leaving directory `/home/bt/archive/axiom/src'
make[2]: *** [srcdir] Error 2
make[2]: Leaving directory `/home/bt/archive/axiom'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/bt/archive/axiom'
make: *** [build-stamp] Error 2

Any suggestions ?

PS: I posted this message before after trying to build
the feb release. This weekend I tried to compile the
new debian package with the same result.

sincerely
b thomas


==============================================================
Hi,
I managed to fix the build failure problem, on Debian/Woody
described in my earlier post. 

The problems seems to have been stray backslashes being placed
before dollar signs. A few sample lines showing this are given below.
This seems to happen only in src/algebra/Makefile . Making the
substitution "s/\\\$/$/g" and restarting the build process fixes
the problem.

\${MID}/ABELGRP.spad: \${IN}/catdef.spad.pamphlet
        \${TANGLE} -R"category ABELGRP AbelianGroup"\${IN}/catdef.spad.pamphlet>\${MID}/ABELGRP.spad
\${MID}/ABELGRP.lsp: \${IN}/catdef.spad.pamphlet
        \${TANGLE} -R"ABELGRP.lsp BOOTSTRAP"\${IN}/catdef.spad.pamphlet>\${MID}/ABELGRP.lsp

\${MID}/ABELGRP-.lsp: \${IN}/catdef.spad.pamphlet
        \${TANGLE} -R"ABELGRP-.lsp BOOTSTRAP"\${IN}/catdef.spad.pamphlet>\${MID}/ABELGRP-.lsp


I do not understand why this is happening. Apparently it does not happen on
newer versions of debian as can be seen from the successfull builds on
buildd.debian.org.  Please note this is not a problem with the debian
package as it occurs if I try to compile with the upstream source too.

sincerely
B Thomas

==================================================================
On Wednesday, March 23, 2005 11:34 PM Balbir Thomas wrote:

> I managed to fix the build failure problem, on Debian/Woody
> described in my earlier post. 
>
> The problems seems to have been stray backslashes being placed
> before dollar signs. A few sample lines showing this are given
> below. This seems to happen only in src/algebra/Makefile . Making
> the substitution "s/\\\$/$/g" and restarting the build process
> fixes the problem.

> \${MID}/ABELGRP.spad: \${IN}/catdef.spad.pamphlet
>        \${TANGLE} -R"category ABELGRP AbelianGroup"\ ...
>
> I do not understand why this is happening. Apparently it does
> not happen on newer versions of debian as can be seen from the
> successfull builds on buildd.debian.org.  Please note this is not
> a problem with the debian package as it occurs if I try to compile
> with the upstream source too.

I can confirm that this does not happen on newer version of debian
or RedHat linux.

The example lines that you show above are actually generated by
a simple awk script in the chunks <<findSpadFiles>> and
<<findBootstrapFiles>> in the file src/algebra/Makefile.pamphlet.
It looks like this:

  <<findSpadFiles>>=

  egrep '<<(domain|package|category) .*>>=' *.spad.pamphlet | \
  awk -F: '{
    chunk=substr($2,3,length($2)-5);
    split(chunk,part," ");
    spadfile="\${MID}/"part[2]".spad";
    print spadfile": \${IN}/"$1;
    print "\t\${TANGLE} -R\""chunk"\" \${IN}/"$1">"spadfile;
    print "";
  }'

It seems that some versions of awk do not process the escaped \$ in
the same way as some others. (The gnu awk documentation actually
says that for posix implementations this behaviour is undefined.)
I think that strictly speaking the escape before $ is not needed
and we should probably remove these extra \.

Regards,
Bill Page.

=======================================================
Hi,

I was building with Camm's debian packages source. This does
set the environment variables correctly so the version of notangle
used is the one supplied by axiom even though I do have an
local version of notangle (part of the nowebm package on debian).
The build is still in progress.

PS: I am replying from my home computer (with dynamic IP) so
this may get rejected by the mailing list.

sincerely
b thomas

On Thu, Mar 24, 2005 at 12:24:08AM -0500, root wrote:
> Stray backslashes in the Makefile?  Well the Makefile is generated by
> running the notangle program on the Makefile.pamphlet file.  The
> notangle program is part of noweb.
> 
> Do you have a copy of noweb installed elsewhere on your machine? If
> so, does your version occur before the axiom version of noweb? Axiom
> has some patches to noweb so it is not the standard version.
> 
> Run notangle by hand on the Makefile.pamphlet file and see if it is
> causing the problem. 
> 
> Before you start the axiom build there are two shell variables to be set:
> 
> export AXIOM =`pwd`/mnt/linux
> export PATH=$AXIOM/bin:$PATH
> 
> This PATH spec should cause the axiom version of notangle to be used.
> 
> Tim

=====================================================================

As Bill Page pointed out the problem is not in noweb
but in a shell script embedded in the src/algebra/Makefile.pamphlet
and the semantics of awk.

Which version of awk are you using? The configure script tries
to figure out which one you have. It prefers gawk, then nawk, and
defaults to awk. You can specify a particular awk version on the
command line thus:

make AWK=/usr/local/bin/gawk

We'll fix the makefile shell script at the next update (expected
on april 1).

------------------------------------------------------------


Reopen if this  still a problem. --japp, Thu, 23 Oct 2008 06:02:19 -0700

Fixed everywhere.



... --japp, Thu, 23 Oct 2008 06:02:30 -0700

Status: open => closed