Community
Participate
Working Groups
I realized that different builds are using different versions of the publisher, and in some cases they may not have all the latest publisher fixes (unique categories, unzipped features, etc...). Instead of asking everyone on the train to update their basebuilder / p2, we thought it might be easier to write a small analyzer that checks the release train for these issues.
I'll do this during RC3.
Created attachment 136768 [details] metadata analyzer v1
This is an initial version of the metadata analyzer. This tool checks repositories for a number of known issues. In particular, it checks for: 1. feature jars have the unzip touchpoint 2. all IUs are unique in a given repo (unique with respect to version and id) 3. all IUs have a non-empty version (no 0.0.0) 4. Each IU has a license 5. Each IU has a copyright (actually I disabled thist test since there are lots of them) 6. The planner successfully runs for each "group" IU. (that is, the repository is self contained). When running on RC1 I got the follow: [ERROR] No unzip touchpoint for: org.eclipse.ecf.core.source.feature.jar [ERROR] No unzip touchpoint for: org.eclipse.ecf.core.feature.jar All IUs have unique names and versions. [ERROR] IU: Tools and Goodies has an empty version [ERROR] IU: SOA Development has an empty version [ERROR] IU: Business Intelligence, Reporting and Charting has an empty version [ERROR] IU: Modeling has an empty version [ERROR] IU: Collaboration has an empty version [ERROR] IU: Web, XML, and Java EE Development has an empty version [ERROR] IU: Test and Performance has an empty version [ERROR] IU: EclipseRT Target Platform Components has an empty version [ERROR] IU: Programming Languages has an empty version [ERROR] IU: Database Development has an empty version [ERROR] IU: Device Development has an empty version [ERROR] org.eclipse.stp.sca.feature.semantic.feature.group has no license Analysis completed in: 30097 ms
Created attachment 137413 [details] Metadata analyzer v2 Here is an upated version of the tool. This version checks that .qualifiers have been replaced, and that for each fragment, its host can be found.
Great tool, Ian. I have some additional comments - 1. Validate the repository against an input set of platform configurations, e.g. win32/win32/x86. 2. We should probably categorize the types of analysis and have an input mask that can turn on/off the categories for analysis. 3. One additional "category" could be comparing this repository with already existing "history" repositories. This category could probably check for Identical IU versions => Identical IU content. Check that versions are always moving forward (relevant for some builds) among other things. I could contribute a patch to the tool, if you like.
Thanks for the feedback Nalini. These are great suggestions. A patch might be tricky since the tool doesn't live in CVS yet (so there is no base from which to create a patch). Pascal, do you think we could move the tool somewhere? I would be happy to cleanup the code and prepare it.
Ian, is the tool controlled under CVS yet?
See also bug #208647
Created attachment 149930 [details] patch Here is the metadata verifier as it would look if it were included in the repo tools bundle. I have also done a bunch of refactoring. In particular, I removed the use of services and now use the extension registry. There are still some other things we could do like externalize our strings and create an ant task for this. I will commit this code once the IBuild is declared.
Created attachment 149931 [details] mylyn/context/zip
Let's actually release that in the branch when we start.
This will be released in the API branch. Marking M4 because that's when the merge will take place.
I have released a first cut of this tool. In particular, I added a RepositoryAnalyzerApplication that calls the analyzer. For testing purposes the sample application is currently hard coded to the Galileo repo, but I will add command line processing. (See bug 295297). We could also add a variety of other tools (ant tasks for example). Finally, I released this tool with 7 analysis operations: 1. Copyright Analyzer -- Checks for copyright notices 2. HostCheckAnalyzer -- Checks that each fragment has a host 3. IUCounting -- Just prints out information about the number of IUs, etc... 4. LicenseAnalyzer -- Checks for license information 5. UniqueIUAnalyzer -- Checks that each IU is unique (wrt to ID and Version) 6. UnzipFeatureJarAnalyzer -- Checks that each Featurejar has theunzip touchpoint 7. VersionAnalyzer -- Checks that .qualifier has been replaced., I'm going to mark this bug as fixed. We can/should open specific bugs as they come up. The code is in the branch.
Is this tool documented anywhere Ian? e.g., how to call it from the CLI?