Email or username:

Password:

Forgot your password?
js

I’m trying to create a #Debian package for @objfw and it’s really a big mess. I want to have the same structure as on Fedora, which is a meta package that depends on the subpackages. But I cannot find any documentation on how to do that in Debain other than that debian/control should list them all. Ok, that’s easy. But it doesn’t document how to specify which file goes into which package. Nothing. Nada. RPM? Just look for %files, all neatly documented. OK, so after googling around, you find dh_movefiles. Ah, but that’s deprecated! OK, supposedly I need to use dh_install. Let’s look at the documentation of that. Nothing that mentions packages! So in the end, I do trial and error. And just doing dh_install usr/bin/foo foo/usr/bin doesn’t work. But dh_install usr/bin/foo ../foo/usr/bin does! Is that correct or a hack? I don’t know! Debian won’t tell me!

Dear #Debian developers. Your entire packaging system seems to be multiple layers of wrappers around old and horrible things, trying to hide them, but without documenting anything. Please get your documentation in order. Have a look at how Fedora and RPM are documented and learn from it.

Also, for the love of god, please consider using some version control system such as Git, so that it becomes easy to see changes, see what other packages did and learn from them. That would have helped me immensely with seeing how other packages solved that Debian’s custom tooling is too old and chokes on binaries generated by clang because of new debug symbols.

I’ve packaged @objfw for all the BSDs, Alpine, ArchLinux, Fedora, OpenIndiana, MSYS2 and many more and no other experience was nearly as bad as Debian.

PS: And in the end, I’m still stuck, because apparently something doesn’t like the Depends: on one of the other packages built from the same source. And I have no idea why. No useful error message or anything.

6 comments
gtk4-bugaevc.EXE

@js @objfw so first of all I agree about Debian packaging being what it is

js

@bugaevc @objfw How so? First there is a Makefile called debian/rules. That by default calls a bunch of dh_* tools. Those call other tools again. And in the end you override stuff in debian/rules to call other dh_* tools again. How is this not layers upon layers to hide legacy?

js

@bugaevc Oops :). I’m so used to people disagreeing with me when I say something bad about software that I misread it and added a “don’t” :flan_XD:.

gtk4-bugaevc.EXE

@js also you missed a step, debian/rules doesn't just call dh_* tools, it calls 'dh $@', and then that does something that ends up calling the dh_* tools, or not, depending on your override_* targets 😁

Also there's this whole dh_auto thing, which tries to sniff things about your build system, and of course guesses wrong for anything non-trivial.

js

@bugaevc Right, there’s so many levels of wrappers that I forgot about half of them :flan_wink:.

Go Up