[jamming] BJam's command/shell execution

Josh Pollak jpollak at kivasystems.com
Fri Mar 23 11:34:28 PST 2007


On Fri, 2007-03-23 at 08:57 -0700, Diane Holt wrote:
> I haven't used bjam myself, but have you tried:
> 
> REV = [ Shell "svnversion" ] ;

That doesn't seem to work:

# Begin Jamfile
REV = [ Shell "svnversion" ] ;

echo $REV ;
# End Jamfile

-------------------------------------

jpollak at moya:~/src/myproj$ jam
$REV
...found 8 targets...
...updating 1 target...
Shell svnversion
/bin/sh: Syntax error: redirection unexpected

awk  '
NR == 1 { print "#!/bin/sh"  }
NR == 1 && /^[#:]/ { next }
/^##/ { next }
{ print }
' <  > svnversion 

...failed Shell svnversion...
...failed updating 1 target...

Oh well, I'm sure I'm doing something wrong.

-Josh

> Diane
> 
> On 3/23/07, Joshua ChaitinPollak <jpollak at kivasystems.com> wrote:
>         I saw that, but I can't figure out how to make it work...  
>         
>         
>         I thought the syntax would be something like:
>         
>         
>         Shell "svnversion" : $REV ;
>         
>         
>         But that doesn't work.
>         
>         
>         Also, and this may be because of the way I'm using bjam, but
>         it seems to be conflicting with Jam's Shell command (Which
>         seems to check the file is a shell script, and then chmod's
>         it?).
>         
>         
>         -Josh
>         
>         On Mar 23, 2007, at 11:46 AM, Diane Holt wrote:
>         
>         > Boost Jam has this (it's what I patterned the Command
>         > built-in after): 
>         > 
>         > 
>         > The SHELL Rule
>         > rule SHELL ( command )
>         > 
>         > SHELL executes command, and then returns the standard output
>         > of command. SHELL only works on platforms with a popen()
>         > function in the C library. On platforms without a working
>         > popen() function, SHELL is implemented as a no-op. SHELL
>         > works on Unix, MacOS X, and most Windows compilers. SHELL is
>         > a no-op on Metrowerks compilers under Windows.
>         > 
>         > 
>         > 
>         > On 3/22/07, Joshua ChaitinPollak <jpollak at kivasystems.com>
>         > wrote:
>         >         Hi,
>         >         
>         >         I'm using BJam, and I can't figure out how to get
>         >         the shell script 
>         >         execution working. I know there was a recent thread
>         >         about a COMMAND
>         >         patch for Jam, and I'm looking forward to that, but
>         >         for now I'm using 
>         >         BJam and I don't have the time to apply patches and
>         >         compile, etc. 
>         >         
>         >         I've ported most of my project to Jam, but I have
>         >         one Makefile I
>         >         can't figure out how to ditch. I have this Makefile
>         >         code:
>         >         
>         >         REVISION := $(shell svnversion)
>         >         OLD_REVISION := $(shell cat revision.cpp
>         >         2> /dev/null)
>         >         
>         >         revision.cpp:
>         >         ifeq (,$(findstring \"{REVISION}\",
>         >         ${OLD_REVISION}))
>         >            @echo "void config::getRevision(std::string& rev)
>         >         { rev = \"$ 
>         >         {REVISION}\"; } >> revision.cpp
>         >         endif
>         >         
>         >         This (should) effectively (re)builds revision.cpp if
>         >         the revision has
>         >         changed. My program depends in revision.cpp, so if
>         >         revision has
>         >         changed, the file gets rebuild and the program gets
>         >         rebuilt. 
>         >         
>         >         How would I do this in a Jam way? I guess I could
>         >         call a shell script
>         >         to build the revision.cpp file all the time, but I'd
>         >         rather not
>         >         unless its out of date.
>         >         
>         >         -Josh
>         >         
>         >         --
>         >         Joshua ChaitinPollak 
>         >         Software Engineer
>         >         Kiva Systems
>         >         
>         >         _______________________________________________
>         >         jamming mailing list  -  jamming at perforce.com
>         >         http://maillist.perforce.com/mailman/listinfo/jamming 
>         > 
>         
>         
>         -- 
>         Joshua ChaitinPollak
>         Software Engineer
>         Kiva Systems
>         
>         
>         
>         
> 


More information about the jamming mailing list