Re: Build-Depends-If-Available
On Sun, Aug 09, 2020 at 03:22:20PM +0100, Barak A. Pearlmutter wrote:
> I'm maintaining mlpack. It is able to generate julia bindings, so on
> architectures in which julia is available I'd like to generate julia
> bindings, and this requires julia to be installed at build time. I've
> set up debian/rules to check if julia is installed, and set
> configuration options appropriately. Similarly, it seems best to build
> the package using clang if possible, but if clang isn't available it
> can be built using GCC (assuming you build single threaded and roughly
> six hundred mysterious GCC space-saving options are set).
>
> I thought I could accomplish this with build dependencies like
>
> Build-Depends: julia | hello, ..., clang | buthead
>
> where hello and buthead are stupid little packages that are available
> on all architectures but would not otherwise be installed. Ugly, sure,
> but maybe it would get the job done. Nope! The build daemons just try
> to install julia and clang and fail if either's not available. I've
> also seen
>
> Build-Depends: julia | dpkg, ..., clang | dpkg
>
> but that also doesn't work.
>
> I could check which architectures have julia, and which have clang,
> and list them.
>
> Build-Depends: julia [amd64 arm64 i386 ...], clang [amd64 arm64 armel
> armhf i386 ...]
>
> but that makes my skin crawl because it is highly non-future-proof and
> violates all sorts of software engineering principles.
>
> Anybody know if there's a good solution to this problem?
>
A slightly less bad approach might be:
Build-Depends: julia [!<arch1> !<arch2> ...], clang [!<arch1> !<arch2> ...]
Regards,
-Roberto
--
Roberto C. Sánchez
Reply to: