In last postings I’ve been telling how to create custom theme for Harmattan, and how to change between installed themes with ThemeChanger tool (http://leimu.drupalgardens.com/content/themechanger by Leimu). Also how to create valid debian packaging for the theme and preparing the package to be built in OBS. This is the last part of the themes trilogy and will give a quick guide for using Community OBS (https://build.pub.meego.com/), or OBS in general.
To get started with Community OBS, you need to contact either X-Fade or lbt #meego@freenode on IRC. Kindly tell them about your project and ask for either of them to enable your C-OBS account. You have to have existing meego.com account to have your C-OBS account enabled, the same credentials will then work in C-OBS.
There are two ways to use C-OBS, the web interface and OSC tool (http://en.opensuse.org/openSUSE:OSC). There are plenty of tutorials on how to use OBS with OSC, like this here: http://wiki.meego.com/Getting_started_with_OBS. Also I’ve found this cheat sheet very usable: http://en.opensuse.org/images/d/df/Obs-cheat-sheet.pdf when dealing with OSC. Instead of OSC, this tutorial is focusing on how to use OBS from the web interface.
When you login first time to https://build.pub.meego.com/ you’ll see five large icons showing up your quick options. Because we want to create a project to build the custom theme, we select the fourth icon New Project. This project is going to be one of your subprojects of your Home Project. Now you have to give a name to your subproject and a little description of what it’s about. In my case I created project called “themes”. The next hierarchy level under subproject is Package. You can add multiple packages under one subproject, like I’ve done with both of my themes. When you have your new project ready, you can start adding Repositories to build your project on. This time we are adding only Harmattan repositories. It is usually wise to create separate subprojects for different target repositories, especially if their packaging differs from each other, like in case Harmattan vs MeeGo. If I would build these same themes for MeeGo also, I would create another subdirectory for them. This reminds me of something, if I’ve known this from the beginning, I would have named my theme subproject as themes-harmattan, so I could name the other one themes-meego.
Let us have some target repositories. To add one, select Repositories tab from your new subproject view. Select Add Repository in the repositories view. There are two ways to add a repository, either with simple interface or with advanced interface. Only some repositories are available through the simple interface, Harmattan is not one of them. To add Harmattan, you need to select pick one via advanced interface. Start typing “harmattan” to the project search field, and it will complete with you some options. Select MeeGo:1.2:Harmattan from them. Leave Repository field intact. In the New name field you can give a new shorter name to the repository for your own convenience like simply “harmattan”. From architectures, tick armv7el only, and then press Add repository.
Now you’re ready to upload your package. Go to Packages tab in your subproject view and select Create new package. You have to give a name and description to your package. When you’re done, you can start uploading files. For that, in your newly created package’s main view, select Sources tab. In the last part of the tutorial we test built the package. Now you will need part of the side products of that build. If you don’t have them anymore, you can rebuild the package to regain the needed files for OBS. Only two files you need for building for Harmattan are the source tarball (file with .tar.gz suffix) and .dsc file. They should be found from the one directory up from your build directory. You can now use local file upload feature of the sources view to upload those two files to the OBS. Once you’ve done with the upload, OBS automatically triggers a build when it notices that those files needed for build are both present. To check the build progress, you can return to main view of your package selecting Overview tab. Build status box on the right should show build status for your target repository. If the status is not “building” you may need to click the reload status icon. If you can’t see your repository in build status box some extra work is needed, this has happened to me a couple of times. It means that the selected architecture was not successfully applied to your repository. To fix this, go to Repositories tab. There you see your repository and a note which says that these repositories are inherited from your subproject. Now select the link to your subproject, in my case: home:matrixx:themes. There you see your configured repository again. Select Edit repository from architectures, re-tick armv7el and click the Update button. If everything did go well, you should now see your package under Packages tab building nicely against Harmattan target. If build fails, go back to last tutorial and check everything is in place. The usual suspect when something fails has been in my experiments, the build dependencies. OBS is much more pickier with those than scratchbox, so you might have a perfectly building package in scratchbox, but not in OBS. When package has “succeeded” build status, you’re ready to add some extra stuff for the app store submission.
The extra stuff needed for the app store submission are described here: http://wiki.meego.com/MeeGo_Apps/Packaging. Shortly, you’ll need at least one screenshot and icon. Screenshot name should end screenshot.png and the icon needs to be named icon.png. Harmattan category section we already covered in the last post. In addition, your package needs to have a proper description. The submit process is highly automated, so it’s important to have that info, and also screenshot and icon names correct to pass the automated tests. The extra files are added same way than the package files themselves, through upload system in Sources tab.
The actual submission is done according to this guide: http://wiki.meego.com/MeeGo_Apps/Submit. Briefly: Go to your package’s main view and click Submit package. You are now asked to fill in the repository where you are submitting, type in: MeeGo:1.2:Harmattan:Apps:Testing. Do not tick the empty check box. After you have submitted your package, you are forwarded to request follow-up page. There you can happily wait a while when refreshing the page and wait the your request changes state from New to Accepted. There should be some email notifying you in certain states of the test run, but I’ve so far received none, so I don’t expect you also getting any. If you are using IRC, you can follow your request on #meego-boss @ freenode, where bot is spamming with all the things happening on C-OBS at anytime. If the request fails, the request page or the bot will tell you what went wrong (missing metadata, name, description…). Everything can be fixed and resubmitted with the same steps. Once the request is Accepted, your package will show up in http://apps.formeego.org/staging/basecategories/n9/pr1.0/harmattan/ in the same category you selected for your package. This is a staging are for all the applications which were accepted to Harmattan testing repositories. They have to go through the Community QA review process, where they need to get 6 positive reviews to be promoted to http://apps.formeego.org/basecategories/n9/pr1.0/harmattan/ .
From http://apps.formeego.org/basecategories/n9/pr1.0/harmattan/ you can also download the Community Apps client if you dont have it already. It lets you browse and download apps in http://apps.formeego.org. While waiting for your app to be promoted, you can do others a favor and rate/review the other goodies waiting in the testing area. You can browse and install also the apps in the testing area with the Apps client by installing apps–testing–enabler–harmattan package on your device. After installing the Community Apps client, it should be possible to install the package via apt-get. Now you can give those goodies a shot and review them with a same go.
I hope this whole shananigan did make any sense, and I will see also other themes in the store soon. There’s already a request from @knobtviker to create a Tron theme, just for lulz 😀