cons-discuss
[Top][All Lists]
Advanced

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

Re: Possible error in dependency checking a lots of other points


From: Steven Knight
Subject: Re: Possible error in dependency checking a lots of other points
Date: Wed, 23 Jan 2002 10:21:24 -0600 (CST)

> $cat >> test.bat
> echo %1
> echo %2
> echo %3
> echo %4
> ^c
> 
> then:
> $ ./test.bat a b=c d
> 
> you'll get
> a
> b
> c
> d
> 
> not the expected
> a
> b=c
> d
> 
> I tried on different computers. Does anyone have the same problem?

What do you get if you put b=c in quotes?  Does that make cygwin
recognize it as a single argument?

> If it is ok to run the command in this way (in cygwin):
> $cons.bat -f construct.cons release 'project = hugin'
> 
> !! Note the space on both sides (needed only on one side but I dont remember
> which one)
> 
> You can change line 436 in version 2.3.0 to:
> my($var, $val) = /([^=\s]*)\s*=\s*(.*)/;

Sounds like a reasonable change.

> ****************************************************************************
> The big one now. I think cons is erroneous in its dependency check (I
> did not dig too much on why the error occures but I guess cons sees
> the dependency but does nothing about it)
        .
        .
        .
> The lines:
>       Checking export\include\lib.h
>         Checking dir1\lib.h
>       Rebuilding export\include\lib.h: out of date.
> Install dir1\lib.h as export\include\lib.h
> 
> are fine and prove that the dependency is found but they should be followed
> by:
>     Rebuilding dir0\main.obj: out of date.
> 
> Is that an error?

Looks like it could be.  You might try re-running it with the latest
checked-in source code.  There are some bugs fixed in there.

> ****************************************************************************
> Some points that I already took up but that no one seemed to bother
> answering.
> 
> *** documentation
>       The documentation could be better, (I know writtting
> documentation is not easy), I think some sort of cookbook would be
> very welcome. Specially if one could download it ready to use.  Please
> spare me the useless answer: "that's a great idea, we are dying for
> you (nadim) to do it."

Okay, I'll give you a different useless answer:  Hire someone to write
Cons documentation.  I'll bet someone on the list would be willing to do
more if it wasn't a volunteer effort.

> *** documentation
>       I think there is a bad example in the documentation. I quote:
> 
>       Repository derived files

>       If a repository tree contains derived files (usually object
> files, libraries, or executables), Cons will perform its normal
> signature calculation to decide whether the repository file is
> up-to-date or a derived file must be built locally. This means that,
> in order to ensure correct signature calculation, a repository tree
> must also contain the .consign files that were created by Cons when
> generating the derived files.
>
>       This would usually be accomplished by building the software in
> the repository
>       (nadim) HORROR, If by repository one means where the source
> files are then what's the point in having a Link command? CVS guys
> certainly "love" this example.

Link() is to provide variant builds in multiple subdirectories within
a single build tree.  A Repository would be a shrink-wrapped tree
containing all of the Link()ed variant build subdirectories, presumably
the "official" tree built by an integrator or some such.

I don't understand your point about "CVS guys."

>       (or, alternatively, in a build directory, and then copying the
> result to the repository):
>       (nadim) HORROR too, except that it takes longer and it's more
> complicated to do It.
> Am I wrong or Repository is just made for avoiding this problem, I quote:

Like any feature, there are different ways of using Repository, with
different degrees of effectiveness.  YMMV.  That doesn't necessarily
make it wrong for other people's build procedures.  For example, suppose
there's a policy that all builds are performed locally, on non-shared
disks, not directly on a centrally-accessible server.

