|
From: Eric B. <er...@go...> - 2001-10-13 09:18:23
|
Hi all,
It is now possible to bootstrap the Gobo tools from CVS.
The procedure is quite simple:
. Check out the source code of Gobo.
. Set the environment variable $GOBO.
. Run either:
$GOBO/work/bootstrap/bootstrap.bat <c_compiler> <eiffel_compiler>
or:
$GOBO/work/bootstrap/bootstrap.sh <c_compiler> <eiffel_compiler>
depending on your platform. To find out about the already
supported values for <c_compiler> and <eiffel_compiler>
run the same command with the option '-help'.
For those who have already tried the bootstrap procedure
before, you would have noticed that there is no need to
set $GOBO_OS anymore (this variable still appears in some
geant build files, but it is internally interpreted by
'geant' -- in the same way 'gexace' can internally set the
value for $GOBO_EIFFEL).
There is not need for Makefiles anymore, and hence no cygwin
under Windows. However the directory $GOBO/test has not been
converted to geant build files yet. This will be done soon.
Later on, when you check out new classes or clusters, there
is usually no need to redo a full bootstrap again. Just
run:
geant install
followed by:
geant clean
in the root directory of the library these new classes or clusters
belong to. 'geant' actually finds its instructions in the file
'build.eant'. In order to know the possible command-line arguments
provided by a given build file, type:
geant help
To come back to the bootstrap procedure, since not all C
compilers nor all platforms have been tested, you are welcome
to send patches and/or code to support other C compilers.
For what the Eiffel compiler is concerned, to run properly
the Gobo source code in CVS should be used with one of the
latest SmallEiffel beta releases, with at least ISE Eiffel
5.0 (if you use ISE 4.5 you will have to copy 'es4.exe' to
'ec.exe' to have a chance to make it work), with Visual
Eiffel 3.3 (I think it doesn't work with VE 3.2 under Linux)
and with Halstenbach 4.0 (if you use ISS 3.0 you will have
at least to add DIRECTORY.create_dir to call `create' and
IO_MEDIUM.put_new_line to call `new_line' to have a chance
to make it work).
Finally, note that the version of the Gobo package in CVS
is a development version and not an official release. The
bootstrap procedure is meant to be used by the Gobo developers
and by those who are interested in experiencing with new
functionalities at their own risk. In particular, people
willing to do code/design review, to beta test and/or to
submit patches/suggestions are welcome.
Enjoy!
--
Eric Bezault
mailto:er...@go...
http://www.gobosoft.com
|
|
From: Berend de B. <be...@po...> - 2001-10-13 12:14:57
|
Eric Bezault <er...@go...> writes: > . Check out the source code of Gobo. > . Set the environment variable $GOBO. > . Run either: > > $GOBO/work/bootstrap/bootstrap.bat <c_compiler> <eiffel_compiler> > > or: > > $GOBO/work/bootstrap/bootstrap.sh <c_compiler> <eiffel_compiler> > > depending on your platform. To find out about the already > supported values for <c_compiler> and <eiffel_compiler> > run the same command with the option '-help'. And perhaps you need geant (in your path)?? This is the message I got when executing this command: # work/bootstrap/bootstrap.sh gcc se work/bootstrap/bootstrap.sh: geant: command not found mv: cannot stat `geant1': No such file or directory work/bootstrap/bootstrap.sh: geant: command not found -- Groetjes, Berend. (-: |
|
From: Eric B. <er...@go...> - 2001-10-13 12:22:57
|
Berend de Boer wrote: > > And perhaps you need geant (in your path)?? The bootstrap script should have created it (before actually calling it) and copied it to $GOBO/bin. So this directory should be in your PATH, yes. -- Eric Bezault mailto:er...@go... http://www.gobosoft.com |
|
From: Glenn M. <gle...@op...> - 2001-10-14 01:04:41
|
(Sorry I meant to send this reply to the list not just Eric) Hi Eric, The bootstrap process looks really good. It will make keeping up with GOBO development much easier. However, I received the following errors when trying to bootstrap using 'cl' and 'ise'. I'm using ISE Eiffel 5.0.34 and Visual C++ 6.0: ---------------------------------------------------------------------------- --- Error code: VCCH(1) Error: class has deferred feature(s), but is not declared as deferred. What to do: make feature(s) effective, or include `deferred' before `class' in Class_header. Class: LX_LEX_PARSER Deferred feature: token_name From: YY_PARSER_TOKENS ---------------------------------------------------------------------------- --- ---------------------------------------------------------------------------- --- Error code: VCCH(1) Error: class has deferred feature(s), but is not declared as deferred. What to do: make feature(s) effective, or include `deferred' before `class' in Class_header. Class: GEPP_PARSER Deferred feature: token_name From: YY_PARSER_TOKENS ---------------------------------------------------------------------------- --- ---------------------------------------------------------------------------- --- Error code: VCCH(1) Error: class has deferred feature(s), but is not declared as deferred. What to do: make feature(s) effective, or include `deferred' before `class' in Class_header. Class: XF_EVENT_PARSER Deferred feature: token_name From: YY_PARSER_TOKENS ---------------------------------------------------------------------------- --- ---------------------------------------------------------------------------- --- Error code: VCCH(1) Error: class has deferred feature(s), but is not declared as deferred. What to do: make feature(s) effective, or include `deferred' before `class' in Class_header. Class: PR_YACC_PARSER Deferred feature: token_name From: YY_PARSER_TOKENS ---------------------------------------------------------------------------- --- Thanks. Glenn. |
|
From: Glenn M. <gle...@op...> - 2001-10-14 07:56:45
|
Hi Eric, In addition to my last message, everything bootstraps fine using SmallEiffel. I had to get the latest beta version to build. Plenty of C compilation warnings of the form: "integral size mismatch in argument; conversion supplied" using Visual C++ as the C compiler. I get these with C code generated by ISE also. Glenn. > -----Original Message----- > From: gob...@li... > [mailto:gob...@li...]On Behalf Of > Glenn Maughan > Sent: Sunday, 14 October 2001 11:13 AM > To: gob...@li... > Subject: RE: [gobo-eiffel-develop] Bootstrap from CVS > > > (Sorry I meant to send this reply to the list not just Eric) > > Hi Eric, > > The bootstrap process looks really good. It will make keeping up with GOBO > development much easier. > > However, I received the following errors when trying to bootstrap > using 'cl' > and 'ise'. I'm using ISE Eiffel 5.0.34 and Visual C++ 6.0: > > ------------------------------------------------------------------ > ---------- > --- > > Error code: VCCH(1) > Error: class has deferred feature(s), but is not declared as deferred. > What to do: make feature(s) effective, or include `deferred' before > `class' in Class_header. > > Class: LX_LEX_PARSER > Deferred feature: token_name From: YY_PARSER_TOKENS > > ------------------------------------------------------------------ > ---------- > --- > > ------------------------------------------------------------------ > ---------- > --- > > Error code: VCCH(1) > Error: class has deferred feature(s), but is not declared as deferred. > What to do: make feature(s) effective, or include `deferred' before > `class' in Class_header. > > Class: GEPP_PARSER > Deferred feature: token_name From: YY_PARSER_TOKENS > > ------------------------------------------------------------------ > ---------- > --- > > ------------------------------------------------------------------ > ---------- > --- > > Error code: VCCH(1) > Error: class has deferred feature(s), but is not declared as deferred. > What to do: make feature(s) effective, or include `deferred' before > `class' in Class_header. > > Class: XF_EVENT_PARSER > Deferred feature: token_name From: YY_PARSER_TOKENS > > ------------------------------------------------------------------ > ---------- > --- > > ------------------------------------------------------------------ > ---------- > --- > > Error code: VCCH(1) > Error: class has deferred feature(s), but is not declared as deferred. > What to do: make feature(s) effective, or include `deferred' before > `class' in Class_header. > > Class: PR_YACC_PARSER > Deferred feature: token_name From: YY_PARSER_TOKENS > > ------------------------------------------------------------------ > ---------- > --- > > Thanks. > Glenn. > > > _______________________________________________ > gobo-eiffel-develop mailing list > gob...@li... > https://lists.sourceforge.net/lists/listinfo/gobo-eiffel-develop |
|
From: Eric B. <er...@go...> - 2001-10-14 10:58:40
|
Glenn Maughan wrote: > > In addition to my last message, everything bootstraps fine using > SmallEiffel. I had to get the latest beta version to build. Yes, it works with SE -0.74b7 as well. > Plenty of C compilation warnings of the form: > > "integral size mismatch in argument; conversion supplied" > > using Visual C++ as the C compiler. Yes, I get these warnings as well. It is definitely a problem with the C code generated by the Eiffel compiler. I reported that to D. Colnet 2 years ago, but with no success apparently. Anyway, they are just warnings, the generated executable is OK. > I get these with C code generated by ISE also. Yes, with 5.0 new warnings appeared with the C code generated by ISE. But for these C compilation warnings (both from SE and ISE), I think that it is an Eiffel compiler issue with the C code they generate. There is nothing we can do from the Gobo Eiffel code side. BTW, did you find out whether there was another 'geyacc.exe' in your path which was called during the bootstrap and was causing the VCCH errors? With SmallEiffel you probably don't get these errors because ... the compiler doesn't check them. -- Eric Bezault mailto:er...@go... http://www.gobosoft.com |
|
From: Eric B. <er...@go...> - 2001-10-14 10:49:07
|
Glenn Maughan wrote: > > However, I received the following errors when trying to bootstrap using 'cl' > and 'ise'. I'm using ISE Eiffel 5.0.34 and Visual C++ 6.0: Did the bootstrap procedure correctly generate a 'geyacc.exe' in $GOBO/bin? If so it looks like an old version of 'geyacc.exe' (probably the one from the Gobo 2.0 delivery) is still in your path before the one in $GOBO/bin. -- Eric Bezault mailto:er...@go... http://www.gobosoft.com |
|
From: Glenn M. <gle...@op...> - 2001-10-15 10:48:24
|
> Did the bootstrap procedure correctly generate a 'geyacc.exe' > in $GOBO/bin? If so it looks like an old version of 'geyacc.exe' > (probably the one from the Gobo 2.0 delivery) is still in your > path before the one in $GOBO/bin. Eric, No other version of geyacc.exe was in the path. Glenn. |
|
From: Glenn M. <gle...@op...> - 2001-10-15 12:18:11
|
The following routine from class XP_API refers to an undefined 'str'. I assume it is supposed to be 'base'. It compiles clean after this change. ----------------------------- exml_XML_SetBase_string (parser_handle: POINTER; base: STRING): BOOLEAN is -- Sets the base to be used for resolving relative URIs in -- system identifiers in declarations. Resolving relative -- identifiers is left to the application: this value will be -- passed through as the base argument to the -- XM_ExternalEntityRefHandler, XML_NotationDeclHandler and -- XM_UnparsedEntityDeclHandler. The base argument will be -- copied. -- Returns zero if out of memory, non-zero otherwise. require parser_handle_not_null: parser_handle /= default_pointer base_not_void: base /= Void local c_str: ANY do c_str := str.to_c Result := ext_exml_XML_SetBase (parser_handle, $c_str) end ----------------------------- Glenn. |
|
From: Eric B. <er...@go...> - 2001-10-15 15:21:52
|
Glenn Maughan wrote: > > The following routine from class XP_API refers to an undefined 'str'. I > assume it is supposed to be 'base'. Yes, you're right. I just checked it with the old eXML code. I will fix it in the CVS code. -- Eric Bezault mailto:er...@go... http://www.gobosoft.com |
|
From: Glenn M. <gle...@op...> - 2001-10-16 11:25:25
|
I'm trying to convert to using the Eiffel XML parser in GOBO but need to use
'parse_from_string' as that is the routine I was using with the expat
implementation. It is currently implemented as:
parse_from_string (data: STRING) is
do
check
False -- TODO
end
end
Anyone willing to implement it for me? Please!
Am I correct in assuming that the Eiffel parser will generate the same
events as the expat parser? Does it handle namespace events correctly?
On the expat side, I found that Makefile.win.msc does not compile correctly
using VC++ 6.0. I think it is because the eiffel.h header is expecting the
symbol 'ise' to be defined but 'ISE' is defined instead. Must be
case-sensitive in nmake.
Also the makefile builds the file 'libexml.lib' rather than the
'libexml-expat-${GOBO_EIFFEL}.a' as defined in the library/xml/cluster.xace
file.
Finally, the <external> element in library/xml/cluster.xace uses braces '{}'
rather than parenthesis '()' to surround environment variables for the
externals. It also defines '-lexpat' as a link library. nmake does not seem
to like either of these.
Perhaps there needs to be a few conditional <external> elements that depend
on the OS for the expat clusters. A bit messy!
Glenn.
|
|
From: Eric B. <er...@go...> - 2001-10-16 22:14:17
|
Glenn Maughan wrote:
>
> I'm trying to convert to using the Eiffel XML parser in GOBO but need to use
> 'parse_from_string' as that is the routine I was using with the expat
> implementation. It is currently implemented as:
>
> parse_from_string (data: STRING) is
> do
> check
> False -- TODO
> end
> end
>
> Anyone willing to implement it for me? Please!
I doesn't seem to be complicated (just 4 or 5 lines of code
to pass a string buffer instead of a file buffer to the parser),
but I won't have time to implement it before this weekend
(I'm on the road for business this week, and although I still
have email access, I don't have my usual development environment).
> Am I correct in assuming that the Eiffel parser will generate the same
> events as the expat parser? Does it handle namespace events correctly?
I don't know, I'm not familiar with this code.
> On the expat side, I found that Makefile.win.msc does not compile correctly
> using VC++ 6.0. I think it is because the eiffel.h header is expecting the
> symbol 'ise' to be defined but 'ISE' is defined instead. Must be
> case-sensitive in nmake.
>
> Also the makefile builds the file 'libexml.lib' rather than the
> 'libexml-expat-${GOBO_EIFFEL}.a' as defined in the library/xml/cluster.xace
> file.
>
> Finally, the <external> element in library/xml/cluster.xace uses braces '{}'
> rather than parenthesis '()' to surround environment variables for the
> externals. It also defines '-lexpat' as a link library. nmake does not seem
> to like either of these.
>
> Perhaps there needs to be a few conditional <external> elements that depend
> on the OS for the expat clusters. A bit messy!
As you have noticed, the expat part of the XML library is
one part of the Gobo CVS code which has not been tried
yet. We will definitely have to do something here, the
first thing of course being to take your remarks and bug
fixes into account.
--
Eric Bezault
mailto:er...@go...
http://www.gobosoft.com
|
|
From: Eric B. <er...@go...> - 2001-10-17 23:03:06
|
Glenn Maughan wrote: > > I'm trying to convert to using the Eiffel XML parser in GOBO but need to use > 'parse_from_string' as that is the routine I was using with the expat > implementation. It is currently implemented as: > > parse_from_string (data: STRING) is > do > check > False -- TODO > end > end > > Anyone willing to implement it for me? Please! I just implemented it and committed to CVS. However no testing has been done at all (apart from checking that it compiles with ISE Eiffel). So it's up to you to try it if you want. -- Eric Bezault mailto:er...@go... http://www.gobosoft.com |
|
From: Eric B. <er...@go...> - 2001-10-19 13:47:04
|
Glenn Maughan wrote:
>
> On the expat side, I found that Makefile.win.msc does not compile correctly
> using VC++ 6.0. I think it is because the eiffel.h header is expecting the
> symbol 'ise' to be defined but 'ISE' is defined instead. Must be
> case-sensitive in nmake.
>
> Also the makefile builds the file 'libexml.lib' rather than the
> 'libexml-expat-${GOBO_EIFFEL}.a' as defined in the library/xml/cluster.xace
> file.
>
> Finally, the <external> element in library/xml/cluster.xace uses braces '{}'
> rather than parenthesis '()' to surround environment variables for the
> externals. It also defines '-lexpat' as a link library. nmake does not seem
> to like either of these.
>
> Perhaps there needs to be a few conditional <external> elements that depend
> on the OS for the expat clusters. A bit messy!
I have taken all your remarks above into account I have patched
the files so that they can now be compiled with ISE Eiffel under
Windows NT with MSVC++ 6.0. I didn't look at the code for other
platforms or other compilers though. I tried to compile the new
code in CVS with expat_win32bin_1_95_2.exe downloaded from the
SourceForge Expat project and everything seems to compile OK on
my laptop under Windows NT 4.0 with ISE Eiffel 5.0.34. As usual
(hmmm, shame one me ;-)) I didn't try to execute these modifications,
so I'll let experiement with it.
--
Eric Bezault
mailto:er...@go...
http://www.gobosoft.com
|
|
From: Andreas L. <no...@sb...> - 2001-10-19 19:36:50
|
On Fri, Oct 19, 2001 at 03:45:56PM +0200, Eric Bezault wrote: > Glenn Maughan wrote: > > I have taken all your remarks above into account I have patched > the files so that they can now be compiled with ISE Eiffel under > Windows NT with MSVC++ 6.0. I didn't look at the code for other > platforms or other compilers though. I tried to compile the new > code in CVS with expat_win32bin_1_95_2.exe downloaded from the > SourceForge Expat project and everything seems to compile OK on > my laptop under Windows NT 4.0 with ISE Eiffel 5.0.34. As usual > (hmmm, shame one me ;-)) I didn't try to execute these modifications, > so I'll let experiement with it. I think ideally we should replace the Makefile.* mess in /library/xml/impl/expat/spec/c with only one maintainable geant file. This should already be possible with OS-specific tasks and the exec command. But I have that feeling in my stomach that such a geant file won't be that clean and maintainable either. Maybe we can come up with some reusable geant tasks for c compilation and linkage. Such commands will be usefull for other C dependent parts as well (think eposix). OK, I'll try to do some brainstorming. What do we need to do: *) We need to compile 2 c files, make sure they have certain include dirs set and ideally create a static library from the resulting object files. What are the difficulties to overcome: *) Different OSes *) Different Eiffel compilers *) Different C compilers Some random thought: *) On some OSes the include paths are a non issue (on my debian box the headers should be in a directory that is accessible by the c compiler already). What would be the best abstraction level for geant commands? Or should we go for plain execs? The trivial abstraction level would be to create a a compile and create archive command for each c-compiler (and OS combination?) and then use conditionals in the geant files. Can we do better? Maybe we can use a combination of geant commands and geant inheritance (that feature rules :)? Andreas |
|
From: Berend de B. <be...@po...> - 2001-10-20 06:47:53
|
Andreas Leitner <no...@sb...> writes:
> I think ideally we should replace the Makefile.* mess in
> /library/xml/impl/expat/spec/c with only one maintainable geant
> file. This should already be possible with OS-specific tasks and the
> exec command. But I have that feeling in my stomach that such a
> geant file won't be that clean and maintainable either. Maybe we can
> come up with some reusable geant tasks for c compilation and
> linkage. Such commands will be usefull for other C dependent parts
> as well (think eposix).
For eposix I've written a Makefile generator that works quite well
from the reports I've received. It generates Makefile's for Borland,
Microsoft and lcc. It just needs a simple config file.
I think it would be a good thing to move this into geant. It's
dependent on eposix. This might make bootstrap a bit more difficult,
but we can provide a makelib binary for every architecture if
necessary.
> The trivial abstraction level would be to create a a compile and
> create archive command for each c-compiler (and OS combination?) and
> then use conditionals in the geant files. Can we do better? Maybe we
> can use a combination of geant commands and geant inheritance (that
> feature rules :)?
I suggest we create Makefile as Makefiles include certain system
and compiler specific knowledge. Users can have tweaked there Makefile
configurations for example. If you generate a Makefile you can take
advantage of these things.
Here is the makelib (the name of my program) configuration file that
would be more or less ok:
----------------
GOBO
libexpat
library\xml\impl\expat\spec\c
----------------
not tested, but it's not more difficult than this. The first thing is
the enivronment variable, that should contain the start directory. The
second line is the target makefile. The eiffel compiler and c compiler
are attached to that name so you get something like:
libexpat-ise-msc
The third and next lines contain the C files. As the EXML C files are
written exactly like eposix this works. makelib just finds all .c
files and includes them in the generated Makefile.
--
Groetjes,
Berend. (-:
|
|
From: Eric B. <er...@go...> - 2001-10-20 11:19:08
|
Andreas Leitner wrote: > > I think ideally we should replace the Makefile.* mess in > /library/xml/impl/expat/spec/c with only one maintainable > geant file. I agree. That's why I spoke about "patch" in my previous message: I just wanted to make it work for Glenn in the short term. > The trivial abstraction level would be to create a a compile > and create archive command for each c-compiler (and OS combination?) > and then use conditionals in the geant files. Can we do better? As far as I know we already have a geant task for 'lcc'. So perhaps this could be extended to other supported C compilers. -- Eric Bezault mailto:er...@go... http://www.gobosoft.com |
|
From: Glenn M. <gle...@op...> - 2001-10-16 11:39:53
|
Great progress GOBO developers! I'm converting Goanna to use gexace and geant and it will make it much easier to manage. A general question first: Eric, do you want feature requests and bugs to be sent to this list or logged on the SourceForge trackers? I'm all for the SourceForge trackers...it increases the activity stats for the project and makes them easy to track. A couple of requests: 1) Would it be possible for gexace to generate Ace files for ISE that use the nested cluster syntax rather than concatenating the parent and child cluster names? For example, the Xace clusters: <cluster name="parent" location="my/path"> <cluster name="child" location="subpath"/> </cluster> could be generated as: parent: "my/path" child (parent): "$/subpath" (if you are not familiar, the '$' in the 'child' cluster is replaced with 'my/path'). This allows the ISE environment to build a tree structure of clusters that is much easier to navigate and quicker to display. 2) This may be a bug. The following Xace cluster: <cluster name="parent" location="my/path"> <cluster name="my-child"/> </cluster> generates: parent: "my/path" my-child: "my/path/my-child" The cluster name 'my-child' is invalid in ISE. Perhaps it needs to be converted to 'my_child'. |
|
From: Eric B. <er...@go...> - 2001-10-16 22:14:21
|
Glenn Maughan wrote: > > A general question first: Eric, do you want feature requests and bugs to be > sent to this list or logged on the SourceForge trackers? I'm all for the > SourceForge trackers...it increases the activity stats for the project and > makes them easy to track. Personnally, I'm not sure I'll have time to manage the SF trackers and would prefer to use the list. I don't think that activity stats is a goal, and other members of the list may be interested in discussing requests or how to fix bugs. A bug tracker might be valuable for big projects, I'm not sure we can really take the full advantage of it at this stage of development in Gobo. Do you (or somebody else) have any experience with SF bug tracker? > A couple of requests: > > 1) Would it be possible for gexace to generate Ace files for ISE that use > the nested cluster syntax rather than concatenating the parent and child > cluster names? I personnally hate this syntax adopted by ISE, so I never use it in my Ace files. That's why Ace files are currently generated the way they are by 'gexace'. > This allows the ISE environment to build a tree structure of clusters that > is much easier to navigate and quicker to display. That's a good reason. I'll have a look at it, but a priori I don't think it should be too difficult to implement it the way you want. > 2) This may be a bug. The following Xace cluster: > > <cluster name="parent" location="my/path"> > <cluster name="my-child"/> > </cluster> > > generates: > > parent: "my/path" > my-child: "my/path/my-child" > > The cluster name 'my-child' is invalid in ISE. Perhaps it needs to be > converted to 'my_child'. The bug is that: <cluster name="my-child"/> should have been rejected by 'gexace'. The attribute 'name' should be a valid Ace file cluster tag. If the name of a directory is not a valid cluster name, you should write it that way: <cluster name="a_valid_tag" location="full/path/name"/> -- Eric Bezault mailto:er...@go... http://www.gobosoft.com |
|
From: Eric B. <er...@go...> - 2001-10-17 23:02:57
|
Andreas Leitner wrote: > So we need some kind of eiffel-identifier checker in gexace. > Eric, I assume something similar is in eiffel-tools already. Not yet: in eiffel-tools the check is done by the lexical analyzer during the parsing. So there was no need to write such eiffel-identifier checker routine. > Using only one implementation for the identifier checker has > the additional advantage that should the definition of eiffel > identifiers ever change (think unicode) we only need to adopt > it at one place. Agreed, such routine should definitely be put in the eiffel-tools library so that it can be shared between various tools needing such functionality. -- Eric Bezault mailto:er...@go... http://www.gobosoft.com |
|
From: Eric B. <er...@go...> - 2001-10-15 15:22:13
|
Glenn Maughan wrote: > > No other version of geyacc.exe was in the path. This is strange. Can you send me (to my private email address) the generated class GEPP_TOKENS? It should say: generator: "geyacc version 2.1" in the indexing clause and it should include the routine `token_name'. -- Eric Bezault mailto:er...@go... http://www.gobosoft.com |
|
From: Eric B. <er...@go...> - 2001-10-16 22:14:14
|
This is just to let everybody know that Glenn managed to bootstrap using ISE in the end. There is no real reason why it didn't work the first time. -- Eric Bezault mailto:er...@go... http://www.gobosoft.com |
|
From: Glenn M. <gle...@op...> - 2001-10-17 11:28:57
|
The following cluster element: <cluster name="goanna" location="."> <cluster name="TESTGEN"/> <cluster name="utility_tests" location="utility"/> <cluster name="log4e_tests" location="log4e"/> </cluster> builds an ISE Ace file with the following cluster definitions: goanna: "." goanna_TESTGEN: "./TESTGEN" goanna_utility_tests: "utility" goanna_log4e_tests: "log4e" I would have expected the 'goanna_utility_tests' and 'goanna_log4e_tests' to have the './' of the parent cluster prepended to the path. In the cluster element above I needed to use different names to the paths because existing clusters already used the names 'utility' and 'log4e'. Is this correct? Thanks. Glenn. |
|
From: Eric B. <er...@go...> - 2001-10-17 23:02:53
|
Glenn Maughan wrote:
>
> The following cluster element:
>
> <cluster name="goanna" location=".">
> <cluster name="TESTGEN"/>
> <cluster name="utility_tests" location="utility"/>
> <cluster name="log4e_tests" location="log4e"/>
> </cluster>
>
> builds an ISE Ace file with the following cluster definitions:
>
> goanna: "."
> goanna_TESTGEN: "./TESTGEN"
> goanna_utility_tests: "utility"
> goanna_log4e_tests: "log4e"
>
> I would have expected the 'goanna_utility_tests' and 'goanna_log4e_tests' to
> have the './' of the parent cluster prepended to the path.
With the way it is implemented now, as soon as you
have the attribute 'location', it is meant to be
a full pathname and not a relative pathname to the
parent directory. That's why you got the above behavior.
So you would have had to write:
<cluster name="goanna" location=".">
<cluster name="TESTGEN"/>
<cluster name="utility_tests" location="./utility"/>
<cluster name="log4e_tests" location="./log4e"/>
</cluster>
to get your expected result.
> In the cluster element above I needed to use different names to the paths
> because existing clusters already used the names 'utility' and 'log4e'.
In the Ace file generated by 'gexace' the cluster tags are
actually the concatenation of the parent full tag and the
cluster name, as you could see above with 'goanna_TESTGEN'
for example. So even if you used 'utility' somewhere else,
there is low risk that there will be a name clash.
Now the question is whether the policy of concatenating
tags adopted by 'gexace' is a good thing or not. Another
policy could have been to use directly the values specified
in the 'name' attribute and append 1, 2, 3 ,... when there
are name clashes:
<cluster name="foo" location="path/name">
<cluster name="bar"/>
<cluster name="toto>
<cluster name="bar"/>
</cluster>
</cluster>
how it works now:
foo: "path/name"
foo_bar: "path/name/bar"
foo_toto: "path/name/toto"
foo_toto_bar: "path/name/toto/bar"
other possible solution (not implemented):
foo: "path/name"
bar: "path/name/bar"
toto: "path/name/toto"
bar1: "path/name/toto/bar"
We'd put "bar1" instead of "bar" to avoid the name clash.
What's your opinion on both solutions?
--
Eric Bezault
mailto:er...@go...
http://www.gobosoft.com
|