Skip to main content

a silhouette of a person's head and shoulders, used as a default avatar

KDE Platform, Workspaces and Applications 4.10.2 packages available for openSUSE

KDE has released its monthly update for the 4.10 release, and after a brief wait while the Open Build Service worked over the released tarballs, the openSUSE KDE team is pleased to announce the availability of the 4.10.2 release packages for openSUSE 12.2 and 12.3.

[![KDE Plasma Workspaces 4.10.2 and Dolphin]({{ site.url }}/images/2013/04/757111961-300x166.png)]({{ site.url }}/images/2013/04/757111961.png)

Despite being a minor release, more than 100 bugs were fixed, in particular there were many KDEPIM fixes touching both the low level stack and KMail/KAddressbook/Kontact. Some highlights on the fixed issues:

  • Issues creating IMAP folders with KDEPIM (KDE bugs 291143, 292418, 305987)

  • Issues with encrypted mails in KDEPIM (KDE bugs 301088, 313478)

  • KMail not creating required folders at startup (KDE bug 303117)

  • Crashes when using the semantic desktop framework (KDE bug 313478)

  • Improvements to CalDAV support in KDEPIM

And this is just a small part of the complete list.

As usual, packages live in the KDE:Release:410 (openSUSE 12.3, openSUSE 12.2) repository. You can add the repositories through zypper or YaST.

The KDE:Distro:Factory repository has also been updated. If you want to contribute and help KDE packaging in openSUSE, use the KDE:Distro:Factory version, otherwise stick to the KDE:Release:410.

The package manager may complain about needing a downgrade of the branding packages: it is harmless, as some packages were splitted and as such they report a lower version number. Just accept the downgrade in the branding packages and all will be well.

Report bugs in packaging to Novell’s Bugzilla, and bugs in the software directly to KDE.

Have fun with 4.10.2!

a silhouette of a person's head and shoulders, used as a default avatar

Wayland/Weston on oS-12.3

After Richards recent patch about adding a colour management system to wayland, I was interested to build a Oyranos CMS connection module for wayland. The patch is in a initial stage, but might get to a similar level like what is already in CompICC and KWin colour servers.

First I substituted all openSUSE-12.3 distro packages with the adequate packages from tobijk and obtained a version 1.0.6 . Keeping the distro Mesa package resulted in a missed EGL Wayland extension and some crashes. On the Wayland website are some instructions on how to setup the environment. Especially the XDG_RUNTIME_DIR variable needs attention. I skipped the part of adding a special weston-lauch group and run the application simply by root. However the a symbol in cairo was missed “cairo_egl_device_create”. After cloning and building pixman and cairo following the Wayland instructions everything went fine. Here a simple ~/.config/weston.ini file to start with:
[wayland-desktop-shell]
locking=true

[launcher]
icon=/usr/share/icons/oxygen/32×32/apps/utilities-terminal.png
path=/usr/bin/weston-terminal

Weston launches on my system into a multi monitor setup with nouveau. There is still heave tearing, while moving the terminal. After Strg+Alt+Entf (Ctrl+Alt+Del) weston quits.

the avatar of Will Stephenson

Tidy home, tidy Build Service

Anyone using the Open Build Service in the last couple of weeks will notice how hopelessly overloaded it is.  I blame the ARM lads ;).  But there is something that we should all do as responsible community members: delete or disable your old stuff.

I’ve just spent 15 minutes going through my Open Build Service home:wstephenson project, deleting unfinished works in progress, finished branches that were never deleted, inherited repositories in branched projects that aren’t relevant to the tweaks I’m making, and I think I’ve saved about 100 repositories for the OBS scheduler to recalculate and look at publishing.

Time for you to spring clean too?

the avatar of Jim Fehlig

Xen live migration in OpenStack Grizzly

I recently experimented with live migration in an OpenStack Grizzly cluster of Xen compute nodes and thought it useful to write a short blog post for the benefit of others interested in OpenStack Xen deployments.

My OpenStack Grizzly cluster consisted of three nodes: One controller node hosting most of the OpenStack services (rabbitmq, mysql, cinder, keystone, nova-api, nova-scheduler, etc.) and two Xen compute nodes running nova-compute, nova-network, and nova-novncproxy.  All nodes were running fully patched SLES11 SP2.  devstack was used to deploy the OpenStack services.

