David Abrahams | 1 Apr 04:46 2002

Odd behavior of MATCH

input:
    x = [ MATCH (foo)(.*) : foo ] ;
    ECHO -$(x)+ ;

output:
    -foo+

Shouldn't this print:

    -foo+ -+

instead? The 2nd pattern was matched, after all.

-Dave
+---------------------------------------------------------------+
                  David Abrahams
      C++ Booster (http://www.boost.org)               O__  ==
      Pythonista (http://www.python.org)              c/ /'_ ==
  resume: http://users.rcn.com/abrahams/resume.html  (*) \(*) ==
          email: david.abrahams <at> rcn.com
+---------------------------------------------------------------+

Badari Kakumani | 1 Apr 07:20 2002
Picon

bug in Archive rule?

folks,

i am trying to debug a situation which is dropping one of our object
files (G0_distrib_lib_msg_gen.o) from
the corresponding library (libens.g0.a).

i ran jam with -d9 and have included the relevant output from jam.

jam is simply skipping 
<infra!distrib!lib!obj-4k>libens.g0.a(G0_distrib_lib_msg_gen.o).
which should have been part of $(>) for the Archive rule.

anyone has ideas on what could cause jam to drop items
from $(>) list? is this some known bug?

thanks,
-badari

relavant portions of ' jam -d9' output:
=======================================

>>>>|>>>>|>>>> Archive <infra!distrib!lib!obj-4k>libens.g0.a  :
<infra!distrib!lib!obj-4k>G0_ens.o <infra!distrib!lib!obj-4k>G0_distrib_lib_msg_gen.o 

...

get AR = ar.98r1-v0.mips64 -csr 
list > ar.98r1-v0.mips64 <
list > -csr <
expanded to ar.98r1-v0.mips64 -csr 
(Continue reading)

Badari Kakumani | 1 Apr 17:55 2002
Picon

Re: bug in Archive rule?


    Jian Yang writes:
    > Hi Badari,
    > 
    > 1) In Jambase, I found this actions definition for "Archive"
    > 
    >          actions updated together piecemeal Archive
    >          {
    >          $(AR) $(<) $(>)
    >          }
    > 
    > Note that there is an "updated" modifier in it, which when specified will 
    > have $(>) include only source targets themselves marked for updating.

this file, G0_distrib_lib_msg_gen.o is getting archived into THREE libraries.
so it was already present when libens.g0.a was needed to be built.
they had KEEPOBJS enabled for this segment of Jamfile and that kept all
the object files around after they are built and archived.

what if KEEPOBJS is set and all the objects are present AND the library
was accidentally removed? would that cause the library to be NOT generated
at all (since none of the objects themselves got built)? 
i think 'updated' should mean that:
   a) if the library already had the object AND 
   b) the object was updated. 
In this particular case since the libens.g0.a was non-existant, a) above
is NOT satisfied. so 'updated' clause should NOT have kicked in and jam should
have proceeded to archive G0_distrib_lib_msg_gen.o

that might be the bug in jam.
(Continue reading)

Diane Holt | 1 Apr 20:23 2002
Picon

Re: bug in Archive rule?

It shouldn't matter that the .o files are kept around -- you could compile
them by hand, and it still shouldn't matter. All that should matter is
whether the object file inside the archive is older than the .o outside of
the archive, in which case it should be included in the ar update.

If your Jambase is compiled into your 'jam' executable, changes you make
to Jambase won't take effect (unless you explicitly point to it) -- you'd
need to make the changes in jambase.c and rebuild 'jam'.

Diane

=====
(holtdl <at> yahoo.com)

__________________________________________________
Do You Yahoo!?
Yahoo! Greetings - send holiday greetings for Easter, Passover
http://greetings.yahoo.com/

David Hoogvorst | 1 Apr 20:48 2002
Picon
Picon

Jam and static source checks. Any advice?

Hello everyone,

I'm quite new to jam, but quite enthousiastic I should say, and try to
change the build system at my work to jam. Now, we have a home-made system
merely based on jam, but with a lot of Perl and Ruby scripting around it.

We develop software since 1982, so in the whole system parts are in Fortran,
parts in C and parts in C++. Furthermore, a lot of code is generated with
Pascal tools and Perl and Ruby scripts, due to (inter)nationalization needs
in the Fortran bit. The whole codebase is about 10,000 files I guess.

What we do, is that while developing (on NT or W2000), one has a local copy
of the module in a working directory. (We don't use the MS Visual
environment or anything like that). The rest of the sources remain in the
repository. Whenever one tries to build, his sources are put through a
number of static checks (line length, diacritic symbols, lint), to avoid as
many problems as possible when porting the software to the platforms we do:
OpenVMS, AS/400, IBM Mainframe, most Unixes (Unices?), and NT/W2000.

I've been struggling getting my jambase right. What I want to do first, is
to get the sources through these static checks. These checks are all command
line tools that exit with nonzero if not succesful. Furthermore, they yield
report files.
What I want is the following: If the static check is successful, remove all
the report files. If the static check fails, leave the report files and stop
the build (or leave a clear message where the build started to go wrong).
Jam cleans up when things go wrong, and leaves no trace, so that's just the
opposite of what I want.

