Re: compile problems - Mailing list pgadmin-hackers

From Florian G. Pflug
Subject Re: compile problems
Date
Msg-id 4637607E.7070201@phlo.org
Whole thread Raw
In response to Re: compile problems  (Giuseppe Sacco <giuseppe@eppesuigoccas.homedns.org>)
Responses Re: compile problems
Re: compile problems
Re: compile problems
List pgadmin-hackers
Giuseppe Sacco wrote:
> if gcc -DHAVE_CONFIG_H -I. -I. -I..   -I/usr/include/postgresql -DSSL
> -I/usr/local/wxWidgets-2.8.2/lib/wx/include/gtk2-unicode-release-2.8
> -I/usr/local/wxWidgets-2.8.2/include/wx-2.8 -D_FILE_OFFSET_BITS=64
> -D_LARGE_FILES -D_LARGEFILE_SOURCE=1 -D__WXGTK__ -O2
> -I/usr/include/libxml2 -I/usr/include/libxml2 -DDATA_DIR=
> \"/usr/local/pgadmin3-1.8.2/share/pgadmin3/\" -Wall -I../pgadmin/include
> -MT keywords.o -MD -MP -MF ".deps/keywords.Tpo" -c -o keywords.o `test
> -f './db/keywords.c' || echo './'`./db/keywords.c; \
>     then mv -f ".deps/keywords.Tpo" ".deps/keywords.Po"; else rm -f
> ".deps/keywords.Tpo"; exit 1; fi
> In file included from ./db/keywords.c:22:
> gram.y:122: error: expected specifier-qualifier-list before ‘JoinType’
> make[2]: *** [keywords.o] Error 1
>
> I checked the source and I believe there is something missing: JoinType
> is never defined. Could you please tell me in what source it is defined?
Hm, the files
pgadmin/include/keywords.h,
pgadmin/include/parse.h,
pgadmin/db/keywords.c
are periodically copied from the postgresql sources, where parse.h is
actually generated by bison from gram.y

JoinType is some postgresql-internal datastructure, that is neither needed
nor used inside pgAdmin3 - it just happens to be mentioned in parse.h, because
this file originates from postgresql.

I think that the only parts of parse.h that pgAdmin3 is interested in are
the defines at the top, and maybe the enum yytokentype.

misc.cpp does the following before including parse.h to suppress the typedef:
#define YYSTYPE_IS_DECLARED
#define DECIMAL DECIMAL_P
   typedef int YYSTYPE;

while postgres.h (which is included in keywords.c before parse.h) does the
following:
#define YYTOKENTYPE
#define YYSTYPE int

I think that for some reason, the former does what it's supposed to on your
system, but that latter doesn't. Could you try replacing
#define YYTOKENTYPE
#define YYSTYPE int
in postgres.h with
#define YYSTYPE_IS_DECLARED
   typedef int YYSTYPE;
and see if that helps? If no, please also try adding the
#define YYTOKENTYPE back to postgres.h (but keep the other changes)

@dave: I think that the "#define DECIMAL DECIMAP_P" isn't needed anymore -
or at least "find ./ -name "*.h" | xargs grep DECIMAL" and
"find ./ -name "*.c" | xargs grep DECIMAL" seem to indicate that...

greetings, Florian Pflug



pgadmin-hackers by date:

Previous
From: svn@pgadmin.org
Date:
Subject: SVN Commit by dpage: r6252 - trunk/www/development
Next
From: svn@pgadmin.org
Date:
Subject: SVN Commit by dpage: r6253 - trunk/pgadmin3/pgadmin/utils