Source: e2fsprogs
Version: 1.47.1-1
Severity: important
User: helm...@debian.org
Usertags: rebootstrap
X-Debbugs-Cc: jo...@debian.org

e2fsprogs gained a build dependency on libarchive-dev recently. The
added functionality is super useful, but the added dependency comes with
a problem attached. src:libarchive happens to build depend on
libext2fs-dev and there we have a cycle. Since this is a library
dependency in each direction, it fully affects cross bootstrap.

I see a few options. One is adding a pkg.e2fsprogs.nolibarchive build
profile that disables this new dependency and allows building e2fsprogs
without, then building libarchive and then building a full e2fsprogs.
>From my point of view, this works, but it is annoying as the tooling
doesn't deal with build profiles in a great way and we also incur more
build time here slowing down architecture bootstrap.

How about separating the availability of libarchive from the interest in
supporting libarchive? Since it is runtime-loaded using dlopen,
e2fsprogs already carries the prototypes for most libarchive functions
and doesn't actually need to #include them. What it does not yet do is
carry forward declarations "struct archive;" and "struct
archive_entry;". Adding these would likely allow building e2fsprogs with
libarchive support, but without using libarchive-dev at build time. Of
course #including it is a good idea to locate problems, so in the common
case, we'd want to actually use it. What I am effectively proposing here
is adding another --with-libarchive value that should produce the same
binary result as --with-libarchive=yes (dlopen), but work without any
access to libarchive headers. Then, libarchive-dev could be annotated
<!nocheck> and all regular builds would remain unchanged.

Helmut

Reply via email to