For the most part, I used the OpenStack documentation for configuring live migration to setup the environment.  The main configuration tasks include

  1. Configuring shared storage on the compute nodes involved in live migration.  I took the simple approach and used NFS for shared storage between the compute nodes, mounting an NFS share at /opt/stack/data/nova/instances in each compute node.
  2. Ensure that the UID and GID of your nova (or stack) and libvirt users are identical between each of your servers. This ensures that the permissions on the NFS mount will work correctly.
  3. Ensure the shared directory has ‘execute/search’ bit set, e.g. chmod o+x /opt/stack/data/nova/instances
  4. Ensure firewall is properly configured to allow migrations.  For Xen, port 8002 needs to be open.  This is the port xend listens on for migration requests.

In addition to the steps described in the OpenStack documentation, the following configuration needs to be performed on the Xen compute nodes

  1. Enable migration (aka relocation) in /etc/xen/xend-config.sxp: (xend-relocation-server yes)
  2. Define a list of hosts allowed to connect to the migration port in /etc/xen/xend-config.sxp.  To allow all hosts, leave the list empty:  (xend-relocation-hosts-allow ”)
  3. Set the ‘live_migration_flag’ option in /etc/nova/nova.conf.  In the legacy xm/xend toolstack, xend implements all of the migration logic.  Unlike the libvirt qemu driver, the libvirt legacy xen driver can only pass the migration request to the Xen toolstack, so the only migration flags needed are VIR_MIGRATE_LIVE and VIR_MIGRATE_UNDEFINE_SOURCE:  live_migration_flag=VIR_MIGRATE_LIVE,VIR_MIGRATE_UNDEFINE_SOURCE
  4. Set the live_migration_uri option in /etc/nova/nova.conf.  The default for this option is ‘qemu+tcp://%s/system’.  For Xen, this needs to be ‘xenmigr://%s/system’:  live_migration_uri = xenmigr://%s/system

After these configuration steps, restart xend and nova-compute on the Xen compute nodes to reload the new configuration.  Your OpenStack Xen cluster should now be able to perform live migration as per the OpenStack Using Migration documentation.

On my small cluster, xen71 is the controller node and xen76 and xen77 are the Xen compute nodes.  I booted an instance of a SLES11 SP2 Xen HVM image that was provisioned on xen76.

stack@xen71:~> nova list
+--------------------------------------+------------------------+--------+--------------------+
|ID                                    | Name                   | Status | Networks           |
+--------------------------------------+------------------------+--------+--------------------+
| 6b45baa2-3dc2-420c-a7ab-aad25fc1aa2a | sles11sp2-xen-hvm-test | ACTIVE | private=10.4.128.2 |
+--------------------------------------+------------------------+--------+--------------------+
stack@xen71:~> nova show 6b45baa2-3dc2-420c-a7ab-aad25fc1aa2a
+-------------------------------------+----------------------------------------------------------+
| Property                            | Value                                                    |
+-------------------------------------+----------------------------------------------------------+
| status                              | ACTIVE                                                   |
| updated                             | 2013-04-05T17:27:16Z                                     |
| OS-EXT-STS:task_state               | None                                                     |
| OS-EXT-SRV-ATTR:host                | xen76                                                    |
| key_name                            | None                                                     |
| image                               | SLES11SP2-xen-hvm (5b39e6b3-bc3f-4fb0-81a0-b115cb8ada80) |
| private network                     | 10.4.128.2                                               |
| hostId                              | cca619a77da34c0c26001fb2438d7cce6a5da6408ae8ec111401f627 |
| OS-EXT-STS:vm_state                 | active                                                   |
| OS-EXT-SRV-ATTR:instance_name       | instance-0000000a                                        |
| OS-EXT-SRV-ATTR:hypervisor_hostname | xen76.virt.lab.novell.com                                |
| flavor                              | m1.tiny (1)                                              |
| id                                  | 6b45baa2-3dc2-420c-a7ab-aad25fc1aa2a                     |
| security_groups                     | [{u'name': u'default'}]                                  |
| user_id                             | 86b77dee688e4eff957865205d27464a                         |
| name                                | sles11sp2-xen-hvm-test                                   |
| created                             | 2013-04-05T17:10:04Z                                     |
| tenant_id                           | 0833047bb70d4b38874328aad83b7140                         |
| OS-DCF:diskConfig                   | MANUAL                                                   |
| metadata                            | {}                                                       |
| accessIPv4                          |                                                          |
| accessIPv6                          |                                                          |
| progress                            | 0                                                        |
| OS-EXT-STS:power_state              | 1                                                        |
| OS-EXT-AZ:availability_zone         | nova                                                     |
| config_drive                        |                                                          |
+-------------------------------------+----------------------------------------------------------+

Now let’s migrate the instance to the xen77 compute node

stack@xen71:~> nova live-migration 6b45baa2-3dc2-420c-a7ab-aad25fc1aa2a xen77

While the migration is in progess, we can see the status and task state as migrating

stack@xen71:~> nova show 6b45baa2-3dc2-420c-a7ab-aad25fc1aa2a
+-------------------------------------+----------------------------------------------------------+
| Property                            | Value                                                    |
+-------------------------------------+----------------------------------------------------------+
| status                              | MIGRATING                                                |
| updated                             | 2013-04-05T20:16:27Z                                     |
| OS-EXT-STS:task_state               | migrating                                                |
| OS-EXT-SRV-ATTR:host                | xen76                                                    |
| key_name                            | None                                                     |
| image                               | SLES11SP2-xen-hvm (5b39e6b3-bc3f-4fb0-81a0-b115cb8ada80) |
| private network                     | 10.4.128.2                                               |
| hostId                              | cca619a77da34c0c26001fb2438d7cce6a5da6408ae8ec111401f627 |
| OS-EXT-STS:vm_state                 | active                                                   |
| OS-EXT-SRV-ATTR:instance_name       | instance-0000000a                                        |
| OS-EXT-SRV-ATTR:hypervisor_hostname | xen76.virt.lab.novell.com                                |
| flavor                              | m1.tiny (1)                                              |
| id                                  | 6b45baa2-3dc2-420c-a7ab-aad25fc1aa2a                     |
| security_groups                     | [{u'name': u'default'}]                                  |
| user_id                             | 86b77dee688e4eff957865205d27464a                         |
| name                                | sles11sp2-xen-hvm-test                                   |
| created                             | 2013-04-05T17:10:04Z                                     |
| tenant_id                           | 0833047bb70d4b38874328aad83b7140                         |
| OS-DCF:diskConfig                   | MANUAL                                                   |
| metadata                            | {}                                                       |
| accessIPv4                          |                                                          |
| accessIPv6                          |                                                          |
| OS-EXT-STS:power_state              | 1                                                        |
| OS-EXT-AZ:availability_zone         | nova                                                     |
| config_drive                        |                                                          |
+-------------------------------------+----------------------------------------------------------+

Once the migration completes, we can see that the instance is now running on xen77

stack@xen71:~> nova show 6b45baa2-3dc2-420c-a7ab-aad25fc1aa2a
+-------------------------------------+----------------------------------------------------------+
| Property                            | Value                                                    |
+-------------------------------------+----------------------------------------------------------+
| status                              | ACTIVE                                                   |
| updated                             | 2013-04-05T20:11:37Z                                     |
| OS-EXT-STS:task_state               | None                                                     |
| OS-EXT-SRV-ATTR:host                | xen77                                                    |
| key_name                            | None                                                     |
| image                               | SLES11SP2-xen-hvm (5b39e6b3-bc3f-4fb0-81a0-b115cb8ada80) |
| private network                     | 10.4.128.2                                               |
| hostId                              | cabdc8468130edd0f85440f1b2922419b359b3da36a40de98713dbda |
| OS-EXT-STS:vm_state                 | active                                                   |
| OS-EXT-SRV-ATTR:instance_name       | instance-0000000a                                        |
| OS-EXT-SRV-ATTR:hypervisor_hostname | xen76.virt.lab.novell.com                                |
| flavor                              | m1.tiny (1)                                              |
| id                                  | 6b45baa2-3dc2-420c-a7ab-aad25fc1aa2a                     |
| security_groups                     | [{u'name': u'default'}]                                  |
| user_id                             | 86b77dee688e4eff957865205d27464a                         |
| name                                | sles11sp2-xen-hvm-test                                   |
| created                             | 2013-04-05T17:10:04Z                                     |
| tenant_id                           | 0833047bb70d4b38874328aad83b7140                         |
| OS-DCF:diskConfig                   | MANUAL                                                   |
| metadata                            | {}                                                       |
| accessIPv4                          |                                                          |
| accessIPv6                          |                                                          |
| progress                            | 0                                                        |
| OS-EXT-STS:power_state              | 1                                                        |
| OS-EXT-AZ:availability_zone         | nova                                                     |
| config_drive                        |                                                          |
+-------------------------------------+----------------------------------------------------------+