Furthermore I wonder how I should go about with this local work directory.
(Continue reading)

David Hoogvorst | 1 Apr 20:51 2002
Picon
Picon

Jam static checks, correction...

Sorry, the current system is not based on jam, but on make...

Vladimir Prus | 3 Apr 09:41 2002
Picon

"echo" behavour

Hi,
I've noted that the following:

    echo "hi" ;

outputs the character sequence 'h', 'i', ' ', '\n'.
Note that whitespace. Why would I care? The reason is that when writing tests 
for Boost.Build I will surely need to compare jam output with expected 
output, and having trailing spaces in tests can lead to many problems. Would 
it be reasonable to apply the following trivial patch?

--- lists.c	Sun Mar 31 17:18:56 2002
+++ ../../../../boost-cvs/tools/build/jam_src/lists.c	Sun Mar 31 17:16:32 
2002
 <at>  <at>  -172,8 +172,12  <at>  <at> 
 void
 list_print( LIST *l )
 {
-	for( ; l; l = list_next( l ) )
-	    printf( "%s ", l->string );
+        LIST *p = 0; 
+        for( ; l; p = l, l = list_next( l ) )
+            if ( p ) 
+                printf( "%s ", p->string );
+        if ( p )
+            printf( "%s", p->string );                
 }

 /*

(Continue reading)

rmg | 3 Apr 21:21 2002

jam2.4, release candidate 2, now available

Hello Jammers.

Based on feedback from jam2.4rc1 use, we have made some changes, which
become jam2.4rc2. These are now available for download as

  http://public.perforce.com/public/jam/jam-2.4.tar
  http://public.perforce.com/public/jam/jam-2.4.zip
  ftp://ftp.perforce.com/jam/jam-2.4.tar
  ftp://ftp.perforce.com/jam/jam-2.4.zip

From the RELNOTES:

| 0.  Changes between 2.4rc1 and 2.4rc2:
| 
|     THESE NOTES WILL BE REMOVED WITH THE FINAL 2.4 RELEASE, SINCE THEY
|     REFER EXCLUSIVELY TO ADJUSTMENTS IN BEHAVIORS NEW BETWEEN 2.3 and
|     2.4:
| 
|         Make MATCH generate empty strings for () subexpressions that
|         match nothing, rather than generating nothing at all.
|         Thanks to David Abrahams.
| 
|         GLOB now applies the pattern to the directory-less filename,
|         rather than the whole path. Thanks to Niklaus Giger.
| 
|         Make Match rule do productized results, rather than
|         using just $(1[1]) as pattern and $(2[1]) as the string.

(For more detail on the effect of these changes, please refer to the
change descriptions of changes 1601, 1612, 1616 and 1614 in the Public
(Continue reading)

Mike Meyers | 5 Apr 01:40 2002
Picon

MS VC++ and Perforce

We are looking to move to Perfoce and have a major
stumbling block. There are many people at my company
that are familiar and hope to remain using Visual
Studio for development as well as debugging. I think
debugging is the biggest hurdle. 

Please excuse my Microsoft ignorance, but if we use
the 'cl' command line compiler then we seem forced to
debug using VC++. However to take full advantage of
the MS VC++ debugger we need the binary to be part of
a VC++ project. 

How are others handling this? Can you offer some
advice? I'm hoping to avoid checking the .dsp and .dsw
files into source control along with the Jamfile.

Thanks in advance,
Mike

__________________________________________________
Do You Yahoo!?
Yahoo! Tax Center - online filing with TurboTax
http://taxes.yahoo.com/

Mike Steed | 5 Apr 02:00 2002

RE: MS VC++ and Perforce

We use jam with the Microsoft compiler (among others).  To debug an exe built without a Visual Studio
project, start the IDE, then choose File->Open Workspace, change the file type to "Executable Files",
and open your exe.  You can set command line parameters for your app with Project->Settings->Debug.

Regards,
Mike.

> -----Original Message-----
> From: Mike Meyers [mailto:myro1 <at> yahoo.com]
> Sent: Thursday, April 04, 2002 4:40 pm
> To: jamming <at> perforce.com
> Subject: [jamming] MS VC++ and Perforce
> 
> 
> We are looking to move to Perfoce and have a major
> stumbling block. There are many people at my company
> that are familiar and hope to remain using Visual
> Studio for development as well as debugging. I think
> debugging is the biggest hurdle. 
> 
> Please excuse my Microsoft ignorance, but if we use
> the 'cl' command line compiler then we seem forced to
> debug using VC++. However to take full advantage of
> the MS VC++ debugger we need the binary to be part of
> a VC++ project. 
> 
> How are others handling this? Can you offer some
> advice? I'm hoping to avoid checking the .dsp and .dsw
> files into source control along with the Jamfile.
> 
(Continue reading)


Gmane