Conferences in February

Next month will start with conferences… Tomorrow I go for FOSDEM 2014 then one day break (to change bags) and then Devconf.cz in Brno, Czech Republic.

It will be 6th visit at FOSDEM for me. I do not plan to man a booth for any project and hope to find time to visit at least few talks — this year list is quite long:

  • A Method for Distributing Applications Independent from the Distro
  • Anatomy of kdbus
  • ARM: Allwinner sunxi SoC’s and the community behind it
  • CentOS: Planning for Variants and the Next Chapter
  • Ceph
  • Considering the Future of Copyleft
  • Cross Distro Automation
  • Debian Contributors
  • Discover DoudouLinux live!
  • GNURadio as a general purpose DSP environment
  • How we found a million style and grammar errors in the English Wikipedia
  • Introducing the Meson build system
  • IP risks for OSS developers
  • Is distribution-level package management obsolete?
  • Legal issues from a radical community angle
  • lima driver: Opening up the Mali instruction set
  • Lumicall — an open alternative to Viber
  • MINIX 3 on ARM
  • No more IPv4
  • Nouveau — On-going work, demos and research
  • OpenJDK on AArch64 Update
  • OpenPandora and a peek into the future
  • osmocom: Overview of our SDR projects
  • Persistent Memory
  • Porting FreeBSD on Xen on ARM
  • Reproducible Builds for Debian
  • Software Archaeology for Beginners
  • State of the X.org foundation
  • State of Thunderbird
  • Sunxi KMS driver
  • Technical introduction to the deeper parts of Sailfish OS, a Qt5-Wayland based mobile OS
  • Testing Kernel GFX Drivers
  • The evolution of Android’s runtime
  • The Lima driver
  • UEFI is not your enemy
  • Virtualization Dungeon on ARM
  • Who ate my battery?
  • Why You Should Be an Open Source Project
  • Xen on ARM

As usual it would be success if I will manage to see 30% of them as for me FOSDEM is a place to meet people from other projects to share ideas rather than spend time on sessions.

Next will be Devconf.cz but first ARM Hackfest a day before at Red Hat office (an option to check my badge). This conference is more Fedora related and I hope to meet interesting people there to discuss how to do some things. No talks selection as there will much smaller amount of them so I can do it between sessions ;D

If you want to catch me at conferences then use Google Hangout, Facebook Messenger or just mail me. I plan to have local SIM card to be always online.

New AArch64 hardware — AMD this time

AMD announced their new SoC: Opteron A1100. But instead of yet another x86-64 chip it is AArch64 one.

Slide

It is visible that they made Server-on-Chip but give me one and I will make a desktop computer from it. All it takes is USB 3.0 controller and graphics card with HDMI audio.

I wonder will it boot UEFI or U-Boot…

More information and slides are in Anandtech article.

Xulrunner/AArch64 on a way to upstream

I finally sent Xulrunner support for AArch64 upstream. From 76KB patch I went to 14 patches with 132KB in total due to other diff options like more context lines.

Will not bother with whole history of a patch. It involved three external projects:

  • libffi (merged upstream long time ago, xulrunner needs to update their copy)
  • double-conversion (see Qt/AArch64 post for details) also update needed
  • libevent got fix for deprecated syscalls which needs to be merged into xulrunner’s copy

Splitting patch went quite easy thanks to help from Xulrunner developers: mstange froydnj Tomcat Ms2ger glandium which told me how to submit my patch, which already existing bugs to update and who assign to code reviews.

And for patches please go to dependency tree of bug #962534.

And one note: AArch64 big endian was not fully covered. Endianness info was provided in most places for both little and big options.

The story of Qt/AArch64 patching

In over a year of my work as AArch64 porter I saw a lot of patches. But Qt one has the most interesting history.

Around year ago when I was building whatever possible during my Linaro work we got to the point when Qt jumped into a queue. Build failed but fixing was quite easy — all I had to do was to take “webkitgtk” patch written by Riku Voipio and apply it to Qt 4. Resulting file landed in “meta-aarch64” layer of OpenEmbedded and is still there.

Time passed. More common distributions like Debian, Fedora, OpenSUSE, Ubuntu (alphabetical order) started working on their AArch64 ports. And one day Fedora and Ubuntu started working on building Qt 4. I do not know who wrote QAtomic stuff but I saw few versions/iterations of it and it took me quite long time (first on model, then on real hardware) to get it fully working in Fedora — used Ubuntu version of patches.

Up to this moment it was over 9 months and still no upstreaming was done. So one day I decided to go for it and opened QTBUG #35442. Then reopened issue #33 in “double-conversion” project (which is used in few places in Qt) as they got good fix and merged wrong one (but it is fixed now). For that one I opened a request to update to newer version of “double-conversion” as QTBUG #35528.

But story did not end there. As Qt 4 development is more or less ended I was asked to provide fixes for Qt 5. Took me a while. Had to create a graph of build time dependencies between Qt 5 components (had to break few in meantime) and slowly module after module I got most of it built.

There were 3 components which required patching:

First one is solved upstream and waits for Qt guys. I was told that 5.3 will get it updated. Second one is already reviewed and merged. Last one left and here is a problem as it looks like the only person who does QtWebKit code reviews is Allan Sandfeld Jensen but he can not review code he sent. I am not able to do that due to Qt Contributor License Agreement which needs to be signed and (due to legal stuff) I can not do that.

