I miss Debian tools

It is nearly two months since I switched from Debian/Ubuntu to Fedora/RHEL. And I start to miss Debian tools…

Under Debian (which also means derivatives like Ubuntu) I used simple set of tools and I have found their Fedora replacements:

Debian Fedora
dpkg rpm
apt-get yum/dnf
apt-cache yum/dnf
dpkg-buildpackage rpmbuild
debuild rpmbuild
pbuilder mock
debdiff rpmdev-diff
dgit(?) fedpkg/rhpkg

The problem with Fedora tools is that they feel like few years behind Debian ones ;(

While Debian world moved to use “quilt” to manage patches in source packages few years ago, Fedora’s RPM just got it recently so it is hard to find package which makes use of it. Updating patches is far from being pleasure.

Yum (and it’s younger brother ‘dnf’) work in other way than APT. But are usable and do what they have to. The fun starts when you run “yum upgrade -y” on slow machine (like AArch64 model) and someone will regenerate repository data in meantime — you end with 404 errors cause repodata/ directory uses random file names…

rpmbuild works. It even has some limited support for running separate steps. But without dependencies between them so “rpmbuild -bi specfile” needs “rpmbuild -bc specfile” first while in Debian world “debian/rules install” is enough. There is also “--short-circuit” option to not clean build directory when you want to go through single steps. But resulting binary packages are tainted and can not be installed without using “–nodeps” switch to RPM. I see a sense behind it but it hit me hard on AArch64 when I was building Qt (do not ask how long it took cause I did it several times during last 2 months).

Then we have mock. Argh… I put it in one line with pbuilder but it is not worthy. No user setup possible, just one build at time (my machine is now 10% busy) make mock wasting lot of developer time. I opened bugs with feature requests for user config and multiple builds — hope that one day it will appear.

And last entry is what I like. Both fedpkg and rhpkg allow me to clone git repository of package so I can create patches for packaging in quick way. In Debian world I never used such tool. Under Ubuntu packages were kept in Bazaar repositories but you know already what I think of this SCM.

From a diary of AArch64 porter

One day I will go to software conference with an axe or a knife and will turn a place into slaughterhouse…

During last few weeks most of my work was related to fixing build issues on AArch64 platform. That’s what I do since September 2012. Just operating system changed from OpenEmbedded to Fedora. And there are days when I want to kill.

Kill who? Software developers. Some for shipping few years old copies of config.{guess,sub} files. Others for inventing crazy ways of abusing autoconf usage. My latest find was fakeroot.spec which has this precious jewel:

for type in sysv tcp; do
mkdir obj-$type
cd obj-$type
cat >> configure << 'EOF'
#! /bin/sh
exec ../configure "$@"
EOF
chmod +x configure
%configure \
  --disable-dependency-tracking \
  --disable-static \
  --libdir=%{_libdir}/libfakeroot \
  --with-ipc=$type \
  --program-suffix=-$type
make
cd ..
done

By default "%configure" macro updates config.{guess,sub} files. But it does it in place. So no luck here.

There are countless packages like that. Code for 3rd-party libraries bundled with code may have them as well.

So if your package uses config.{guess,sub} files then please take a look and do an update of them with new release.