You might notice a small bug here in that OS-EXT-SRV-ATTR:hypervisor_hostname is not updated with the xen77 host now running the instance.  A minor issue that I will add to my list of bugs needing investigation.

the avatar of Andres Silva

Wallpaper Proposal for openSUSE 13.1

Hello friends

The artwork team is now taking submissions for a default wallpaper and a wallpaper collection package for the upcoming openSUSE 13.1. However, you may be wondering, why now? 12.3 was just released!

The reason is that artwork being the face of openSUSE on the desktop needs a long time to mature. It will be a while before the team decides on what will go for defaults and so on, therefore we need to submit our ideas early enough to allow the whole process to evolve and be ready for prime time.

Take into account that submitting images is not a simple task, the format measures need to be met and the image will likely need tweaking, even after it has been chosen as part of the final distribution. Also, the wallpaper has generally marked the main source of inspiration for the rest of the distribution, splash screens, login screens, KDE plasma theme, all depend on the good communication they can have with the wallpaper.

For now, I am leaving this proposal with you and hope that you can also make your submissions soon. Please write and link your image to opensuse-artwork@opensuse.org



Thank you

Andy (anditosan)

a silhouette of a person's head and shoulders, used as a default avatar

A two-dimensional interval over integers

Guess what this means:
A two-dimensional interval over integers