So how it looks now? I would say that quite good. One 3rd party project needs update (in two places of Qt 5) and one patch needs to get through code review. I still need to send package updates to Fedora bug tracker. Ubuntu will need to merge patches when they move to 5.2 version.

Another distribution said goodbye to ARMv5 devices

Fedora 18 just became EOL. Most of the people do not care as F20 is present so they can run it on their PCs. But there is a group of users which may care.

All those people with ARMv5t hardware are left with Debian/armel now as there is no other big distribution supporting their devices anymore. Someone will ask “what about Ångström or Gentoo?” but who sane would build Gentoo on armv5te?

I do not remember when last time I used something with arm926 core (or similar – like Kirkwood). Probably few years ago when helped friend to get Sheevaplug booting into Debian.

But there are still Sheevaplugs, Guruplugs, *plugs and QNAP devices out there serving their users with selected services. And some of their owners will have to decide what next…

Start: Waiting for yumcache lock

Have you ever tried to build a package under Fedora (or RHEL)? Did you used “mock” for it? If you answered “yes” to both questions I have a task for you: do 2 or 3 builds at SAME time…

Curses, curses and other ugly words will start in your mind. I have no idea why in days of multiple cpu cores and gigabytes of memory “mock” tool forces users to do one build at time. Sure, there are ways to make several builds at same time but all sucks. And I am going to write why and compare it to “pbuilder” from Debian world.

Ok, so what “mock” is? It is a tool which do some tasks in defined order:

  • creates chroot with base system
  • installs required development packages
  • creates source package
  • installs build dependencies
  • builds package
  • copies resulting packages and logs into results dir

So where the problem is? First thing: there are multiple problems ;(

First issue: mock assumes that there will be one run at time and does it in /var/lib/mock/TARGET/ (where TARGET is ‘fedora-rawhide-aarch64’ for example). This can be solved with “–uniqueext=packagename” argument.

Second issue: there is ONE yum! Instead of using yum inside of chroot mock is using system one. So if you run few mocks at time (remember: cpu time and memory are cheap) you will see “Start: Waiting for yumcache lock” message for most of time (twice per build).

Why it drives me mad? Because “pbuilder” in Debian did not have such silly issues. Each build was done in “mktemp” named directory and APT was used inside of chroot. Sure, that could mean more fetching of packages but I had local APT proxy for it which allowed me to do 30-50MB/s downloads.

And I do not want to mention fact that if you want to configure mock you have to do that system wide…

Internet over GSM abroad? Forget it…

Several times per year I am abroad for some conferences or holidays. And lack of Internet access from a cellphone there sucks.

In October I was in Munich, Germany for some internal Red Hat training. Had most of day for sightseeing but doing it without constant access to the Internet was a bit of disaster as I did not have time in previous week to mark interesting spots in Google Maps or to make any notes. And it was Sunday so all stores were closed == no way to buy local prepaid card.

In February I will visit Brussels, Belgium for FOSDEM and then Brno, Czech Republic for devconf.cz. Local SIM cards for both countries would be nice.

Did not yet checked Belgium ones yet but did that for Czech Republic. And man… situation there is awful. 200MB for 150CZK from mobil.cz looks like best offer for prepaid. Disaster… I wonder how slow it will be as well.

But there are exceptions. In United Kingdom and Hong Kong I went to first Three shop and got unlimited data at affordable price. Spain was a bit strange as I had to register SIM card. But for 20€ I got something like 2GB of data.

In Poland I am topping up my SIM with 100 PLN every 2-3 months and this gives me 6GB of transfer as a bonus. I now have 45GB of data available without any extra costs. And prepaid cards from all operators are available to buy at every corner…

2013 timeline

Another year so time for summary post. Mostly spent around AArch64. Changed job. But let go with usual month-by-month style.

January

February

March

  • My blog is now EU cookie crap compliant.
  • Visited Hong Kong again for Linaro Connect Asia. Nice city, good conference. Hint: if you go for street shopping wait for seller to give price and start from 20-40% of it.

April

May

  • Left Linaro for good due to end of Canonical<>Linaro contract. This also meant leaving Canonical as I did not want to work there. You may want to read my post from start of May and my good bye Linaro one as well.
  • First discussion with Red Hat about job opportunities.
  • Visited UK for pleasure. London and Cambridge this time. I saw lot of interesting places, did several beers with local friends. Good spent time.
  • Sent ALSA UCM profiles and got it merged. One thing less for distributions to carry.

June

  • The “we pay you but do not require you to do any work” month at Canonical. Nice move from their side.
  • Visited Pixel Heaven in Warsaw. There was lot of different old computers. One of them was Acorn Archimedes so I was able to play with really old ARM cpus 😉
  • Started playing Ingress because I had 2 hours to return train…
  • Spent some time on Arch Linux ARM forums and found some nice hints for Chromebook usage. Also U-Boot for SPI flash…
  • Wrote post about ARM history which got shared in many places.

July

August

  • Got hired by Red Hat as Senior Software Engineer. My wife joked that next position would be Retired Software Engineer ;D
  • Vacations continued.

September

October

November

December

  • Started merging my stack of AArch64 related patches into Fedora. And into upstream of course. Lot of issues it gave.
  • Got Qt5 nearly complete on AArch64. Still have to get QtWebKit part done but it is close. Good part is that all my patches do not require any contribution agreement papers.

It was quite good year. Changed job from interesting one at Linaro to also interesting one at Red Hat. Still work on AArch64 porting stuff but this time I have access to real hardware so it goes faster.