Boost logo

Boost-Build :

From: David Abrahams (david.abrahams_at_[hidden])
Date: 2001-12-24 14:45:06


----- Original Message -----
From: "Vladimir Prus" <ghost_at_[hidden]>
To: <jamboost_at_[hidden]>
Sent: Monday, December 24, 2001 11:40 AM
Subject: [jamboost] Jam, Boost.Build -- minor problems & patches

>
> There are some issues with Jam & Boost.Build that I came across while
> experimenting with possible project semantics.
>
> 1.
> list = 1 2 3 4 5 6 7 ;
> list2 = 1 ;
> $(list[--2]) gives 1 2
> $(list2[1--2]) gives 1
> The behaviour is clearly a bug, I've fixed it and added tests for it.

Looks good!

> 2. I don't seem to understand IMPORT/EXPORT. Suppose:
>
> rule initialize-project ( project-module ) {
> IMPORT project : project-id location used-jamfiles
> : $(project-module) : project-id location used-jamfiles ;
> EXPORT $(project-module) : project-id location used-jamfiles ;
> }
>
> Alas, this code does not make new rules available using quilified names:
what
> is done is that new *local* rules appear in $(proejct-module) and then
> "exported" flag for them is set? Would it make sense to additionally
insert
> qualified name into the global namespace?

No, I'm trying to make just the primitives neccessary to do more
sophisticated things available as built-in rules. EXPORT just makes rules
visible via RULENAMES so that you can explicitly import them into the global
namespace as desired. Please see tools/build/new/class.jam for some example
usage.

> Writing
> module $(project-module) {
> rule project-id ......
> }
>
> allows to do what I want, though.
>
> 3. Jamfile in test directory simply doesn't work on Linux. /bin/sh
complains
> about syntax errors and other similar problems happen. I've fixed most
> problems, although one remains, and one is solved using simply kludge.
> Suppose the following command is used:
>
> echo "actions unbuilt { } unbuilt all ; EXIT error ;" > temp.jam
> jam -sBOOST_BUILD_PATH=.. -sJAMFILE=temp.jam
> rm temp.jam
>
> Jam, AFAIKT, puts the text to a bat file and executed file. Unfortunately,
> status returned is that of the *last* command!

Hmm, yes. If we use && between the commands it won't have that effect.
Actually, the rm command should be done as a separate step, as with
command-file handling on windows.

> 4. test.jam in the new directory imports "classes", which is missing.

It's actually "class" and I've just fixed that. "test.jam" was never really
meant to be checked in, but oh, well...

> 5. Module os.path does not work for two reasons. First, it's not
finished --
> I've added something to it locally and hope to add more later. Second,
module
> names containing dots just won't work: "os.path" will be included as
> "os.jam" by the import rule. I tried to fix it.
>
> 6. Jam identification change. I'm not sure about proper copyright
string --
> Boost.Jam is based on FTJam, which is based on Perforce Jam -- so I left
it
> out completely.

I think we can't drop any existing copyrights. I've integrated your changes,
but would appreciate it if you'd fix the copyright issue. Feel free to add
additional copyrights, though!

-Dave

 


Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk