guile-devel
[Top][All Lists]
Advanced

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

Re: build problems


From: Ken Raeburn
Subject: Re: build problems
Date: Tue, 2 Mar 2010 00:38:14 -0500

On Feb 15, 2010, at 08:41, Ken Raeburn wrote:
> #1: c-tokenize.lex declares yyget_leng() as returning int, but the flex 
> template defines it as returning yy_size_t (which is size_t, a.k.a. unsigned 
> long), so c-tokenize.c doesn't compile.  Changing the declaration in 
> c-tokenize.lex to return size_t works for me, but the file hasn't been 
> changed in some time, so if "int" was working for other platforms, changing 
> it could be a problem.
> 
> We don't actually reference yyget_leng elsewhere explicitly; can we just get 
> rid of the declaration?

This patch has been working fine for me on my Mac; we may be able to delete 
more of the declarations, depending what other lex implementations do, but I 
haven't explored that yet and the others aren't causing problems.  (And my 
Debian box hasn't yet got all the various libraries Guile now depends on, so I 
still haven't tested that configuration, but flex has the same version number 
as on my Mac.)

    Don't declare yyget_leng.

diff --git a/libguile/c-tokenize.lex b/libguile/c-tokenize.lex
index 938a5d2..f801526 100644
--- a/libguile/c-tokenize.lex
+++ b/libguile/c-tokenize.lex
@@ -29,7 +29,6 @@ int yylex(void);
 int yyget_lineno (void);
 FILE *yyget_in (void);
 FILE *yyget_out (void);
-int yyget_leng (void);
 char *yyget_text (void);
 void yyset_lineno (int line_number);
 void yyset_in (FILE * in_str);


> #2: I build outside the source tree, with "../relative/path/to/configure 
> --prefix=whatever ...", and make-texinfo.scm was failing for me.  After some 
> time chasing things down with the debugger (thanks Andy for reminding me to 
> recompile to get debug info) and the moral equivalent of debugging printfs, I 
> found that load-module in boot-9.scm tries to interpret a relative path as 
> relative to the filename for the current-load-port, if there is one.  Since 
> the currently loading file was "../../../doc/ref/make-texinfo.scm" and the 
> supplied filename (given on the command line) was 
> "../../../doc/ref/standard-library.scm", load-module jammed the two prefixes 
> together and came up with a pathname pointing off to nowhere.
> 
> Changing Makefile.am to remove the "$(srcdir)" prefix works around this, 
> though I can't help but think there may be other potential cases where a 
> relative path *not* coded directly in the loading module itself may be 
> intended to be relative to the current directory and not the loading module's 
> directory.

Assuming the current 'load-module' behavior is correct -- or not so obviously 
incorrect that we're going to change it right now -- this patch takes care of 
this build problem for me.

    Path for snarf_doc input is treated relative to make-texinfo.scm file.

diff --git a/doc/ref/Makefile.am b/doc/ref/Makefile.am
index a587343..1da5cde 100644
--- a/doc/ref/Makefile.am
+++ b/doc/ref/Makefile.am
@@ -150,7 +150,7 @@ include standard-library.am
 $(snarf_doc).texi: $(standard_library_scm_files)
        GUILE_AUTO_COMPILE=0                            \
        "$(preinstguile)" "$(srcdir)/make-texinfo.scm"  \
-         "$(srcdir)/$(snarf_doc).scm" > "address@hidden"
+         "$(snarf_doc).scm" > "address@hidden"
        mv "address@hidden" "$@"
 
 CLEANFILES += $(snarf_doc).texi

Okay to check these in?

Ken



reply via email to

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