This is most easily depicted as a set of integers, bounded by a lower and an upper value - but excluding the upper value. All inbetween values are included in the set. (see also http://en.wikipedia.org/wiki/Interval_%28mathematics%29)
Hmm, two-dimensional, but bounded by a lower and an upper value? And the Wikipedia article it refers to says that
 In mathematics, a (real) interval is a set of real numbers
while the above talks about integers. But oh well.

Got it yet? There's more:
The set is half-open, i.e. the lower bound is included, the upper bound not (if you're used to the notation - we're talking about [a,b) here, compared to closed [a,b] or fully open intervals (a,b)).
This again sounds a bit one-dimensional, but let's put that down as a case of copy/paste joy, and let's assume that the reader is able to extrapolate into two dimensions.

Does it sound familiar yet? Oh well, finally it says:
Alternatively, consider this a rectangle, where the rightmost pixel column and the bottommost pixel row are excluded
Oh. Sure, the concept of "rectangle" is so unfamiliar to programmers that it isn't worth mentioning except after some impressive-sounding mathematics jargon (that perhaps is not really useful in the case of finite, integer, ranges, but I digress). And yeah, let's mention pixels, too, all of a sudden. Of course, giving what apparently tries to be a strict mathematical definition, no need to mention whether the pixels here are centered on integer coordinates, or bounded by them. But I guess it's the former, as otherwise it would make little sense, or would it?

And what is right here, and especially, what is bottom? In mathematics, the y axis usually is depicted as pointing upwards, isn't it?

To make it even more fun, the data structure that this documents contains neither "range" or "rectangle" in its name, but "box"...

a silhouette of a person's head and shoulders, used as a default avatar

Interview with Jos Poortvliet

Jos Poortvliet , tell us about yourself. Who are you?

Hey, I’m a Dutch Free Software enthusiast living in Berlin with my Brazilian
wife Camila. I’ve been around Free and Open Source for over 10 years, mostly
active around marketing and community related things.

Which are your main responsibilities and roles inside the openSUSE Project as a community manager?

I’m active in marketing, helping the project communicate to the outside
world. But also internally and between SUSE and openSUSE. I am also active
on the governance side of the project, with strategy or board related things
and helping to handle conflicts if they arise.

How do people from the community understand (or perceive) your role inside the openSUSE Project ?

He, good question. In the beginning, many people expected me to take charge
and play a leadership role. As that is clearly something which does fit
neither openSUSE nor me, I did not do that and made very clear that I did
not see that as my job. Instead, I presented myself as a contributor who had
to earn his place like everybody else. I think I did that, in the last
years, and today people come to me for advice mostly in the areas of
communication, marketing and conflicts – and I happily stay out of
especially technical decisions.

Imagine that you have to build and manage a new community , inside the openSUSE Project. Which are the steps you gonna follow so as to assure that this community will not affect the openSUSE Project? How are you gonna attract  people from the openSUSE Project to participate in the this new community?

Depends on what you are looking for, what you want to create. If it is
something like the ARM project or a new openSUSE derivative, it SHOULD
affect the project – ARM is adding something to openSUSE, so are the
derivatives. That is good!

So, just announce it as that – a cool, new thing in openSUSE. That is not
particularly hard to communicate. I would not communicate it before it has
something to show for and in most cases that means first gathering some
people who want to work on it and making a ‘first release’, then announcing
where you plan to take it and inviting people to join.

Of course, it would be possible to create a project which might not be
naturally seen as an addition. Say, you want to ‘fork’ openSUSE into a more
stable (or more bleeding edge) version. That is an entirely different thing
and should be handled with a little more care: one can imagine that this
takes up resources which otherwise might be put in openSUSE Factory, for
example. But here, too, I think it is important to first talk to some core
people, get a team up, create a ‘proof of concept’ and simply have a clear
plan. Then, based on what objections you expect, make sure to communicate it
in a non-threatening way.

Do you use any tool to manage the information inside the community (e.g bugzilla , statistics in mailing lists,repositories etc) and how?

We have some statistics but these focus around the release, marketing and
user base (number of downloads, page views to our sites, number of active
installations, things like that). And we have some idea about development
(number of commits to Factory, amount of work in devel projects). We have
very little, if any, info on communication related things.

One of the tasks of the community manager is the volunteer management. In terms of measurement and success can you give a percentage of
 “assigned” tasks per volunteer and successfully finished task per volunteer?

I have very little idea here. First of all, because I am restricting myself
to a subset of the community: the marketing area. Second, because my work
frequently shifts and I don’t always interact with the same people. And
last, because I don’t keep metrics like that – I work very much on a one-on-
one base. I’m not saying that that is the best way to do it but I’m not much
of a number man 😉

According to your experience ,  how many months approximately needs a volunteer to be “productive”?

It depends quite a bit in what area and what skills he/she brings. But you
are often looking at quite a long time – a minimum of a month but easily
half a year.

Would you call yourself a mentor? And why?

Sometimes, when I’m actually mentoring new people…

If a project , a task or an idea “assigned” to a volunteer fails, how do you manage this kind failure?
I try to catch it myself but often, I delegate based on trust. So if a
volunteer doesn’t do something, well, it doesn’t get done. That is
responsibility, yes?
Finally tell us , why openSUSE and openSUSE Community rocks?

There are a lot of reasons – but for me, the most important part is the open
mind. Every project has people angry at the world, every project has
friendly and unfriendly people. But overall, openSUSE as a community is very
open to both newcomers and working with others. We’re not such a navel-
gazing community, we pragmatic and willing to look outside our borders,
adopting technologies from other communities and working with them on it.
That is maybe not totally unique, but certainly rare.

a silhouette of a person's head and shoulders, used as a default avatar

Firefox-19.0 Colour Management

Firefox detects since version 17.0 the Linux system profile, which is a great improvement for the operating system. While colour conversions on all platforms still default to on for ICC tagged content, they can be enabled for all other colours. Untagged colours will then default to sRGB instead of omitting monitor compensation for them. To do so go to the famous about:config URL and change gfx.color_management.mode from “2″ to “1″. Then use the installed CMS, e.g. on  KDE KolorManager, to set a system monitor profile, and it will be detected after restarting Firefox.

For Android there is no CMS available. That means the ICC monitor profile must be set manually or sRGB will be assumed instead. The settings name in about:config is gfx.color_management.display_profile. Enter into this string the file name with full path, if you are on Android. That procedure is somewhat inconvenient compared to desktops. However the OpenICC group has published some specifications for implementation. This might be even possible for students inside the rewarding Google Summer of Code 2013 program.

For comparison, the Chrome web browser does support colour management on some desktop versions but unfortunately not on Android.

The below false colour test image should look correctly with ICC profile enabled browsers. Look at the colour gradients and then at the colour names and compare.

False colour test imageEnjoy cross platform colour management.

the avatar of Agustin Benito Bethencourt

Are you a senior KDE developer? Join openSUSE Team at SUSE

openSUSE Team at SUSE is looking for a senior KDE developer that is willing to join the company to work on openSUSE distribution and customer products where KDE technologies are present.

As those of you who are closer to KDE and/or openSUSE know, Will Stephenson has been leading this area the last few years. He is now facing new professional challenges within SUSE so we are looking for somebody that coordinates the openSUSE Team efforts related with KDE together with the openSUSE community, upstream and other SUSE Teams.

Our default openSUSE desktop, KDE, is obviously a relevant piece of our puzzle. But beyond pure KDE work, the selected candidate will also work in other areas of the distribution and will play an important role as openSUSE/SUSE advocate in technical forums.

openSUSE currently ships other desktops too so it will be important for the selected candidate to drive high levels of cooperation with the openSUSE GNOME (and others) team and upstream in cross-distro development efforts.

As a preferred choice, we are looking for a KDE developer willing to move to our Headquarters in Nuremberg, GE or to our office in Prague, CZ.

If you are interested, please check the opening details and send your CV through the SUSE Careers website. Links to your contributions to KDE and contacts for references are welcome.

In a more personal note......

Will, thanks for standing strong and work hard for openSUSE and KDE. Good luck in your new position.
a silhouette of a person's head and shoulders, used as a default avatar

Producing Better Bindings: Completeness

Note: like the previous post, this one is a follow-up on a series written by someone else. We're all building on top of giant's shoulders. My giant today is Sébastien Pouliot from Xamarin. Read his series Producing Better Bindings.

Second Note: if you're reading this from a news aggregator, you might miss the embedded gists. Read the original there.

I'm lately enjoying writing bindings for Xamarin.iOS and Xamarin.Mac, a lot for the fun, very little for profit. The biggest project by far was creating a managed bindings for cocos2d (v2). This library is huge (~2500 public methods), and the API is far from being fixed in stone. The library is so big that at some point I just gave up, until Miguel resumed the effort during end-of-year break.


No chocolate

One of my worst nightmare was that, at the point of completion, the API would probably outdated, and going through every .h at every release to check consistency looked very expensive from a maintenance point of view. Hopefully, Sébastien came up with automated tests, removing a lot of the burden. There was still a missing part. making sure we were not missing any (important) part of the exposed API. In Producing Better Bindings #1, he said:
There’s no easy way to test for missing constructors[...]. That would require static analysis (not introspection) in order to be useful.
 It was very much like a "you can't get chocolate"-day for me. Which means a lot for a Belgian.

Static Analysis

I wanted that feature badly. But I wasn't in the mood of writing (another) .h parser, just to extract the public API (though I could have used the same tools used for generating documentation). So I opted for analysing the generated library, but not at runtime, just after compiling.

So I added a step in my Makefile that looks like this:
#static analysis
%.selectors: %.a
 nm -P $< | grep "^[-+]\[.*\] t" > $@

which generate a file containing entries like this:

+[CCLayerColor layerWithColor:] t b84 0
+[CCLayerColor layerWithColor:width:height:] t b1b 0
-[CCLayerColor blendFunc] t 1167 0
-[CCLayerColor changeHeight:] t ecc 0
-[CCLayerColor changeWidth:] t e87 0
-[CCLayerColor changeWidth:height:] t e4b 0
-[CCLayerColor draw] t fa1 0
-[CCLayerColor initWithColor:] t d81 0
-[CCLayerColor initWithColor:width:height:] t c3f 0
-[CCLayerColor init] t bd7 0
-[CCLayerColor setBlendFunc:] t 1182 0
-[CCLayerColor setColor:] t 10b9 0
-[CCLayerColor setContentSize:] t de2 0
-[CCLayerColor setOpacity:] t 1114 0
-[CCLayerColor updateColor] t f10 0

which is all we need (and some more we don't need).

The fixture

The fixture looks like all other Binding Test fixture. You set LogProgress and ContinueOnFailure to the value you want, you override the Assembly property, and you optionally Skip() some types.

Parsing the file

Parsing the generated file isn't part of the base fixture, as it's tied to how you extract the selectors; and you have to override Selectors (). But if you reuse the Make command, you can also reuse this parser:

Skipping categories

If the library you're binding uses categories, like cocos2d does, you can skip full categories:



What's missing ?

Very few actually. Maybe detecting is all the exposed Fields are bound in your C# API.

If you liked this post, you probably will also like other stuffs I'm doing. Contact me, I'm open for contracting.