Packaging Fractal as DEB 1/?
Nothing happend here for some time, so let’s write something. :)
Because I am crazy I decided trying to package Fractal (Gnomes’s GTK Matrix
Client) for Debian as a .deb
, because I am not convinced by Flatpacks
packages. (Nothing against the sandbox, although flatkill). Why, maybe more
another time.
So far I tried to understand git-build-package
(“GBP”) and
Debian Rust Packaging (“debcargo”), below my preliminary findings. :)
I have cloned the fractal git repo; due to fractal already using GTK4, I have to
use an older branch, gnome-3-30
, which is still at GTK3. To make GBP happy, I
start a new branch upstream/3.30.0
from there.
To generate the initial debian/
files I executed dh_make -p fractal_3.30.0 -e
$EMAIL -c gpl3 --createorig
. I can use that as a foundation to build on.
We need to trick cargo
into pulling packages from debcargo’s repository in the
filesystem by adding this to ~/.cargo/config
(thanks to diziet):
[source]
[source.debian-packages]
directory = "/usr/share/cargo/registry"
[source.crates-io]
replace-with = "debian-packages"
Now some gbp buildpackage --git-ignore-new
trial-and-error.
First there is a reference to a crate-fork on GitHub that has been deleted by it’s author, and I am still not sure how to work around that.
Anyway, with some shelling around I turn the dependencies from the both
submodule’s Cargo.toml
s into Debian Rust dependencies.
nl
to find out the line range the dependencies are in.
sed
to turn them into
package names.
sort -u
to deduplicate and finally put them into Build-Depends:
in
debian/control
.
The sed command I used:
sed -n 'X,Ys/\([a-z_0-9-]*\) = .*/librust-\1-dev/p' Cargo.toml
I found that mk-build-deps -i
can install all the dependencies in the
build-depends-section (cf.), otherwise gbp buildpackage
complains about missing dependencies.
Unfortunately not all crates that Fractal uses are packaged by Debian yet, so I
fool a little bit around with that. By trial-and-error mk-build-deps -i
I find
all the packages that are either only available in unstable yet or are not
packaged at all. (I still need to find out how apt-cache search
tells me which
suite that package comes from so I don’t have to fallback to
packages.debian.org)
So I try to add them to debcargo
packaging, but my envioronment is not yet
correctly set up. So for the moment I just opended an issue with the
debcargo-Team, informing them about my intentions. debcargo#14: RFP: fractal build
deps.
To be continued.