> *** Link and Repository
>       These should work together (that's what is advertised) but I
> can't get it right. Does any one have a working example? please.

What have you tried?  Again, the model is, use Link() to do your
variants within a single build tree.  Then use Repository() to establish
that Cons can fetch things from another already-built tree.

> *** extension
>       Could we have a default extension for the Construct and
> conscript files so one could get a fancy icon under Win32 and The
> possibility to click it to jump in an editor with perl support.

That'd be pretty cool.  I'd be willing to integrate a change that would
looks for Construct.xxx as well as Construct.

In the Windows world, how do you go about picking a suffix that you know
doesn't conflict with a suffix some other application is using?

>                                                                 Unix
> cave man still using pico don't need to answer. I'll write the damn 5
> lines

Thanks for the cooperative attitude.

>       but only if they are going to be integrated and are needed by
> other. Note that this would not change a thing for non Win32 users.

> *** A minor point
>       I do not care if tab is 8, 12 or 1.5 spaces and I care even
> less if one like 3 characters or 8 characters indentation for ones
> blocks. But please do not mix tabs and spaces before the first
> charater you type. It just makes it painfull to read the code
> (brackets do not aligh). I can change the tab size on the fly in my
> editor but I then have to use the indentation size the source writer
> choose (if I use tab)or use spaces.  I all leading spaces are tabs,
> everybody gets the indentation size he loves (just set it in your
> editor). Note that comment alignement with tabs looks as bad.

Tell you what, I'll look at something like this if you stop putting
more than 80 characters on a line.  Oh, wait, you apparently don't like
having to accomodate "UNIX cave man..."

(The biggest hassle with regularizing white space in a global checkin is
losing the ability to diff versions before and after the big change and
only see the relevant changes.  Yeah, yeah, you can use diff -w, but
then you lose on those small changes where white space *is* important.)

>       The rule is simple and it works: ^\t*[^\t]*$
>       -set the tab size, you like, in your editor
>       -use only tabs for alignement before the firs non-space character
>       -after the firs non-space charater use only spaces to align
> 
>       I will not just complain, If you agree on this one and I get the
> super latest version, I will gladely reindent the whole blob with just
> tabs and check it visualy (good opportunity to read the source :-)

It's more viable to do the whole thing with all spaces, no tabs.
Otherwise, you push the indentation way way out when using standard
8-space stops.  Telling everyone to solve this by setting their editor
to 4-space stops loses because people will end up looking at lots of
*other* text that still intermixes spaces and tabs.

You can't solve this problem by trying to pretend that an 8-space stop
isn't the norm.

> *** seeing is beliving
>       Thanks to Steven Knight and Gary Oberbrunner for their help with
> Pre-post action (search archive for Re: pre-post actions ?)
>
>       As the output of make or cons become voluminous (specialy when
> using lint) it is quite comfortable to see what is happening without
> having to analyse 200 lines per second. Here is an example of how one
> get some simple coloring of the "commands".
> 
> $CONS = new cons
>                               (
>                                 ENV     => {%ENV}
>                               , CFLAGS  => '/nologo -DPROGRAM=\"Byacc\"'
>                               , CCCOM =>
>                                               [
>                                                 qq#@ printf "\\n\33[42m----- 
> Compiling %%s\33[0m\\n" %<#
>                                               , '%CC %CFLAGS %_IFLAGS -c %< 
> -o %>'
>                                               , qq#@ printf 
> "\\n\33[42m------------------------- %%s\33[0m\\n" %<#
>                                               ]
>                               , LINKCOM =>
>                                               [
>                                                 qq#@ printf "\\n\33[45m----- 
> Linking \33[0m\\n"#
>                                               , '%LINK %LDFLAGS /out:%> %< 
> %_LDIRS %LIBS'
>                                               ]
>                               ) ;
> 
> $CONS->Program
>                       (
>                       'byacc.exe'
>                       ,qw(
>                               closure.c
>                       ....

Cool enhancement.

> *** 2 questions:

>       How does one build C files to object files without having to
> generate a library?

Cough.  The Objects() method.

>       How does one assemble files (Win32)?

What do you mean by "assemble?"

        --SK




reply via email to

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