<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.meego.com/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.meego.com/index.php?title=Special:Contributions/Gabrbedd&amp;feed=atom&amp;limit=50&amp;target=Gabrbedd&amp;year=&amp;month=</id>
		<title>MeeGo wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.meego.com/index.php?title=Special:Contributions/Gabrbedd&amp;feed=atom&amp;limit=50&amp;target=Gabrbedd&amp;year=&amp;month="/>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Special:Contributions/Gabrbedd"/>
		<updated>2013-05-22T06:27:59Z</updated>
		<subtitle>From MeeGo wiki</subtitle>
		<generator>MediaWiki 1.16.2</generator>

	<entry>
		<id>http://wiki.meego.com/Packaging/Guidelines</id>
		<title>Packaging/Guidelines</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Packaging/Guidelines"/>
				<updated>2011-06-01T04:20:51Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: Add info about post-install scripts.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Packaging Guidelines =&lt;br /&gt;
&lt;br /&gt;
Guidelines below were adapted for MeeGo from Moblin, OpenSUSE, Fedora and other distributions.&lt;br /&gt;
&lt;br /&gt;
== Maintaining a Package ==&lt;br /&gt;
Every package in MeeGo needs a maintainer (AKA owner, bug owner). Any package without an owner will automatically be nominated for deletion from MeeGo. A package maintainer is responsible for making sure that&lt;br /&gt;
* packages are up to date with latest upstream&lt;br /&gt;
* packages consistently build in the MeeGo build system and fix build failures when they occur&lt;br /&gt;
* package meta data in the RPM spec file is accurate&lt;br /&gt;
* the license of the package is correct&lt;br /&gt;
* she/he follow upstream for any critical security issues and fix them ASAP&lt;br /&gt;
* she/he Provides information about major changes to other packagers and maintainer to allow enough time for fixing compatibility issues&lt;br /&gt;
&lt;br /&gt;
Since the data about ownership of packages is not maintained anywhere right now we are starting to use available meta data fields in the build system to track ownership. This will be better integrated and managed at a later point, but to be able to start somewhere MeeGo will use the bugowner key available for every package. We will start adding the metadata about maintainers (bugowners) in the build system and we will have agrace period for this data to be supplied and added to the build system. After the grace period, packages without maintainer will be reviewed and any packages without a maintainer will be nominated for deletion.&lt;br /&gt;
&lt;br /&gt;
To add yourself as a bugowner of a package, please follow the steps below:&lt;br /&gt;
* Update to the most recent osc version (0.130) from the MeeGo tools repository. Note: this is essential, since the needed options are not released upstream yet. Tools: http://repo.meego.com/MeeGo/tools/repos/&lt;br /&gt;
* Identify the packages  of which you are the ultimate maintainer&lt;br /&gt;
* Do the following for every package you maintain in the Trunk:* projects:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
osc reqms --role bugowner &amp;lt;project&amp;gt; &amp;lt;package&amp;gt; -m &amp;quot;I want to own this because I love this package&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
* Your request will be sent and someone in release engineering will approve it&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The current status can be seen here: [[Packaging/Maintainers]]&lt;br /&gt;
&lt;br /&gt;
== Package Naming ==&lt;br /&gt;
* Dash '-' must be used as the delimiter for name parts. &lt;br /&gt;
* Do NOT use an underscore '_', a plus '+', or a period '.' as a delimiter. &lt;br /&gt;
* The spec file should be named using the %{name}.spec scheme which should also correspond to the package name within a project in the build system.&lt;br /&gt;
&lt;br /&gt;
== Version and Release ==&lt;br /&gt;
&lt;br /&gt;
Package Versions look like : X.Y.Z-R.B&lt;br /&gt;
* X.Y.Z is the 'Version' number - determined by the source package.&lt;br /&gt;
* R is the 'Release' number which is automatically incremented by OBS whenever a source/packaging changes (eg a check-in or request acceptance)&lt;br /&gt;
* B is the build number which is incremented when the package is rebuilt due to a dependency change.&lt;br /&gt;
&lt;br /&gt;
=== Version ===&lt;br /&gt;
&lt;br /&gt;
The Version field in the spec file is where you should put the current version of the software being packaged. &lt;br /&gt;
There are four cases where the version contains non-numeric characters:&lt;br /&gt;
&lt;br /&gt;
* Pre-release packages: Packages released as &amp;quot;pre-release&amp;quot; versions, prior to a &amp;quot;final&amp;quot; version. Example tags include &amp;quot;alpha&amp;quot;, &amp;quot;beta&amp;quot;, &amp;quot;rc&amp;quot;, &amp;quot;cvs&amp;quot;, &amp;quot;git&amp;quot;, &amp;quot;svn&amp;quot;, etc... Details can be found below: Non-Numeric Version.&lt;br /&gt;
* Post-release packages: Packages released after a &amp;quot;final&amp;quot; version. These packages contain the same numeric version as the &amp;quot;final&amp;quot; version, but have an additional non-numeric identifier. This mechanism may also be used for packaging only changes to an upstream package.&lt;br /&gt;
* Snapshot packages: Packages built from SCM snapshots. These packages could be either &amp;quot;pre&amp;quot; or &amp;quot;post&amp;quot; release packages. &lt;br /&gt;
&lt;br /&gt;
==== Non-Numeric Version ====&lt;br /&gt;
&lt;br /&gt;
We can use letters and tilde into the version tag. We do not use the Release field for this.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Let's assume the following Qt versions:&lt;br /&gt;
Qt 4.7.0~beta1&lt;br /&gt;
Qt 4.7.0~beta1+git1&lt;br /&gt;
Qt 4.7.0~beta2&lt;br /&gt;
Qt 4.7.0&lt;br /&gt;
&lt;br /&gt;
Version comparison results:&lt;br /&gt;
$ rpmdev-vercmp 4.7.0~beta1 4.7.0~beta1+git1&lt;br /&gt;
0:4.7.0~beta1+git1-None is newer&lt;br /&gt;
&lt;br /&gt;
$ rpmdev-vercmp 4.7.0~beta1+git2 4.7.0~beta2&lt;br /&gt;
0:4.7.0~beta2-None is newer&lt;br /&gt;
&lt;br /&gt;
$ rpmdev-vercmp 4.7.0~beta2 4.7.0&lt;br /&gt;
0:4.7.0-None is newer&lt;br /&gt;
&lt;br /&gt;
Conclusion:&lt;br /&gt;
4.7.0~beta1 &amp;lt; 4.7.0~beta1+git1 &amp;lt; 4.7.0~beta2 &amp;lt; 4.7.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the ~ comparison order is specific to MeeGo rpm (http://rpm.org/ticket/56).&lt;br /&gt;
&lt;br /&gt;
=== Release ===&lt;br /&gt;
&lt;br /&gt;
This field is handled by the build system to be able to manage automated builds. The initial setting in the spec file is used by the build system but in many cases it does not need to be changed.&lt;br /&gt;
&lt;br /&gt;
There is no need for the %{dist} macro in the release field. This is also handled directly by the build system.&lt;br /&gt;
&lt;br /&gt;
The release number is set to zero with any version update. It is increased by one with any change in the package.&lt;br /&gt;
&lt;br /&gt;
We can put letters into the version tag, so we do not use the Release field for this. Details can be found above.&lt;br /&gt;
&lt;br /&gt;
If you build the package outside of the OBS or if you copy a package then you will of course not get the correct Release or Build values.&lt;br /&gt;
&lt;br /&gt;
== Tags ==&lt;br /&gt;
*The ''Packager'' tag should not be used in spec files. The identities of the packagers are evident from the changelog entries. By not using the ''Packager'' tag, you also avoid seeing bad binaries rebuilt by someone else with your name in the header.  See also the '''Maximum RPM definition of the Packager tag''' at [http://www.rpm.org/max-rpm/s1-rpm-inside-tags.html#S3-RPM-INSIDE-PACKAGER-TAG www.rpm.org] .  If you need to include information about the packager in the rpms ''you'' built, use &amp;lt;code&amp;gt;%packager&amp;lt;/code&amp;gt; in your &amp;lt;code&amp;gt;~/.rpmmacros&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
*The ''Vendor'' tag should not be used. It is set automatically by the build system.&lt;br /&gt;
&lt;br /&gt;
*Usually, the ''Pre&amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;Req'' tag should be replaced by plain ''Requires''.   For more info, see Maximum RPM snapshot's  [http://www.rpm.org/max-rpm-snapshot/s1-rpm-depend-manual-dependencies.html#S3-RPM-DEPEND-FINE-GRAINED fine grained dependencies chapter] .&lt;br /&gt;
* The ''Source'' tag documents where to find the upstream sources for the rpm.  In most cases this should be a complete URL to the upstream tarball.  &lt;br /&gt;
=== Summary Tag ===&lt;br /&gt;
The summary is a single line string describing the package. The maximum length is 80 characters. It should fit all standard situations and not assume any special context. It should be helpful alone, in alphabetically sorted or unsorted lists of some selected packages, and in alphabetically sorted or unsorted lists of all packages.&lt;br /&gt;
&lt;br /&gt;
It should describe the package's main function and point out any special properties of the package to support the user comparing similar packages. For example, the two words &amp;quot;Web Browser&amp;quot; summarize any web browser, but using additional adjectives (like minimalistic, complex, GNOME, KDE, text-based, fast, or author's) helps characterize a specific package.&lt;br /&gt;
&lt;br /&gt;
The RPM spec file contains only the English version to keep the RPM database small.&lt;br /&gt;
&lt;br /&gt;
*The ''Summary'' tag value should not end in a period. If this bothers you from a grammatical point of view, sit down, take a deep breath, and get over it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Group Tag ===&lt;br /&gt;
&lt;br /&gt;
Valid RPM Groups are:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Amusements/Games&lt;br /&gt;
Amusements/Graphics&lt;br /&gt;
Applications/Archiving&lt;br /&gt;
Applications/Communications&lt;br /&gt;
Applications/Databases&lt;br /&gt;
Applications/Editors&lt;br /&gt;
Applications/Emulators&lt;br /&gt;
Applications/Engineering&lt;br /&gt;
Applications/File&lt;br /&gt;
Applications/Internet&lt;br /&gt;
Applications/Multimedia&lt;br /&gt;
Applications/Productivity&lt;br /&gt;
Applications/Publishing&lt;br /&gt;
Applications/System&lt;br /&gt;
Applications/Text&lt;br /&gt;
Development/Debuggers&lt;br /&gt;
Development/Languages&lt;br /&gt;
Development/Libraries&lt;br /&gt;
Development/System&lt;br /&gt;
Development/Tools&lt;br /&gt;
Documentation&lt;br /&gt;
System/Boot&lt;br /&gt;
System/Console&lt;br /&gt;
System/I18n/Chinese&lt;br /&gt;
System/I18n/Japanese&lt;br /&gt;
System/I18n/Korean&lt;br /&gt;
System/Packages&lt;br /&gt;
System/Base&lt;br /&gt;
System/Daemons&lt;br /&gt;
System/Kernel&lt;br /&gt;
System/Libraries&lt;br /&gt;
System/Shells&lt;br /&gt;
System/X11&lt;br /&gt;
System/X11/Fonts&lt;br /&gt;
System/X11/Icons&lt;br /&gt;
System/GUI/XFCE&lt;br /&gt;
System/GUI/Other&lt;br /&gt;
System/GUI/GNOME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Domain/Subsystem based RPM Groups ====&lt;br /&gt;
&lt;br /&gt;
Following the new architecture and the new [http://meego.com/developers/meego-architecture/meego-architecture-domain-view domain view], RPM groups (The Group tag in the RPM) for core packages will be changed to match the domains and any package in the core that is part of one of the domain will have a corresponding group that matches the architecture.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Domain   &lt;br /&gt;
! Subsystem  &lt;br /&gt;
!Groupname&lt;br /&gt;
|-&lt;br /&gt;
| Communications   ||  Cellular Adaptation   ||  Communications/Cellular Adaptation&lt;br /&gt;
|-&lt;br /&gt;
| Communications   ||  Cellular Framework   ||  Communications/Cellular Framework&lt;br /&gt;
|-&lt;br /&gt;
| Communications   ||  Telephony and IM   ||  Communications/Telephony and IM&lt;br /&gt;
|-&lt;br /&gt;
| Communications   ||  Bluetooth   ||  Communications/Bluetooth&lt;br /&gt;
|-&lt;br /&gt;
| Communications   ||  Connectivity Adaptation   ||  Communications/Connectivity Adaptation&lt;br /&gt;
|-&lt;br /&gt;
| Communications   ||  ConnMan   ||  Communications/ConnMan&lt;br /&gt;
|-&lt;br /&gt;
| Data Management   ||  Content Framework   ||  Data Management/Content Framework&lt;br /&gt;
|-&lt;br /&gt;
| Development Platform   ||  Platform SDK   ||  Development Platform/Platform SDK&lt;br /&gt;
|-&lt;br /&gt;
| Essentials   ||  Base Essentials   ||  Essentials/Base Essentials&lt;br /&gt;
|-&lt;br /&gt;
| Graphics   ||  Font Management   ||  Graphics/Font Management&lt;br /&gt;
|-&lt;br /&gt;
| Graphics   ||  Display and Graphics Adaptation   ||  Graphics/Display and Graphics Adaptation&lt;br /&gt;
|-&lt;br /&gt;
| Graphics   ||  Input Adaptation   ||  Graphics/Input Adaptation&lt;br /&gt;
|-&lt;br /&gt;
| Graphics   ||  Open GL ES   ||  Graphics/Open GL ES&lt;br /&gt;
|-&lt;br /&gt;
| Graphics   ||  X11   ||  Graphics/X11&lt;br /&gt;
|-&lt;br /&gt;
| Kernel   ||  Linux Kernel   ||  Kernel/Linux Kernel&lt;br /&gt;
|-&lt;br /&gt;
| Location   ||  Location Framework   ||  Location/Location Framework&lt;br /&gt;
|-&lt;br /&gt;
| Location   ||  Location Adaptation   ||  Location/Location Adaptation&lt;br /&gt;
|-&lt;br /&gt;
| Multimedia   ||  Audio Adaptation   ||  Multimedia/Audio Adaptation&lt;br /&gt;
|-&lt;br /&gt;
| Multimedia   ||  Camera Adaptation   ||  Multimedia/Camera Adaptation&lt;br /&gt;
|-&lt;br /&gt;
| Multimedia   ||  Gstreamer   ||  Multimedia/Gstreamer&lt;br /&gt;
|-&lt;br /&gt;
| Multimedia   ||  Imaging and Video Adaptation   ||  Multimedia/Imaging and Video Adaptation&lt;br /&gt;
|-&lt;br /&gt;
| Multimedia   ||  Imaging Codecs   ||  Multimedia/Imaging Codecs&lt;br /&gt;
|-&lt;br /&gt;
| Multimedia   ||  PulseAudio   ||  Multimedia/PulseAudio&lt;br /&gt;
|-&lt;br /&gt;
| Multimedia   ||  Sharing   ||  Multimedia/Sharing&lt;br /&gt;
|-&lt;br /&gt;
| Multimedia   ||  UPnP   ||  Multimedia/UPnP&lt;br /&gt;
|-&lt;br /&gt;
| Personal Information Management   ||  Backup Framework   ||  Personal Information Management/Backup Framework&lt;br /&gt;
|-&lt;br /&gt;
| Personal Information Management   ||  Calendar Engine   ||  Personal Information Management/Calendar Engine&lt;br /&gt;
|-&lt;br /&gt;
| Personal Information Management   ||  Contacts Engine   ||  Personal Information Management/Contacts Engine&lt;br /&gt;
|-&lt;br /&gt;
| Personal Information Management   ||  Email Engine   ||  Personal Information Management/Email Engine&lt;br /&gt;
|-&lt;br /&gt;
| Personal Information Management   ||  Synchronization Framework   ||  Personal Information Management/Synchronization Framework&lt;br /&gt;
|-&lt;br /&gt;
| Qt   ||  Qt   ||  Qt/Qt&lt;br /&gt;
|-&lt;br /&gt;
| Qt   ||  Qt Mobility   ||  Qt/Qt Mobility&lt;br /&gt;
|-&lt;br /&gt;
| Qt   ||  Qt WebKit   ||  Qt/Qt WebKit&lt;br /&gt;
|-&lt;br /&gt;
| Security   ||  Accounts   ||  Security/Accounts&lt;br /&gt;
|-&lt;br /&gt;
| Security   ||  Certificate Manager   ||  Security/Certificate Manager&lt;br /&gt;
|-&lt;br /&gt;
| Security   ||  Integrity Protection Framework   ||  Security/Integrity Protection Framework&lt;br /&gt;
|-&lt;br /&gt;
| Security   ||  Access Control Framework   ||  Security/Access Control Framework&lt;br /&gt;
|-&lt;br /&gt;
| Security   ||  Single Sign-On   ||  Security/Single Sign-On&lt;br /&gt;
|-&lt;br /&gt;
| Security   ||  SW Distribution Security   ||  Security/SW Distribution Security&lt;br /&gt;
|-&lt;br /&gt;
| Security   ||  Security Adaptation   ||  Security/Security Adaptation&lt;br /&gt;
|-&lt;br /&gt;
| Software Management   ||  Package Manager   ||  Software Management/Package Manager&lt;br /&gt;
|-&lt;br /&gt;
| System   ||  Context Framework   ||  System/Context Framework&lt;br /&gt;
|-&lt;br /&gt;
| System   ||  NGF   ||  System/NGF&lt;br /&gt;
|-&lt;br /&gt;
| System   ||  Resource Policy   ||  System/Resource Policy&lt;br /&gt;
|-&lt;br /&gt;
| System   ||  Sensor Adaptation   ||  System/Sensor Adaptation&lt;br /&gt;
|-&lt;br /&gt;
| System   ||  Sensor Framework   ||  System/Sensor Framework&lt;br /&gt;
|-&lt;br /&gt;
| System   ||  Startup Services   ||  System/Startup Services&lt;br /&gt;
|-&lt;br /&gt;
| System   ||  System Control   ||  System/System Control&lt;br /&gt;
|-&lt;br /&gt;
| System   ||  Device Mode Adaptation   ||  System/Device Mode Adaptation&lt;br /&gt;
|-&lt;br /&gt;
| System   ||  Vibra and Haptics Adaptation   ||  System/Vibra and Haptics Adaptation&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== BuildRoot tag ===&lt;br /&gt;
The ''BuildRoot'' value MUST be below &amp;lt;code&amp;gt;%{_tmppath}/&amp;lt;/code&amp;gt; and MUST contain at least &amp;lt;code&amp;gt;%{name}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%{version}&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;%{release}&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The ''recommended'' values for the ''BuildRoot'' tag are (in descending order of preference) :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%{_tmppath}/%{name}-%{version}-%{release}-root&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BuildRoot tag can be omitted in packages targeting MeeGo only and is handled directly by rpm in MeeGo, for packages that need to run on other distros with older rpm it should be added for backward compatibility.&lt;br /&gt;
&lt;br /&gt;
=== PreReq ===&lt;br /&gt;
&lt;br /&gt;
Packages should not use the PreReq tag. Once upon a time, in dependency loops PreReq used to &amp;quot;win&amp;quot; over the conventional Requires when RPM determined the installation order in a transaction. This is no longer the case.&lt;br /&gt;
&lt;br /&gt;
=== Explicit Requires ===&lt;br /&gt;
Packages must not contain explicit ''Requires'' on libraries except when absolutely &lt;br /&gt;
necessary. When explicit library ''Requires'' are necessary, there should be a spec file comment justifying it.&lt;br /&gt;
&lt;br /&gt;
We generally rely on rpmbuild to automatically add dependencies on library SONAMEs. &lt;br /&gt;
Modern package management tools are capable of resolving such dependencies to determine &lt;br /&gt;
the required packages. Explicit dependencies on specific package names may aid the &lt;br /&gt;
inexperienced user, who attempts at installing RPM packages manually, however, history &lt;br /&gt;
has shown that such dependencies add confusion when library/files are moved from one &lt;br /&gt;
package to another, when packages get renamed, when one out of multiple alternative &lt;br /&gt;
packages would suffice, and when versioned explicit dependencies become out-of-date and &lt;br /&gt;
inaccurate. Additionally, in some cases, old explicit dependencies on package names &lt;br /&gt;
require unnecessary updates/rebuilds. &lt;br /&gt;
&lt;br /&gt;
Exemplary rationale for a versioned explicit dependency:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # The automatic dependency on libfubar.so.1 is insufficient,&lt;br /&gt;
  # as we strictly need at least the release that fixes two segfaults.&lt;br /&gt;
  Requires: libfubar &amp;gt;= 0:1.2.3-7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Packagers should revisit an explicit dependency as appropriate to avoid &lt;br /&gt;
it becoming inaccurate and superfluous.&lt;br /&gt;
&lt;br /&gt;
=== BuildRequires ===&lt;br /&gt;
&lt;br /&gt;
In package development and testing, please verify that your package is not missing any necessary build dependencies. Having proper build requirements saves the time of all developers and testers as well as build systems because they will not need to search for missing build requirements manually. It is also a safety feature that prevents builds with that would not otherwise fail, but would be missing crucial features. For example, a graphical application may exclude PNG support after its '''configure''' script detects that libpng is not installed.&lt;br /&gt;
&lt;br /&gt;
Before adding Build&amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;Requires to any package, please be comfortable with [[#Requires|  Requires]] .&lt;br /&gt;
&lt;br /&gt;
=== Patches ===&lt;br /&gt;
Each problem should be solved in a separate patch. To allow easy maintenance of patches, every patch should have a header providing the following information:&lt;br /&gt;
&lt;br /&gt;
* Authors' names&lt;br /&gt;
* [http://meego.com/about/contribution-guidelines/signed-process Signed-off-by] tag&lt;br /&gt;
* Detailed description of the fixed problem&lt;br /&gt;
* URL of the original source of the patch if any&lt;br /&gt;
&lt;br /&gt;
The name of a patch file consists of:&lt;br /&gt;
&lt;br /&gt;
* The name and version of the source tarball from which the patched file is derived&lt;br /&gt;
* Some words that characterize the patch content&lt;br /&gt;
* The filename suffix &amp;lt;code class=&amp;quot;filename&amp;quot;&amp;gt;.patch&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Patches are in the unified format (&amp;lt;span&amp;gt;'''diff -u'''&amp;lt;/span&amp;gt;) and should be applied with 1 strip level in the spec file (&amp;lt;span&amp;gt;'''%patch -p1'''&amp;lt;/span&amp;gt;). The only exceptions are the patches obtained from an another primary source site. The original name, suffix, and format is preserved in this case.&lt;br /&gt;
&lt;br /&gt;
Each patch should be compressed with &amp;lt;span&amp;gt;'''bzip2'''&amp;lt;/span&amp;gt; if its size is greater than 100kB. The macros &amp;lt;code class=&amp;quot;systemitem&amp;quot;&amp;gt;%name&amp;lt;/code&amp;gt; and &amp;lt;code class=&amp;quot;systemitem&amp;quot;&amp;gt;%version&amp;lt;/code&amp;gt; should be used whenever possible.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 Source:   %{name}-%{version}.tar.bz2&lt;br /&gt;
 Patch0:   %{name}-%{version}-autoconf.patch&lt;br /&gt;
 Patch1:   %{name}-%{version}-gcc31.patch&lt;br /&gt;
&lt;br /&gt;
For the patches to be applied, the patches should be mentioned under %setup. For the above example, this could be done as&lt;br /&gt;
&lt;br /&gt;
 %setup -q&lt;br /&gt;
 %patch0 -p1&lt;br /&gt;
 %patch1 -p1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Patches have to be marked as such in the spec file and should be applied using the internal patch routines available in rpm. Use of alternate patch management system not supported by rpm is not allowed.&lt;br /&gt;
&lt;br /&gt;
=== %clean ===&lt;br /&gt;
&lt;br /&gt;
The %clean section is not required for MeeGo 1.1 and above. Each package for MeeGo 1.0 MUST have a %clean section, which contains rm -rf %{buildroot} (or $RPM_BUILD_ROOT).&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
Any relevant documentation included in the source distribution should be included in the package. Irrelevant documentation include build instructions, the omnipresent ''INSTALL'' file containing generic build instructions, for example, and documentation for non-Linux systems, e.g. ''README.MSDOS''.  Pay also attention about which subpackage you include documentation in, for example API documentation belongs in the -devel subpackage, not the main one.  Or if there's a lot of documentation, consider putting it into a subpackage.  In this case, it is recommended to use &amp;lt;code&amp;gt;*-doc&amp;lt;/code&amp;gt; as the subpackage name, and &amp;lt;code&amp;gt;Documentation&amp;lt;/code&amp;gt; as the value of the &amp;lt;code&amp;gt;Group&amp;lt;/code&amp;gt; tag.&lt;br /&gt;
&lt;br /&gt;
Also, if a package includes something as &amp;lt;code&amp;gt;%doc&amp;lt;/code&amp;gt;, it must not affect the runtime of the application. To summarize: If it is in &amp;lt;code&amp;gt;%doc&amp;lt;/code&amp;gt;, the program must run properly if it is not present.&lt;br /&gt;
&lt;br /&gt;
== Devel Packages ==&lt;br /&gt;
If the software being packaged contains files intended solely for development, those files should be put in a -devel subpackage. The following are examples of file types which should be in -devel:&lt;br /&gt;
* Header files (such as .h files)&lt;br /&gt;
* Unversioned shared libraries (such as libfoo.so). Versioned shared libraries (such as libfoo.so.3, libfoo.so.3.0.0) should not be in -devel.&lt;br /&gt;
&lt;br /&gt;
A good rule of thumb is if the file is used for development and not needed for the base package to run properly, it should go in -devel.&lt;br /&gt;
&lt;br /&gt;
=== Requiring Base Package ===&lt;br /&gt;
Devel packages must require the base package using a fully versioned dependency: &amp;lt;code&amp;gt;Requires: %{name} = %{version}-%{release}&amp;lt;/code&amp;gt;.&lt;br /&gt;
Usually, subpackages other than -devel should also require the base package using a fully versioned dependency.&lt;br /&gt;
&lt;br /&gt;
=== Pkgconfig Files ===&lt;br /&gt;
The placement of pkgconfig(.pc) files depends on their usecase. Since they are almost always used for development purposes, they should be placed in a -devel package.&lt;br /&gt;
A reasonable exception is when the main package itself is a development tool not installed in a user runtime, such as gcc or gdb.&lt;br /&gt;
&lt;br /&gt;
== Test Packages ==&lt;br /&gt;
Tests should be included in -test subpackage or separate package according to the following guidelines.&lt;br /&gt;
&lt;br /&gt;
[http://wiki.meego.com/Test_Packaging Test Packaging Guidelines]&lt;br /&gt;
&lt;br /&gt;
== Shared Libraries ==&lt;br /&gt;
Whenever possible (and feasible), MeeGo Packages containing libraries should build them as shared libraries. In addition, every binary RPM package which contains shared library files (not just symlinks) in any of the dynamic linker's default paths, must call ldconfig in &amp;lt;code&amp;gt;%post&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;%postun&amp;lt;/code&amp;gt;. If the package has multiple subpackages with libraries, each subpackage should also have a &amp;lt;code&amp;gt;%post/%postun&amp;lt;/code&amp;gt; section that calls &amp;lt;code&amp;gt;/sbin/ldconfig&amp;lt;/code&amp;gt;. An example of the correct syntax for this is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%post -p /sbin/ldconfig&lt;br /&gt;
&lt;br /&gt;
%postun -p /sbin/ldconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that this specific syntax only works if &amp;lt;code&amp;gt;/sbin/ldconfig&amp;lt;/code&amp;gt; is the only call in &amp;lt;code&amp;gt;%post&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;%postun&amp;lt;/code&amp;gt;. If you have additional commands to run during the scriptlet, call &amp;lt;code&amp;gt;/sbin/ldconfig&amp;lt;/code&amp;gt; at the beginning of the scriptlet, like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%post&lt;br /&gt;
/sbin/ldconfig&lt;br /&gt;
/usr/bin/foo --add&lt;br /&gt;
&lt;br /&gt;
%postun&lt;br /&gt;
/sbin/ldconfig&lt;br /&gt;
/usr/bin/foo --remove&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuration files ==&lt;br /&gt;
&lt;br /&gt;
Configuration files must be marked as such in packages.&lt;br /&gt;
&lt;br /&gt;
As a rule of thumb, use &amp;lt;code&amp;gt;%config(noreplace)&amp;lt;/code&amp;gt; instead of plain &amp;lt;code&amp;gt;%config&amp;lt;/code&amp;gt; unless your best, educated guess is that doing so will break things.  In other words, think hard before overwriting local changes in configuration files on package upgrades.  An example case when /not/ to use &amp;lt;code&amp;gt;noreplace&amp;lt;/code&amp;gt; is when a package's configuration file changes so that the new package revision wouldn't work with the config file from the previous package revision.  Whenever plain &amp;lt;code&amp;gt;%config&amp;lt;/code&amp;gt; is used, add a brief comment to the specfile explaining why.&lt;br /&gt;
&lt;br /&gt;
Don't use %config or %config(noreplace) under /usr. /usr is deemed to not contain configuration files in MeeGo.&lt;br /&gt;
&lt;br /&gt;
== Initscripts ==&lt;br /&gt;
&lt;br /&gt;
Currently, only SystemV-style initscripts are supported in MeeGo. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desktop files ==&lt;br /&gt;
&lt;br /&gt;
If a package contains a GUI application, then it needs to also include a properly installed .desktop file.  For the purposes of these guidelines, a GUI application is defined as any application which draws an X window and runs from within that window.  Installed .desktop files MUST follow the [http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html desktop-entry-spec]  , paying particular attention to validating correct usage of Name, GenericName, [http://standards.freedesktop.org/menu-spec/latest/apa.html Categories]  ,&lt;br /&gt;
[http://www.freedesktop.org/Standards/startup-notification-spec StartupNotify]&lt;br /&gt;
entries.&lt;br /&gt;
&lt;br /&gt;
=== Icon tag in Desktop Files ===&lt;br /&gt;
The icon tag can be specified in two ways:&lt;br /&gt;
&lt;br /&gt;
* Full path to specific icon file:&lt;br /&gt;
&amp;lt;code&amp;gt; Icon=/usr/share/pixmaps/comical.png &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Short name without file extension:&lt;br /&gt;
&amp;lt;code&amp;gt; Icon=comical &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The short name without file extension is preferred, because it allows for icon theming (it assumes .png by default, then tries .svg and finally .xpm), but either method is acceptable.&lt;br /&gt;
&lt;br /&gt;
=== .desktop file creation ===&lt;br /&gt;
If the package doesn't already include and install its own .desktop file, you need to make your own. You can do this by including a .desktop file you create as a Source: (such as Source3: %{name}.desktop) or generating it in the spec file. Here are the contents of a sample .desktop file (comical.desktop): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Name=Comical&lt;br /&gt;
GenericName=Comic Archive Reader&lt;br /&gt;
Comment=Open .cbr &amp;amp; .cbz files&lt;br /&gt;
Exec=comical&lt;br /&gt;
Icon=comical&lt;br /&gt;
Terminal=false&lt;br /&gt;
Type=Application&lt;br /&gt;
Categories=Graphics;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Localizing .desktop files ===&lt;br /&gt;
The values of Name or GenericName are displayed as captions to the graphical desktop icon, so they should be localized according to the [http://standards.freedesktop.org/desktop-entry-spec/latest/ar01s04.html Desktop Entry Specification].  Most of the time, only ''language'' codes or ''language/country'' codes are needed to select the intended system locale.  For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Type=Application&lt;br /&gt;
Name=Clocks&lt;br /&gt;
Name[de]=Uhrzeit&lt;br /&gt;
Name[es]=Relojes&lt;br /&gt;
Name[fr]=Horloges&lt;br /&gt;
Name[pt_BR]=Relógios&lt;br /&gt;
Name[zh_CN]=时钟&lt;br /&gt;
Icon=meego-app-clocks&lt;br /&gt;
Exec=meego-qml-launcher --opengl --fullscreen --app meego-app-clocks&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above .desktop file, &amp;lt;tt&amp;gt;[de]&amp;lt;/tt&amp;gt; specifies the German language locale, covering any German-speaking locale, such as &amp;lt;tt&amp;gt;de_DE&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;de_AT&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Since a ''language/country'' code (e.g. &amp;lt;tt&amp;gt;pt_BR&amp;lt;/tt&amp;gt;) is more specific than a ''language'' code (e.g. &amp;lt;tt&amp;gt;pt&amp;lt;/tt&amp;gt;), a string for the &amp;lt;tt&amp;gt;pt_BR&amp;lt;/tt&amp;gt; locale will '''not''' be used for the Portuguese language locale (&amp;lt;tt&amp;gt;pt&amp;lt;/tt&amp;gt;).  If a string is appropriate for every Portuguese locale, you can use &amp;quot;&amp;lt;tt&amp;gt;Name[pt]&amp;lt;/tt&amp;gt;&amp;quot; instead.&lt;br /&gt;
&lt;br /&gt;
=== desktop-file-install usage ===&lt;br /&gt;
It is not simply enough to just include the .desktop file in the package, one MUST run &amp;lt;code&amp;gt;desktop-file-install&amp;lt;/code&amp;gt; OR &amp;lt;code&amp;gt;desktop-file-validate&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;%install&amp;lt;/code&amp;gt; (and have &amp;lt;code&amp;gt;BuildRequires: desktop-file-utils&amp;lt;/code&amp;gt;), to help ensure .desktop file safety and spec-compliance. &amp;lt;code&amp;gt;desktop-file-install&amp;lt;/code&amp;gt; MUST be used if the package does not install the file or there are changes desired to the .desktop file (such as add/removing categories, etc). &amp;lt;code&amp;gt;desktop-file-validate&amp;lt;/code&amp;gt; MAY be used instead if the .desktop file's content/location does not need modification.  Here are some examples of&lt;br /&gt;
usage:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
desktop-file-install                                    \&lt;br /&gt;
--dir=${RPM_BUILD_ROOT}%{_datadir}/applications         \&lt;br /&gt;
%{SOURCE3}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
desktop-file-install                                    \&lt;br /&gt;
--add-category=&amp;quot;AudioVideo&amp;quot;                             \&lt;br /&gt;
--delete-original                                       \&lt;br /&gt;
--dir=%{buildroot}%{_datadir}/applications              \&lt;br /&gt;
%{buildroot}/%{_datadir}/foo.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
desktop-file-validate %{buildroot}/%{_datadir}/applications/foo.desktop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .desktop file post-install ===&lt;br /&gt;
&lt;br /&gt;
After installing a .desktop file, it's typical to touch the file and the folder so that the UX will detect the change.  Otherwise, the new file will not be detected until reboot.  I.e.&lt;br /&gt;
&lt;br /&gt;
   %post&lt;br /&gt;
   touch %{_datadir}/applications/foo.desktop&lt;br /&gt;
   touch %{_datadir}/applications&lt;br /&gt;
&lt;br /&gt;
...will update the time-stamp of the folder and the .desktop file.&lt;br /&gt;
&lt;br /&gt;
== Macros ==&lt;br /&gt;
=== Using %{buildroot} and %{optflags} vs $RPM_BUILD_ROOT and $RPM_OPT_FLAGS ===&lt;br /&gt;
There are two styles of defining the rpm Build Root and Optimization Flags in a spec file:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| ||macro style ||  variable style&lt;br /&gt;
|-&lt;br /&gt;
|Build Root||%{buildroot}||$RPM_BUILD_ROOT&lt;br /&gt;
|-&lt;br /&gt;
|Opt. Flags||%{optflags}||$RPM_OPT_FLAGS&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is very little value in choosing one style over the other, since they will resolve to the same values in all scenarios. You should pick a style and use it consistently throughout your packaging.&lt;br /&gt;
&lt;br /&gt;
Mixing the two styles, while valid, is bad from a QA and usability point of view, and should not be done in MeeGo packages.&lt;br /&gt;
&lt;br /&gt;
== Handling Locale Files ==&lt;br /&gt;
&lt;br /&gt;
If the package includes translations, add&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BuildRequires: gettext&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you don't, your package could fail to generate translation files in the buildroot.&lt;br /&gt;
&lt;br /&gt;
MeeGo includes an rpm macro called &amp;lt;code&amp;gt;%find_lang&amp;lt;/code&amp;gt;. This macro will locate all of the locale files that belong to your package (by name), and put this list in a file. You can then use that file to include all of the locales. &amp;lt;code&amp;gt;%find_lang&amp;lt;/code&amp;gt; should be run in the %install section of your spec file, after all of the files have been installed into the buildroot. The correct syntax for &amp;lt;code&amp;gt;%find_lang&amp;lt;/code&amp;gt; is usually:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In some cases, the application may use a different &amp;quot;name&amp;quot; for its locales. You may have to look at the locale files and see what they are named. If they are named &amp;lt;code&amp;gt;myapp.mo&amp;lt;/code&amp;gt;, then you will need to pass &amp;lt;code&amp;gt;myapp&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;%find_lang&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;%{name&amp;lt;/code&amp;gt;}.&lt;br /&gt;
After &amp;lt;code&amp;gt;%find_lang&amp;lt;/code&amp;gt; is run, it will generate a file in the active directory (by default, the top level of the source dir). This file will be named based on what you passed as the option to the &amp;lt;code&amp;gt;%find_lang&amp;lt;/code&amp;gt; macro. Usually, it will be named &amp;lt;code&amp;gt;%{name}.lang&amp;lt;/code&amp;gt;. You should then use this file in the &amp;lt;code&amp;gt;%files&amp;lt;/code&amp;gt; list to include the locales detected by &amp;lt;code&amp;gt;%find_lang&amp;lt;/code&amp;gt;. To do this, you should include it with the -f parameter to &amp;lt;code&amp;gt;%files&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
%defattr(-,root,root,-)&lt;br /&gt;
%{_bindir}/foobar&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you are already using the -f parameter for the &amp;lt;code&amp;gt;%files&amp;lt;/code&amp;gt; section where the locales should live, just append the contents of &amp;lt;code&amp;gt;%{name}.lang&amp;lt;/code&amp;gt; to the end of the file that you are already using with -f. (Note that only one file may be used with &amp;lt;code&amp;gt;%files -f&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
Here is an example of proper usage of &amp;lt;code&amp;gt;%find_lang&amp;lt;/code&amp;gt;, in &amp;lt;code&amp;gt;foo.spec&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
%configure --with-cheese&lt;br /&gt;
make %{?_smp_mflags}&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
make DESTDIR=%{buildroot} install&lt;br /&gt;
%find_lang %{name}&lt;br /&gt;
&lt;br /&gt;
%clean&lt;br /&gt;
rm -rf %{buildroot}&lt;br /&gt;
&lt;br /&gt;
%files -f %{name}.lang&lt;br /&gt;
%defattr(-,root,root,-)&lt;br /&gt;
%doc LICENSE README&lt;br /&gt;
%{_bindir}/foobar&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Why do we need to use %find_lang? ===&lt;br /&gt;
&lt;br /&gt;
Using &amp;lt;code&amp;gt;%find_lang&amp;lt;/code&amp;gt; helps keep the spec file simple, and helps avoid several other packaging mistakes.&lt;br /&gt;
&lt;br /&gt;
* Packages that use &amp;lt;code&amp;gt;%{_datadir}/*&amp;lt;/code&amp;gt; to grab all the locale files in one line also grab ownership of the locale directories, which is not permitted.&lt;br /&gt;
* Most packages that have locales have lots of locales. Using &amp;lt;code&amp;gt;%find_lang&amp;lt;/code&amp;gt; is much easier in the spec file than having to do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%{_datadir}/locale/ar/LC_MESSAGES/%{name}.mo&lt;br /&gt;
%{_datadir}/locale/be/LC_MESSAGES/%{name}.mo&lt;br /&gt;
%{_datadir}/locale/cs/LC_MESSAGES/%{name}.mo&lt;br /&gt;
%{_datadir}/locale/de/LC_MESSAGES/%{name}.mo&lt;br /&gt;
%{_datadir}/locale/es/LC_MESSAGES/%{name}.mo&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As new locale files appear in later package revisions, &amp;lt;code&amp;gt;%find_lang&amp;lt;/code&amp;gt; will automatically include them when it is run, preventing you from having to update the spec any more than is necessary.&lt;br /&gt;
&lt;br /&gt;
Keep in mind that usage of &amp;lt;code&amp;gt;%find_lang&amp;lt;/code&amp;gt; in packages containing locales is a MUST.&lt;br /&gt;
&lt;br /&gt;
== Scriptlets ==&lt;br /&gt;
Great care should be taken when using scriptlets in MeeGo packages. If scriptlets are used, those scriptlets must be sane. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Scriptlets requirements ===&lt;br /&gt;
Do not use the &amp;lt;code&amp;gt;Requires(pre,post)&amp;lt;/code&amp;gt; style notation for scriptlet dependencies, because of two bugs in RPM. Instead, they should be split like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Requires(pre): ...&lt;br /&gt;
Requires(post): ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For more information, see [http://www.redhat.com/archives/fedora-devel-list/2004-April/msg00674.html www.redhat.com] .&lt;br /&gt;
&lt;br /&gt;
=== Running scriptlets only in certain situations ===&lt;br /&gt;
When the rpm command executes the scriptlets in a package it indicates if the action preformed is an install, erase, upgrade or reinstall by passing an integer argument to the script in question according to the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
          install   erase   upgrade  reinstall&lt;br /&gt;
%pre         1        -         2         2&lt;br /&gt;
%post        1        -         2         2&lt;br /&gt;
%preun       -        0         1         -&lt;br /&gt;
%postun      -        0         1         -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This means that for example a package that installs an init script with the &amp;lt;code&amp;gt;chkconfig&amp;lt;/code&amp;gt; command should uninstall it only on erase and not upgrade with the following snippet:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%preun&lt;br /&gt;
if [ $1 -eq 0 ] ; then&lt;br /&gt;
/sbin/chkconfig --del %{name}&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
See also &amp;lt;code&amp;gt;/usr/share/doc/rpm-*/triggers&amp;lt;/code&amp;gt;, which gives a more formal, generalized definition about the integer value(s) passed to various scripts.&lt;br /&gt;
&lt;br /&gt;
=== Scriplets are only allowed to write in certain directories ===&lt;br /&gt;
Build scripts of packages (%prep, %build, %install, %check and %clean) may only alter files (create, modify, delete) under %{buildroot}, %{_builddir} and valid temporary locations like /tmp, /var/tmp (or $TMPDIR or %{_tmppath} as set by the rpmbuild process) according to the following matrix&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|         || /tmp, /var/tmp, $TMPDIR, %{_tmppath} || %{_builddir} || %{buildroot}&lt;br /&gt;
|-&lt;br /&gt;
|%prep    || yes                                  || yes          || no&lt;br /&gt;
|-&lt;br /&gt;
|%build   || yes                                  || yes          || no&lt;br /&gt;
|-&lt;br /&gt;
|%install || yes                                  || yes          || yes&lt;br /&gt;
|-&lt;br /&gt;
|%check   || yes                                  || yes          || no&lt;br /&gt;
|-&lt;br /&gt;
|%clean   || yes                                  || yes          || yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Further clarification: That should hold true irrespective of the builder's uid.&lt;br /&gt;
&lt;br /&gt;
== Use of Epochs ==&lt;br /&gt;
The Epoch tag in RPM is to be used only as a last resort, and should be avoided whenever possible. However, it is sometimes necessary to use an Epoch to handle upstream versioning changes or to ease transition from third party repositories. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Writing a package from scratch ==&lt;br /&gt;
&lt;br /&gt;
See [[Spectacle]]&lt;br /&gt;
&lt;br /&gt;
Spectacle is a great tool for straightforward packages, and we have many of those, hundreds, many of those packages already have been using spectacle happily for a while now. Generally, the 80/20 rule applies here, almost 80% of packages in MeeGo can be converted to this format, probably around 20% will need to stay as is for various reasons.&lt;br /&gt;
&lt;br /&gt;
Spectacle in general helps  a lot when you have a package that does:&lt;br /&gt;
* configure&lt;br /&gt;
* make&lt;br /&gt;
* make install&lt;br /&gt;
&lt;br /&gt;
and especially useful when for example you have to manage many build dependencies and patches or for common packaging of perl/python/X packages that usually follows the same packaging work flow. We have plans to add lots of nice features to make packaging easier and more fun with spectacle.&lt;br /&gt;
&lt;br /&gt;
While spectacle has many advanced options to cover all kind of corner cases, it should not be used for complex packages that would require lots of customization, especially now that we support multiple architectures and where we need to apply code and custom scripts to support different scenarios.&lt;br /&gt;
&lt;br /&gt;
Spectacle provides scripts to convert spec files to spectacle, those try to do their best but you SHOULD never just take the output as is and rely on the script, a review of the output is necessary, otherwise you might end up with lots of duplication in the spec file. This is the most common mistake, developers are relying on the output of the conversion script, basically picking some spec file from another distro and converting it. This can lead to major disasters in some cases.&lt;br /&gt;
&lt;br /&gt;
So to summarize:&lt;br /&gt;
* It is NOT mandatory to use spectacle&lt;br /&gt;
* If you try to convert and find yourself spending more than a few minutes on a package, then probably there is something wrong and you should not be using that or you should RTFM.&lt;br /&gt;
* Use it with care, especially when you first import the data from existing spec files or when you first create your YAML file&lt;br /&gt;
* Your distro maintainer might send you a note that certain packages you are maintaining could be converted to spectacle easily, but she/he should not reject your package because it does not use spectacle.&lt;br /&gt;
* If you find yourself forced to edit the spec file manually for some reason, then either:&lt;br /&gt;
** your package is not suitable to be used with spectacle&lt;br /&gt;
** or you might want to ask for a feature to support that special case&lt;br /&gt;
* packager should not change packaging format randomly.&lt;br /&gt;
** You need to be the main maintainer&lt;br /&gt;
** If a package is already using the yaml format, you need to have a valid reason why not to use the yaml format&lt;br /&gt;
&lt;br /&gt;
== Modifying existing Packages ==&lt;br /&gt;
&lt;br /&gt;
If you base a new package on an existing non-MeeGo package, make sure you verify its correctness of the package  and the spec file and to understand exactly what has been done to package the software exactly. Do not submit a package without knowing what those strange, but innocent-looking commands do.&lt;br /&gt;
&lt;br /&gt;
In particular, you should&lt;br /&gt;
&lt;br /&gt;
* ensure that original tarballs are self-contained pristine tarballs. The tarball should not contain symlinks that reference outside the tarball root directory&lt;br /&gt;
* verify any sources and patches and remove patches or sources that:&lt;br /&gt;
** are related to platforms we do not support (example: sparc, ia64, ppc, ...)&lt;br /&gt;
** Implement features we do not support (example: selinux)&lt;br /&gt;
** Read every patch and understand what it does, if it is needed, put an explanation in the header justifying why the patch is needed.&lt;br /&gt;
* verify that the license stated in the spec file matches the actual license of the software,&lt;br /&gt;
* skim the summary and description for typos and oddities (see Summary and description ),&lt;br /&gt;
* make sure that the correct build root is used,&lt;br /&gt;
* ensure that macro usage is consistent and that the macros are available in MeeGo (see Macros ). &lt;br /&gt;
&lt;br /&gt;
Keep old changelog entries to credit the original authors. Entries that are several years old or refer to ancient versions of the software may be erased. If you end up doing radical changes and re-write most of the spec file anyway, feel free to start the changelog from scratch. In other words, use your best judgement.&lt;br /&gt;
&lt;br /&gt;
== Changelogs ==&lt;br /&gt;
&lt;br /&gt;
This section describes the MeeGo policy for RPM changelogs. (Original changelogs included in the original source are not affected by this policy.) &lt;br /&gt;
&lt;br /&gt;
Please consider that a &amp;quot;normal end user with some technical skills&amp;quot; should be able to read and understand an RPM changelog. Changelog entries have to be in reverse chronological order: newer change log entries are listed above older entries, with the first entry being the most recent. &lt;br /&gt;
&lt;br /&gt;
Please bear in mind theat MeeGo changelogs will be automatically parsed to prepare distribution release notes and to report on bugs and CVEs and malformed entries may not be read correctly.&lt;br /&gt;
&lt;br /&gt;
=== General information ===&lt;br /&gt;
&lt;br /&gt;
* MeeGo uses a separate file for package changes which is similar to a debian changelog file. This file is named as the spec file, but ends in *.changes instead of *.spec &lt;br /&gt;
* Entries in the changes file should have the following structure:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* dow mmm dd yyyy Name Goes Here &amp;lt;your@email.com&amp;gt; - [version]&lt;br /&gt;
- comment&lt;br /&gt;
- comment&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note the following exceptions are noted through observation:&lt;br /&gt;
* version is often omitted (such as: alsa-utils 1.0.15-1 -&amp;gt; 1.0.16-1)&lt;br /&gt;
* there are multiple changelog entries per version (such as: alsa-utils 1.0.19)&lt;br /&gt;
* the hyphen between email and version is often omitted (such as: alsa-utils)&lt;br /&gt;
* spaces between name and &amp;lt;email&amp;gt; are omitted (such as: Zhang, Qiang Z&amp;lt;qiang.z.zhang@intel.com&amp;gt; nano)&lt;br /&gt;
* name is sometimes omitted (such as: bitstream-vera-fonts nicolas.mailhot at laposte.net)&lt;br /&gt;
* &amp;lt;email&amp;gt; is sometimes omitted (such as: binutils Jim Kingdon)&lt;br /&gt;
This wide variation in formats makes automation tasks harder than they should be. Please use the correct format.&lt;br /&gt;
&lt;br /&gt;
=== External References ===&lt;br /&gt;
&lt;br /&gt;
Each external reference (bug numbers etc) should be of the form:&lt;br /&gt;
 &amp;quot;(&amp;quot; + external reference code + bug number +&amp;quot;)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Currently defined:&lt;br /&gt;
* MeeGo Bugs : BMC#&lt;br /&gt;
* MeeGo Features: FEA#&lt;br /&gt;
* Common Vulnerability / Exposure : CVE&lt;br /&gt;
&lt;br /&gt;
==== Bug Numbers in the change log ====&lt;br /&gt;
&lt;br /&gt;
During maintenance of a distribution, every change has to be marked with the correct bug number. Normally this has to be an number from https://bugzilla.meego.com/. Add an entry with bugzilla number and a short description of the bug-summary. For example:&lt;br /&gt;
 - Removed invalid desktop Category &amp;quot;Application&amp;quot; (BMC#4654).&lt;br /&gt;
 - Symlink icon to pixmaps dir (BMC#2108)&lt;br /&gt;
 - Added gnome-ui-properties to control-center (BMC#1960).&lt;br /&gt;
&lt;br /&gt;
New packages related to new features will refer to the corresponding bug number in bugzilla, preceded with an FEA.  For example:&lt;br /&gt;
 - Adding Qt Contacts support FEA#8011&lt;br /&gt;
&lt;br /&gt;
==== CVE numbers in change log ====&lt;br /&gt;
&lt;br /&gt;
As with bug numbers: Add a short description (normally the CVE summary should be enough), the Bugzilla and the CVE number to the changelog entry. Examples:&lt;br /&gt;
 - Add gdk-pixbuf-226710.patch (BMC#226710), and (CVE-2007-0010).&lt;br /&gt;
 - More XPM fixes: (CVE-2005-2975) xpm too many colors DoS (BMC#129642)&lt;br /&gt;
 - fix ~/.dmrc symlink attack (BMC#180704), (CVE-2006-2449)&lt;br /&gt;
&lt;br /&gt;
=== Spec File changes ===&lt;br /&gt;
Be as precise as possible! This is especially important if you remove something from the spec file. &lt;br /&gt;
&lt;br /&gt;
* Removing original source code must be declared in spec file with a comment (&amp;quot;useful for FreeBSD only&amp;quot; for example) - not necessary to repeat the comment in specfile.&lt;br /&gt;
* Extra commands (for example during %install) can be illustrated with a short comment in spec file&lt;br /&gt;
* Adding/Removing packages from Requires/Provides must be described in the changelog&lt;br /&gt;
&lt;br /&gt;
=== Source Code changes ===&lt;br /&gt;
&lt;br /&gt;
Document the most important changes but limit verbosity.&lt;br /&gt;
&lt;br /&gt;
* look into the source changelog and pick up the most important changes for the distribution (changes for other operation systems are not important). What has changed in the new version, usually in the level of detail of a NEWS file, the change log files are usually too long. More than '''10-15 lines''' shouldn't be necessary to describe the most important changes.&lt;br /&gt;
* arrange the original changes behind the version update information. Example:&lt;br /&gt;
  - Update to 1.3.2:&lt;br /&gt;
    + fixes memory leak in import function&lt;br /&gt;
    + new API command: unlock_client()&lt;br /&gt;
    + the following bugs are closed by this new upstream release:&lt;br /&gt;
    ++ ............ [MGN:332]&lt;br /&gt;
    ++ .............[MGN:337]&lt;br /&gt;
  - split of devel package&lt;br /&gt;
* If upstream does not provide a meaningful change log, then only do best effort. Don't waste too much time over it.&lt;br /&gt;
* If the upstream tarball really has not changed except for the version number, just the version number in the change log would be fine. Same goes for packages just containing some graphics or theming (unless upstream already provides something that fits). If the upstream changes just consists of &amp;quot;updated translation&amp;quot; or &amp;quot;several bug fixes&amp;quot; even that can be sufficient for a changelog entry (unless these bug fixes contain something you find worth mentioning).&lt;br /&gt;
&lt;br /&gt;
== Packaging Static Libraries ==&lt;br /&gt;
Packages including libraries should exclude static libs as far as possible (eg by configuring with ''--disable-static'').  Static libraries should only be included in exceptional circumstances.  Applications linking against libraries should as far as possible link against shared libraries not static versions.&lt;br /&gt;
&lt;br /&gt;
Libtool archives, ''foo.la'' files, should not be included. Packages using libtool will install these by default even if you configure with ''--disable-static'', so they may need to be removed before packaging.  Due to bugs in older versions of libtool or bugs in programs  that use it, there are times when it is not always possible to remove *.la files without modifying the program.  In most cases it is fairly easy to work with upstream to fix these issues.  Note that if you are updating a library in a stable release (not devel) and the package already contains *.la files, removing the *.la files should be treated as an API/ABI change -- ie: Removing them changes the interface that the library gives to the rest of the world and should not be undertaken lightly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Packaging Static Libraries ===&lt;br /&gt;
* In general, packagers are strongly encouraged not to ship static libs unless a compelling reason exists.&lt;br /&gt;
&lt;br /&gt;
* We want to be able to track which packages are using static libraries (so we can find which packages need to be rebuilt if a security flaw in a static library is fixed, for instance). There are two scenarios in which static libraries are packaged:&lt;br /&gt;
# '''Static libraries and shared libraries.''' In this case, the static libraries must be placed in a ''*-static'' subpackage. Separating the static libraries from the other development files in ''*-devel'' allow us to track this usage by checking which packages &amp;lt;code&amp;gt;BuildRequire&amp;lt;/code&amp;gt; the ''*-static'' package. The intent is that whenever possible, packages will move away from using these static libraries, to the shared libraries.&lt;br /&gt;
# '''Static libraries only.''' When a package only provides static libraries you can place all the static library files in the ''*-devel'' subpackage.  When doing this you also must have a virtual Provide for the ''*-static'' package:&lt;br /&gt;
&amp;lt;pre&amp;gt;%package devel&lt;br /&gt;
Provides: foo-static = %{version}-%{release}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Packages which explicitly need to link against the static version must &amp;lt;code&amp;gt;BuildRequire: foo-static&amp;lt;/code&amp;gt;, so that the usage can be tracked.&lt;br /&gt;
&lt;br /&gt;
* If (and only if) a package has shared libraries which require static libraries to be functional, the static libraries can be included in the ''*-devel'' subpackage. The devel subpackage must have a virtual Provide for the ''*-static'' package, and packages dependent on it must &amp;lt;code&amp;gt;BuildRequire&amp;lt;/code&amp;gt; the ''*-static'' package.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Staticly Linking Executables ===&lt;br /&gt;
* Static linkage is a special exception and should be decided on a case-by-case basis.  The packager must provide rationale for linking statically, including precedences where available, to release engineering for approval.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Packaging]]&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/OBS</id>
		<title>OBS</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/OBS"/>
				<updated>2011-05-30T22:57:52Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: Add clear link to docs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Open Build Service (OBS)'''&lt;br /&gt;
&lt;br /&gt;
The OBS (Open Build Service) is a build management system written for the community by openSuse/Novell.&lt;br /&gt;
&lt;br /&gt;
MeeGo has two main OBS setups:&lt;br /&gt;
* The [[Core OBS]] : https://build.meego.com/ - used by core developers to build the main MeeGo distribution; accounts provided to anyone who earns commit rights to a MeeGo package. More information on how to get an account can be found [[Build_Infrastructure/Packagers_Developers#How_to_get_started|here]]&lt;br /&gt;
* The [[OBS/Community OBS|Community OBS]] : https://build.pub.meego.com/ - used by MeeGo community members to build opensource applications and libraries&lt;br /&gt;
&lt;br /&gt;
Additionally vendors may have private OBS installations &lt;br /&gt;
&lt;br /&gt;
OBS installations may be linked to each other so that software build on a vendor OBS or the community OBS may refer to and track software packages being developed on the core OBS.&lt;br /&gt;
&lt;br /&gt;
Whilst the OBS does the bulk of the compiling and building there is additional QA, automation and test infrastructure used by the MeeGo Project : The [[Build Infrastructure]] article has more details.&lt;br /&gt;
&lt;br /&gt;
'''OBS Documentation'''&lt;br /&gt;
&lt;br /&gt;
* Documentation root: [[Build Infrastructure/Packagers Developers]]&lt;br /&gt;
* OSC tutorial: [[Build Infrastructure/Packagers Developers/CLI Part 1]]&lt;br /&gt;
&lt;br /&gt;
'''Get a Community OBS account'''&lt;br /&gt;
&lt;br /&gt;
https://build.pub.meego.com/user/register_user&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Setup a local test instance'''&lt;br /&gt;
&lt;br /&gt;
There is a wiki article on how to [[OBS setup|setup a Build Service of your own]] - note that you don't need to do this to build locally; it's only usually needed by vendors.&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Build_Infrastructure/Packagers_Developers</id>
		<title>Build Infrastructure/Packagers Developers</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Build_Infrastructure/Packagers_Developers"/>
				<updated>2011-05-30T22:54:30Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: Add troubleshooting section with the &amp;quot;Package already exists: %package debuginfo&amp;quot; error.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These pages are in preparation - contributions welcome.&lt;br /&gt;
&lt;br /&gt;
 Note: See [[OBS|the OBS wiki page]] for explanation of the different OBS services MeeGo offers.&lt;br /&gt;
&lt;br /&gt;
This track will give you a brief introduction to the features and capabilities of the OBS instance hosted at build.meego.com. &lt;br /&gt;
Note: You need an account to access build.meego.com.  &lt;br /&gt;
If you have no account, you can still learn how the OBS works at the upstream project's own instance [http://build.opensuse.org http://build.opensuse.org] .&lt;br /&gt;
&lt;br /&gt;
In this track, you'll learn how to use the web interface, the commandline client and create your first package.&lt;br /&gt;
The packaging guidelines and more advanced topics are also covered.&lt;br /&gt;
&lt;br /&gt;
== How to get started ==&lt;br /&gt;
&lt;br /&gt;
You need an account on build.meego.com. To request an account: &lt;br /&gt;
# Go to [http://bugs.meego.com MeeGo bugzilla]. &lt;br /&gt;
# Click New in the upper navigational bar to begin filing a bug. &lt;br /&gt;
# On the next page, click MeeGo Community Infrastructure. &lt;br /&gt;
# On the following page, click Build Service and file your bug.&lt;br /&gt;
&lt;br /&gt;
== How to use the web interface ==&lt;br /&gt;
A series of pages will make you familiar with webinterface basics. It's divided into several subpages:&lt;br /&gt;
* [[Build_Infrastructure/Packagers_Developers/WebUI_part_1|Part 1 - Login and first steps]]&lt;br /&gt;
* [[Build_Infrastructure/Packagers_Developers/WebUI_part_2|Part 2 - Creating a link and adding a repository]]&lt;br /&gt;
* [[Developing_in_a_MeeGo_Environment#Building_your_package:_Step_by_step|Part 3 - Your first own package]]&lt;br /&gt;
&lt;br /&gt;
== How to use the commandline client ==&lt;br /&gt;
* Part 1 - [[Build_Infrastructure/Packagers_Developers/CLI_Part_1|initial setup]]&lt;br /&gt;
* Part 2 - [[Build_Infrastructure/Packagers_Developers/CLI_Part_2|checkout of projects, commit]]&lt;br /&gt;
* Part 3 - [http://en.opensuse.org/openSUSE:OSC branch, edit, localbuild, commit, submitreq]&lt;br /&gt;
* part 4 - [[Build_Infrastructure/Packagers_Developers/CLI_Part_4|more commands: localcheckbuild]]&lt;br /&gt;
&lt;br /&gt;
== MeeGo Packaging guidelines and Howto ==&lt;br /&gt;
* [[Packaging|Packaging]]&lt;br /&gt;
* [[Packaging/Guidelines|Packaging Guidelines]]&lt;br /&gt;
* [[SDK/Docs/1.0/Packaging/Tutorial|Packaging Tutorial]]&lt;br /&gt;
&lt;br /&gt;
== [[Build_Infrastructure/QA|QA Processes around the OBS]] ==&lt;br /&gt;
See the [[Quality]] page.&lt;br /&gt;
&lt;br /&gt;
== Verifying Your Package Changes Locally and Online ==&lt;br /&gt;
* [[Build_Infrastructure/Packagers_Developers/Using_OBS_chroot_for_development|Using OBS chroot for development]]&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
* '''I'm getting &amp;quot;error: Package already exists: %package debuginfo&amp;quot;''' &amp;amp;mdash; Disable the debuginfo flag for the repo/arch that gives you this problem.  You will probably still get a debuginfo package.  This appears to happen when OBS creates debuginfo packages by default, and so this flag causes a sort of doubling-up of the debuginfo package.&lt;br /&gt;
&lt;br /&gt;
== IRC / mailinglists / contact ==&lt;br /&gt;
&lt;br /&gt;
If you need help, you can join #meego or #meego-dev on irc.freenode.net . See also [[Community communication|this page]] about all MeeGo IRC channels.&lt;br /&gt;
&lt;br /&gt;
You can join [http://lists.meego.com/listinfo/meego-dev MeeGo-dev] and [http://lists.meego.com/listinfo/meego-packaging MeeGo-packaging] mailing lists [http://lists.meego.com/mailman/listinfo over here].&lt;br /&gt;
&lt;br /&gt;
[[Category:Build Infrastructure]]&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Hardware_References_and_Resources</id>
		<title>Hardware References and Resources</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Hardware_References_and_Resources"/>
				<updated>2011-05-29T15:01:03Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a stub for future community-led hardware development.  Stay tuned!&lt;br /&gt;
&lt;br /&gt;
-- Resources/References --&lt;br /&gt;
&lt;br /&gt;
* http://www.raspberrypi.org/&lt;br /&gt;
* http://www.openpandora.org/&lt;br /&gt;
* http://opencircuits.org/&lt;br /&gt;
* http://cellphonediagram.com/search/homebuilt-rx-tx-rf/&lt;br /&gt;
* http://en.wikipedia.org/wiki/JooJoo (lessons to be learned!)&lt;br /&gt;
* http://en.wikipedia.org/wiki/OLPC&lt;br /&gt;
* http://www.openmoko.com (They've actually produced a phone)&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/MeeGo_Conference_Spring_2011/Flight_Information</id>
		<title>MeeGo Conference Spring 2011/Flight Information</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/MeeGo_Conference_Spring_2011/Flight_Information"/>
				<updated>2011-05-17T15:28:40Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: /* Sunday 22 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Flight Information ==&lt;br /&gt;
&lt;br /&gt;
Keep the entries sorted by time and date.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Meeting point===&lt;br /&gt;
TBC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arrivals===&lt;br /&gt;
&lt;br /&gt;
====Thursday 19====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of arrival&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 11:50&lt;br /&gt;
| Matti Saastamoinen ([http://meego.com/users/smoinen smoinen])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| DL9311 from AMS&lt;br /&gt;
| origin: HEL&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 19:05&lt;br /&gt;
| Erik Stein ([http://meego.com/users/erikstein erikstein])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| AA1835 from Chicago&lt;br /&gt;
| origin: Berlin (SXF) via Dublin (DUB)&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Friday 20====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of arrival&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 11:50&lt;br /&gt;
| Jarkko Moilanen ([http://meego.com/users/kyber kyb3R])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| KL605 from Amsterdam 	&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 11:50&lt;br /&gt;
| Andre Klapper ([http://meego.com/users/andre andre])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| KL605 from Amsterdam 	&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 11:50&lt;br /&gt;
| [http://meego.com/users/timeless timeless]&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| KL605 from Amsterdam&lt;br /&gt;
| origin: KL1164 (HEL)&lt;br /&gt;
|-&lt;br /&gt;
| 11:50&lt;br /&gt;
| Michael Hasselmann ([http://meego.com/users/mikhas mikhas])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| KL605 from Amsterdam&lt;br /&gt;
|-&lt;br /&gt;
| 11:55&lt;br /&gt;
| Cornelius Hald ([http://meego.com/users/conny conny])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH454 from Frankfurt (FRA)&lt;br /&gt;
| origin: Dresden (DRS)&lt;br /&gt;
|-&lt;br /&gt;
| 11:55&lt;br /&gt;
| Cosimo Kroll ([http://meetmeego.org/about/ zehjotkah])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH454 from Frankfurt (FRA)&lt;br /&gt;
| origin: Berlin (TXL)&lt;br /&gt;
|-&lt;br /&gt;
| 11:55&lt;br /&gt;
| Eric Le Roux ([http://meego.com/users/ericlr ericlr])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH454 from Frankfurt (FRA)&lt;br /&gt;
| origin: Helsinki (HEL)&lt;br /&gt;
|-&lt;br /&gt;
| 11:55&lt;br /&gt;
| Dariusz Filipski ([http://meego.com/users/Darek Darek])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH454 from Frankfurt (FRA)&lt;br /&gt;
| origin: Helsinki (HEL)&lt;br /&gt;
|-&lt;br /&gt;
| 12:50&lt;br /&gt;
| [http://meego.com/users/dneary Dave Neary]&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| AF84 from Paris&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 14:20&lt;br /&gt;
| Timo Rongas ([http://meego.com/users/ronksu ronksu])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| BA285 from London (LHR) 	&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 15:50&lt;br /&gt;
| [http://meego.com/users/timsamoff Tim Samoff]&lt;br /&gt;
| Airport (OAK) then BART&lt;br /&gt;
| WN2012 from Burbank (BUR)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 19:10&lt;br /&gt;
| [http://meego.com/users/vivainio Ville M. Vainio]&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH458 from MUC&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 21:35&lt;br /&gt;
| Attila Csipa ([http://meego.com/users/achipa achipa])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| AA177 from JFK&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Saturday 21====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of arrival&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 00:35&lt;br /&gt;
| Dan Leinir Turthra Jensen ([http://meego.com/users/leinir leinir])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| UA225 from Washington (IAD)&lt;br /&gt;
| origin: London (LHR)&lt;br /&gt;
|-&lt;br /&gt;
| 11:55&lt;br /&gt;
| Arek Stopczynski ([http://meego.com/users/hopbeat hopbeat])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH454 from Frankfurt&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 11:55&lt;br /&gt;
| Jukka Eklund ([http://meego.com/users/jukka jukka])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH454 from Frankfurt&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 14:20&lt;br /&gt;
| Timo Härkönen ([http://meego.com/users/timoph timoph])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| BA0285 from LHR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 14:20&lt;br /&gt;
| Iekku Huttunen([http://meego.com/users/iekku iekku])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| BA0285 from LHR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 15:50&lt;br /&gt;
| Andrew Flegg ([http://meego.com/users/jaffa Jaffa])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| VS019 from LHR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 15:50&lt;br /&gt;
| Tom Swindell ([http://meego.com/users/tswindell Alterego])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| VS019 from LHR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 16:45&lt;br /&gt;
| Jarno Teivas ([http://meego.com/users/jarnoteivas jarnoteivas])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| BA0287 from LHR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 16:45&lt;br /&gt;
| Anssi Takku ([http://meego.com/users/zotte zotte])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| BA0287 from LHR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 17:18&lt;br /&gt;
| [http://meego.com/users/myrtti Miia Ranta]&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| UA931 from LHR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 17:18&lt;br /&gt;
| [http://meego.com/users/dsample Duncan Sample]&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| UA931 from LHR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 19:10&lt;br /&gt;
| Thiago Macieira ([http://meego.com/users/thiago thiago])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH458 from Munich (MUC)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 19:20&lt;br /&gt;
| Ryan Abel ([http://meego.com/users/generalantilles GeneralAntilles])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| AA515 from Dallas Ft. Worth DFW&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 19:53&lt;br /&gt;
| Andrea Grandi ([http://meego.com/users/andreagrandi AndreaGrandi])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH9126 from Frankfurt&lt;br /&gt;
| origin: Florence (FLR)&lt;br /&gt;
|-&lt;br /&gt;
| 19:53&lt;br /&gt;
| Thomas Perl ([http://meego.com/users/thp thp])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH9126 from Frankfurt&lt;br /&gt;
| origin: Vienna (VIE)&lt;br /&gt;
|-&lt;br /&gt;
| 21:18&lt;br /&gt;
| Brendan Le Foll ([http://meego.com/users/arfoll arfoll])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| 133 from JFK&lt;br /&gt;
| origin: Barcelona (BCN)&lt;br /&gt;
|-&lt;br /&gt;
| 23:05&lt;br /&gt;
| Jerry Jalava ([http://meego.com/users/Wick3d Wick3d])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| AA17 from JFK&lt;br /&gt;
| origin: Finland (HEL)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Sunday 22====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of arrival&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 10:30&lt;br /&gt;
| Gabriel Beddingfield ([http://meego.com/users/gabrbedd gabrbedd])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| AA1581 from DFW&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 11:40&lt;br /&gt;
| Reggie Suplido ([http://meego.com/users/reggie reggie])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| UA759 from ORD&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 12:13&lt;br /&gt;
| Alan Bruce ([http://meego.com/users/qole qole])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| WS1776 from Vancouver&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 12:35&lt;br /&gt;
| Andrew Olmsted ([http://meego.com/users/fiferboy fiferboy])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| AC757 from YYZ&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 20:28&lt;br /&gt;
| Stephen Gadsby ([http://meego.com/users/sjgadsby sjgadsby])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| CO6516 from DEN 	&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| sometime in the afternoon (early)&lt;br /&gt;
| Aniello Del Sorbo ([http://meego.com/users/anidel anidel])&lt;br /&gt;
| Straight to the Hyatt&lt;br /&gt;
| By car (travelling from Las Vegas) 	&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Departures===&lt;br /&gt;
&lt;br /&gt;
====Wednesday 25====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of departure&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 14:00&lt;br /&gt;
| Matti Saastamoinen ([http://meego.com/users/smoinen smoinen])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| DL9381 to AMS&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 14:40&lt;br /&gt;
| Alan Bruce ([http://meego.com/users/qole qole])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| WS1563 to Calgary&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 19:01&lt;br /&gt;
| Andrea Grandi ([http://meego.com/users/andreagrandi AndreaGrandi])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH9127 to Frankfurt&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 21:05&lt;br /&gt;
| Thomas Perl ([http://meego.com/users/thp thp])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH0459 to Munich (MUC)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 22:10&lt;br /&gt;
| Stephen Gadsby ([http://meego.com/users/sjgadsby sjgadsby])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| CO1804 to ORD&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Thursday 26====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of departure&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 07:10&lt;br /&gt;
| Attila Csipa ([http://meego.com/users/achipa achipa])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| AA24 to JFK&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 11:30&lt;br /&gt;
| Dan Leinir Turthra Jensen ([http://meego.com/user/leinir leinir])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| AC563 to LHR (via IAD)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 11:30&lt;br /&gt;
| [http://meego.com/users/timsamoff Tim Samoff]&lt;br /&gt;
| BART Station&lt;br /&gt;
| BART to OAK&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 13:15&lt;br /&gt;
| Andrew Olmsted ([http://meego.com/users/fiferboy fiferboy])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| AC756 to YYZ&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 13:30&lt;br /&gt;
| [http://meego.com/users/timsamoff Tim Samoff]&lt;br /&gt;
| Airport (OAK)&lt;br /&gt;
| WN301 to BUR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 13:48&lt;br /&gt;
| [http://meego.com/users/vivainio Ville M. Vainio]&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| UA900 To Frankfurt (FRA)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 14:00&lt;br /&gt;
| Jarkko Moilanen ([http://meego.com/users/kyber kyb3R])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| KL606 to AMS&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 14:00&lt;br /&gt;
| [http://meego.com/users/dneary Dave Neary]&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| KL606 to AMS&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 14:00&lt;br /&gt;
| Andre Klapper ([http://meego.com/users/andre andre])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| KL606 to AMS&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 14:20&lt;br /&gt;
| Cosimo Kroll ([http://meetmeego.org/about/ zehjotkah])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH455 to Frankfurt (FRA)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 14:20&lt;br /&gt;
| Jukka Eklund ([http://meego.com/users/jukka jukka])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH455 to Frankfurt (FRA)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 15:10&lt;br /&gt;
| Gabriel Beddingfield ([http://meego.com/users/gabrbedd gabrbedd])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| AA566 to DFW&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 18:55&lt;br /&gt;
| Timo Härkönen ([http://meego.com/users/timoph timoph])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| BA0286 to LHR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 18:55&lt;br /&gt;
| Iekku Huttunen ([http://meego.com/users/iekku iekku])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| BA0286 to LHR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 18:55&lt;br /&gt;
| Jarno Teivas ([http://meego.com/users/jarnoteivas jarnoteivas])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| BA0286 to LHR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 18:55&lt;br /&gt;
| Anssi Takku ([http://meego.com/users/zotte zotte])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| BA0286 to LHR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 19:01&lt;br /&gt;
| Arek Stopczynski ([http://meego.com/users/hopbeat hopbeat])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH9127 to Frankfurt&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 19:05&lt;br /&gt;
| Andrew Flegg ([http://meego.com/users/jaffa Jaffa])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| VS020 to LHR&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 19:05&lt;br /&gt;
| Tom Swindell ([http://meego.com/users/tswindell Alterego])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| VS020 to LHR&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Friday 27====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of departure&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 07:10&lt;br /&gt;
| Jerry Jalava ([http://meego.com/users/Wick3d Wick3d])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| AA24 to JFK / AA7160 to HEL&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 13:20&lt;br /&gt;
| [http://meego.com/users/timeless timeless]&lt;br /&gt;
| Airport (SJC)&lt;br /&gt;
| WN1113 to BUR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 13:48&lt;br /&gt;
| Cornelius Hald ([http://meego.com/users/conny conny])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH9053 to Frankfurt&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 14:15&lt;br /&gt;
| Eric Le Roux ([http://meego.com/users/ericlr ericlr])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH455 to Frankfurt / LH850 to Helsinki&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Sunday 29====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of departure&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 09:50&lt;br /&gt;
| Ryan Abel ([http://meego.com/users/generalantilles GeneralAntilles])&lt;br /&gt;
| Airport (SJC)&lt;br /&gt;
| AA1543 to Dallas Ft. Worth&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 11:00&lt;br /&gt;
| Erik Stein ([http://meego.com/users/erikstein erikstein])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| AA1544 to Chicago&lt;br /&gt;
| &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/MeeGo_Conference_Spring_2011/Accommodation</id>
		<title>MeeGo Conference Spring 2011/Accommodation</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/MeeGo_Conference_Spring_2011/Accommodation"/>
				<updated>2011-05-13T00:22:48Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The MeeGo Conference has a special rate with the [http://sf2011.meego.com/logistics/hotel San Francisco Hyatt Regency Embarcadero Center].  If you have been approved for sponsored travel, please ensure that you have booked a room at the Hyatt through the [https://www.eiseverywhere.com/ereg/index.php?eventid=19946 conference registration tool] already.  The hotel will modify your reservation based upon the input provided below.&lt;br /&gt;
&lt;br /&gt;
Sponsored participants will receive up to 4 nights in the conference hotel, in a dual occupancy room.  MeeGo will pay for the room rate and taxes for 4 nights, and you will be responsible for any other charges to the room.  Please note the total duration of your stay below (e.g., arriving early for Conference Warm Up or staying a night after the conference).  &lt;br /&gt;
&lt;br /&gt;
If sponsored attendees do not have a roommate preference, we'll assign one for you.  All roommates must also be conference attendees.  If you request a roommate that is not sponsored, they will be responsible for the remainder of the room fee.&lt;br /&gt;
&lt;br /&gt;
If you plan to spend more time in San Francisco and would like to share costs with a roommate before or after the conference, please note it in the last table.  This is for convenience and matching roommates only; you will need to manage your own hotel reservations for these nights.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;|Roommate 1&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;| Roommate 2&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width:200px&amp;quot;| Considerations&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|Name &lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Arrive&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Depart&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|Name&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Arrive&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Depart&lt;br /&gt;
|-&lt;br /&gt;
|Alan Bruce||May 22||May 25||Stephen Gadsby||May 22||May 25||&lt;br /&gt;
|-&lt;br /&gt;
|Andrea Grandi||May 21||May 25||Cornelius Hald||May 21||May 25||&lt;br /&gt;
|-&lt;br /&gt;
|Andrew Flegg||21 May||26 May||Tim Samoff||20 May, 15:50||23 May (switching hotels, but will be in SF through the 26th)||&lt;br /&gt;
|-&lt;br /&gt;
|Andrew Olmsted||22 May||26 May || Andrew Zhilin? || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Andrew Zhilin|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Anselmo Lacerda S. de Melo||22 May||26 May||Artur Souza||22 May||26 May||&lt;br /&gt;
|-&lt;br /&gt;
|Brendan Le Foll|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Dan Leinir Turthra Jensen|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Dave Neary||20 May||26 May||Julien Fourgeaud||20 May||26 May||&lt;br /&gt;
|-&lt;br /&gt;
|Dimitris Glezos|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Ed Page|| May 21st @ 10:00am || May 26th at 4:00pm || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Felipe Crochik||22nd ||25th || Robert Bauer || May 21 6:00pm || May 25 7:00am ||&lt;br /&gt;
|-&lt;br /&gt;
|Ferenc Szekely|| May 20th || May 28th || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Frank Karlitschek||22nd ||26th || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Gabriel Beddingfield|| May 22nd || May 26th || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Gustavo Padovan||May 22nd || May 26th || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Hashiq Nazir|| May 20th || May 25th || Zak borg || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Jakob Eg Larsen|| 21 May || 25 May || Arkadiusz Stopczynski || 21 May || 25 May ||&lt;br /&gt;
|-&lt;br /&gt;
|Jarkko Moilanen|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Josh Soref|| May 22nd || May 26th || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Maitrey Mishra|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Michael Hasselmann|| May 20th || June 4th || Thomas Perl || May 21st || May 25th ||&lt;br /&gt;
|-&lt;br /&gt;
|Michał Sawicz|| May 20th || May 28th || || || || MS moving out of Hyatt on May 24th&lt;br /&gt;
|-&lt;br /&gt;
|Miia Ranta|| May 21st || May 25th || Duncan Sample ||May 21st || May 25th||&lt;br /&gt;
|-&lt;br /&gt;
|Mitul Bhat|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Niels Mayer|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Randall Arnold||21 May 10:30 AM||26 May 5:30 PM||Jens Wiik|| 2011-05-21 21:30|| 2011-05-26 07:10 ||&lt;br /&gt;
|-&lt;br /&gt;
|Sivan Greenberg|| || || || || ||&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Tom Swindell||21 May||25 May|| || || ||&lt;br /&gt;
|-&lt;br /&gt;
|Uladzislau Vasilyeu||May 22 ||May 26 ||Tatsiana Makava ||May 22 ||May 26 ||&lt;br /&gt;
|-&lt;br /&gt;
|Zak Borg||20 May ||25 May || || || ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Non-Conference Lodging ==&lt;br /&gt;
&lt;br /&gt;
If you plan to stay in San Francisco after May 26 and are looking for a roommate to share costs, note it here.  You will be responsible for making your own lodging arrangements, and these nights are not eligible for MeeGo sponsorship.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;|Roommate 1&lt;br /&gt;
!colspan=&amp;quot;3&amp;quot;| Roommate 2&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot; style=&amp;quot;width:200px&amp;quot;| Considerations&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|Name &lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Arrive&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Depart&lt;br /&gt;
!style=&amp;quot;width:200px&amp;quot;|Name&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Arrive&lt;br /&gt;
!style=&amp;quot;width:100px&amp;quot;|Depart&lt;br /&gt;
|-&lt;br /&gt;
|Your name&lt;br /&gt;
|May 21&lt;br /&gt;
|May 25&lt;br /&gt;
|Your roommate's name&lt;br /&gt;
|May 21&lt;br /&gt;
|May 25&lt;br /&gt;
|Staying in different hotel, etc&lt;br /&gt;
|-&lt;br /&gt;
| Ferenc Szekely || May 24th || May 28th || || || || Ferenc: Planning to stay in Hyatt&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Quality/bkm/corewatcher</id>
		<title>Quality/bkm/corewatcher</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Quality/bkm/corewatcher"/>
				<updated>2011-04-30T02:26:26Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: Expand info on corewatcher&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Corewatcher=&lt;br /&gt;
&lt;br /&gt;
Corewatcher is a program that collects user space program crash information and then submits signature information and backtrace data to a central website for for statistical analysis and presentation to&lt;br /&gt;
distribution developers.  If your system is configured to create core dumps when a program crashes, corewatcher will analyze the core dumps and report the information back to a central site.&lt;br /&gt;
&lt;br /&gt;
For MeeGo development, core dumps are enabled and corewatcher runs by default (since 1.1.90).  When a crash happens, it will ask you if you wish to submit the information to MeeGo (http://crashdb.meego.com).  You can also visit that site to see what the hot items currently are.&lt;br /&gt;
&lt;br /&gt;
==Configuring==&lt;br /&gt;
&lt;br /&gt;
The configuration file is /etc/corewatcher.conf.  That file is very well documented, so refer to it for further information.  It is highly recommended that you edit this file to change 'allow-submit' from 'ask' to 'yes'. (It's near the top)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;allow-submit = yes&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The reason is that the 'ask' isn't always working, in which case the core dumps and corewatcher will fill up your hard drive with the data in /tmp.&lt;br /&gt;
&lt;br /&gt;
==Getting the Backtraces==&lt;br /&gt;
Here are the steps of how to get the backtrace log of a crashed program on meego handset&lt;br /&gt;
* Find the &amp;quot;core&amp;quot; logs files under /tmp. &lt;br /&gt;
** When a program crashed, there will be a &amp;quot;core&amp;quot; file (file name like &amp;quot;core.xxx&amp;quot;) generated under /tmp automatically. &lt;br /&gt;
** The current MeeGo supports it by default, no additional package needed. &lt;br /&gt;
* Find which &amp;quot;core&amp;quot; log is for the crashed program. &lt;br /&gt;
** In /tmp, there could be more than one &amp;quot;core&amp;quot; file, choose the latest one. &lt;br /&gt;
** For example, if the crashed program is &amp;quot;meego-handset-people&amp;quot;, and the latest &amp;quot;core&amp;quot; log is &amp;quot;core.1000&amp;quot;, we can user command &amp;quot;file core.1000&amp;quot; to check whether the &amp;quot;core&amp;quot; log is generated for &amp;quot;meego-handset-people&amp;quot;. &lt;br /&gt;
** If it isn't, we could try the next latest &amp;quot;core&amp;quot; log with file command until we find the correct one &lt;br /&gt;
* Use gdb to get the backtrace information of this crash. &lt;br /&gt;
** Gdb hasn't been installed on the latest MeeGo image, we have to install it before we can get the backtrace information &lt;br /&gt;
** Before start gdb, run comman &amp;quot;script&amp;quot; command to record the following screen output &lt;br /&gt;
** Let’s still use &amp;quot;meego-handset-people&amp;quot; and &amp;quot;core.1000&amp;quot; for an example. Run command &amp;quot;gdb /usr/bin/meego-handset-people core.1000&amp;quot;. &lt;br /&gt;
** Firstly, gdb starts to reproduce the crashing process recorded in &amp;quot;core.1000&amp;quot;. When it stops, we can input &amp;quot;bt&amp;quot; command in gdb console, and it starts to dump the backtrace of this crash. &lt;br /&gt;
** After all backtrace is shown, input &amp;quot;quit&amp;quot; to leave gdb. &lt;br /&gt;
** Input &amp;quot;exit&amp;quot; command to stop &amp;quot;script&amp;quot;, and we get the screen output in &amp;quot;typescript&amp;quot; under the current folder &lt;br /&gt;
** Open &amp;quot;typescript&amp;quot;, the content after &amp;quot;bt&amp;quot; command is the backtrace we need for this crash&lt;br /&gt;
&lt;br /&gt;
==Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
'''''Corewatcher is filling up my hard drive''''' &amp;amp;mdash; For some reason your dumps are not being submitted to the MeeGo server, and therefore they are being retained in your /tmp folder.  The easiest solution (after `rm -rf /tmp/core*`) is to change 'allow-submit' from 'ask' to 'yes' (see [[#Configuring]]).&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/MeeGo_Conference_Spring_2011/Flight_Information</id>
		<title>MeeGo Conference Spring 2011/Flight Information</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/MeeGo_Conference_Spring_2011/Flight_Information"/>
				<updated>2011-04-26T00:29:00Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: /* Sunday 22 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Flight Information ==&lt;br /&gt;
&lt;br /&gt;
Keep the entries sorted by time and date.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Meeting point===&lt;br /&gt;
TBC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arrivals===&lt;br /&gt;
&lt;br /&gt;
====Friday 20====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of arrival&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 11:55&lt;br /&gt;
| Cornelius Hald ([http://meego.com/users/conny conny])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH454 from Frankfurt (origin: Dresden (DRS)) 	&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 21:35&lt;br /&gt;
| Attila Csipa ([http://meego.com/users/achipa achipa])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| AA177 from JFK&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Saturday 21====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of arrival&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 15:50&lt;br /&gt;
| Andrew Flegg ([http://meego.com/users/jaffa Jaffa])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| VS019 from LHR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 19:53&lt;br /&gt;
| Andrea Grandi ([http://meego.com/users/andreagrandi AndreaGrandi])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH9126 from Frankfurt (origin: Florence (FLR))&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 19:53&lt;br /&gt;
| Thomas Perl ([http://meego.com/users/thp thp])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH9126 from Frankfurt (origin: Vienna (VIE))&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Sunday 22====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of arrival&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 10:30&lt;br /&gt;
| Gabriel Beddingfield ([http://meego.com/users/gabrbedd gabrbedd])&lt;br /&gt;
| SFO&lt;br /&gt;
| AA from DFW&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 20:28&lt;br /&gt;
| Stephen Gadsby ([http://meego.com/users/sjgadsby sjgadsby])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| CO6516 from DEN 	&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Departures===&lt;br /&gt;
&lt;br /&gt;
====Wednsday 25====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of departure&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 19:01&lt;br /&gt;
| Andrea Grandi ([http://meego.com/users/andreagrandi AndreaGrandi])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH9127 to Frankfurt&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 21:05&lt;br /&gt;
| Thomas Perl ([http://meego.com/users/thp thp])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH0459 to Munich (MUC)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 22:10&lt;br /&gt;
| Stephen Gadsby ([http://meego.com/users/sjgadsby sjgadsby])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| CO1804 to ORD&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Thursday 26====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of departure&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 07:10&lt;br /&gt;
| Attila Csipa ([http://meego.com/users/achipa achipa])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| AA24 to JFK&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 15:10&lt;br /&gt;
| Gabriel Beddingfield ([http://meego.com/users/gabrbedd gabrbedd])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| AA to DFW&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 19:05&lt;br /&gt;
| Andrew Flegg ([http://meego.com/users/jaffa Jaffa])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| VS020 to LHR&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Friday 27====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of departure&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 13:48&lt;br /&gt;
| Cornelius Hald ([http://meego.com/users/conny conny])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH9053 to Frankfurt&lt;br /&gt;
| &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/MeeGo_Conference_Spring_2011/Flight_Information</id>
		<title>MeeGo Conference Spring 2011/Flight Information</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/MeeGo_Conference_Spring_2011/Flight_Information"/>
				<updated>2011-04-26T00:28:38Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: /* Thursday 26 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Flight Information ==&lt;br /&gt;
&lt;br /&gt;
Keep the entries sorted by time and date.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Meeting point===&lt;br /&gt;
TBC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arrivals===&lt;br /&gt;
&lt;br /&gt;
====Friday 20====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of arrival&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 11:55&lt;br /&gt;
| Cornelius Hald ([http://meego.com/users/conny conny])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH454 from Frankfurt (origin: Dresden (DRS)) 	&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 21:35&lt;br /&gt;
| Attila Csipa ([http://meego.com/users/achipa achipa])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| AA177 from JFK&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Saturday 21====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of arrival&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 15:50&lt;br /&gt;
| Andrew Flegg ([http://meego.com/users/jaffa Jaffa])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| VS019 from LHR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 19:53&lt;br /&gt;
| Andrea Grandi ([http://meego.com/users/andreagrandi AndreaGrandi])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH9126 from Frankfurt (origin: Florence (FLR))&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 19:53&lt;br /&gt;
| Thomas Perl ([http://meego.com/users/thp thp])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH9126 from Frankfurt (origin: Vienna (VIE))&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Sunday 22====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of arrival&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 10:30&lt;br /&gt;
| Gabriel Beddingfield ([http://meego.com/users/gabrbedd gabrbedd])&lt;br /&gt;
| SFO&lt;br /&gt;
| DC-10	&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 20:28&lt;br /&gt;
| Stephen Gadsby ([http://meego.com/users/sjgadsby sjgadsby])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| CO6516 from DEN 	&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Departures===&lt;br /&gt;
&lt;br /&gt;
====Wednsday 25====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of departure&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 19:01&lt;br /&gt;
| Andrea Grandi ([http://meego.com/users/andreagrandi AndreaGrandi])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH9127 to Frankfurt&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 21:05&lt;br /&gt;
| Thomas Perl ([http://meego.com/users/thp thp])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH0459 to Munich (MUC)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 22:10&lt;br /&gt;
| Stephen Gadsby ([http://meego.com/users/sjgadsby sjgadsby])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| CO1804 to ORD&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Thursday 26====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of departure&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 07:10&lt;br /&gt;
| Attila Csipa ([http://meego.com/users/achipa achipa])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| AA24 to JFK&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 15:10&lt;br /&gt;
| Gabriel Beddingfield ([http://meego.com/users/gabrbedd gabrbedd])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| AA to DFW&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 19:05&lt;br /&gt;
| Andrew Flegg ([http://meego.com/users/jaffa Jaffa])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| VS020 to LHR&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Friday 27====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of departure&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 13:48&lt;br /&gt;
| Cornelius Hald ([http://meego.com/users/conny conny])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH9053 to Frankfurt&lt;br /&gt;
| &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/MeeGo_Conference_Spring_2011/Flight_Information</id>
		<title>MeeGo Conference Spring 2011/Flight Information</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/MeeGo_Conference_Spring_2011/Flight_Information"/>
				<updated>2011-04-26T00:26:45Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: /* Sunday 22 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Flight Information ==&lt;br /&gt;
&lt;br /&gt;
Keep the entries sorted by time and date.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Meeting point===&lt;br /&gt;
TBC&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Arrivals===&lt;br /&gt;
&lt;br /&gt;
====Friday 20====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of arrival&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 11:55&lt;br /&gt;
| Cornelius Hald ([http://meego.com/users/conny conny])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH454 from Frankfurt (origin: Dresden (DRS)) 	&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| 21:35&lt;br /&gt;
| Attila Csipa ([http://meego.com/users/achipa achipa])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| AA177 from JFK&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Saturday 21====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of arrival&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 15:50&lt;br /&gt;
| Andrew Flegg ([http://meego.com/users/jaffa Jaffa])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| VS019 from LHR&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 19:53&lt;br /&gt;
| Andrea Grandi ([http://meego.com/users/andreagrandi AndreaGrandi])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH9126 from Frankfurt (origin: Florence (FLR))&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| 19:53&lt;br /&gt;
| Thomas Perl ([http://meego.com/users/thp thp])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH9126 from Frankfurt (origin: Vienna (VIE))&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Sunday 22====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of arrival&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 10:30&lt;br /&gt;
| Gabriel Beddingfield ([http://meego.com/users/gabrbedd gabrbedd])&lt;br /&gt;
| SFO&lt;br /&gt;
| DC-10	&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 20:28&lt;br /&gt;
| Stephen Gadsby ([http://meego.com/users/sjgadsby sjgadsby])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| CO6516 from DEN 	&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Departures===&lt;br /&gt;
&lt;br /&gt;
====Wednsday 25====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of departure&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 19:01&lt;br /&gt;
| Andrea Grandi ([http://meego.com/users/andreagrandi AndreaGrandi])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH9127 to Frankfurt&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 21:05&lt;br /&gt;
| Thomas Perl ([http://meego.com/users/thp thp])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH0459 to Munich (MUC)&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 22:10&lt;br /&gt;
| Stephen Gadsby ([http://meego.com/users/sjgadsby sjgadsby])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| CO1804 to ORD&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Thursday 26====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of departure&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 07:10&lt;br /&gt;
| Attila Csipa ([http://meego.com/users/achipa achipa])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| AA24 to JFK&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| 19:05&lt;br /&gt;
| Andrew Flegg ([http://meego.com/users/jaffa Jaffa])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| VS020 to LHR&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Friday 27====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Time&lt;br /&gt;
! Name&lt;br /&gt;
! Place of departure&lt;br /&gt;
! Means of transport&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 13:48&lt;br /&gt;
| Cornelius Hald ([http://meego.com/users/conny conny])&lt;br /&gt;
| Airport (SFO)&lt;br /&gt;
| LH9053 to Frankfurt&lt;br /&gt;
| &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Spectacle</id>
		<title>Spectacle</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Spectacle"/>
				<updated>2011-03-25T17:35:51Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: Add details about changelogs.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Spectacle is the toolset for packaging maintenance of MeeGo, including the tool&lt;br /&gt;
to generate spec files from metadata file in YAML format, and tools to convert  &lt;br /&gt;
spec files or spec-builder's ini files to YAML format.                          &lt;br /&gt;
&lt;br /&gt;
For spectacle managed packages, all generic packaging information will be stored&lt;br /&gt;
in the YAML file, and it also allows maintaining customizations in the spec file&lt;br /&gt;
directly with special enclosure tags.                                           &lt;br /&gt;
&lt;br /&gt;
Three separated tools will be installed:&lt;br /&gt;
&lt;br /&gt;
* specify: the tool to generate or to update spec file, based on YAML&lt;br /&gt;
* ini2spectacle: the tool to convert spec-builder .ini to YAML and new spec file&lt;br /&gt;
* spec2spectacle: the tool to convert original spec to YAML and new spec file&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
=== Instruction ===&lt;br /&gt;
Several methods available for spectacle installation:&lt;br /&gt;
&lt;br /&gt;
* Install rpm/deb packages for several supported Linux distributions.&lt;br /&gt;
  From [http://repo.meego.com/tools/repos/ MeeGo Tools Repo], repo urls and install packages can be found for:&lt;br /&gt;
    * MeeGo&lt;br /&gt;
    * Fedora 10,11,12&lt;br /&gt;
    * openSUSE(s)    &lt;br /&gt;
    * xUbuntu 8.10/9.04/9.10/10.04&lt;br /&gt;
    * Debian 5.0            &lt;br /&gt;
&lt;br /&gt;
* Build from the latest source and install it by ``make install``&lt;br /&gt;
  The latest code in git tree can be accessed at:&lt;br /&gt;
  [git://gitorious.org/meego-developer-tools/spectacle.git]&lt;br /&gt;
&lt;br /&gt;
'''Note on Ubuntu installation'''&lt;br /&gt;
From [http://bugs.meego.com/show_bug.cgi?id=6734 this] Edit or create ''/etc/apt/sources.list.d/meego.list'' with sudo&lt;br /&gt;
Add&lt;br /&gt;
 deb http://repo.meego.com/MeeGo/tools/repos/ubuntu/9.10/ /&lt;br /&gt;
&lt;br /&gt;
run the following commands&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
* python 2.x, above 2.5&lt;br /&gt;
* PyYAML, the python module for YAML parsing&lt;br /&gt;
* cheetah, one popular templating system for python&amp;lt;br&amp;gt;&lt;br /&gt;
    In many linux distributions, the needed package might be &amp;quot;python-cheetah&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
* specify&lt;br /&gt;
    Usage: specify [options] [yaml-path]&lt;br /&gt;
    Options:&lt;br /&gt;
      --version             show program's version number and exit&lt;br /&gt;
      -h, --help            show this help message and exit&lt;br /&gt;
      -o OUTFILE_PATH, --output=OUTFILE_PATH&lt;br /&gt;
                            Path of output spec file&lt;br /&gt;
      -s, --skip-scm        Skip to check upstream SCM when specified in YAML&lt;br /&gt;
      -N, --not-download    Do not try to download newer source files&lt;br /&gt;
      -n, --non-interactive&lt;br /&gt;
                              Non interactive running, to use default answers&lt;br /&gt;
       --new=NEWYAML         Create a new yaml from template&lt;br /&gt;
       --newsub=NEWSUB       Append a new sub-package to current yaml&lt;br /&gt;
&lt;br /&gt;
For example, `specify widget.yaml` will create (or update) the file widget.spec.  The update will clobber/delete everything that is not enclosed in the customization sections (&amp;lt;&amp;lt;&amp;lt; and &amp;gt;&amp;gt;&amp;gt;).  Note that the %changelog section will always be clobbered (see Tips below about changelogs).&lt;br /&gt;
&lt;br /&gt;
* ini2spectacle&lt;br /&gt;
    Usage: ini2spectacle [options] [ini-path]&lt;br /&gt;
    Options:&lt;br /&gt;
      --version             show program's version number and exit&lt;br /&gt;
      -h, --help            show this help message and exit&lt;br /&gt;
      -o OUTFILE_PATH, --output=OUTFILE_PATH&lt;br /&gt;
                            Path of output yaml file&lt;br /&gt;
      -f, --include-files   To store files list in YAML file&lt;br /&gt;
&lt;br /&gt;
* spec2spectacle&lt;br /&gt;
    Usage: spec2spectacle [options] [spec-path]&lt;br /&gt;
    Options:&lt;br /&gt;
      --version             show program's version number and exit&lt;br /&gt;
      -h, --help            show this help message and exit&lt;br /&gt;
      -o OUTFILE_PATH, --output=OUTFILE_PATH&lt;br /&gt;
                            Path of output yaml file&lt;br /&gt;
      -r, --replace-macros  To replace self-defined macros in spec file&lt;br /&gt;
      --no-builder-parsing  Do NOT try to parse build/install scripts&lt;br /&gt;
      -f, --include-files   To store files list in YAML file&lt;br /&gt;
&lt;br /&gt;
== Syntax of spectacle YAML ==&lt;br /&gt;
The syntax of YAML can be refered here: &amp;lt;http://www.yaml.org/spec/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Two example spectacle YAML files are placed to examples/ directory in source&lt;br /&gt;
code:&lt;br /&gt;
&lt;br /&gt;
* xfce4-session.yaml, a real world sample with most of the elements&lt;br /&gt;
* general.yaml, a fake spectacle contains all the available elements with comments&lt;br /&gt;
&lt;br /&gt;
All available directives for spectacle are listed as the following:&lt;br /&gt;
&lt;br /&gt;
* Name: **string**&lt;br /&gt;
&lt;br /&gt;
* Summary: **string**&lt;br /&gt;
&lt;br /&gt;
* Version: **string**, version string&lt;br /&gt;
&lt;br /&gt;
* Release: **string**&lt;br /&gt;
&lt;br /&gt;
* Epoch: **string**, *optional*&lt;br /&gt;
&lt;br /&gt;
* Group: **string**&lt;br /&gt;
&lt;br /&gt;
* License: **string**&lt;br /&gt;
&lt;br /&gt;
* URL: **string**, *optional*&lt;br /&gt;
&lt;br /&gt;
* BuildArch: **string**, *optional*&lt;br /&gt;
&lt;br /&gt;
* ExclusiveArch: **string**, *optional*&lt;br /&gt;
&lt;br /&gt;
* Prefix: **string**, *optional*&lt;br /&gt;
&lt;br /&gt;
* LocaleName: **string**, *optional*&lt;br /&gt;
&lt;br /&gt;
* LocaleOptions: **string**, *optional*&lt;br /&gt;
&lt;br /&gt;
* Description: **text**, *optional*&lt;br /&gt;
&lt;br /&gt;
* Sources: **list** of **string**&lt;br /&gt;
&lt;br /&gt;
* SourcePrefix: **string**, *optional*, specify the prefix path in source package&lt;br /&gt;
&lt;br /&gt;
* ExtraSources: **list** of **string**, *optional*&lt;br /&gt;
&lt;br /&gt;
* SetupOptions: **string**, *optional*, the options string for %setup&lt;br /&gt;
&lt;br /&gt;
* Patches: **list** of **string**, all patches need to be in 'p1' level&lt;br /&gt;
&lt;br /&gt;
* Requires: **list** of **string**&lt;br /&gt;
&lt;br /&gt;
* RequiresPre: **list** of **string**&lt;br /&gt;
&lt;br /&gt;
* RequiresPreUn: **list** of **string**&lt;br /&gt;
&lt;br /&gt;
* RequiresPost: **list** of **string**&lt;br /&gt;
&lt;br /&gt;
* RequiresPostUn: **list** of **string**&lt;br /&gt;
&lt;br /&gt;
* PkgBR: **list** of **string**, packages required in building, or BuildRequires&lt;br /&gt;
&lt;br /&gt;
* PkgConfigBR: **list** of **string**, pkg-config requires in building&lt;br /&gt;
&lt;br /&gt;
* Provides: **list** of **string**&lt;br /&gt;
&lt;br /&gt;
* Conflicts: **list** of **string**&lt;br /&gt;
&lt;br /&gt;
* Obsoletes: **list** of **string**&lt;br /&gt;
&lt;br /&gt;
* BuildConflicts: **list** of **string**&lt;br /&gt;
&lt;br /&gt;
* Configure: **string**, *optional*, valid values: **autogen**, **configure**, **reconfigure**, **none**&amp;lt;br&amp;gt;&lt;br /&gt;
** If not specified, the default value &amp;quot;configure&amp;quot; will be used&lt;br /&gt;
&lt;br /&gt;
* ConfigOptions: **list**, *optional*, extra options for ``Configure``&lt;br /&gt;
&lt;br /&gt;
* Builder: **string**, *optional*, valid values: **make**, **single-make**, **python**, **perl**, **qmake**, **none**&amp;lt;br&amp;gt;&lt;br /&gt;
** If not specified, the deault value &amp;quot;make&amp;quot; will be used. If do not want a automatic builder, please use &amp;quot;none&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* QMakeOptions: **list**, *optional*, extra options for **qmake** ``Builder``&lt;br /&gt;
&lt;br /&gt;
* Files: **list** of **string**, *optional*, content of ``%files`` for small packages&lt;br /&gt;
&lt;br /&gt;
* FilesInput: **string**, *optional*, extra input source for %files&lt;br /&gt;
&lt;br /&gt;
* NoFiles: **boolean**, *optional*, if to be set as True, means no %files section for this package and it cause no rpm generated&lt;br /&gt;
&lt;br /&gt;
* RunFdupes: **list** of **string**, paths under %{buildroot} to run ``%fdupes`` macro in %install&lt;br /&gt;
&lt;br /&gt;
* RpmLintIgnore: **list**, *optional*, list of skip items for ``rpmlint``&lt;br /&gt;
&lt;br /&gt;
* Check: **boolean**, whether need ``%check`` section in spec&lt;br /&gt;
&lt;br /&gt;
* SupportOtherDistros: **boolean**, whether need to check for other distros (besides MeeGo)&lt;br /&gt;
&lt;br /&gt;
* UseAsNeeded: **boolean**, whether export LD\_AS\_NEEDED=1 environ variable before building&lt;br /&gt;
&lt;br /&gt;
* NoAutoReq: **boolean**, whether add 'AutoReq: 0' to spec&lt;br /&gt;
&lt;br /&gt;
* NoAutoProv: **boolean**, whether add 'AutoProv: 0' to spec&lt;br /&gt;
&lt;br /&gt;
* NoSetup: **boolean**, whether to skip using ``%setup`` in ``%prep``&lt;br /&gt;
&lt;br /&gt;
* NoAutoLocale: **boolean**, whether to use ``%find_lang`` to search locale data when found 'intltool' in PkgBR&lt;br /&gt;
&lt;br /&gt;
* NoDesktop: **boolean**, whether to install the desktop files in package&lt;br /&gt;
&lt;br /&gt;
* UpdateDesktopDB: **boolean**, whether to run 'update-desktop-database' to flush cache when package (un)installation&lt;br /&gt;
&lt;br /&gt;
* NoIconCache: **boolean**, whether to run 'gtk-update-icon-cache' if icon files found in package&lt;br /&gt;
&lt;br /&gt;
* AutoDepend: **boolean**, for subpackages only, whether to add Require to main package automatically&lt;br /&gt;
&lt;br /&gt;
* AsWholeName: **boolean**, for subpackages only, whether to use **Name** as the whole package name&lt;br /&gt;
&lt;br /&gt;
* AutoSubPackages: **list** of **string**, mainly for '-devel'&lt;br /&gt;
&lt;br /&gt;
* SubPackages: **list** of **dict**, the **dict** item is the lower level directives for sub packages:&lt;br /&gt;
&lt;br /&gt;
    * Name&lt;br /&gt;
    * Summary&lt;br /&gt;
    * Description, *optional*&lt;br /&gt;
    * Group, *optional*&lt;br /&gt;
    * License, *optional*&lt;br /&gt;
    * Requires, *optional*&lt;br /&gt;
    * etc.&lt;br /&gt;
&lt;br /&gt;
'''CAUTION''': The following cases of value string have special meaning in YAML syntax:&lt;br /&gt;
* string with leading **``%``** charactor&lt;br /&gt;
* string with leading **``*``** charactor&lt;br /&gt;
* string contains **``:``** charactor and one or more spaces/tabs after **``:``**&lt;br /&gt;
* string end with **``:``** charactor&lt;br /&gt;
&lt;br /&gt;
Then these string values need to be quoted by ``'``(single-quote) or ``&amp;quot;``&lt;br /&gt;
(double-quote), and the choice of quote char should not conflict with the value&lt;br /&gt;
string self.&lt;br /&gt;
&lt;br /&gt;
== Mandatory and valid keywords for all packages ==&lt;br /&gt;
=== Mandatory keywords ===&lt;br /&gt;
The following keywords are mandatory for main package:&lt;br /&gt;
&lt;br /&gt;
* Name&lt;br /&gt;
* Summary&lt;br /&gt;
* Description&lt;br /&gt;
* Version&lt;br /&gt;
* Group&lt;br /&gt;
* License&lt;br /&gt;
&lt;br /&gt;
The following keywords are mandatory for sub-package:&lt;br /&gt;
&lt;br /&gt;
* Name&lt;br /&gt;
* Summary&lt;br /&gt;
* Description&lt;br /&gt;
* Group&lt;br /&gt;
&lt;br /&gt;
=== Valid keywords for sub-packages ===&lt;br /&gt;
For sub-packages, only a subset of keywords can be specified:&lt;br /&gt;
&lt;br /&gt;
* Name&lt;br /&gt;
* Summary&lt;br /&gt;
* Description&lt;br /&gt;
* Group&lt;br /&gt;
* License&lt;br /&gt;
* Version&lt;br /&gt;
* Release&lt;br /&gt;
* Epoch&lt;br /&gt;
* URL&lt;br /&gt;
* BuildArch&lt;br /&gt;
* Files&lt;br /&gt;
* Prefix&lt;br /&gt;
* Requires&lt;br /&gt;
* RequiresPre&lt;br /&gt;
* RequiresPreUn&lt;br /&gt;
* RequiresPost&lt;br /&gt;
* RequiresPostUn&lt;br /&gt;
* Provides&lt;br /&gt;
* Conflicts&lt;br /&gt;
* Obsoletes&lt;br /&gt;
* NoAutoReq&lt;br /&gt;
* NoAutoProv&lt;br /&gt;
* NoAutoReqProv&lt;br /&gt;
* NoIconCache&lt;br /&gt;
* FilesInput&lt;br /&gt;
&lt;br /&gt;
=== Keywords only for sub-packages ===&lt;br /&gt;
The following keywords are only valid for sub-packages:&lt;br /&gt;
&lt;br /&gt;
* AsWholeName&lt;br /&gt;
* AutoDepend&lt;br /&gt;
&lt;br /&gt;
== Namespace support for multi-architecture in several keywords ==&lt;br /&gt;
For the following spectacle YAML keywords:&lt;br /&gt;
&lt;br /&gt;
* Requires&lt;br /&gt;
* PkgBR&lt;br /&gt;
* PkgConfigBR&lt;br /&gt;
* Patches&lt;br /&gt;
* ConfigOptions&lt;br /&gt;
* QMakeOptions&lt;br /&gt;
&lt;br /&gt;
If one of the items need to be architecture specified, we can add arch prefix to&lt;br /&gt;
it. The supported prefix and the corresponding architectures as the followings:&lt;br /&gt;
&lt;br /&gt;
* ``ix86:`` -   x86 platform&lt;br /&gt;
* ``arm:``  -   arm platform&lt;br /&gt;
* ``armv5:``  -   armv5 platform, will expand to &amp;quot;armv5el armv5tel armv5tejl&amp;quot;&lt;br /&gt;
* ``armv7:``  -   armv7 platform, will expand to &amp;quot;armv7el armv7tel armv7l armv7hl armv7nhl&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Here's some samples:&lt;br /&gt;
&lt;br /&gt;
    Requires:&lt;br /&gt;
        - arm:pkg-need-in-arm-image&lt;br /&gt;
        - ix86:pkg-need-in-x86-image&lt;br /&gt;
        - normal-pkg&lt;br /&gt;
    ConfigOptions:&lt;br /&gt;
        - arm:--arm-specific-opt&lt;br /&gt;
        - ix86:--ix86-specific-opt&lt;br /&gt;
        - --common-opt&lt;br /&gt;
&lt;br /&gt;
== Customizations in spec ==&lt;br /&gt;
Generated spec files by specify will have many placeholders for customizations,&lt;br /&gt;
such as:&lt;br /&gt;
&lt;br /&gt;
    # &amp;gt;&amp;gt; build pre&lt;br /&gt;
    # &amp;lt;&amp;lt; build pre&lt;br /&gt;
&lt;br /&gt;
You can add any custom code between the markers, next time when you run&lt;br /&gt;
``specify``, the text between the markers will be kept as is, all other sections&lt;br /&gt;
relying on the meta data from the YAML file will be changed depending on the&lt;br /&gt;
values in the YAML file.&lt;br /&gt;
&lt;br /&gt;
The following placeholders in spec can be customized:&lt;br /&gt;
&lt;br /&gt;
* Private Macros, used in this package's spec&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; macros&lt;br /&gt;
        # &amp;lt;&amp;lt; macros&lt;br /&gt;
&lt;br /&gt;
* Extra setup scripts in the last of ``%prep``&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; setup&lt;br /&gt;
        # &amp;lt;&amp;lt; setup&lt;br /&gt;
&lt;br /&gt;
* Pre-Build, scripts before package building&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; build pre&lt;br /&gt;
        # &amp;lt;&amp;lt; build pre&lt;br /&gt;
&lt;br /&gt;
* Post-Build, scripts after package building&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; build post&lt;br /&gt;
        # &amp;lt;&amp;lt; build post&lt;br /&gt;
&lt;br /&gt;
* Pre-Install, scripts before package installation&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; install pre&lt;br /&gt;
        # &amp;lt;&amp;lt; install pre&lt;br /&gt;
&lt;br /&gt;
* Post-Install, scripts after package installation&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; install post&lt;br /&gt;
        # &amp;lt;&amp;lt; install post&lt;br /&gt;
&lt;br /&gt;
* Files, files list in packaged rpm&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; files [sub-package]&lt;br /&gt;
        # &amp;lt;&amp;lt; files [sub-package]&lt;br /&gt;
NOTE**: &amp;quot;sub-packge&amp;quot; stands for the name of sub-package, and it is optional. If no sub-package name specified, it means the files of **main** package.&lt;br /&gt;
NOTE**: If the file list is simple enough, you can use YAML *Files* keyword instead to record it.&lt;br /&gt;
&lt;br /&gt;
* Scriptlets for %check section&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; check&lt;br /&gt;
        # &amp;lt;&amp;lt; check&lt;br /&gt;
NOTE**: Only if YAML boolean *Check* is specifed as ``yes``, %check with placeholder lines will be generated in .spec.&lt;br /&gt;
&lt;br /&gt;
* Scriptlets for %pre section&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; pre&lt;br /&gt;
        # &amp;lt;&amp;lt; pre&lt;br /&gt;
NOTE**: The placeholder lines will NOT generated in spec by default. If you need customized %pre scripts, it need be added manually, and only once.&lt;br /&gt;
&lt;br /&gt;
* Scriptlets for %preun section&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; preun&lt;br /&gt;
        # &amp;lt;&amp;lt; preun&lt;br /&gt;
NOTE**: The placeholder lines will NOT generated in spec by default. If you need customized %preun scripts, it need be added manually, and only once.&lt;br /&gt;
&lt;br /&gt;
* Scriptlets for %post section&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; post&lt;br /&gt;
        # &amp;lt;&amp;lt; post&lt;br /&gt;
NOTE**: The placeholder lines will NOT generated in spec by default. If you need customized %post scripts, it need be added manually, and only once.&lt;br /&gt;
&lt;br /&gt;
* Scriptlets for %postun section&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; postun&lt;br /&gt;
        # &amp;lt;&amp;lt; postun&lt;br /&gt;
NOTE**: The placeholder lines will NOT generated in spec by default. If you need customized %postun scripts, it need be added manually, and only once.&lt;br /&gt;
&lt;br /&gt;
== Internal Implementation ==&lt;br /&gt;
Spectacle uses cheetah templates to generate the spec file, based the metadata&lt;br /&gt;
from YAML file. But the end users need not tackle it.&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
To upgrade the pkg to a newer version, you can just edit the&lt;br /&gt;
version string in spectacle YAML file, and when you run ``specify``, it&lt;br /&gt;
will download the needed files for you automatically.&lt;br /&gt;
&lt;br /&gt;
For packages with locale data, *LocaleName* is needed. If package&lt;br /&gt;
maintainers cannot confirm whether there are locale files, they can just&lt;br /&gt;
do not use *LocaleName* at first, and whenever &amp;quot;unpackaged files&amp;quot; rpm&lt;br /&gt;
packaging errors encountered, it means *LocaleName* should be added. And&lt;br /&gt;
please do not use it for packages without locale data to keep them clean,&lt;br /&gt;
though it will not block the building and packaging.&lt;br /&gt;
&lt;br /&gt;
When using spec2spectacle/ini2spectacle to generate spectacle, the following problems should be checked:&lt;br /&gt;
* Remove duplicate Requires(include pre/post/preun/postun) which were added automatically based on the analysis of file list.&lt;br /&gt;
* Review and clean up the reserved scripts in &amp;quot;build|install pre|post&amp;quot; sections in new generated spec file.&lt;br /&gt;
&lt;br /&gt;
User can use &amp;quot;series.conf&amp;quot; file to specify multiple patches under package directory. The &amp;quot;series.conf&amp;quot; can be used by ``quilt`` and the content can be updated to spec automatically when running ``specify``.&lt;br /&gt;
&lt;br /&gt;
When you use ``specify`` to update a .spec file, any %changelog section will be removed in total.  This is because the [[Packaging/Guidelines|Packaging Guidelines]] require using *.changes files instead of an explicit %changelog section in your .spec.  (And spectacle doesn't have any changelog support for the .yaml file.)  Before rebuilding a package, OBS will add the .changes file to the end of the .spec.  (So, if you're building packages without OBS/osc, then you will need to do this manually.)&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Spectacle</id>
		<title>Spectacle</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Spectacle"/>
				<updated>2011-03-25T17:29:02Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: Add information about how spectacle updates the .spec file&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Spectacle is the toolset for packaging maintenance of MeeGo, including the tool&lt;br /&gt;
to generate spec files from metadata file in YAML format, and tools to convert  &lt;br /&gt;
spec files or spec-builder's ini files to YAML format.                          &lt;br /&gt;
&lt;br /&gt;
For spectacle managed packages, all generic packaging information will be stored&lt;br /&gt;
in the YAML file, and it also allows maintaining customizations in the spec file&lt;br /&gt;
directly with special enclosure tags.                                           &lt;br /&gt;
&lt;br /&gt;
Three separated tools will be installed:&lt;br /&gt;
&lt;br /&gt;
* specify: the tool to generate or to update spec file, based on YAML&lt;br /&gt;
* ini2spectacle: the tool to convert spec-builder .ini to YAML and new spec file&lt;br /&gt;
* spec2spectacle: the tool to convert original spec to YAML and new spec file&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
=== Instruction ===&lt;br /&gt;
Several methods available for spectacle installation:&lt;br /&gt;
&lt;br /&gt;
* Install rpm/deb packages for several supported Linux distributions.&lt;br /&gt;
  From [http://repo.meego.com/tools/repos/ MeeGo Tools Repo], repo urls and install packages can be found for:&lt;br /&gt;
    * MeeGo&lt;br /&gt;
    * Fedora 10,11,12&lt;br /&gt;
    * openSUSE(s)    &lt;br /&gt;
    * xUbuntu 8.10/9.04/9.10/10.04&lt;br /&gt;
    * Debian 5.0            &lt;br /&gt;
&lt;br /&gt;
* Build from the latest source and install it by ``make install``&lt;br /&gt;
  The latest code in git tree can be accessed at:&lt;br /&gt;
  [git://gitorious.org/meego-developer-tools/spectacle.git]&lt;br /&gt;
&lt;br /&gt;
'''Note on Ubuntu installation'''&lt;br /&gt;
From [http://bugs.meego.com/show_bug.cgi?id=6734 this] Edit or create ''/etc/apt/sources.list.d/meego.list'' with sudo&lt;br /&gt;
Add&lt;br /&gt;
 deb http://repo.meego.com/MeeGo/tools/repos/ubuntu/9.10/ /&lt;br /&gt;
&lt;br /&gt;
run the following commands&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
=== Requirements ===&lt;br /&gt;
* python 2.x, above 2.5&lt;br /&gt;
* PyYAML, the python module for YAML parsing&lt;br /&gt;
* cheetah, one popular templating system for python&amp;lt;br&amp;gt;&lt;br /&gt;
    In many linux distributions, the needed package might be &amp;quot;python-cheetah&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
* specify&lt;br /&gt;
    Usage: specify [options] [yaml-path]&lt;br /&gt;
    Options:&lt;br /&gt;
      --version             show program's version number and exit&lt;br /&gt;
      -h, --help            show this help message and exit&lt;br /&gt;
      -o OUTFILE_PATH, --output=OUTFILE_PATH&lt;br /&gt;
                            Path of output spec file&lt;br /&gt;
      -s, --skip-scm        Skip to check upstream SCM when specified in YAML&lt;br /&gt;
      -N, --not-download    Do not try to download newer source files&lt;br /&gt;
      -n, --non-interactive&lt;br /&gt;
                              Non interactive running, to use default answers&lt;br /&gt;
       --new=NEWYAML         Create a new yaml from template&lt;br /&gt;
       --newsub=NEWSUB       Append a new sub-package to current yaml&lt;br /&gt;
&lt;br /&gt;
For example, `specify widget.yaml` will create (or update) the file widget.spec.  The update will clobber/delete everything that is not enclosed in the customization sections (&amp;lt;&amp;lt;&amp;lt; and &amp;gt;&amp;gt;&amp;gt;).  Note that the %changelog section will always be clobbered (see Tips below about changelogs).&lt;br /&gt;
&lt;br /&gt;
* ini2spectacle&lt;br /&gt;
    Usage: ini2spectacle [options] [ini-path]&lt;br /&gt;
    Options:&lt;br /&gt;
      --version             show program's version number and exit&lt;br /&gt;
      -h, --help            show this help message and exit&lt;br /&gt;
      -o OUTFILE_PATH, --output=OUTFILE_PATH&lt;br /&gt;
                            Path of output yaml file&lt;br /&gt;
      -f, --include-files   To store files list in YAML file&lt;br /&gt;
&lt;br /&gt;
* spec2spectacle&lt;br /&gt;
    Usage: spec2spectacle [options] [spec-path]&lt;br /&gt;
    Options:&lt;br /&gt;
      --version             show program's version number and exit&lt;br /&gt;
      -h, --help            show this help message and exit&lt;br /&gt;
      -o OUTFILE_PATH, --output=OUTFILE_PATH&lt;br /&gt;
                            Path of output yaml file&lt;br /&gt;
      -r, --replace-macros  To replace self-defined macros in spec file&lt;br /&gt;
      --no-builder-parsing  Do NOT try to parse build/install scripts&lt;br /&gt;
      -f, --include-files   To store files list in YAML file&lt;br /&gt;
&lt;br /&gt;
== Syntax of spectacle YAML ==&lt;br /&gt;
The syntax of YAML can be refered here: &amp;lt;http://www.yaml.org/spec/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Two example spectacle YAML files are placed to examples/ directory in source&lt;br /&gt;
code:&lt;br /&gt;
&lt;br /&gt;
* xfce4-session.yaml, a real world sample with most of the elements&lt;br /&gt;
* general.yaml, a fake spectacle contains all the available elements with comments&lt;br /&gt;
&lt;br /&gt;
All available directives for spectacle are listed as the following:&lt;br /&gt;
&lt;br /&gt;
* Name: **string**&lt;br /&gt;
&lt;br /&gt;
* Summary: **string**&lt;br /&gt;
&lt;br /&gt;
* Version: **string**, version string&lt;br /&gt;
&lt;br /&gt;
* Release: **string**&lt;br /&gt;
&lt;br /&gt;
* Epoch: **string**, *optional*&lt;br /&gt;
&lt;br /&gt;
* Group: **string**&lt;br /&gt;
&lt;br /&gt;
* License: **string**&lt;br /&gt;
&lt;br /&gt;
* URL: **string**, *optional*&lt;br /&gt;
&lt;br /&gt;
* BuildArch: **string**, *optional*&lt;br /&gt;
&lt;br /&gt;
* ExclusiveArch: **string**, *optional*&lt;br /&gt;
&lt;br /&gt;
* Prefix: **string**, *optional*&lt;br /&gt;
&lt;br /&gt;
* LocaleName: **string**, *optional*&lt;br /&gt;
&lt;br /&gt;
* LocaleOptions: **string**, *optional*&lt;br /&gt;
&lt;br /&gt;
* Description: **text**, *optional*&lt;br /&gt;
&lt;br /&gt;
* Sources: **list** of **string**&lt;br /&gt;
&lt;br /&gt;
* SourcePrefix: **string**, *optional*, specify the prefix path in source package&lt;br /&gt;
&lt;br /&gt;
* ExtraSources: **list** of **string**, *optional*&lt;br /&gt;
&lt;br /&gt;
* SetupOptions: **string**, *optional*, the options string for %setup&lt;br /&gt;
&lt;br /&gt;
* Patches: **list** of **string**, all patches need to be in 'p1' level&lt;br /&gt;
&lt;br /&gt;
* Requires: **list** of **string**&lt;br /&gt;
&lt;br /&gt;
* RequiresPre: **list** of **string**&lt;br /&gt;
&lt;br /&gt;
* RequiresPreUn: **list** of **string**&lt;br /&gt;
&lt;br /&gt;
* RequiresPost: **list** of **string**&lt;br /&gt;
&lt;br /&gt;
* RequiresPostUn: **list** of **string**&lt;br /&gt;
&lt;br /&gt;
* PkgBR: **list** of **string**, packages required in building, or BuildRequires&lt;br /&gt;
&lt;br /&gt;
* PkgConfigBR: **list** of **string**, pkg-config requires in building&lt;br /&gt;
&lt;br /&gt;
* Provides: **list** of **string**&lt;br /&gt;
&lt;br /&gt;
* Conflicts: **list** of **string**&lt;br /&gt;
&lt;br /&gt;
* Obsoletes: **list** of **string**&lt;br /&gt;
&lt;br /&gt;
* BuildConflicts: **list** of **string**&lt;br /&gt;
&lt;br /&gt;
* Configure: **string**, *optional*, valid values: **autogen**, **configure**, **reconfigure**, **none**&amp;lt;br&amp;gt;&lt;br /&gt;
** If not specified, the default value &amp;quot;configure&amp;quot; will be used&lt;br /&gt;
&lt;br /&gt;
* ConfigOptions: **list**, *optional*, extra options for ``Configure``&lt;br /&gt;
&lt;br /&gt;
* Builder: **string**, *optional*, valid values: **make**, **single-make**, **python**, **perl**, **qmake**, **none**&amp;lt;br&amp;gt;&lt;br /&gt;
** If not specified, the deault value &amp;quot;make&amp;quot; will be used. If do not want a automatic builder, please use &amp;quot;none&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* QMakeOptions: **list**, *optional*, extra options for **qmake** ``Builder``&lt;br /&gt;
&lt;br /&gt;
* Files: **list** of **string**, *optional*, content of ``%files`` for small packages&lt;br /&gt;
&lt;br /&gt;
* FilesInput: **string**, *optional*, extra input source for %files&lt;br /&gt;
&lt;br /&gt;
* NoFiles: **boolean**, *optional*, if to be set as True, means no %files section for this package and it cause no rpm generated&lt;br /&gt;
&lt;br /&gt;
* RunFdupes: **list** of **string**, paths under %{buildroot} to run ``%fdupes`` macro in %install&lt;br /&gt;
&lt;br /&gt;
* RpmLintIgnore: **list**, *optional*, list of skip items for ``rpmlint``&lt;br /&gt;
&lt;br /&gt;
* Check: **boolean**, whether need ``%check`` section in spec&lt;br /&gt;
&lt;br /&gt;
* SupportOtherDistros: **boolean**, whether need to check for other distros (besides MeeGo)&lt;br /&gt;
&lt;br /&gt;
* UseAsNeeded: **boolean**, whether export LD\_AS\_NEEDED=1 environ variable before building&lt;br /&gt;
&lt;br /&gt;
* NoAutoReq: **boolean**, whether add 'AutoReq: 0' to spec&lt;br /&gt;
&lt;br /&gt;
* NoAutoProv: **boolean**, whether add 'AutoProv: 0' to spec&lt;br /&gt;
&lt;br /&gt;
* NoSetup: **boolean**, whether to skip using ``%setup`` in ``%prep``&lt;br /&gt;
&lt;br /&gt;
* NoAutoLocale: **boolean**, whether to use ``%find_lang`` to search locale data when found 'intltool' in PkgBR&lt;br /&gt;
&lt;br /&gt;
* NoDesktop: **boolean**, whether to install the desktop files in package&lt;br /&gt;
&lt;br /&gt;
* UpdateDesktopDB: **boolean**, whether to run 'update-desktop-database' to flush cache when package (un)installation&lt;br /&gt;
&lt;br /&gt;
* NoIconCache: **boolean**, whether to run 'gtk-update-icon-cache' if icon files found in package&lt;br /&gt;
&lt;br /&gt;
* AutoDepend: **boolean**, for subpackages only, whether to add Require to main package automatically&lt;br /&gt;
&lt;br /&gt;
* AsWholeName: **boolean**, for subpackages only, whether to use **Name** as the whole package name&lt;br /&gt;
&lt;br /&gt;
* AutoSubPackages: **list** of **string**, mainly for '-devel'&lt;br /&gt;
&lt;br /&gt;
* SubPackages: **list** of **dict**, the **dict** item is the lower level directives for sub packages:&lt;br /&gt;
&lt;br /&gt;
    * Name&lt;br /&gt;
    * Summary&lt;br /&gt;
    * Description, *optional*&lt;br /&gt;
    * Group, *optional*&lt;br /&gt;
    * License, *optional*&lt;br /&gt;
    * Requires, *optional*&lt;br /&gt;
    * etc.&lt;br /&gt;
&lt;br /&gt;
'''CAUTION''': The following cases of value string have special meaning in YAML syntax:&lt;br /&gt;
* string with leading **``%``** charactor&lt;br /&gt;
* string with leading **``*``** charactor&lt;br /&gt;
* string contains **``:``** charactor and one or more spaces/tabs after **``:``**&lt;br /&gt;
* string end with **``:``** charactor&lt;br /&gt;
&lt;br /&gt;
Then these string values need to be quoted by ``'``(single-quote) or ``&amp;quot;``&lt;br /&gt;
(double-quote), and the choice of quote char should not conflict with the value&lt;br /&gt;
string self.&lt;br /&gt;
&lt;br /&gt;
== Mandatory and valid keywords for all packages ==&lt;br /&gt;
=== Mandatory keywords ===&lt;br /&gt;
The following keywords are mandatory for main package:&lt;br /&gt;
&lt;br /&gt;
* Name&lt;br /&gt;
* Summary&lt;br /&gt;
* Description&lt;br /&gt;
* Version&lt;br /&gt;
* Group&lt;br /&gt;
* License&lt;br /&gt;
&lt;br /&gt;
The following keywords are mandatory for sub-package:&lt;br /&gt;
&lt;br /&gt;
* Name&lt;br /&gt;
* Summary&lt;br /&gt;
* Description&lt;br /&gt;
* Group&lt;br /&gt;
&lt;br /&gt;
=== Valid keywords for sub-packages ===&lt;br /&gt;
For sub-packages, only a subset of keywords can be specified:&lt;br /&gt;
&lt;br /&gt;
* Name&lt;br /&gt;
* Summary&lt;br /&gt;
* Description&lt;br /&gt;
* Group&lt;br /&gt;
* License&lt;br /&gt;
* Version&lt;br /&gt;
* Release&lt;br /&gt;
* Epoch&lt;br /&gt;
* URL&lt;br /&gt;
* BuildArch&lt;br /&gt;
* Files&lt;br /&gt;
* Prefix&lt;br /&gt;
* Requires&lt;br /&gt;
* RequiresPre&lt;br /&gt;
* RequiresPreUn&lt;br /&gt;
* RequiresPost&lt;br /&gt;
* RequiresPostUn&lt;br /&gt;
* Provides&lt;br /&gt;
* Conflicts&lt;br /&gt;
* Obsoletes&lt;br /&gt;
* NoAutoReq&lt;br /&gt;
* NoAutoProv&lt;br /&gt;
* NoAutoReqProv&lt;br /&gt;
* NoIconCache&lt;br /&gt;
* FilesInput&lt;br /&gt;
&lt;br /&gt;
=== Keywords only for sub-packages ===&lt;br /&gt;
The following keywords are only valid for sub-packages:&lt;br /&gt;
&lt;br /&gt;
* AsWholeName&lt;br /&gt;
* AutoDepend&lt;br /&gt;
&lt;br /&gt;
== Namespace support for multi-architecture in several keywords ==&lt;br /&gt;
For the following spectacle YAML keywords:&lt;br /&gt;
&lt;br /&gt;
* Requires&lt;br /&gt;
* PkgBR&lt;br /&gt;
* PkgConfigBR&lt;br /&gt;
* Patches&lt;br /&gt;
* ConfigOptions&lt;br /&gt;
* QMakeOptions&lt;br /&gt;
&lt;br /&gt;
If one of the items need to be architecture specified, we can add arch prefix to&lt;br /&gt;
it. The supported prefix and the corresponding architectures as the followings:&lt;br /&gt;
&lt;br /&gt;
* ``ix86:`` -   x86 platform&lt;br /&gt;
* ``arm:``  -   arm platform&lt;br /&gt;
* ``armv5:``  -   armv5 platform, will expand to &amp;quot;armv5el armv5tel armv5tejl&amp;quot;&lt;br /&gt;
* ``armv7:``  -   armv7 platform, will expand to &amp;quot;armv7el armv7tel armv7l armv7hl armv7nhl&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Here's some samples:&lt;br /&gt;
&lt;br /&gt;
    Requires:&lt;br /&gt;
        - arm:pkg-need-in-arm-image&lt;br /&gt;
        - ix86:pkg-need-in-x86-image&lt;br /&gt;
        - normal-pkg&lt;br /&gt;
    ConfigOptions:&lt;br /&gt;
        - arm:--arm-specific-opt&lt;br /&gt;
        - ix86:--ix86-specific-opt&lt;br /&gt;
        - --common-opt&lt;br /&gt;
&lt;br /&gt;
== Customizations in spec ==&lt;br /&gt;
Generated spec files by specify will have many placeholders for customizations,&lt;br /&gt;
such as:&lt;br /&gt;
&lt;br /&gt;
    # &amp;gt;&amp;gt; build pre&lt;br /&gt;
    # &amp;lt;&amp;lt; build pre&lt;br /&gt;
&lt;br /&gt;
You can add any custom code between the markers, next time when you run&lt;br /&gt;
``specify``, the text between the markers will be kept as is, all other sections&lt;br /&gt;
relying on the meta data from the YAML file will be changed depending on the&lt;br /&gt;
values in the YAML file.&lt;br /&gt;
&lt;br /&gt;
The following placeholders in spec can be customized:&lt;br /&gt;
&lt;br /&gt;
* Private Macros, used in this package's spec&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; macros&lt;br /&gt;
        # &amp;lt;&amp;lt; macros&lt;br /&gt;
&lt;br /&gt;
* Extra setup scripts in the last of ``%prep``&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; setup&lt;br /&gt;
        # &amp;lt;&amp;lt; setup&lt;br /&gt;
&lt;br /&gt;
* Pre-Build, scripts before package building&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; build pre&lt;br /&gt;
        # &amp;lt;&amp;lt; build pre&lt;br /&gt;
&lt;br /&gt;
* Post-Build, scripts after package building&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; build post&lt;br /&gt;
        # &amp;lt;&amp;lt; build post&lt;br /&gt;
&lt;br /&gt;
* Pre-Install, scripts before package installation&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; install pre&lt;br /&gt;
        # &amp;lt;&amp;lt; install pre&lt;br /&gt;
&lt;br /&gt;
* Post-Install, scripts after package installation&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; install post&lt;br /&gt;
        # &amp;lt;&amp;lt; install post&lt;br /&gt;
&lt;br /&gt;
* Files, files list in packaged rpm&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; files [sub-package]&lt;br /&gt;
        # &amp;lt;&amp;lt; files [sub-package]&lt;br /&gt;
NOTE**: &amp;quot;sub-packge&amp;quot; stands for the name of sub-package, and it is optional. If no sub-package name specified, it means the files of **main** package.&lt;br /&gt;
NOTE**: If the file list is simple enough, you can use YAML *Files* keyword instead to record it.&lt;br /&gt;
&lt;br /&gt;
* Scriptlets for %check section&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; check&lt;br /&gt;
        # &amp;lt;&amp;lt; check&lt;br /&gt;
NOTE**: Only if YAML boolean *Check* is specifed as ``yes``, %check with placeholder lines will be generated in .spec.&lt;br /&gt;
&lt;br /&gt;
* Scriptlets for %pre section&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; pre&lt;br /&gt;
        # &amp;lt;&amp;lt; pre&lt;br /&gt;
NOTE**: The placeholder lines will NOT generated in spec by default. If you need customized %pre scripts, it need be added manually, and only once.&lt;br /&gt;
&lt;br /&gt;
* Scriptlets for %preun section&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; preun&lt;br /&gt;
        # &amp;lt;&amp;lt; preun&lt;br /&gt;
NOTE**: The placeholder lines will NOT generated in spec by default. If you need customized %preun scripts, it need be added manually, and only once.&lt;br /&gt;
&lt;br /&gt;
* Scriptlets for %post section&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; post&lt;br /&gt;
        # &amp;lt;&amp;lt; post&lt;br /&gt;
NOTE**: The placeholder lines will NOT generated in spec by default. If you need customized %post scripts, it need be added manually, and only once.&lt;br /&gt;
&lt;br /&gt;
* Scriptlets for %postun section&lt;br /&gt;
&lt;br /&gt;
    With placeholder:&lt;br /&gt;
        # &amp;gt;&amp;gt; postun&lt;br /&gt;
        # &amp;lt;&amp;lt; postun&lt;br /&gt;
NOTE**: The placeholder lines will NOT generated in spec by default. If you need customized %postun scripts, it need be added manually, and only once.&lt;br /&gt;
&lt;br /&gt;
== Internal Implementation ==&lt;br /&gt;
Spectacle uses cheetah templates to generate the spec file, based the metadata&lt;br /&gt;
from YAML file. But the end users need not tackle it.&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
To upgrade the pkg to a newer version, you can just edit the&lt;br /&gt;
version string in spectacle YAML file, and when you run ``specify``, it&lt;br /&gt;
will download the needed files for you automatically.&lt;br /&gt;
&lt;br /&gt;
For packages with locale data, *LocaleName* is needed. If package&lt;br /&gt;
maintainers cannot confirm whether there are locale files, they can just&lt;br /&gt;
do not use *LocaleName* at first, and whenever &amp;quot;unpackaged files&amp;quot; rpm&lt;br /&gt;
packaging errors encountered, it means *LocaleName* should be added. And&lt;br /&gt;
please do not use it for packages without locale data to keep them clean,&lt;br /&gt;
though it will not block the building and packaging.&lt;br /&gt;
&lt;br /&gt;
When using spec2spectacle/ini2spectacle to generate spectacle, the following problems should be checked:&lt;br /&gt;
* Remove duplicate Requires(include pre/post/preun/postun) which were added automatically based on the analysis of file list.&lt;br /&gt;
* Review and clean up the reserved scripts in &amp;quot;build|install pre|post&amp;quot; sections in new generated spec file.&lt;br /&gt;
&lt;br /&gt;
User can use &amp;quot;series.conf&amp;quot; file to specify multiple patches under package directory. The &amp;quot;series.conf&amp;quot; can be used by ``quilt`` and the content can be updated to spec automatically when running ``specify``.&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Meego_handset_on_netbook</id>
		<title>Meego handset on netbook</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Meego_handset_on_netbook"/>
				<updated>2011-03-17T02:30:25Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: Add link to actual information. :-)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See [[MeeGo_Desktop/Changing_Desktops]]&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/MeeGo_Conference_Spring_2011/Session_ideas</id>
		<title>MeeGo Conference Spring 2011/Session ideas</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/MeeGo_Conference_Spring_2011/Session_ideas"/>
				<updated>2011-03-10T00:40:43Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: Add session ideas concerning MeeGo Compliance&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= We need your ideas! =&lt;br /&gt;
&lt;br /&gt;
What would '''you''' like to see at the conference?  What is something that you would be interested in attending?  Please add your idea to this list.  You don't need to be a technical expert or anything.  The experts will come to this page looking for ideas.&lt;br /&gt;
&lt;br /&gt;
To edit this page, you need to log in (or register) using the link at the top of the page.  After you are logged in, an &amp;quot;edit&amp;quot; button will appear.&lt;br /&gt;
&lt;br /&gt;
= Ideas for sessions =&lt;br /&gt;
&lt;br /&gt;
* ARM discussion forum&lt;br /&gt;
* Writing and Packaging apps for MeeGo Compliance&lt;br /&gt;
* Verifying MeeGo Compliance for Applications&lt;br /&gt;
* Verifying MeeGo Compliance for Distributions/Systems/Devices&lt;br /&gt;
&lt;br /&gt;
* '''''Add your idea here'''''&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/MeeGo_Conference_Spring_2011/Session_ideas</id>
		<title>MeeGo Conference Spring 2011/Session ideas</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/MeeGo_Conference_Spring_2011/Session_ideas"/>
				<updated>2011-03-08T18:09:18Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: Add an intro inviting people to add ideas&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= We need your ideas! =&lt;br /&gt;
&lt;br /&gt;
What would '''you''' like to see at the conference?  What is something that you would be interested in attending?  Please add your idea to this list.  You don't need to be a technical expert or anything.  The experts will come to this page looking for ideas.&lt;br /&gt;
&lt;br /&gt;
To edit this page, you need to log in (or register) using the link at the top of the page.  After you are logged in, an &amp;quot;edit&amp;quot; button will appear.&lt;br /&gt;
&lt;br /&gt;
= Ideas for sessions =&lt;br /&gt;
&lt;br /&gt;
* ARM discussion forum&lt;br /&gt;
&lt;br /&gt;
* '''''Add your idea here'''''&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Build_Infrastructure/Community_Builder/ITP</id>
		<title>Build Infrastructure/Community Builder/ITP</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Build_Infrastructure/Community_Builder/ITP"/>
				<updated>2011-03-05T18:00:28Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: Add QJackCtl&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Outline ==&lt;br /&gt;
&lt;br /&gt;
Listed on this page are packages and applications started/completed within the community.&lt;br /&gt;
If you have a package you are trying to port, please add it here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For general requests for new packages, please see the thread here:&lt;br /&gt;
http://forum.meego.com/showthread.php?t=2020&lt;br /&gt;
&lt;br /&gt;
== Package list ==&lt;br /&gt;
&lt;br /&gt;
Please keep in alphabetical order&lt;br /&gt;
&lt;br /&gt;
Package Name&lt;br /&gt;
&lt;br /&gt;
= A =&lt;br /&gt;
* aiccu - [http://repo.pub.meego.com/home:/earthling/meego_1.1_extras/ earthling:home] (done)&lt;br /&gt;
&lt;br /&gt;
= B =&lt;br /&gt;
&lt;br /&gt;
= C =&lt;br /&gt;
&lt;br /&gt;
= D =&lt;br /&gt;
&lt;br /&gt;
= E =&lt;br /&gt;
* Enna - [http://repo.pub.meego.com/home:/arfoll:/enna/meego_1.1_core/ arfoll:home] (done)&lt;br /&gt;
* eboard&lt;br /&gt;
&lt;br /&gt;
= F =&lt;br /&gt;
* fceux : [http://repo.pub.meego.com/home:/timoph/meego_1.1_extras_Netbook/ timoph:home] (done)&lt;br /&gt;
* ffmpeg : [http://repo.pub.meego.com/home:/arfoll:/enna/meego_1.1_core/ arfoll:home] (done)&lt;br /&gt;
&lt;br /&gt;
= G =&lt;br /&gt;
&lt;br /&gt;
= H =&lt;br /&gt;
&lt;br /&gt;
= I =&lt;br /&gt;
&lt;br /&gt;
= J =&lt;br /&gt;
&lt;br /&gt;
* JACK Audio Connection Kit (http://jackaudio.org) - a system for handling real-time, low latency audio (and MIDI).  Recommend using Jack2 with dbus-only support because it integrates well with pulseaudio.  Setting up JACK isn't exactly straightforward, so please ping gabrbedd@gmail.com .&lt;br /&gt;
&lt;br /&gt;
= K =&lt;br /&gt;
&lt;br /&gt;
= L =&lt;br /&gt;
&lt;br /&gt;
* libgda4 [http://repo.pub.meego.com/home:/piotras/meego_1.1_extras_Netbook/ piotras:home] (done)&lt;br /&gt;
* liblo (http://liblo.sourceforge.net/) - Lightweight implementation of Open Sound Control protocol.&lt;br /&gt;
* libqscintilla [http://repo.pub.meego.com/home:/earthling/meego_1.1_extras/ earthling:home] (done - no Qt3, no Python)&lt;br /&gt;
* Liqbook : Sketch Font and Smile proposal.  A digital love affair with the written word.&lt;br /&gt;
** on maemo servers http://maemo.org/packages/view/liqbook/&lt;br /&gt;
** tested on ideapad running handset and netbook UX.&lt;br /&gt;
** Screenshot: http://liqbase.net/liq.20110208_002.liqbook.on.meego.ideapad.jpg&lt;br /&gt;
&lt;br /&gt;
= M =&lt;br /&gt;
&lt;br /&gt;
* midgard2-core : [http://repo.pub.meego.com//home:/piotras:/midgard2/meego_1.1_extras/ piotras:home:midgard2](done)&lt;br /&gt;
* mercurial : [http://repo.pub.meego.com/home:/arfoll:/utils/meego_1.1_core/ arfoll:home] (done)&lt;br /&gt;
&lt;br /&gt;
= N =&lt;br /&gt;
&lt;br /&gt;
= O =&lt;br /&gt;
&lt;br /&gt;
= P =&lt;br /&gt;
&lt;br /&gt;
* PHP5&lt;br /&gt;
* python-midgard2 : [http://repo.pub.meego.com//home:/piotras:/midgard2/meego_1.1_extras/ piotras:home:midgard2](done)&lt;br /&gt;
* Puzzle-master : Maemo game created in community by Venemo&lt;br /&gt;
** on maemo servers http://repository.maemo.org/extras-devel/pool/fremantle/free/source/p/puzzle-master/puzzle-master_1.0.0.tar.gz  &lt;br /&gt;
** quickly tested on ideapad and nice touch interactive game :)&lt;br /&gt;
** now with git repo too http://gitorious.org/colorful-apps/puzzle-master&lt;br /&gt;
&lt;br /&gt;
= Q =&lt;br /&gt;
&lt;br /&gt;
* QJackCtl (http://qjackctl.sourceforge.net/) - a GUI front-end for the JACK Audio Connection Kit.  Depends on the ITP for JACK (above).&lt;br /&gt;
&lt;br /&gt;
= R =&lt;br /&gt;
&lt;br /&gt;
= S =&lt;br /&gt;
&lt;br /&gt;
* Scummvm : [http://repo.pub.meego.com/home:/timoph/meego_1.1_extras_Netbook/ timoph:home] (done)&lt;br /&gt;
* scummvm-tools : [http://repo.pub.meego.com/home:/timoph/meego_1.1_extras_Netbook/ timoph:home] (done)&lt;br /&gt;
&lt;br /&gt;
= T =&lt;br /&gt;
* tint2 - package was previosuly blocked by imlib2 not building on maemo OBS. Now it builds i'll do this :-)&lt;br /&gt;
* Tomboy&lt;br /&gt;
&lt;br /&gt;
= U =&lt;br /&gt;
&lt;br /&gt;
= V =&lt;br /&gt;
&lt;br /&gt;
= W =&lt;br /&gt;
&lt;br /&gt;
= X =&lt;br /&gt;
&lt;br /&gt;
* x11vnc : [http://repo.pub.meego.com/home:/timoph/meego_1.1_extras_Netbook/ timoph:home] (done)&lt;br /&gt;
* xchat : [http://repo.pub.meego.com/home:/timoph/meego_1.1_extras_Netbook/ timoph:home] (done)&lt;br /&gt;
* xournal : [http://repo.pub.meego.com/home:/timoph/meego_1.1_extras_Netbook/ timoph:home] (done)&lt;br /&gt;
&lt;br /&gt;
= Y =&lt;br /&gt;
&lt;br /&gt;
= Z =&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Build_Infrastructure/Community_Builder/ITP</id>
		<title>Build Infrastructure/Community Builder/ITP</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Build_Infrastructure/Community_Builder/ITP"/>
				<updated>2011-03-05T17:58:51Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: add JACK audio connection kit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Outline ==&lt;br /&gt;
&lt;br /&gt;
Listed on this page are packages and applications started/completed within the community.&lt;br /&gt;
If you have a package you are trying to port, please add it here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For general requests for new packages, please see the thread here:&lt;br /&gt;
http://forum.meego.com/showthread.php?t=2020&lt;br /&gt;
&lt;br /&gt;
== Package list ==&lt;br /&gt;
&lt;br /&gt;
Please keep in alphabetical order&lt;br /&gt;
&lt;br /&gt;
Package Name&lt;br /&gt;
&lt;br /&gt;
= A =&lt;br /&gt;
* aiccu - [http://repo.pub.meego.com/home:/earthling/meego_1.1_extras/ earthling:home] (done)&lt;br /&gt;
&lt;br /&gt;
= B =&lt;br /&gt;
&lt;br /&gt;
= C =&lt;br /&gt;
&lt;br /&gt;
= D =&lt;br /&gt;
&lt;br /&gt;
= E =&lt;br /&gt;
* Enna - [http://repo.pub.meego.com/home:/arfoll:/enna/meego_1.1_core/ arfoll:home] (done)&lt;br /&gt;
* eboard&lt;br /&gt;
&lt;br /&gt;
= F =&lt;br /&gt;
* fceux : [http://repo.pub.meego.com/home:/timoph/meego_1.1_extras_Netbook/ timoph:home] (done)&lt;br /&gt;
* ffmpeg : [http://repo.pub.meego.com/home:/arfoll:/enna/meego_1.1_core/ arfoll:home] (done)&lt;br /&gt;
&lt;br /&gt;
= G =&lt;br /&gt;
&lt;br /&gt;
= H =&lt;br /&gt;
&lt;br /&gt;
= I =&lt;br /&gt;
&lt;br /&gt;
= J =&lt;br /&gt;
&lt;br /&gt;
* JACK Audio Connection Kit (http://jackaudio.org) - a system for handling real-time, low latency audio (and MIDI).  Recommend using Jack2 with dbus-only support because it integrates well with pulseaudio.  Setting up JACK isn't exactly straightforward, so please ping gabrbedd@gmail.com .&lt;br /&gt;
&lt;br /&gt;
= K =&lt;br /&gt;
&lt;br /&gt;
= L =&lt;br /&gt;
&lt;br /&gt;
* libgda4 [http://repo.pub.meego.com/home:/piotras/meego_1.1_extras_Netbook/ piotras:home] (done)&lt;br /&gt;
* liblo (http://liblo.sourceforge.net/) - Lightweight implementation of Open Sound Control protocol.&lt;br /&gt;
* libqscintilla [http://repo.pub.meego.com/home:/earthling/meego_1.1_extras/ earthling:home] (done - no Qt3, no Python)&lt;br /&gt;
* Liqbook : Sketch Font and Smile proposal.  A digital love affair with the written word.&lt;br /&gt;
** on maemo servers http://maemo.org/packages/view/liqbook/&lt;br /&gt;
** tested on ideapad running handset and netbook UX.&lt;br /&gt;
** Screenshot: http://liqbase.net/liq.20110208_002.liqbook.on.meego.ideapad.jpg&lt;br /&gt;
&lt;br /&gt;
= M =&lt;br /&gt;
&lt;br /&gt;
* midgard2-core : [http://repo.pub.meego.com//home:/piotras:/midgard2/meego_1.1_extras/ piotras:home:midgard2](done)&lt;br /&gt;
* mercurial : [http://repo.pub.meego.com/home:/arfoll:/utils/meego_1.1_core/ arfoll:home] (done)&lt;br /&gt;
&lt;br /&gt;
= N =&lt;br /&gt;
&lt;br /&gt;
= O =&lt;br /&gt;
&lt;br /&gt;
= P =&lt;br /&gt;
&lt;br /&gt;
* PHP5&lt;br /&gt;
* python-midgard2 : [http://repo.pub.meego.com//home:/piotras:/midgard2/meego_1.1_extras/ piotras:home:midgard2](done)&lt;br /&gt;
* Puzzle-master : Maemo game created in community by Venemo&lt;br /&gt;
** on maemo servers http://repository.maemo.org/extras-devel/pool/fremantle/free/source/p/puzzle-master/puzzle-master_1.0.0.tar.gz  &lt;br /&gt;
** quickly tested on ideapad and nice touch interactive game :)&lt;br /&gt;
** now with git repo too http://gitorious.org/colorful-apps/puzzle-master&lt;br /&gt;
&lt;br /&gt;
= Q =&lt;br /&gt;
&lt;br /&gt;
= R =&lt;br /&gt;
&lt;br /&gt;
= S =&lt;br /&gt;
&lt;br /&gt;
* Scummvm : [http://repo.pub.meego.com/home:/timoph/meego_1.1_extras_Netbook/ timoph:home] (done)&lt;br /&gt;
* scummvm-tools : [http://repo.pub.meego.com/home:/timoph/meego_1.1_extras_Netbook/ timoph:home] (done)&lt;br /&gt;
&lt;br /&gt;
= T =&lt;br /&gt;
* tint2 - package was previosuly blocked by imlib2 not building on maemo OBS. Now it builds i'll do this :-)&lt;br /&gt;
* Tomboy&lt;br /&gt;
&lt;br /&gt;
= U =&lt;br /&gt;
&lt;br /&gt;
= V =&lt;br /&gt;
&lt;br /&gt;
= W =&lt;br /&gt;
&lt;br /&gt;
= X =&lt;br /&gt;
&lt;br /&gt;
* x11vnc : [http://repo.pub.meego.com/home:/timoph/meego_1.1_extras_Netbook/ timoph:home] (done)&lt;br /&gt;
* xchat : [http://repo.pub.meego.com/home:/timoph/meego_1.1_extras_Netbook/ timoph:home] (done)&lt;br /&gt;
* xournal : [http://repo.pub.meego.com/home:/timoph/meego_1.1_extras_Netbook/ timoph:home] (done)&lt;br /&gt;
&lt;br /&gt;
= Y =&lt;br /&gt;
&lt;br /&gt;
= Z =&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Build_Infrastructure/Community_Builder/ITP</id>
		<title>Build Infrastructure/Community Builder/ITP</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Build_Infrastructure/Community_Builder/ITP"/>
				<updated>2011-03-05T17:55:32Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: add ITP for liblo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Outline ==&lt;br /&gt;
&lt;br /&gt;
Listed on this page are packages and applications started/completed within the community.&lt;br /&gt;
If you have a package you are trying to port, please add it here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For general requests for new packages, please see the thread here:&lt;br /&gt;
http://forum.meego.com/showthread.php?t=2020&lt;br /&gt;
&lt;br /&gt;
== Package list ==&lt;br /&gt;
&lt;br /&gt;
Please keep in alphabetical order&lt;br /&gt;
&lt;br /&gt;
Package Name&lt;br /&gt;
&lt;br /&gt;
= A =&lt;br /&gt;
* aiccu - [http://repo.pub.meego.com/home:/earthling/meego_1.1_extras/ earthling:home] (done)&lt;br /&gt;
&lt;br /&gt;
= B =&lt;br /&gt;
&lt;br /&gt;
= C =&lt;br /&gt;
&lt;br /&gt;
= D =&lt;br /&gt;
&lt;br /&gt;
= E =&lt;br /&gt;
* Enna - [http://repo.pub.meego.com/home:/arfoll:/enna/meego_1.1_core/ arfoll:home] (done)&lt;br /&gt;
* eboard&lt;br /&gt;
&lt;br /&gt;
= F =&lt;br /&gt;
* fceux : [http://repo.pub.meego.com/home:/timoph/meego_1.1_extras_Netbook/ timoph:home] (done)&lt;br /&gt;
* ffmpeg : [http://repo.pub.meego.com/home:/arfoll:/enna/meego_1.1_core/ arfoll:home] (done)&lt;br /&gt;
&lt;br /&gt;
= G =&lt;br /&gt;
&lt;br /&gt;
= H =&lt;br /&gt;
&lt;br /&gt;
= I =&lt;br /&gt;
&lt;br /&gt;
= J =&lt;br /&gt;
&lt;br /&gt;
= K =&lt;br /&gt;
&lt;br /&gt;
= L =&lt;br /&gt;
&lt;br /&gt;
* libgda4 [http://repo.pub.meego.com/home:/piotras/meego_1.1_extras_Netbook/ piotras:home] (done)&lt;br /&gt;
* liblo (http://liblo.sourceforge.net/) - Lightweight implementation of Open Sound Control protocol.&lt;br /&gt;
* libqscintilla [http://repo.pub.meego.com/home:/earthling/meego_1.1_extras/ earthling:home] (done - no Qt3, no Python)&lt;br /&gt;
* Liqbook : Sketch Font and Smile proposal.  A digital love affair with the written word.&lt;br /&gt;
** on maemo servers http://maemo.org/packages/view/liqbook/&lt;br /&gt;
** tested on ideapad running handset and netbook UX.&lt;br /&gt;
** Screenshot: http://liqbase.net/liq.20110208_002.liqbook.on.meego.ideapad.jpg&lt;br /&gt;
&lt;br /&gt;
= M =&lt;br /&gt;
&lt;br /&gt;
* midgard2-core : [http://repo.pub.meego.com//home:/piotras:/midgard2/meego_1.1_extras/ piotras:home:midgard2](done)&lt;br /&gt;
* mercurial : [http://repo.pub.meego.com/home:/arfoll:/utils/meego_1.1_core/ arfoll:home] (done)&lt;br /&gt;
&lt;br /&gt;
= N =&lt;br /&gt;
&lt;br /&gt;
= O =&lt;br /&gt;
&lt;br /&gt;
= P =&lt;br /&gt;
&lt;br /&gt;
* PHP5&lt;br /&gt;
* python-midgard2 : [http://repo.pub.meego.com//home:/piotras:/midgard2/meego_1.1_extras/ piotras:home:midgard2](done)&lt;br /&gt;
* Puzzle-master : Maemo game created in community by Venemo&lt;br /&gt;
** on maemo servers http://repository.maemo.org/extras-devel/pool/fremantle/free/source/p/puzzle-master/puzzle-master_1.0.0.tar.gz  &lt;br /&gt;
** quickly tested on ideapad and nice touch interactive game :)&lt;br /&gt;
** now with git repo too http://gitorious.org/colorful-apps/puzzle-master&lt;br /&gt;
&lt;br /&gt;
= Q =&lt;br /&gt;
&lt;br /&gt;
= R =&lt;br /&gt;
&lt;br /&gt;
= S =&lt;br /&gt;
&lt;br /&gt;
* Scummvm : [http://repo.pub.meego.com/home:/timoph/meego_1.1_extras_Netbook/ timoph:home] (done)&lt;br /&gt;
* scummvm-tools : [http://repo.pub.meego.com/home:/timoph/meego_1.1_extras_Netbook/ timoph:home] (done)&lt;br /&gt;
&lt;br /&gt;
= T =&lt;br /&gt;
* tint2 - package was previosuly blocked by imlib2 not building on maemo OBS. Now it builds i'll do this :-)&lt;br /&gt;
* Tomboy&lt;br /&gt;
&lt;br /&gt;
= U =&lt;br /&gt;
&lt;br /&gt;
= V =&lt;br /&gt;
&lt;br /&gt;
= W =&lt;br /&gt;
&lt;br /&gt;
= X =&lt;br /&gt;
&lt;br /&gt;
* x11vnc : [http://repo.pub.meego.com/home:/timoph/meego_1.1_extras_Netbook/ timoph:home] (done)&lt;br /&gt;
* xchat : [http://repo.pub.meego.com/home:/timoph/meego_1.1_extras_Netbook/ timoph:home] (done)&lt;br /&gt;
* xournal : [http://repo.pub.meego.com/home:/timoph/meego_1.1_extras_Netbook/ timoph:home] (done)&lt;br /&gt;
&lt;br /&gt;
= Y =&lt;br /&gt;
&lt;br /&gt;
= Z =&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Using_MeeGo_with_the_Windows_7_Boot_Loader</id>
		<title>Using MeeGo with the Windows 7 Boot Loader</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Using_MeeGo_with_the_Windows_7_Boot_Loader"/>
				<updated>2011-03-05T06:25:05Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: Booting MeeGo with the Windows boot loader, brought to you by two weeks of frustration&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Starting with Windows Vista, Microsoft includes a more advanced boot loader with their OS.  Getting this boot loader to work with MeeGo can be a little tricky, because the extlinux boot loader is really intended for embedded set-ups (not flexible, multi-os desktops).&lt;br /&gt;
&lt;br /&gt;
===Set up the Partitions===&lt;br /&gt;
Before you do anything, you must have your partitioning planned out in advance.  Once you start, you must not change it.  You will need:&lt;br /&gt;
&lt;br /&gt;
#A 200 MB ext3 partition (will be MeeGo's /boot)&lt;br /&gt;
#A 2GB swap partition&lt;br /&gt;
#A btrfs partition at least 10GB (will be MeeGo's /)&lt;br /&gt;
&lt;br /&gt;
Do not modify the &amp;quot;boot flag.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you need to resize an NTFS partition, or if you need to preserve a partition (or two) at the /end/ of the drive... it is strongly recommended that you do this with a Linux LiveCD (esp. an Ubuntu or Fedora install CD).  MeeGo can not resize partitions, and the graphical partition manager is unstable in this situation.&lt;br /&gt;
&lt;br /&gt;
Many OS's do not yet have support for the btrfs file system, so just select ext3.&lt;br /&gt;
&lt;br /&gt;
Write down the partitions that you created (e.g. sda5 is /boot, sda6 is /, sda7 is swap).&lt;br /&gt;
&lt;br /&gt;
===Save the Windows MBR===&lt;br /&gt;
&lt;br /&gt;
After you have partitioned, you must save the windows MBR (with partition table).  This can be done from any Linux Live CD (even MeeGo):&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/sda of=/tmp/windows_mbr.bin bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Save this on an external drive.&lt;br /&gt;
&lt;br /&gt;
===Install MeeGo===&lt;br /&gt;
&lt;br /&gt;
Install MeeGo.  At the disk partitioning step, select &amp;quot;Custom Layout.&amp;quot;  Configure the devices as shown above.  Be sure that you instruct MeeGo to (re)-format each of these partitions.  Make sure that MeeGo's / is using a btrfs file system.&lt;br /&gt;
&lt;br /&gt;
===Grab the MeeGo MBR and Restore the Windows MBR===&lt;br /&gt;
&lt;br /&gt;
After MeeGo is installed, do /not/ reboot.  Shut down and boot into a live OS so that you can grab MeeGo's MBR.&lt;br /&gt;
&lt;br /&gt;
 dd if=/dev/sda of=/tmp/meego_mbr.bin bs=512 count=1&lt;br /&gt;
&lt;br /&gt;
Also save this on an external drive.&lt;br /&gt;
&lt;br /&gt;
Now, restore the windows MBR:&lt;br /&gt;
&lt;br /&gt;
 dd if=/path/to/windows_mbr.bin of=/dev/sda&lt;br /&gt;
&lt;br /&gt;
When you reboot, it will take you to windows.  Windows may offer to boot in &amp;quot;safe mode,&amp;quot; but choose to start windows normally.&lt;br /&gt;
&lt;br /&gt;
===Add MeeGo to the Windows Boot Loader===&lt;br /&gt;
Boot into windows.  Open up a Command Prompt as the administrator.  Copy meego_mbr.bin to C:\.  Fire off BCDEdit commands until you have this setup:&lt;br /&gt;
&lt;br /&gt;
 Real-mode Boot Sector&lt;br /&gt;
 ---------------------&lt;br /&gt;
 identifier              {f4019350-9104-11df-9aaf-fcea12ecf137}&lt;br /&gt;
 device                  partition=C:&lt;br /&gt;
 path                    \meego_mbr.bin&lt;br /&gt;
 description             Transmission 5 (MeeGo)&lt;br /&gt;
&lt;br /&gt;
Note that the GUID (&amp;quot;{f4019...137}&amp;quot;) will be different.  See [http://www.justlinux.com/forum/archive/index.php/t-150601.html this article] for a step-by-step on entering the BCDEdit commands.  Note that step 2 in that document should probably end with &amp;quot;device partition=C:&amp;quot; instead of &amp;quot;device boot&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
On your next reboot, Windows will let you select which OS to run... and both should load fine.&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Installation_of_MeeGo_on_notebook</id>
		<title>Installation of MeeGo on notebook</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Installation_of_MeeGo_on_notebook"/>
				<updated>2011-03-05T05:50:58Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: Add link to instructions on Win7 boot loader&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists down installation steps followed for Toshiba Satellite U305-S5077, Dell Latitude E6400, Wipro WNB7PBC4830R. The systems had Ubuntu 10.04 and Windows installed prior to MeeGo installation (MeeGo was installed as 3rd OS)&lt;br /&gt;
&lt;br /&gt;
General MeeGo installation steps can be found in http://meego.com/downloads/releases/1.1/meego-v1.1-netbooks. This page focusses on some troubleshooting steps for installing MeeGo on laptops and assumes that the reader is familiar with general MeeGo installation steps illustrated in http://meego.com/downloads/releases/1.1/meego-v1.1-netbooks.&lt;br /&gt;
&lt;br /&gt;
===Creating the installation medium===&lt;br /&gt;
#Download the live image from http://meego.com/downloads/releases/netbook or http://repo.meego.com. It could be a stable release or a development release.&lt;br /&gt;
#If burning to a USB stick, byte copy the image to the USB stick. Linux users, you can use 'dd' for this. Windows users, download and use Win32DiskImager program for this.&lt;br /&gt;
#Some laptops do not recognize this image burned on a USB stick as a USB drive during boot. The reason is that some BIOSes have a size above which a USB disk is not recognized as a USB disk. Usually it is 500MB, but in some cases it is higher. One specific case is the Wipro BC4830R model laptop with Intel i3 processor. In this case, the laptop recognizes the disk as a floppy disk and cannot boot using the USB disk.&lt;br /&gt;
#To overcome the issue in step 3, write the downloaded image to a DVD. Linux users can use Brasero to burn the image to a DVD, Windows users can use ImgBurn.&lt;br /&gt;
#Some laptops do not boot well when the image is burned to a DVD-RW. They seem to have some issue booting from such a DVD. Case in point is the Wipro BC4830R model. So, to be on the safe side, write the image to a DVD-R disk.&lt;br /&gt;
#Be warned that booting and installing from DVD is much slower compared to booting and installing from USB disk.&lt;br /&gt;
&lt;br /&gt;
===Preparing your laptop for the installation===&lt;br /&gt;
If you are installing on a clean laptop which has no other OS, skip this section and proceed to the next section&lt;br /&gt;
#If you want to install MeeGo alongside Windows, follow these steps. If you already have free space of at least 4GB on your disk (not free space in a partition but free space on the disk), skip the following steps on partitioning. If you do not have free space of 4GB on the disk, use the following steps to create free space.&lt;br /&gt;
##If you do not have Windows 7 or Windows Vista installation / rescue disk, create a GParted live CD first. Download the GParted live CD image and burn to a CD. Defrag your hard disk.&lt;br /&gt;
##Boot from the GParted Live CD now and use it to resize an existing partition to gain at least 4GB free space.&lt;br /&gt;
##If you have Windows 7 or Windows Vista installation / rescue disk, boot using the installation / rescue disk, choose the rescue option and choose to enter at command prompt.&lt;br /&gt;
##At the command prompt, use the DISKPART command and resize the partition that you want to shrink and gain space from. Use the command 'shrink querymax' to see how much space you can gain.&lt;br /&gt;
##If you want 4GB space, use the command 'shrink desired=4096'&lt;br /&gt;
#If you want to install MeeGo alongside Linux (such as Ubuntu), and do not have free space, use GParted to reclaim space as outlined above in step 1. &lt;br /&gt;
&lt;br /&gt;
===Installing Meego===&lt;br /&gt;
Now that you have the required free space, let's install Meego.&lt;br /&gt;
#Insert the USB disk / DVD-R and boot the system.&lt;br /&gt;
#Follow the instructions on screen. It is better to follow defaults and create 3 partitions for /boot, / and swap as suggested by installation steps.&lt;br /&gt;
#On one laptop, in which root file system which was formatted as btrfs failed after some days. It was reinstalled with root file system as ext3.&lt;br /&gt;
#At the end of installation, Meego will ask which OS you want as default if another OS is installed. Any choice you make here is immaterial as you will have to manually edit the boot configuration file to get the correct choice.&lt;br /&gt;
#Reboot the system. If MeeGo is your only OS, proceed to the next section. If you have another OS and want to dual boot properly, see the following steps.&lt;br /&gt;
#You will notice that even if you chose another system as the default, Meego boots automatically without showing any choice.&lt;br /&gt;
#Boot into Meego. Launch the 'terminal' application and execute the following commands:&lt;br /&gt;
##sudo su&lt;br /&gt;
##Enter password when prompted&lt;br /&gt;
##gedit /boot/extlinux/extlinux.conf&amp;amp;&lt;br /&gt;
#In this file, make the following modifications:&lt;br /&gt;
##The line where it says timeout, change the timeout value to 100. This gives you 10 seconds to choose an OS.&lt;br /&gt;
##The line where it says ontimeout meego, change it to ontimeout &amp;lt;labelname of other os&amp;gt; if you want to boot other OS on timeout&lt;br /&gt;
##Under the section 'label meego', remove the line 'menu default' and add 'menu default' to other OS entry if you want other OS to be highlighted by default&lt;br /&gt;
#That is it, save the file and reboot. You should see boot options correctly now.&lt;br /&gt;
#Boot into Meego and other OS to make sure that you are able to dual boot fine.&lt;br /&gt;
#In some cases where Windows is the other OS, if you choose to boot Windows, you will get a message that bootloader cannot be found. It could just be that Windows is on another volume and not the volume that Meego thought it was. Under the section for Windows in extlinux.conf, you will find a line 'append boot 1'. Try and change that to 2 or 3 and see if Windows boots. This happened with a Toshiba Satellite and setting it to 2 worked.&lt;br /&gt;
&lt;br /&gt;
===Using another bootloader===&lt;br /&gt;
#If you have already installed Ubuntu on your system or another Linux OS and want to use the bootloader of that OS, the bad news is that Meego will overwrite it. The good news is that you can fix this.&lt;br /&gt;
#If you have Ubuntu already installed, chances are that you are using GRUB or GRUB2. Use the Ubuntu installation CD (desktop or alternate) to boot, choose to rescue a broken system.&lt;br /&gt;
#You will get an option to reinstall GRUB / GRUB2. Choose this option and GRUB will be reinstalled and it will also add an entry for Meego. This entry though will show up as 'Unknown Linux'.&lt;br /&gt;
#If you were already booting Windows along with Ubuntu using GRUB, reinstalling GRUB will give you the option to boot Windows, Ubuntu and Meego. This has been tried and tested successfully on Wipro BC4830R laptop.&lt;br /&gt;
#If you wish to use the boot loader that comes with Windows Vista and Windows 7 (and later), please see [[Using MeeGo with the Windows 7 Boot Loader]].&lt;br /&gt;
&lt;br /&gt;
===Wireless Drivers===&lt;br /&gt;
#Some laptops come with Broadcom wireless cards (Dell Latitude E6400) and some come with RealTek RTL 8192 (8191SE) wireless cards. These wireless cards do not work out of the box. You will need to use wired connection till you can get your wireless working. Follow these instructions to get your wireless working.&lt;br /&gt;
#For Broadcom cards, use Slaine's instructions from the site: http://slaine.org/_slaine/Meego_1.0_Wifi.html&lt;br /&gt;
#For RealTek RTL 8192 (8191SE) cards, follow these instructions.&lt;br /&gt;
##Download the driver source code from RealTek's site: http://www.realtek.com.tw/downloads/downloadsView.aspx?id=1&amp;amp;PNid=21&amp;amp;PFid=48&amp;amp;Level=5&amp;amp;Conn=4&amp;amp;ProdID=226&amp;amp;DownTypeID=3&amp;amp;GetDown=false&amp;amp;Downloads=true&lt;br /&gt;
##If that link does not work, go to www.realtek.co.tw, choose the product 'Communication Network ICs', choose the sub product Wireless LAN IC, WLAN NIC, IEEE802.11 b/g/n single chip. Go to the download section and download the relevant source for your card.&lt;br /&gt;
##To determine your card, run the command 'lspci' in the console.&lt;br /&gt;
##Once the source is downloaded, unpack the contents to a folder.&lt;br /&gt;
##Download and install gcc, make and kernel-netbook-devel from software catalogs. You may have to enable the source catalogs to install kernel-netbook-devel.&lt;br /&gt;
##Open terminal and execute the following commands:&lt;br /&gt;
##*sudo su (enter password when prompted)&lt;br /&gt;
##*cd /[path to folder where realtek source was unpacked]&lt;br /&gt;
##*make&lt;br /&gt;
##*make install&lt;br /&gt;
##*Reboot your machine and wireless should be working&lt;br /&gt;
&lt;br /&gt;
===Other information===&lt;br /&gt;
On all the laptops (Wipro BC4830R, Dell E6400 Latitude, Toshiba Satellite U305-S5077), devices such as integrated webcam, bluetooth, mike etc worked out of the box. On the Wipro laptop, the wireless key (Fn+F10) had no effect on wireless state (it was always on) though the keys for camera, Bluetooth worked&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Tips_on_compiling_and_packaging_kernels_in_MeeGo</id>
		<title>Tips on compiling and packaging kernels in MeeGo</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Tips_on_compiling_and_packaging_kernels_in_MeeGo"/>
				<updated>2011-02-17T05:29:27Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: Create page with info that was first posted to ML&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&lt;br /&gt;
This page contains instructions and tips for those who want to compile their own kernel.  This includes obtaining sources, unpacking, patching, configuring, compiling, installing, and packaging a kernel.  To this end, there are two main work-flows:&lt;br /&gt;
&lt;br /&gt;
# For those debugging, writing drivers, or experimenting&lt;br /&gt;
# For those packaging kernels to be included in a MeeGo distribution&lt;br /&gt;
&lt;br /&gt;
These work-flows tend to be completely different... but both are covered in this document.  A few other typical cases (debug symbols, out-of-tree modules) are also covered.&lt;br /&gt;
&lt;br /&gt;
Note that all the examples here will use the (now obsolete)  `kernel-netbook` package as an example.  Please substitute the name of the kernel package you're working with.  To figure out which one you're currently running, this command will tell you:&lt;br /&gt;
&lt;br /&gt;
 $ rpm -qf /boot/vmlinuz-$(uname -r)&lt;br /&gt;
&lt;br /&gt;
== Installing debug symbols ==&lt;br /&gt;
&lt;br /&gt;
If you simply want debugging symbols, you need only install the `debuginfo` package.  You will typically have to enable the `debug` repository, first.  For example:&lt;br /&gt;
&lt;br /&gt;
 $ sudo zypper mr --enable core-debuginfo&lt;br /&gt;
 $ sudo zypper install kernel-netbook-debuginfo&lt;br /&gt;
&lt;br /&gt;
That's it.&lt;br /&gt;
&lt;br /&gt;
== Installing headers for building an out-of-tree module ==&lt;br /&gt;
&lt;br /&gt;
If you have an out-of-tree kernel module that you need to build, you need to install the `devel` package for that kernel, as well as any compiler tools:&lt;br /&gt;
&lt;br /&gt;
 $ sudo zypper install rpmdevtools pattern:development-tools&lt;br /&gt;
 $ sudo zypper install kernel-netbook-devel&lt;br /&gt;
&lt;br /&gt;
This installs the kernel headers that you need in order to build your module.  Now refer to the instructions that came with the module.&lt;br /&gt;
&lt;br /&gt;
== Locally Compiling a Kernel (not packaging) ==&lt;br /&gt;
&lt;br /&gt;
These instructions are for those who simply wish to compile a kernel and install it (without concern for package management, MeeGo compliance, etc.).  These instructions aren't particular to MeeGo, except for obtaining the sources.&lt;br /&gt;
&lt;br /&gt;
First, make sure that you have the source repositories enabled.&lt;br /&gt;
&lt;br /&gt;
 $ sudo zypper mr --enable core-source&lt;br /&gt;
&lt;br /&gt;
Next, grab the source RPM from the repository.  We're also installing the `quilt` utility.  Note that this shows the `kernel-netbook` package.  You will need to substitute the name of the kernel you wish to use as a starting point.&lt;br /&gt;
&lt;br /&gt;
 $ sudo zypper install quilt&lt;br /&gt;
 $ sudo zypper si kernel-netbook&lt;br /&gt;
&lt;br /&gt;
Now create a `sandbox` folder for unpacking the source RPM.&lt;br /&gt;
&lt;br /&gt;
 $ mkdir sandbox/&lt;br /&gt;
 $ cd sandbox/&lt;br /&gt;
 $ rpm2cpio ~/rpmbuild/SRPMS/kernel-netbook-2.6.35.3-12.1.src.rpm | cpio -id --no-absolute-filenames&lt;br /&gt;
&lt;br /&gt;
Inside this folder, you now have all the sources that were used to compile the kernel.  This includes the original tarball released at kernel.org, all patches, rpm spec files, etc.  Unpacking the kernel is done like this:&lt;br /&gt;
&lt;br /&gt;
 $ tar xjf linux-2.6.35.tar.bz2&lt;br /&gt;
&lt;br /&gt;
To patch the kernel, note that there is a file called `series` in the current directory.  This can be used by a program called `quilt` to patch (and un-patch) a series of patches to a source tree.  To use it, you need to set the environment variable &amp;quot;QUILT_PATCHES&amp;quot; to point to the location of the `series` file.&lt;br /&gt;
&lt;br /&gt;
 $ cd ../linux-2.6.35&lt;br /&gt;
 $ export QUILT_PATCHES=..&lt;br /&gt;
 $ quilt push -a&lt;br /&gt;
&lt;br /&gt;
Now, compile and configure the kernel like normal (in this case, copying the config from the current kernel):&lt;br /&gt;
&lt;br /&gt;
 $ cp /boot/config-2.6.35.3-12.1-netbook .config&lt;br /&gt;
 $ make menuconfig&lt;br /&gt;
 $ make -j3&lt;br /&gt;
 $ sudo make modules_install &amp;amp;&amp;amp; sudo make install&lt;br /&gt;
&lt;br /&gt;
Note that `make install` understands how to manipulate the extlinux boot loader, so there's no extra steps to configure the boot loader.&lt;br /&gt;
&lt;br /&gt;
Now reboot to try the new kernel:&lt;br /&gt;
&lt;br /&gt;
 $ sudo shutdown -r now&lt;br /&gt;
&lt;br /&gt;
If you wish to work on your own kernel patch set, you will probably want to learn to use git or quilt for this sort of work.  Both are available within MeeGo.&lt;br /&gt;
&lt;br /&gt;
== Packaging a Kernel for MeeGo ==&lt;br /&gt;
&lt;br /&gt;
The instructions above are simple and productive for development.  When you wish to package a custom version of the kernel, you must be more careful to consider [[Quality/Compliance|MeeGo Compliance]].  Also, it's best to match the current work-flow of the core kernel developer team.  Since this workflow is constantly being adjusted to the needs of that team, your best resource is:&lt;br /&gt;
&lt;br /&gt;
* The [http://meego.gitorious.org/meego-os-base/kernel-source kernel source]] repository (git)&lt;br /&gt;
* The [http://meego.gitorious.org/meego-os-base/kernel-source/blobs/devel-kernel/README.workflow README.workflow]] file in that repository&lt;br /&gt;
&lt;br /&gt;
The kernel is configured by making overrides to config-generic.  E.g. for an x86 target, config-generic is first read.  Then config-x86 is read.  Where there's a conflict with config-generic, the values in config-x86 are used.  Likewise, the rpm spec files are created as override/adaptations of the kernel.spec file.&lt;br /&gt;
&lt;br /&gt;
Adding patches requires that you add them to both `series` and your adaptation spec file (e.g. kernel-netbook.spec).  You then use rpmbuild to package the kernel as you would any other package:  copy all sources to ~/rpmbuild/SOURCES and the spec file to ~/rpmbuild/SPECS.&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/MeeGo_kernel_documentation_for_contributors</id>
		<title>MeeGo kernel documentation for contributors</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/MeeGo_kernel_documentation_for_contributors"/>
				<updated>2011-02-17T04:30:56Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: Fix capitalization in new link.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuration changes==&lt;br /&gt;
&lt;br /&gt;
If you want to suggest a kernel configuration option change for MeeGo, please send an email to the [http://lists.meego.com/listinfo/meego-kernel meego-kernel mailing list] or file a bug in [http://bugs.meego.com/ bugzilla]. Please include a description of why you want the change done (not just the &amp;quot;what&amp;quot;), why it is important for MeeGo to do this change.&lt;br /&gt;
 &lt;br /&gt;
Note that MeeGo tries to keep the kernel configurations between the different builds as consistent as possible, and because of that, you may see configuration options that are not strictly required for some platform still be enabled. We do make exceptions to the &amp;quot;as consistent as possible&amp;quot; if a general configuration option has a significant impact on size, but we'd like to know this... (think of it this way: &amp;quot;Turning this option off saves 102312 bytes of size, and phones do not use fiber channel&amp;quot; is a pretty good justification description, while &amp;quot;turn FOO off for size&amp;quot; is not).&lt;br /&gt;
 &lt;br /&gt;
==Developing drivers for MeeGo==&lt;br /&gt;
&lt;br /&gt;
The MeeGo project really wants Device drivers and other kernel code to be developed for, and integrated in, the [http://kernel.org kernel.org] kernel as maintained by Linus Torvalds. Every patch we carry has a cost for us, and we do not want to carry long term patches.&lt;br /&gt;
 &lt;br /&gt;
So if you want to develop a device driver for MeeGo, please develop your driver for, and submit your driver to, the kernel.org Linux kernel. In fact, this is a requirement for MeeGo!&lt;br /&gt;
 &lt;br /&gt;
Now, sometimes the process of integrating into the kernel.org kernel takes a bit of time (for example your code may be in a maintainer tree but not yet merged by Linus). In that case, and as long as you're committed to continue the upstream integration process, we may make and exception and integrate your code prior to Linus Torvalds doing the final merge of your code.&lt;br /&gt;
 &lt;br /&gt;
There will be a few hard cases where the upstream kernel, for principle reasons, to reject a device driver. The PowerVR graphics drivers come to mind. For those cases, for pragmatic reasons, the Meego Technical Steering Group can grant exceptions to the policy and allow such drivers into MeeGo regardless of upstream rejection. Such exception comes with a set of requirements on maintenance and responsiveness etc/etc.&lt;br /&gt;
 &lt;br /&gt;
== Requesting a patch from Linus' kernel, or a maintainer tree to be integrated into MeeGo==&lt;br /&gt;
&lt;br /&gt;
Lets say you have developed a patch, or otherwise want a patch that Linus or a maintainer already merged (or is in progress, as described above) included into MeeGo. There are two ways to request this: Email to [http://lists.meego.com/listinfo/meego-kernel meego-kernel] and [http://bugs.meego.com MeeGo Bugzilla]. For either case, we expect you to do the same diligence you do when you send a patch to the Linux Kernel Mailing List: You provide a description of the what and the why, you format the patch in the LKML form (included [http://meego.com/about/contribution-guidelines/signed-process Signed-off-by: line] etc etc).&lt;br /&gt;
 &lt;br /&gt;
Specifically for MeeGo, we also want you to tell us where the patch is in the upstream integration process. If your patch is already merged by Linus, we'd like you to give us the git commit ID (we have tools that make it easy for us to backport patches based on this commit ID). If the patch is in a maintainer tree, let us know. If your patch is in progress of being merged by the maintainer, let us know where you posted it and where the review is happening.&lt;br /&gt;
 &lt;br /&gt;
==Additional Contribution Guidelines==&lt;br /&gt;
&lt;br /&gt;
Please also read the [http://wiki.meego.com/images/Kernel_criteria.pdf kernel criteria (PDF)] document for additional requirements before submitting your contribution.&lt;br /&gt;
&lt;br /&gt;
Patches sent to the mailing lists should be broken up into several email messages of less than 100KB each.&lt;br /&gt;
&lt;br /&gt;
You should also consider the [[Release_Engineering|MeeGo release schedules]], including code freeze dates, before submitting your contributions.&lt;br /&gt;
&lt;br /&gt;
MeeGo cannot take patches that add system calls or other userspace ABI numbers/structures without having these ABIs first merged upstream. This is to avoid MeeGo becoming ABI incompatible with Linux if/when the upstream kernel assigns different numbers/structures for the ABI or assigns different users to the numbers in the patch.&lt;br /&gt;
&lt;br /&gt;
Please visit our [http://meego.com/about/contribution-guidelines general contribution guidelines] for other details and additional ways to contribute to MeeGo.&lt;br /&gt;
&lt;br /&gt;
==Tips on Compiling and Packaging Kernels==&lt;br /&gt;
&lt;br /&gt;
For tips on acquiring the kernel sources, patching, compiling, and packaging kernels (whether for MeeGo or for your own development), please see [[Tips_on_compiling_and_packaging_kernels_in_MeeGo|this article]].&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/MeeGo_kernel_documentation_for_contributors</id>
		<title>MeeGo kernel documentation for contributors</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/MeeGo_kernel_documentation_for_contributors"/>
				<updated>2011-02-17T04:29:13Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: Create link to kernel hacking tips (new page).&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Configuration changes==&lt;br /&gt;
&lt;br /&gt;
If you want to suggest a kernel configuration option change for MeeGo, please send an email to the [http://lists.meego.com/listinfo/meego-kernel meego-kernel mailing list] or file a bug in [http://bugs.meego.com/ bugzilla]. Please include a description of why you want the change done (not just the &amp;quot;what&amp;quot;), why it is important for MeeGo to do this change.&lt;br /&gt;
 &lt;br /&gt;
Note that MeeGo tries to keep the kernel configurations between the different builds as consistent as possible, and because of that, you may see configuration options that are not strictly required for some platform still be enabled. We do make exceptions to the &amp;quot;as consistent as possible&amp;quot; if a general configuration option has a significant impact on size, but we'd like to know this... (think of it this way: &amp;quot;Turning this option off saves 102312 bytes of size, and phones do not use fiber channel&amp;quot; is a pretty good justification description, while &amp;quot;turn FOO off for size&amp;quot; is not).&lt;br /&gt;
 &lt;br /&gt;
==Developing drivers for MeeGo==&lt;br /&gt;
&lt;br /&gt;
The MeeGo project really wants Device drivers and other kernel code to be developed for, and integrated in, the [http://kernel.org kernel.org] kernel as maintained by Linus Torvalds. Every patch we carry has a cost for us, and we do not want to carry long term patches.&lt;br /&gt;
 &lt;br /&gt;
So if you want to develop a device driver for MeeGo, please develop your driver for, and submit your driver to, the kernel.org Linux kernel. In fact, this is a requirement for MeeGo!&lt;br /&gt;
 &lt;br /&gt;
Now, sometimes the process of integrating into the kernel.org kernel takes a bit of time (for example your code may be in a maintainer tree but not yet merged by Linus). In that case, and as long as you're committed to continue the upstream integration process, we may make and exception and integrate your code prior to Linus Torvalds doing the final merge of your code.&lt;br /&gt;
 &lt;br /&gt;
There will be a few hard cases where the upstream kernel, for principle reasons, to reject a device driver. The PowerVR graphics drivers come to mind. For those cases, for pragmatic reasons, the Meego Technical Steering Group can grant exceptions to the policy and allow such drivers into MeeGo regardless of upstream rejection. Such exception comes with a set of requirements on maintenance and responsiveness etc/etc.&lt;br /&gt;
 &lt;br /&gt;
== Requesting a patch from Linus' kernel, or a maintainer tree to be integrated into MeeGo==&lt;br /&gt;
&lt;br /&gt;
Lets say you have developed a patch, or otherwise want a patch that Linus or a maintainer already merged (or is in progress, as described above) included into MeeGo. There are two ways to request this: Email to [http://lists.meego.com/listinfo/meego-kernel meego-kernel] and [http://bugs.meego.com MeeGo Bugzilla]. For either case, we expect you to do the same diligence you do when you send a patch to the Linux Kernel Mailing List: You provide a description of the what and the why, you format the patch in the LKML form (included [http://meego.com/about/contribution-guidelines/signed-process Signed-off-by: line] etc etc).&lt;br /&gt;
 &lt;br /&gt;
Specifically for MeeGo, we also want you to tell us where the patch is in the upstream integration process. If your patch is already merged by Linus, we'd like you to give us the git commit ID (we have tools that make it easy for us to backport patches based on this commit ID). If the patch is in a maintainer tree, let us know. If your patch is in progress of being merged by the maintainer, let us know where you posted it and where the review is happening.&lt;br /&gt;
 &lt;br /&gt;
==Additional Contribution Guidelines==&lt;br /&gt;
&lt;br /&gt;
Please also read the [http://wiki.meego.com/images/Kernel_criteria.pdf kernel criteria (PDF)] document for additional requirements before submitting your contribution.&lt;br /&gt;
&lt;br /&gt;
Patches sent to the mailing lists should be broken up into several email messages of less than 100KB each.&lt;br /&gt;
&lt;br /&gt;
You should also consider the [[Release_Engineering|MeeGo release schedules]], including code freeze dates, before submitting your contributions.&lt;br /&gt;
&lt;br /&gt;
MeeGo cannot take patches that add system calls or other userspace ABI numbers/structures without having these ABIs first merged upstream. This is to avoid MeeGo becoming ABI incompatible with Linux if/when the upstream kernel assigns different numbers/structures for the ABI or assigns different users to the numbers in the patch.&lt;br /&gt;
&lt;br /&gt;
Please visit our [http://meego.com/about/contribution-guidelines general contribution guidelines] for other details and additional ways to contribute to MeeGo.&lt;br /&gt;
&lt;br /&gt;
==Tips on Compiling and Packaging Kernels==&lt;br /&gt;
&lt;br /&gt;
For tips on acquiring the kernel sources, patching, compiling, and packaging kernels (whether for MeeGo or for your own development), please see [[tips_on_compiling_and_packaging_kernels_for_meego|this article]].&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Image_Creation</id>
		<title>Image Creation</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Image_Creation"/>
				<updated>2011-02-06T22:47:48Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: Add advanced hacking tips on meta-packages, patterns, and repository creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview = &lt;br /&gt;
&lt;br /&gt;
This is the main Image Creator developer's guide.  For a more simplistic, step-by-step document, go to: [[Image Creation For Beginners]].&lt;br /&gt;
&lt;br /&gt;
The tool used to create MeeGo images is something called &amp;quot;MIC2&amp;quot; (for distinguishing from obsolete MIC - Moblin Image Creator). MIC is composed of a series of tools to create images, convert images and do some development work on MeeGo. MIC2 is based primarily on Fedora livecd-tools and appliance-tools.&lt;br /&gt;
&lt;br /&gt;
With MIC2 tools, users can create different types of images for different purposes, including live CD images, live USB images, raw images for KVM, VMDK images for Vmware, vdi images for VirtualBox, loop images for IVI platforms, NAND images for Moorestown platforms, ubi images for N900, fs image for MeeGo developers. Also, users can use MIC2 tools to manipulate images like transforming an image from a virtual machine to a live image, and providing a chroot environment based on an existing live image. With these features, developers can do development work on a host virtual machine running MeeGo or a Meego chroot environment, and transfer the resulting new live image to a target device for final debug/verification.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This document discusses only features, usage guide, and known issues.&lt;br /&gt;
&lt;br /&gt;
= Features =&lt;br /&gt;
&lt;br /&gt;
MIC2 offers these major tools:&lt;br /&gt;
* mic-image-creator: create images. &lt;br /&gt;
* mic-image-convertor: convert a raw/vmdk/vdi/live image into a live image. &lt;br /&gt;
* mic-chroot: provide a MeeGo environment from a live/loop image for development, it also can translate that chroot file system into a live image.&lt;br /&gt;
* mic-image-writer: write a MeeGo image to a USB disk. This is a safe alternative to dd.&lt;br /&gt;
&lt;br /&gt;
The following support is provided:&lt;br /&gt;
&lt;br /&gt;
* Supports mainstream Linux distros. MIC2 has been thoroughly tested on these distributions:&lt;br /&gt;
** Meego&lt;br /&gt;
** Fedora (Fedora 10 and above)&lt;br /&gt;
** Opensuse (&amp;gt; OpenSUSE 11.1)&lt;br /&gt;
** and Ubuntu &amp;gt; 9.04&lt;br /&gt;
* Supports various types of images: livecd, liveusb, loop, raw, vmdk, nandmrst, vdi, fs, ubi&lt;br /&gt;
* Supports image coversion from virtual machine/live images to live images.&lt;br /&gt;
* Uses kickstart (.ks) files for image creation. Through this, users can specify which software repositories to use, which packages to install and basic system configuration directives.  Please refer to http://fedoraproject.org/wiki/Anaconda/Kickstart for more information about kickstart configuration files.&lt;br /&gt;
&lt;br /&gt;
= Usage =&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
To be able to use MIC2, your host machine to run mic2 must have Intel(r) Atom(tm) or Intel(r) Core(tm) 2 CPU (support for SSSE3), this is a hard requirement (ARM image is exceptional), the following packages must be available on your system. (Most of the packages are installed by default, depending on the distribution.):&lt;br /&gt;
&lt;br /&gt;
* yum&lt;br /&gt;
* rpm&lt;br /&gt;
* kpartx&lt;br /&gt;
* parted&lt;br /&gt;
* syslinux&lt;br /&gt;
* isomd5sum&lt;br /&gt;
* kvm&lt;br /&gt;
* zlib-devel(for compiling)&lt;br /&gt;
* python-devel(for installation) &lt;br /&gt;
&lt;br /&gt;
You should load these modules as well, if not loaded automatically by the kernel:&lt;br /&gt;
&amp;lt;br&amp;gt;(Use &amp;lt;code&amp;gt;lsmod&amp;lt;/code&amp;gt; to list modules.)&lt;br /&gt;
&lt;br /&gt;
* squashfs&lt;br /&gt;
* squashfs-tools&lt;br /&gt;
* dm_snapshot&lt;br /&gt;
* loop &lt;br /&gt;
&lt;br /&gt;
Specific packages for Fedora:&lt;br /&gt;
&lt;br /&gt;
* pykickstart&lt;br /&gt;
* device-mapper &lt;br /&gt;
&lt;br /&gt;
Specific packages for Ubuntu 8.10:&lt;br /&gt;
&lt;br /&gt;
* python-celementtree&lt;br /&gt;
* python-elementtree&lt;br /&gt;
* dmsetup&lt;br /&gt;
&lt;br /&gt;
=== Installing requirements for Ubuntu 10.04 ===&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install yum rpm kpartx parted syslinux isomd5sum kvm zlib1g-dev squashfs-tools python2.6-dev qemu-arm-static python-urlgrabber&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
We currently build MIC2 binary rpms/debs for many popular Linux distributions, including Fedora 11, Fedora 12, Ubuntu 9.10, Ubuntu 10.04, OpenSUSE 11.1, OpenSUSE 11.2, and Debian 5.0. Please go to http://repo.meego.com/tools/repos/ to get a repository URL corresponding to your Linux distribution, then add it into your repo or package source for installation and update later. If your distribution isn't in the support list, please install MIC2 from git source.&lt;br /&gt;
&lt;br /&gt;
=== Binary Package installation ===&lt;br /&gt;
&lt;br /&gt;
* '''Installation Steps For Fedora 11, Fedora 12 and Fedora 13'''&lt;br /&gt;
&lt;br /&gt;
1. Add MIC2 repo as user root:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cat &amp;lt;&amp;lt;REPO &amp;gt; /etc/yum.repos.d/meego-tools.repo&lt;br /&gt;
[meego-tools]&lt;br /&gt;
name=MeeGo Tools for Fedora&lt;br /&gt;
baseurl=http://repo.meego.com/MeeGo/tools/repos/fedora/\$releasever&lt;br /&gt;
enabled=1&lt;br /&gt;
gpgcheck=1&lt;br /&gt;
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-meego&lt;br /&gt;
REPO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Add gpg key as user root:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# gpg2 --keyserver subkeys.pgp.net --recv 0BC7BEC479FC1F8A&lt;br /&gt;
# gpg2 --export --armor 0BC7BEC479FC1F8A &amp;gt; /etc/pki/rpm-gpg/RPM-GPG-KEY-meego&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Install mic2 as user root:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# yum install mic2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
if you get asked to import the key do so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
warning: rpmts_HdrFromFdno: Header V3 DSA/SHA1 Signature, key ID 79fc1f8a: NOKEY&lt;br /&gt;
meego-fedora/gpgkey                                                                        | 3.3 kB     00:00 ... &lt;br /&gt;
Importing GPG key 0x79FC1F8A:&lt;br /&gt;
 Userid: &amp;quot;Moblin Build (Moblin Build User) &amp;lt;build@moblin.org&amp;gt;&amp;quot;&lt;br /&gt;
 From  : /etc/pki/rpm-gpg/RPM-GPG-KEY-meego&lt;br /&gt;
Is this ok [y/N]: y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Update Steps For Fedora 11, Fedora 12 and Fedora 13'''&lt;br /&gt;
&lt;br /&gt;
You can use the below command to get the latest mic2 package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# yum update mic2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Installation Steps For Ubuntu 9.10, Ubuntu 10.04 and Debian 5.0'''&lt;br /&gt;
&lt;br /&gt;
1. Add package source&lt;br /&gt;
&lt;br /&gt;
For Ubuntu 9.10, add the below line to /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://repo.meego.com/MeeGo/tools/repos/ubuntu/9.10/ /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For Ubuntu 10.04, add the below line to /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://repo.meego.com/MeeGo/tools/repos/ubuntu/10.04/ /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For Ubuntu 10.10, add the below line to /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://repo.meego.com/MeeGo/tools/repos/ubuntu/10.10/ /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For Debian 5.0, add the below line to /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb http://repo.meego.com/MeeGo/tools/repos/debian/5.0/ /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mic2 is also available in Debian Testing which will become Debian 6.0. &lt;br /&gt;
&lt;br /&gt;
2. sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
You should see the following error:&lt;br /&gt;
W: GPG error: http://repo.meego.com  Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 0BC7BEC479FC1F8A&lt;br /&gt;
&lt;br /&gt;
To add the repository public key use the following command:&lt;br /&gt;
:gpg --keyserver subkeys.pgp.net --recv 0BC7BEC479FC1F8A&lt;br /&gt;
:gpg --export --armor 0BC7BEC479FC1F8A | sudo apt-key add -&lt;br /&gt;
&lt;br /&gt;
Note: Often the port used by gpg is blocked in companies, so gpg will time out. You can install it manually; this example is for Ubuntu 10.04:&lt;br /&gt;
:wget http://repo.meego.com/MeeGo/tools/repos/ubuntu/10.04/Release.key&lt;br /&gt;
Open System-&amp;gt;Administrator-&amp;gt;Software Sources. Under the Authentication tab, import the key.&lt;br /&gt;
&lt;br /&gt;
Now redo sudo apt-get update&lt;br /&gt;
&lt;br /&gt;
3. sudo apt-get install mic2&lt;br /&gt;
&lt;br /&gt;
* '''Installation Steps For OpenSUSE 11.1, OpenSUSE 11.2 and OpenSUSE 11.3'''&lt;br /&gt;
&lt;br /&gt;
1. Add repos&lt;br /&gt;
&lt;br /&gt;
For OpenSUSE 11.1:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo zypper addrepo http://repo.meego.com/MeeGo/tools/repos/opensuse/11.1/ meego-tools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For OpenSUSE 11.2:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo zypper addrepo http://repo.meego.com/MeeGo/tools/repos/opensuse/11.2/ meego-tools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For OpenSUSE 11.3:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo zypper addrepo http://repo.meego.com/MeeGo/tools/repos/opensuse/11.3/ meego-tools&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. sudo zypper install mic2&lt;br /&gt;
&lt;br /&gt;
* '''Update Steps For OpenSUSE 11.1, OpenSUSE 11.2 and OpenSUSE 11.3'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo zypper update mic2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== From Stable Git Source Releases ===&lt;br /&gt;
&lt;br /&gt;
You can get the latest stable release of MIC2 from the tag section in http://meego.gitorious.org/meego-developer-tools/image-creator.  Click on the &amp;quot;Source tree&amp;quot; link on the top of the screen.  There will be a list of tags on the right hand side.&lt;br /&gt;
&lt;br /&gt;
You should follow the below steps to install it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git://gitorious.org/meego-developer-tools/image-creator.git&lt;br /&gt;
cd image-creator&lt;br /&gt;
git checkout 0.17  #check Gitorious for the most recent tag&lt;br /&gt;
make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== From Development Git Tree ===&lt;br /&gt;
&lt;br /&gt;
Note: MIC2 GIT tree has latest-and-greatest source, so stability is not guaranteed.  If you run into errors, please use a 'Stable Release' instead before filing a bug.&lt;br /&gt;
&lt;br /&gt;
You need to follow the below steps to git clone MIC2:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git://gitorious.org/meego-developer-tools/image-creator.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Build and install:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd image-creator&lt;br /&gt;
make clean&lt;br /&gt;
make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You should add the repo for mic2 then run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo ./tools/mic-check-alldeps&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to check/install all the depended packages, otherwise mic2 can't work normally.&lt;br /&gt;
&lt;br /&gt;
== Running mic-image-creator ==&lt;br /&gt;
&lt;br /&gt;
Configuration of images is based on kickstart, the format used for unattended installation in Fedora and Redhat.&lt;br /&gt;
&lt;br /&gt;
Super user privileges are needed. The tool is more or less self-documented, use the --help option to see options.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-creator --help&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating Supported Image Types ===&lt;br /&gt;
&lt;br /&gt;
KickStart (.ks) configuration files are passed to MIC2 to create tailored images.  KickStart files specify what repos to pull from, what packages to include, what post-scripts to run and what type of images to create.&lt;br /&gt;
&lt;br /&gt;
To obtain the official Meego .ks files, go here: TO-DO-LINK&lt;br /&gt;
&lt;br /&gt;
'''Create ARMv7 Images'''&lt;br /&gt;
&lt;br /&gt;
When creating images for ARMv7 hardware, pass ''--arch=armv7l'' to ''mic-image-creator'' commands.&lt;br /&gt;
&lt;br /&gt;
'''Create Livecd Image'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-creator --config=default.ks --format=livecd --cache=mycache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This tells image-creator to use the kickstart file default.ks to obtain info about which packages to download and include in the image, and --cache is the directory on your local machine which will host a cache of these packages. The cache is very useful if you are remote to the server and reduces the amount of downloaded packages next time you create an image. Next time the command is run, this cache will simply be 'updated' if there are changes, rather than re-downloading from the repositories again.&lt;br /&gt;
&lt;br /&gt;
The output of this command will be a file named meego-1.0-default-XX.iso created. This ISO image is a hybrid image and can be either written to a disk device or burned onto a cd.&lt;br /&gt;
&lt;br /&gt;
To burn it onto a USB stick, just run the following command, assuming the USB stick is /dev/sdb in your system:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-writer meego-1.0-default-XX.iso&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Create Moorestown NAND Image'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-creator --config=default.ks --format=mrstnand&lt;br /&gt;
&lt;br /&gt;
remove the first 512 bytes from the image to remove the partition information.&lt;br /&gt;
sudo dd bs=512 skip=1 if=meego-1.0-default-XX-sda.bin of= meego-1.0-default-XX-nand.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Create Liveusb Image'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-creator --config=default.ks --format=liveusb --cache=mycache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A file named meego-1.0-default-XX.usbimg will be created. To burn it onto a USB stick, run the following command, assuming the USB stick is /dev/sdb in your system:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-writer meego-1.0-default-XX.usbimg&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This image has a FAT file system and can be mounted easily on Windows and other OSes.&lt;br /&gt;
&lt;br /&gt;
'''Create Liveusb Image Interactively'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-creator --config=default.ks --format=liveusb --interactive --cache=mycache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It directly creates a MeeGo live usb stick.&lt;br /&gt;
&lt;br /&gt;
Liveusb image can be created in two different ways, interactive and non-interactive (default). When running MIC2 in a non-interactive mode, MIC2 creates a USB images file that can be copied directly into a USB stick. The non-interactive mode can be used for daily build or automated testing. The interactive mode will write the images onto a USB disk, it will detect if a USB stick is available and detects and verifies a partition is available. If two or more USB devices are present, you will be asked to select the target device. This way the contents of the existing USB stick won't be destroyed unless no appropriate partition is found, end user should use it to create the live USB.&lt;br /&gt;
&lt;br /&gt;
'''Create Loop Image'''&lt;br /&gt;
&lt;br /&gt;
This is the simplest image format available. Such images can be loop mounted and chrooted into, for example, to build applications or for debugging purposes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-creator --config=default.ks --format=loop --cache=mycache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A file named meego-1.0-default-XX.img is created. You can use below to mount it and chroot into it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mount -o loop meego-1.0-default-XX.img /mnt&lt;br /&gt;
sudo chroot /mnt su -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Create KVM Image'''&lt;br /&gt;
&lt;br /&gt;
Can be used with QEMU or other VMM applications to launch MeeGo as a virtualized instance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-creator --config=default.ks --format=raw --cache=mycache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A file named meego-1.0-default-XX folder with a meego-1.0-default-XX-sda.raw image is created. For optimal results, use this feature in a machine with VT support and enable it in the BIOS.&lt;br /&gt;
&lt;br /&gt;
If you use Fedora or openSUSE, run the following command to launch the image into MeeGo KVM virtual machine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo qemu-kvm -m 512 -boot c -hda meego-1.0-default-XX-sda.raw -std-vga&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you use Ubuntu, run the following command launch image:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo kvm -m 512 -boot c -hda meego-1.0-default-XX-sda.raw&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Create VMDK Image'''&lt;br /&gt;
&lt;br /&gt;
VMDK images can be loaded into Vmware or Vmware player. MIC2 also generates a VMX file that has image configuration and can be used to launch the image in Vmware by just clicking the file. If you have vmplayer, it should open automatically.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-creator --config=default.ks --format=vmdk --cache=mycache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A file named meego-1.0-default-XX folder with both meego-1.0-default-XX-sda.vmdk image and meego-1.0-default-XX-sda.vmx is created. Just run vmware or vmware player, and select the generated vmx file.&lt;br /&gt;
&lt;br /&gt;
=== KickStart Files (configuration files used for image creation) ===&lt;br /&gt;
&lt;br /&gt;
KickStart (.ks) configuration files are passed to MIC2 to create tailored images.  KickStart files specify what repos to pull from, what packages to include, what post-scripts to run and what type of images to create.&lt;br /&gt;
&lt;br /&gt;
For more details about the kickstart format, see http://fedoraproject.org/wiki/Anaconda/Kickstart.&lt;br /&gt;
&lt;br /&gt;
Note that not all KickStart directives and options are supported for creating Meego images. MIC2 also adds some specific directives and options.  More explained below.&lt;br /&gt;
&lt;br /&gt;
====Official Meego .ks files====&lt;br /&gt;
&lt;br /&gt;
The official Meego .ks files are here:&lt;br /&gt;
&lt;br /&gt;
*For ARM based Nokia N900:  http://repo.meego.com/MeeGo/builds/trunk/ &amp;lt;version&amp;gt;/handset/images/meego-handset-armv7l-n900/&lt;br /&gt;
*For Intel Atom based netbook and handset (Moorestown):  http://repo.meego.com/MeeGo/builds/trunk/ &amp;lt;version&amp;gt;/{netbook,handset,ivi}/images/&amp;lt;respective directory&amp;gt;/&lt;br /&gt;
&lt;br /&gt;
You can download and use them as a base for the Meego images you create.  Modify these .ks files as you wish to create tailored images.&lt;br /&gt;
&lt;br /&gt;
====Modifying your .ks====&lt;br /&gt;
&lt;br /&gt;
Developers may want to modify the .ks files to create their own custom images.  Here are the main options and sections within the .ks file.&lt;br /&gt;
&lt;br /&gt;
You can also find in-depth .ks option information here: http://fedoraproject.org/wiki/Anaconda/Kickstart#Chapter_2._Kickstart_Options&lt;br /&gt;
&lt;br /&gt;
'''''Partition, Setup and Bootloader options'''''&lt;br /&gt;
&lt;br /&gt;
''Example''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lang en_US.UTF-8&lt;br /&gt;
keyboard us&lt;br /&gt;
timezone --utc America/New_York&lt;br /&gt;
auth --useshadow --enablemd5&lt;br /&gt;
part / --size 1500 --ondisk sda --fstype=ext3&lt;br /&gt;
rootpw meego&lt;br /&gt;
xconfig --startxonboot&lt;br /&gt;
bootloader --timeout=0 --append=&amp;quot;quiet&amp;quot;&lt;br /&gt;
desktop --autologinuser=meego  --defaultdesktop=xfce&lt;br /&gt;
user --name meego  --groups audio,video --password meego&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are mostly self-explanatory and set up important things such as partition size, filesystem type, kernel paramters, etc.  You can change these depending on what your needs are.&lt;br /&gt;
&lt;br /&gt;
'''''Repos'''''&lt;br /&gt;
&lt;br /&gt;
This is where you can specify the yum repositories that you want MIC2 to search and pull your packages from which to make up your image.  You can add official Meego repos, other remote repos, or your own local repos on your dev machine.&lt;br /&gt;
&lt;br /&gt;
''Example''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# This is a comment&lt;br /&gt;
&lt;br /&gt;
# My first repo&lt;br /&gt;
repo   --name=trunk  --baseurl=http://mytrunk.myrepo.com&lt;br /&gt;
&lt;br /&gt;
# My second repo&lt;br /&gt;
#repo   --name=&amp;lt;repo-name-2&amp;gt;  --baseurl=&amp;lt; url | local-repo-dir &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' --name of the repo can be any unique alphanumeric name you give your repo, it can be anything.  Just make sure you don't use the same name twice for any of the listed repos, remember they have to be unique.&lt;br /&gt;
&lt;br /&gt;
To create a repo you can point to on your local developer machine, you can run the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
createrepo -d &amp;lt;local-dir&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where 'local-dir' is a local directory on your machine that contains the rpms you want include in your local directory.&lt;br /&gt;
&lt;br /&gt;
'''''Adding Packages and Package Groups'''''&lt;br /&gt;
&lt;br /&gt;
''Example''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%packages&lt;br /&gt;
&lt;br /&gt;
# Example adding pkg groups&lt;br /&gt;
&lt;br /&gt;
@Core&lt;br /&gt;
@X for Netbooks&lt;br /&gt;
@Base&lt;br /&gt;
@Development Tools&lt;br /&gt;
@&amp;lt;my-PkgGroup1&amp;gt;&lt;br /&gt;
@&amp;lt;my-PkgGroup2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Example adding individual pkgs&lt;br /&gt;
&lt;br /&gt;
kernel-netbook&lt;br /&gt;
xorg-x11-server-Xorg-setuid&lt;br /&gt;
carrick&lt;br /&gt;
xorg-x11-drv-evtouch&lt;br /&gt;
&amp;lt;my-pkg-1&amp;gt;&lt;br /&gt;
&amp;lt;my-pkg-2&amp;gt;&lt;br /&gt;
%end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This specifies exactly what packages will be included in your image.  Package groups can be specified with a &amp;quot;@&amp;quot; preceding it, as you can see from the examples above.  Package groups are defined in the 'repodata' section of a repo, under a 'comps*.xml' file.  Defined therein are package group names, and what packages are included in each package group.  The Meego package groups are standard, and cannot be changed.  You can, however, define your own package groups in your own non-Meego repos if you are using those.  &lt;br /&gt;
&lt;br /&gt;
Please see here for more info on defining package groups in repositories: TO-DO-LINK&lt;br /&gt;
&lt;br /&gt;
You can also add individual package names to be included in the image as you can see from the second part in the above example.&lt;br /&gt;
&lt;br /&gt;
'''''Important Note about how MIC2 picks a package when different versions are available'''''&lt;br /&gt;
&lt;br /&gt;
A common problem is that, let's say, a packageA has more than one version residing in a repo(s) that your .ks is pointing to.&lt;br /&gt;
&lt;br /&gt;
How will the MIC2 know which one to pick?&lt;br /&gt;
&lt;br /&gt;
''Example''&lt;br /&gt;
&lt;br /&gt;
There exists in the repo(s) these different versions of PackageA:&lt;br /&gt;
&lt;br /&gt;
PackageA-1.0&lt;br /&gt;
&lt;br /&gt;
PackageA-2.0&lt;br /&gt;
&lt;br /&gt;
PackageA-3.0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MIC2 will pick the PackageA with the highest version number (PackageA-3.0 in this case).&lt;br /&gt;
&lt;br /&gt;
There is one way to get around that, and that is to set the 'Epoch' version within a package .spec file.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Example (works in both .spec and .yaml file)&lt;br /&gt;
&lt;br /&gt;
Name: &amp;lt;name&amp;gt;&lt;br /&gt;
Summary: &amp;lt;summary&amp;gt;&lt;br /&gt;
Epoch: 1&lt;br /&gt;
Version: &amp;lt;version&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MIC2 will first look to compare the 'Epoch' version of the packages.  All Meego official packages do not include an 'Epoch' version, so if you set the 'Epoch' number within your .spec file to any positive integer, no matter if your package version is smaller, MIC2 will choose your package.&lt;br /&gt;
&lt;br /&gt;
So back to our example.&lt;br /&gt;
&lt;br /&gt;
''Example''&lt;br /&gt;
&lt;br /&gt;
PackageA-1.0 (Epoch not set)&lt;br /&gt;
&lt;br /&gt;
PackageA-2.0 (Epoch = 1)&lt;br /&gt;
&lt;br /&gt;
PackageA-3.0 (Epoch not set)&lt;br /&gt;
&lt;br /&gt;
MIC2 will choose PackageA-2.0 in this case.  And it follow that:&lt;br /&gt;
&lt;br /&gt;
''Example''&lt;br /&gt;
&lt;br /&gt;
PackageA-1.0 (Epoch=100)&lt;br /&gt;
&lt;br /&gt;
PackageA-2.0 (Epoch = 1)&lt;br /&gt;
&lt;br /&gt;
PackageA-3.0 (Epoch not set)&lt;br /&gt;
&lt;br /&gt;
MIC2 will choose PackageA-1.0.&lt;br /&gt;
&lt;br /&gt;
Remember that Meego packages will not have 'Epoch' set, so chances are that if you set 'Epoch' in your own package to any positive integer, it will be the one MIC2 chooses to pull down and include in an image.&lt;br /&gt;
&lt;br /&gt;
'''''Removing Packages'''''&lt;br /&gt;
&lt;br /&gt;
If you would like to make sure that a pkg is _not_ included, you can specify that with a '-' preceding the package name.&lt;br /&gt;
&lt;br /&gt;
''Example''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%packages&lt;br /&gt;
&lt;br /&gt;
# Example pkg groups&lt;br /&gt;
&lt;br /&gt;
@Core&lt;br /&gt;
&lt;br /&gt;
# Example adding individual pkgs&lt;br /&gt;
&lt;br /&gt;
kernel-netbook&lt;br /&gt;
&lt;br /&gt;
# Example removing individual pkgs&lt;br /&gt;
&lt;br /&gt;
-carrick&lt;br /&gt;
-package-xyz&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with the above example, packages 'carrick' and 'package-xyz' will _not_ be included in the image.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' all packages that depend on the package you want to remove should also be removed, or else MIC2 will ignore your request to remove that package from an image. For example, if 'carrick' depends on 'package-xyz', and you specified only to remove 'package-xyz', and keep carrick, MIC2 will ignore the request to remove package-xyz (since carrick depends on it), and it includes both of these pgks in the image.&lt;br /&gt;
&lt;br /&gt;
'''''Post scripts'''''&lt;br /&gt;
&lt;br /&gt;
You can also specify post-scripts to be run after the image is installed.&lt;br /&gt;
&lt;br /&gt;
''Example''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%post&lt;br /&gt;
&lt;br /&gt;
# Example - saving some space&lt;br /&gt;
rm -f /boot/initrd*&lt;br /&gt;
rm -f /core*&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Example - Install working xorg.conf&lt;br /&gt;
if [ -f /usr/share/my.conf ]; then&lt;br /&gt;
    cp /usr/share/my.conf /etc/X11/xorg.conf&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Example - Tell alsa the correct audio card to use for your platform&lt;br /&gt;
echo -e &amp;quot;options snd-hda-intel index=0\noptions snd-timbi2s index=1&amp;quot; &amp;gt; /etc/modp&lt;br /&gt;
robe.d/alsa.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Proxy settings for the repos in .ks====&lt;br /&gt;
&lt;br /&gt;
An option you might find useful if you're behind a firewall is the --proxy flag for the &amp;quot;repo&amp;quot; definition. You can specify it in the .ks as follows:&lt;br /&gt;
&lt;br /&gt;
  repo --name=meego --baseurl=http://repo.meego.com/trunk/repo/ia32/os/ --proxy=http://proxyhost:proxyport/ --proxyuser=proxyusername&lt;br /&gt;
--proxypaswd=proxyuserpassword &lt;br /&gt;
&lt;br /&gt;
If you are behind a firewall, you don't need to set proxyuser and proxypasswd, like:&lt;br /&gt;
  &lt;br /&gt;
  repo --name=meego  --baseurl=http://repo.meego.com/trunk/repo/ia32/os/ --proxy=http://proxyhost:proxyport&lt;br /&gt;
&lt;br /&gt;
'''Note:''' You can also insert this in your sudoers config:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
$ sudo visudo&lt;br /&gt;
&lt;br /&gt;
Add: Defaults env_keep += &amp;quot; no_proxy http_proxy .........&amp;quot; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
so sudo will adhere to the no_proxy and proxy settings.&lt;br /&gt;
&lt;br /&gt;
=== MIC2 Configuration file ===&lt;br /&gt;
&lt;br /&gt;
MIC2 options can be specified in a global configuration file ('''/etc/mic2/mic2.conf''') and local configuration file ('''$HOME/.mic2.conf''') where you can specify &lt;br /&gt;
* Repository configuration&lt;br /&gt;
* proxy settings&lt;br /&gt;
* cache directories and &lt;br /&gt;
* other variables &lt;br /&gt;
that you normally would have to re-type in your command-line. &lt;br /&gt;
&lt;br /&gt;
The two configuration files have the same format, /etc/mic2/mic2.conf is global, no matter whoever is running MIC2, this configuration file will be read first, $HOME/.mic2.conf is just valid for current user, every user can have their own settings.&lt;br /&gt;
The final configuration is a combination of two configuration files, options in '''$HOME/.mic2.conf''' will override those from '''/etc/mic2/mic2.conf'''. Options from command line have the highest priority. &lt;br /&gt;
If an option is specified on the command line, the same option in both configuration files, global and local will be ignored.&lt;br /&gt;
&lt;br /&gt;
Below is an example you can cut-and-paste, and reuse for your needs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[main]&lt;br /&gt;
cachedir=/home/user1/mycache&lt;br /&gt;
tmpdir=/home/user1/mystorage/tmp&lt;br /&gt;
outdir=/home/user1/mystorage&lt;br /&gt;
proxy=http://my.proxy.com:911/&lt;br /&gt;
no_proxy=localhost,127.0.0.0/8,.mysite.com,172.16.0.0/16&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''cachedir'' = directory where the cached repo(s) will reside.  With this variable set, you do not need to pass the --cache flag in the command-line.&lt;br /&gt;
&lt;br /&gt;
''tmpdir'' = temporary directory used by MIC2 when creating images.  With this variable set, you do not need to pass the --tmpdir flag in the command-line.&lt;br /&gt;
&lt;br /&gt;
''outdir'' = where your images will reside once they are created.  With this variable set, you do not need to pass the --outdir flag in the command-line.&lt;br /&gt;
&lt;br /&gt;
''proxy'' = specify your proxy if you're behind a behind a firewall.&lt;br /&gt;
&lt;br /&gt;
''no_proxy'' = specify what domains should not sure the proxy setting.&lt;br /&gt;
&lt;br /&gt;
''image_format'' = specify image format.&lt;br /&gt;
&lt;br /&gt;
''default_ks'' = specify a default kickstart file, there are several kickstart files provided in repository http://repo.meego.com/MeeGo/devel/trunk/repo/ia32/os/&lt;br /&gt;
&lt;br /&gt;
'''Note:''' When specifying proxy and no_proxy, you do not need to use the --proxy flag in your .ks files when referring to repos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In configuration files, you also can specify one or multiple repositories, for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[trunk]&lt;br /&gt;
name=trunk&lt;br /&gt;
baseurl=http://repo.meego.com/MeeGo/devel/trunk/repo/ia32/os/&lt;br /&gt;
enabled=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once there is this repository info in your configuration files, and both image_format and default_ks are set, you can just run &amp;quot;sudo mic-image-creator&amp;quot; to create a image, there isn't any extra argument needed.&lt;br /&gt;
&lt;br /&gt;
=== Use Bootstrap ===&lt;br /&gt;
&lt;br /&gt;
MIC2 highly depends on yum and librpm, but different Linux distributions used diffrent yum and librpm versions, so MIC2 has some compatibility issues on OpenSUSE, Ubuntu and Debian, bootstrap is just for fixing these compatibility issues.&lt;br /&gt;
&lt;br /&gt;
bootstrap is a minimal MeeGo file system, MIC2 can run very smoothly on it using chroot mode. You can use the below command to create a bootstrap:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-create-bootstrap -n trunk -k /your/repo/cache/path -r http://repo.meego.com/MeeGo/devel/trunk/repo/ia32/os/ -o /your/final/bootstrap&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
-n is used to specify repository name, if you have its cache before, it can reduce runtime dramatically to use it with -k option, -k is used to specify your repository cache dir, -r is used to specify MeeGo main repository.&lt;br /&gt;
&lt;br /&gt;
Once you created your bootstrap, you can use this bootstrap to run MIC2 as follows&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-creator --bootstrap=/your/final/bootstrap --format=livecd --config=default.ks --cache=/your/repo/cache/path&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can create and use bootstrap in one mic-image-creator run as follows&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-creator --build-bootstrap --bootstrap=/your/final/bootstrap --format=livecd --config=default.ks --cache=/your/repo/cache/path&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Running mic-image-writer ==&lt;br /&gt;
&lt;br /&gt;
mic-image-writer writes a Meego image to a USB disk as an alternative to dd.&lt;br /&gt;
&lt;br /&gt;
mic-image-writer can run in both console mode and GUI mode. It can decide which mode to run, according to current system environment. You can also use a given option to force it to run in some other mode. Run 'mic-image-writer --help' to get usage information:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Usage: mic-image-writer [options] [image file]&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
  -h, --help     Show this help message and exit&lt;br /&gt;
  -c, --console  Run in console mode&lt;br /&gt;
  -g, --gui      Run in GUI mod&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here is a run example in console mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo mic-image-writer meego-xxx.img&lt;br /&gt;
Available usb disk:&lt;br /&gt;
        [1] /dev/sdc: SanDisk USB Flash Drive&lt;br /&gt;
        [2] /dev/sdb: SanDisk U3 Cruzer Micro&lt;br /&gt;
Please choice [1..2] ? 2&lt;br /&gt;
Source: /myhome/meego-xxx.img&lt;br /&gt;
Target: /dev/sdb&lt;br /&gt;
Image size: 559 MB&lt;br /&gt;
Estimated time: 55 seconds&lt;br /&gt;
Elapsed time: 64, progress: 100% 8944+0 records in&lt;br /&gt;
8944+0 records out&lt;br /&gt;
586153984 bytes (586 MB) copied, 63.0486 s, 9.3 MB/s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mic-image-writer can estimate how long it will take to write the given image to your USB disk and reports current writing progress. It automatically unmounts your USB disk, if it is mounted. If your USB can't be unmounted, it will terminate.&lt;br /&gt;
&lt;br /&gt;
If you love UI mode, you can run it in X enviroment. The command with the added -g flag:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-writer -g meego-xxx.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Image name is optional.&lt;br /&gt;
&lt;br /&gt;
== Running mic-image-convertor ==&lt;br /&gt;
&lt;br /&gt;
It's very easy to use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-convertor --source-image=InputImage --target-format=Targegformat&lt;br /&gt;
&lt;br /&gt;
sudo mic-image-convertor -I InputImage -T Targegformat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, to translate a KVM raw image to livecd image, just type:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-image-convertor --source-image=meego-core-200902200545/meego-core-200902200545-sda.raw --target-format=livecd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A new livecd image of meego-converted-from-raw-200902201804.iso is generated. The tool can detect the type of input image, either raw or vmdk.&lt;br /&gt;
&lt;br /&gt;
This tool is very useful. For example, the developer can launch a virtual machine running MeeGo v2 and make whatever changes on the virtual system like yum install/remove a package, scp a source tarball to VM and build and try, and etc. Then with a simple &amp;quot;sync&amp;quot; or shutdown of VM, the VM image now contains his changes. With this tool, the VM image can be transformed to a live image and burned to a USB flash disk. Now developers can have final verifications in a target device, with changes in the live system.&lt;br /&gt;
&lt;br /&gt;
== Running mic-chroot ==&lt;br /&gt;
&lt;br /&gt;
There are two major usage models for mic-chroot for developers.&lt;br /&gt;
&lt;br /&gt;
'''chroot directly into the image to use it as a development environment, then optionally create a new image based off of your changes'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-chroot  -c livecd meego-core-200903131337.iso&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above command would present a chroot, using the livecd image, to developers with some bind mounts like /proc /sys /dev/pts and /parentroot. With those bind mounts, developers now can easily exchange files in chroot env with host /parentroot, and conduct yum install, yum remove and any other network related operations. After done and typing &amp;quot;exit&amp;quot;, a new live ISO image is created from the chroot env with the changes developers made.&lt;br /&gt;
&lt;br /&gt;
'''Unpack and modify the image's filesystem (which you can save), and create a new image based off of your changes'''&lt;br /&gt;
&lt;br /&gt;
Sometimes developers want to keep the chroot env so that they can do multiple changes in that root file system at different times. So they want to execute following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-chroot -s my-chroot-fs --unpack-only  meego-core-200903131337.iso --bind-mounts=/proc:/proc;/:/parentroot;/sys:/sys;/dev/pts:/dev/pts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above command creates a folder called 'my-chroot-fs' in the current directory, using the chroot environment from the livecd image. Of course if one forgets to add the --bind-mounts options, you'll need to manually do the bind mounting yourself. Don't forget copying /etc/reslov.conf into my-chroot-fs if you need to use DNS. Should you wish to create an image from the chroot, just execute following to create a livecd image&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo mic-chroot -c livecd --convert-only my-chroot-fs/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enabling Autoinstallation ==&lt;br /&gt;
&lt;br /&gt;
You need to copy a kickstart file into /root/mic2-ks.cfg which is used for&lt;br /&gt;
automated installation of the image. To activate autoinstall mode, boot with autoinst on the command line&lt;br /&gt;
or add --menus=autoinst to the bootloader directive in the kickstart file you use to&lt;br /&gt;
create the image.&lt;br /&gt;
&lt;br /&gt;
= Known issues =&lt;br /&gt;
&lt;br /&gt;
* MIC2 is not compatible with Ubuntu 8.04 (Yum package compatibility)&lt;br /&gt;
* MIC2 is not compatible with the initial Ubuntu 9.04.  Make sure you have package libsqlite3-0 of 3.6.10-1ubuntu0.2 or later.&lt;br /&gt;
* MIC2 has some issues on Debian, please refer to [[MIC on Debian]] to get installation instructions&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
You can file a bug on http://bugzilla.meego.com/enter_bug.cgi?product=Development%20Tools (Note: you should select MIC for component) if you run into any MIC2-related issue, bugzilla can track your issue faster and more efficiently.&lt;br /&gt;
&lt;br /&gt;
===libgcc related issues===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
libgcc_s.so.1 must be installed for pthread_cancel to work&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Error: failed to create image : '/sbin/mksquashfs /var/tmp/imgcreate-FKCSsk/iso-u8xCPh/LiveOS/osmin /var/tmp/imgcreate-FKCSsk/iso-u8xCPh/LiveOS/osmin.img' exited with error (-6)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This error occurs when MIC2 is unable to find the proper version of libgcc.  This usually happens on x86_64 systems - MIC2 is looking for the 32 bit version of libgcc, but only the 64 bit version is installed.  Installing the 32 bit version of libgcc should resolve this.&lt;br /&gt;
&lt;br /&gt;
===General squashfs issues===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;Error: failed to create image : '/sbin/mksquashfs /var/tmp/imgcreate-FKCSsk/iso-u8xCPh/LiveOS/osmin /var/tmp/imgcreate-FKCSsk/iso-u8xCPh/LiveOS/osmin.img' exited with error (-6)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This error can also be an issue with the syslinux package.  Try updating to the latest version for your distro.&lt;br /&gt;
&lt;br /&gt;
===device-mapper issues===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unable to remove open device&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a race condition with device-mapper in Fedora:  https://bugzilla.redhat.com/show_bug.cgi?id=506644. Usually rerunning the MIC2 command will resolve this.&lt;br /&gt;
&lt;br /&gt;
===python related issues===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    from urlgrabber.grabber import URLGrabber&lt;br /&gt;
ImportError: No module named urlgrabber.grabber&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some people are using python they built themselves, so some python modules aren't under their python library path. For such error, only one way is not to use your own python but to use python your system installed.&lt;br /&gt;
&lt;br /&gt;
===debian-based distros related issues===&lt;br /&gt;
On debian-based distros, we used pycentral to package mic2, but mic2 source installtion used distutils, so two kinds of installation have different installation path, if they exist there at the same time, it will result in some unpredictable errors to run mic2. In order to run it correctly, you can only keep just one installation, source or binary.&lt;br /&gt;
&lt;br /&gt;
Remove binary installation&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get remove mic2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove source installation&lt;br /&gt;
&lt;br /&gt;
Get python lib path&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ python&lt;br /&gt;
Python 2.5.2 (r252:60911, Sep 30 2008, 15:41:38)&lt;br /&gt;
[GCC 4.3.2 20080917 (Red Hat 4.3.2-4)] on linux2&lt;br /&gt;
Type &amp;quot;help&amp;quot;, &amp;quot;copyright&amp;quot;, &amp;quot;credits&amp;quot; or &amp;quot;license&amp;quot; for more information.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import distutils.sysconfig&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print distutils.sysconfig.get_python_lib()&lt;br /&gt;
&amp;lt;PYTHONLIBPATH&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remove mic2 files&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo rm -rf &amp;lt;PYTHONLIBPATH&amp;gt;/mic&lt;br /&gt;
$ sudo rm -rf &amp;lt;PYTHONLIBPATH&amp;gt;/mic-0.*&lt;br /&gt;
$ sudo rm -f /usr/bin/mic&lt;br /&gt;
$ sudo rm -f /usr/bin/mic-*&lt;br /&gt;
$ sudo rm -f /usr/bin/moblin-*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: You must replace &amp;lt;PYTHONLIBPATH&amp;gt; with the above python lib path&lt;br /&gt;
&lt;br /&gt;
If program jams after mkfs.vfat, it might be due missing ''vol_id'' program. ''vol_id'' is replaced with ''blkid'' in new ubuntu versions. Try run ''/lib/udev/vol_id'', if it's missing you have troubles.&lt;br /&gt;
&lt;br /&gt;
===ARM related issues===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Traceback (most recent call last):&lt;br /&gt;
  File &amp;quot;/usr/bin/mic-image-creator&amp;quot;, line 856, in &amp;lt;module&amp;gt;&lt;br /&gt;
    ret = main()&lt;br /&gt;
  File &amp;quot;/usr/bin/mic-image-creator&amp;quot;, line 682, in main&lt;br /&gt;
    run_in_bootstrap(options.bootstrap, argv, bindmounts, arch = options.arch)&lt;br /&gt;
  File &amp;quot;/usr/bin/mic-image-creator&amp;quot;, line 261, in run_in_bootstrap&lt;br /&gt;
    ret = subprocess.call(args, preexec_fn = chroot_bootstrap)&lt;br /&gt;
  File &amp;quot;/usr/lib/python2.5/subprocess.py&amp;quot;, line 444, in call&lt;br /&gt;
    return Popen(*popenargs, **kwargs).wait()&lt;br /&gt;
  File &amp;quot;/usr/lib/python2.5/subprocess.py&amp;quot;, line 594, in __init__&lt;br /&gt;
    errread, errwrite)&lt;br /&gt;
  File &amp;quot;/usr/lib/python2.5/subprocess.py&amp;quot;, line 1149, in _execute_child&lt;br /&gt;
    raise child_exception&lt;br /&gt;
OSError: [Errno 8] Exec format error&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This error occues when trying to build ARM images without passing ''--arch=armv7l'' to ''meego-image-creator''.&lt;br /&gt;
&lt;br /&gt;
===Proxy cache===&lt;br /&gt;
&lt;br /&gt;
See http://bugs.meego.com/show_bug.cgi?id=2343&lt;br /&gt;
&lt;br /&gt;
Some servers (e.g. with squid as a proxy) may cache more aggressively than&lt;br /&gt;
others, and as a result repomd.xml is invalid (old copy) and&lt;br /&gt;
references out of date metadata files (primary, comps, filelists, etc). This is&lt;br /&gt;
because the server is returning a cached/old copy of repomd.xml.&lt;br /&gt;
&lt;br /&gt;
Proxy cache should be disabled in mic and yum.&lt;br /&gt;
&lt;br /&gt;
= Advanced Hacking Tips = &lt;br /&gt;
&lt;br /&gt;
===replace kernel in live image===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$sudo mic-image-convertor --source-image=&amp;lt;your-netbook.img&amp;gt; --target-format=livecd --shell&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command will give you a chroot environment of MeeGo, you can follow the below steps to replace the default kernel with a new one.&lt;br /&gt;
&lt;br /&gt;
1). remove the old kernel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# rpm -e kernel-netbook&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: execute the above command in chroot environment.&lt;br /&gt;
&lt;br /&gt;
2). copy new kernel to chroot environment of MeeGo&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$sudo cp /path/to/kernel-*.rpm /var/tmp/imgcreate-*/install_root/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: execute the above command in your host system.&lt;br /&gt;
&lt;br /&gt;
/path/to/kernel-*.rpm is your new kernel to install, /var/tmp/imgcreate-*/install_root/ is the directory where chroot MeeGo mounted on.&lt;br /&gt;
&lt;br /&gt;
3). install the new kernel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# rpm -ivh /kernel-*.rpm&lt;br /&gt;
# rm /kernel-*.rpm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: execute the above command in chroot environment.&lt;br /&gt;
&lt;br /&gt;
After that, you can find out the new kernel in directory /boot/.&lt;br /&gt;
&lt;br /&gt;
4). update contents of isolinux&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$sudo cp /var/tmp/imgcreate-*/install_root/boot/initrd-*.img  /var/tmp/imgcreate-*/iso-*/isolinux/initrd0.img&lt;br /&gt;
$sudo cp /var/tmp/imgcreate-*/install_root/boot/vmlinuz-*  /var/tmp/imgcreate-*/iso-*/isolinux/vmlinuz0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: execute the above command in your host system.&lt;br /&gt;
&lt;br /&gt;
5. create an new image&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
NOTE: execute the above command in chroot environment.&lt;br /&gt;
&lt;br /&gt;
After following all the above steps, you'll have a new image.&lt;br /&gt;
&lt;br /&gt;
===build btrfs image===&lt;br /&gt;
From version 0.20.1 on, mic2 can support btrfs, you can create btrfs image by change fstype=ext3 in your kickstart file to fstype=btrfs. A successful creation will depend on btrfs-progs (btrfs-tools on debian-based distros, btrfsprogs on openSUSE) and btrfs kernel module in your local system, the known issue is we can't create btrfs image on Fedora 11, the issue is the default btrfs kernel module has some issue which will make kernel panic, so for this case, you must ensure you have a stable &amp;amp; latest kernel and btrfs-progs 0.19 on your system, this needs you to build your kernel by yourself and use it to boot your system.&lt;br /&gt;
&lt;br /&gt;
Btrfs-progs is a prerequisite tool, it includes /sbin/mkfs.btrfs, but its version must match btrfs kernel module, so you must ensure this, mic2 repo http://repo.meego.com/MeeGo/tools/repos/ has an issue which will install btrfs-progs 0.19 when you install mic2, this is an repo sync error, so please ensure you have your distro's btrfs-progs after mic2 is installed, if your distro's btrfs-progs version is 0.19, this isn't an issue, otherwise you must remove btrfs-progs installation introduced by mic2 and reinstall your distro's btrfs-progs.&lt;br /&gt;
&lt;br /&gt;
How to build btrfs image on Fedora 11 or lower version?&lt;br /&gt;
&lt;br /&gt;
# Download kernel-2.6.34 or kernel-2.6.35&lt;br /&gt;
# Configure btrfs as module&lt;br /&gt;
# make; make modules; make install; make modules_install&lt;br /&gt;
# Reboot your system using this built-newly kernel&lt;br /&gt;
# Install btrfs-progs 0.19&lt;br /&gt;
&lt;br /&gt;
Done, you're ready for creating btrfs image.&lt;br /&gt;
&lt;br /&gt;
===Metapackages, Patterns, and Repository Creation===&lt;br /&gt;
Meta-packages are discouraged in MeeGo.  The preferred method is to use patterns in the repository (supported by both zypper and mic2).  This is done by creating a patterns.xml file, which is a fairly simple XML file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;pattern xmlns:rpm=&amp;quot;http://linux.duke.edu/metadata/rpm&amp;quot;&lt;br /&gt;
         xmlns=&amp;quot;http://novell.com/package/metadata/suse/pattern&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;name&amp;gt;meego-core&amp;lt;/name&amp;gt;&lt;br /&gt;
   &amp;lt;summary&amp;gt;MeeGo Core&amp;lt;/summary&amp;gt;&lt;br /&gt;
   &amp;lt;description&amp;gt;Packages needed for Compliance&amp;lt;/description&amp;gt;&lt;br /&gt;
   &amp;lt;uservisible/&amp;gt;&lt;br /&gt;
   &amp;lt;category lang=&amp;quot;en&amp;quot;&amp;gt;Base Group&amp;lt;/category&amp;gt;&lt;br /&gt;
   &amp;lt;rpm:requires&amp;gt;&lt;br /&gt;
      &amp;lt;rpm:entry name=&amp;quot;pam&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;rpm:entry name=&amp;quot;rootfiles&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;rpm:entry name=&amp;quot;bash&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;rpm:entry name=&amp;quot;sysvinit&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;!-- ...etc... --&amp;gt;&lt;br /&gt;
   &amp;lt;/rpm:requires&amp;gt;&lt;br /&gt;
&amp;lt;/pattern&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The detailed documentation for this XML schema may be found on the [http://en.opensuse.org/openSUSE:Standards_Rpm_Metadata OpenSuSe Wiki].  There is also a Relax NG schema found in the source code for [http://gitorious.org/opensuse/libzypp libzypp] (buried in the folder zypp/parser/yum/schema).&lt;br /&gt;
&lt;br /&gt;
In MeeGo's [http://meego.gitorious.org/meego-os-base/package-groups package-groups] you can find several utilities, style sheets, and examples for how to create patterns and convert them to groups (comps).&lt;br /&gt;
&lt;br /&gt;
Once you have both a patterns.xml and comps.xml file, you can create your repository like this.  (For brevity, assuming a simple 'packages' repository.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
    ## Copy RPM packages to a folder, repos/&lt;br /&gt;
    $ mkdir -p repos/repodata&lt;br /&gt;
    $ cp -f patterns.xml comps.xml repos/repodata&lt;br /&gt;
    $ createrepo -g repos/repodata/comps.xml repos/&lt;br /&gt;
    $ modifyrepo repos/repodata/patterns.xml repos/repodata&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now GPG sign your repos/repodata/repomd.xml file.  Note that `modifyrepo` is a part of the `createrepo` package.&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	<entry>
		<id>http://wiki.meego.com/Maliit/MeeGo_1.1</id>
		<title>Maliit/MeeGo 1.1</title>
		<link rel="alternate" type="text/html" href="http://wiki.meego.com/Maliit/MeeGo_1.1"/>
				<updated>2010-11-23T04:20:50Z</updated>
		
		<summary type="html">&lt;p&gt;Gabrbedd: Minor formatting improvements.  Add info on making the keyboard reapper.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Handset =&lt;br /&gt;
Virtual keyboard works in handset UX except in N900 where there is something blocks the touchscreen usage together with the virtual keyboard.&lt;br /&gt;
&lt;br /&gt;
= Netbook =&lt;br /&gt;
In order to get virtual keyboard on netbook UX, you need to do the following:&lt;br /&gt;
* Enable the 'handset' repository.  For example:&lt;br /&gt;
&lt;br /&gt;
 $ sudo zypper addrepo &amp;lt;nowiki&amp;gt;http://repo.meego.com/MeeGo/releases/1.1/handset/repos/ia32/packages/&amp;lt;/nowiki&amp;gt; handset&lt;br /&gt;
 $ sudo zypper refresh&lt;br /&gt;
&lt;br /&gt;
* Install these packages: meegotouch-inputmethodbridges, meegotouch-inputmethodkeyboard.&lt;br /&gt;
* Modify /etc/xdg/autostart/meego-im-uiserver.desktop to look like this:&lt;br /&gt;
&lt;br /&gt;
 [Desktop Entry]&lt;br /&gt;
 Exec=/usr/bin/meego-im-uiserver -target slate -bypass-wm-hint&lt;br /&gt;
 X-Moblin-Priority=High&lt;br /&gt;
 OnlyShowIn=X-MEEGO-HS;X-MEEGO-NB&lt;br /&gt;
&lt;br /&gt;
This will work with 1024x600 resolution. Replace 'slate' with other code if you have different resolution. See /etc/meegotouch/devices.conf for different codes.&lt;br /&gt;
* Relogin (or reboot) to desktop&lt;br /&gt;
&lt;br /&gt;
Any time you activate text entry, virtual keyboard will popup with special known features:&lt;br /&gt;
* A horizontal swipe gesture on the keyboard will change the keyboard layout. &lt;br /&gt;
* ENTER key is under space (shift-space)&lt;br /&gt;
* ENTER doesn't work in Chromium url bar (but it works on web pages)&lt;br /&gt;
* text entry doesn't relocate when virtual keyboard is up, so you need to manually scroll the application&lt;br /&gt;
* Swipe down on the keyboard closes it&lt;br /&gt;
* Touching the top of the window brings the keyboard back&lt;br /&gt;
* Multitouch keyboard can be enabled by doing this on console: &amp;quot;&amp;lt;code&amp;gt;gconftool-2 -t bool -s /meegotouch/inputmethods/multitouch/enable true&amp;lt;/code&amp;gt;&amp;quot;. With it you can type upper case letters (and ENTER) by holding Shift key. Note that the gesture might go flakey, try with double finger swipe to overcome.&lt;/div&gt;</summary>
		<author><name>Gabrbedd</name></author>	</entry>

	</feed>