It's all about the answers!

Ask a question

Build using two components with a common root directory?


Jesse Hill (1111) | asked Nov 10 '08, 1:18 p.m.
In order to play nicely with a legacy clearcase system, our project needs to ensure that all of our files live under a predefined root directory. We'd like to split the files between multiple components, but our build is failing due to the overlap:

2008-11-10 10:24:36 Should build occur?
Checking for changes incoming to workspace "Build Workspace" ... found changes (5)
2008-11-10 10:24:36 Yes: Pre-build participant "com.ibm.team.build.jazzscm" would like to build.
2008-11-10 10:24:37 Invoking pre-build participant "com.ibm.team.build.jazzscm"
Accepting changes into workspace "Build Workspace" ...
Fetching files to fetch destination "/home/jazz/buildsystem/buildengine/eclipse" ...
com.ibm.team.build.internal.scm.SourceControlUtility$2: Status ERROR: com.ibm.team.filesystem.client code=2 Folders to load overlap other contents null children=
at com.ibm.team.build.internal.scm.SourceControlUtility.updateFileCopyArea(SourceControlUtility.java:285)
at com.ibm.team.build.internal.engine.JazzScmPreBuildParticipant.preBuild(JazzScmPreBuildParticipant.java:152)
at com.ibm.team.build.internal.engine.BuildLoop.invokePreBuildParticipants(BuildLoop.java:570)
at com.ibm.team.build.internal.engine.BuildLoop$2.run(BuildLoop.java:426)
at java.lang.Thread.run(Thread.java:619)


Is there a workaround for this? Our structure is basically:

/component1/commonDir/project1
/component2/commonDir/project2

And I've tried using component load rules to specify something like:

RootFolderName=/commonDir/project1

in the component1 load rules and:

RootFolderName=/commonDir/project2

in the component2 load rules. With these rules, I get the slightly different error:

2008-11-10 10:55:10 Should build occur?
2008-11-10 10:55:10 Yes: Always build a user initiated request.
2008-11-10 10:55:10 Invoking pre-build participant "com.ibm.team.build.jazzscm"
Accepting changes into workspace "Build Workspace" ...
Deleting fetch destination "/home/jazz/buildsystem/buildengine/eclipse/workspace" before fetching ...
Fetching files to fetch destination "/home/jazz/buildsystem/buildengine/eclipse/workspace" ...
com.ibm.team.build.internal.scm.SourceControlUtility$2: Status WARNING: com.ibm.team.filesystem.client code=2 Loading the directories in the file system would overwrite/remove existing directories. null children=
at com.ibm.team.build.internal.scm.SourceControlUtility.updateFileCopyArea(SourceControlUtility.java:285)
at com.ibm.team.build.internal.engine.JazzScmPreBuildParticipant.preBuild(JazzScmPreBuildParticipant.java:152)
at com.ibm.team.build.internal.engine.BuildLoop.invokePreBuildParticipants(BuildLoop.java:570)
at com.ibm.team.build.internal.engine.BuildLoop$2.run(BuildLoop.java:426)
at java.lang.Thread.run(Thread.java:619)

Wondering if there are other tricks to try or if this is not supported currently.

Thanks very much,
Jesse

2 answers



permanent link
Jesse Hill (1111) | answered Nov 11 '08, 9:43 a.m.
To clarify - it's fine for our jazz build to check all the folders out with no overlap. So:

/component1/commonDir/project1
/component2/commonDir/project2

Could be checked out to:

/workspace/project1
/workspace/project2

I haven't been able to configure the component load rules to make this happen yet.

permanent link
Jesse Hill (1111) | answered Nov 11 '08, 2:26 p.m.
I resolved this by creating a stream for each of my components, and then a third for my build script. The build scripts use teamFetch to download the two components two sub-dirs to avoid the collision. They then use the project code in the sub-dirs to complete the build.

Your answer


Register or to post your answer.