Meego Wiki
Views

Quality/Compliance tools

From MeeGo wiki
(Difference between revisions)
Jump to: navigation, search
(Packages and Repos)
Line 25: Line 25:
* MeeGo 1.0, 1.1, Trunk (1.2)
* MeeGo 1.0, 1.1, Trunk (1.2)
-
The packages appear in the tools repository at [http://repo.meego.com/MeeGo/tools/repos/ tools/repos]. rpm-based distributions have usable .repo files in each distribution directory which can be used by zypper or yum, but the deb-based distributions do not; the sources.list.d entry needs to be constructed from the path.  (XXX: show an example, since OBS doesn't make deb repos in the "conventional" way)
+
The packages appear in the tools repository at [http://repo.meego.com/MeeGo/tools/repos/ tools/repos]. rpm-based distributions have usable .repo files in each distribution directory which can be used by zypper or yum, but the deb-based distributions do not; the sources.list.d entry needs to be constructed from the path.  For example, for Ubuntu 10.10 the following in /etc/apt/sources.list.d/meego-tools.list:
 +
  deb http://repo/meego.com/MeeGo/tools/repos/ubuntu/10.10/ ./
For distros which use rpms natively, there are three packages available:
For distros which use rpms natively, there are three packages available:

Revision as of 21:39, 4 June 2011

Contents

Introduction

The compliance tools are used to check distributions using the MeeGo software stack, and applications targeting such distributions, for compliance with the MeeGo requirements. Checking is done against reference information which tells the tools what is mandatory.

For MeeGo distribution compliance checking, the candidate distribution needs to supply an image of the distribution in suitable format, which will include source rpm packages. The other input to the tool is an official MeeGo reference image (which also includes source packages), and a list of the mandatory packages.

For application compliance checking, the candidate rpm package is supplied as input. Other inputs are an official MeeGo reference image (this one does not include sources), which will be used to test that installation actually works, as well as a list of packages and a list of packages that make up the MeeGo API. The latter two are used to determine valid dependencies and to perform a check of whether the application is a MeeGo API application or one that uses different/additional libaries.

The tools will generate report files (in HTML currently) to show the result.

Installation

The compliance tools can be installed using released rpm and deb packages (available for a variety of distrubutions), or installed from source code if using an unsupported distribution.

Packages and Repos

The code lives in the MeeGo git repository, and will be built by the OBS for all the supported distributions automatically. The home for this is devel:tools:building/meego-compliance-tools.

The following Linux distributions are supported at the moment by OBS (this is a changing list, check the repositories which may be more up to date than this page):

  • Debian 5.0
  • xUbuntu 9.10, 10.04, 10.10
  • Fedora 11, 12, 13, 14
  • openSUSE 11.1, 11.2, 11.3, 11.4
  • MeeGo 1.0, 1.1, Trunk (1.2)

The packages appear in the tools repository at tools/repos. rpm-based distributions have usable .repo files in each distribution directory which can be used by zypper or yum, but the deb-based distributions do not; the sources.list.d entry needs to be constructed from the path. For example, for Ubuntu 10.10 the following in /etc/apt/sources.list.d/meego-tools.list:

 deb http://repo/meego.com/MeeGo/tools/repos/ubuntu/10.10/ ./

For distros which use rpms natively, there are three packages available:

  • meego-compliance-tools (common data, will be installed automatically as the dependency of the two packages below)
  • meego-dist-compliance-tools (for MeeGo distro compliance checking)
  • meego-app-compliance-tools. (for MeeGo application compliance checking)

For distros which use debs natively, only the meego-compliance-tools package is needed.

Source Code

The tools can also be installed from source (which is all Python). After fetching the code, under the code directory, run:

 $ [sudo] make install

The source code is hosted at:

 meego-compliance-tools@gitorious.org

A typical fetch would be:

 git clone git://gitorious.org/meego-developer-tools/meego-compliance-tools.git

Compliance Image Preparation

To prepare the images used in compliance tools, you need MIC2 with new features (version 0.22.0 or later). The mic2 package from the same tools repository described above will provide a current version.

Features

dist-compliance-tool

Executes compliance checking for distributions build from the MeeGo code base. The following features are supported:

  • Binary package comparison:
    • Exist in target image?
    • Version matches the requirement?
      • flexible version checking: support rules with comparison operators like ">=" in core package list (kernel >= 2.6.35)
  • Content in source rpm comparison:
    • This step will be skipped if binary rpm checking fails
    • Spec filename
    • Spec content
    • Sources and md5sum
    • Patches and the content
  • File checking:
    • Exist in target image
      • For example check /usr/lib/libGLES2.so.1 if exists in target image or not.

app-compliance-tool

For compliance checking for MeeGo applications, the following features are supported:

  • check if all dependent packages exist in core package list
  • check if the target package can be installed in the minimal image
  • verify the installation location of the application
  • verify the minimal requirement of the desktop file and icon for the application

Usage

Image Preparation

Before using the tools, the reference image needs to be created by using MIC2 (version 0.22.0 or later):

 $ [sudo] mic-image-creator --run-mode=0 --cache=mycachedir --format=fs  --config=<ks file> --package=tar.bz2 --include-source

The sample ks file is at /usr/share/compliance-tools/share dir after installation or can be downloaded at:

 Meego-1.1:MeeGo-minimal-compliance-1.0.99.1.ks
 Meego-1.2:MeeGo-minimal-compliance-1.1.99.7.ks

The sample core list file is at /usr/share/compliance-tools/share dir after installation or can be downloaded at:

 Meego-1.1:Core-list-1.0.99.1
 Meego-1.2:Core-list-1.1.99.7

And the ks file and core list should be synced with and conform to the latest MeeGo compliance spec.

For application compliance checking, the source packages are not needed, so the --include-source option can be omitted.

In future, official pre-made images will be available, when this occurs the appropriate image should be downloaded instead of constructed.

To use the dist compliance check tool (dist_compliance), the needed target image can also be generated by mic2 using the above options. But the target images will not be limited to this specific format (fs in tar.bz2). If the exist target image is in other formats, please unpack it to a directory manually using format specific instructions and use this directory as the command line input.

Devices Compliance Check

The command "dist_compliance" is for checking compliance of MeeGo devices, or distributions.

   Usage: [sudo] dist_compliance [options]
   Options:
     --version             show program's version number and exit
     -h, --help            show this help message and exit
     -c CORELIST, --corelist=CORELIST
                           File containing MeeGo Core package list
     -r REF, --reference=REF
                           Path to reference image or unpacked directory
     -t TGT, --target=TGT  Path to target image or unpacked directory
     -o OUTDIR, --outdir=OUTDIR
                           Output directory of report
     -d, --debug           Save intermediate log data for debugging

Apps Compliance Check

The command "app_compliance" is for applications compliance checking.

   Usage: [sudo] app_compliance [options] <app-rpm>
   Options:
     --version             show program's version number and exit
     -h, --help            show this help message and exit
     -r REFIMAGE, --refimage=REFIMAGE
                           Path to reference image
     -c CORELIST, --corelist=CORELIST
                           File containing MeeGo Core package list
     -m MEEGO_API_PKGLIST, --meego_api_pkglist=MEEGO_API_PKGLIST
                           File containing MeeGo API package list
     -o OUTDIR, --outdir=OUTDIR
                           Output directory of report
     -d, --debug           Save intermediate log data for debugging

The sample MeeGo API package list file can be downloaded at:

   MeeGo-API-pkglist.txt

Result Format

Currently, the output of checking tools will be stored in HTML files.

A distribution check report will look like this:

Sample Report

Bug Report

If problems were found in the compliance tools, please file bugs at bugs.meego.com. There is a top-level category for compliance - use "MeeGo Spec and Compliance", product "Compliance Tools".

TODO

  • add checking for contents of binary packages
  • use new image format with separated src.rpm pack
  • Web UI for commenting the result
  • Web service for app checking?
  • Eliminate need for a reference compliance image for dist checking
Personal tools