Kim & I, while working to get the performance baselines going, found a couple of gotchas/bugs around the use of this property.
Unexpected archive format for the group
The first thing we noticed was that the group archive was being created using ant's zip task instead of using the native zip as expected. Our builder's build.properties specified the following:configs = *,*,*If we had read the documentation, we would have seen that the archivesFormat is ignored for groups. However, this is not strictly true, and we can instead set a format for the group directly:
archivesFormat = *,*,*-zip
groupConfigurations = true
configs=*,*,*This results in the zip format as desired.
archivesFormat = group,group,group-zip
groupConfigurations = true
The directory group.group.group does not exist
We also ran into the following error:/builds/src/assemble.org.eclipse.sdk.tests.group.group.group.xml:257: The directoryThis turns out to be a rather old bug. The problem is that when features gather together the rootfiles they contribute, they copy them into platform specific folders. In this case, building the *,*,* configuration, the rootfiles were copied into tmp/ANY.ANY.ANY. However, because of the way the grouped configurations feature is implemented, the assembly scripts end up looking for the rootfiles in the group.group.group folder.
/builds/src/tmp/eclipse/group.group.group does not exist
There are a few workarounds to this problem. One is to stick a mkdir in your customTarget/allElements assemble.<feature-id>
If you are using 3.4, then you can use the pre.archive target in customAssembly.xml to collect all the rootfiles into the correct folder:
<target name="pre.archive">
<!-- for each config being built -->
<move file="${eclipse.base}/ANY.ANY.ANY/${collectingFolder}"
todir="${rootFolder}" failonerror="false"/>
<move file="${eclipse.base}/win32.win32.x86/${collectingFolder}"
todir="${rootFolder}" failonerror="false" />
<move file="${eclipse.base}/linux.gtk.x86/${collectingFolder}"
todir="${rootFolder}" failonerror="false" />
</target>
The ${rootFolder} property is defined by the caller of the pre.archive target, and in this case will be ${eclipse.base}/group.group.group/${collectingFolder}.
As usual, I have not actually tried running the above ant, the details may be different.
No comments:
Post a Comment