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