Hi Helmut, Rafael,

On Mon, Jul 29, 2019 at 00:15:39 +0200, Rafael Laboissière wrote:
> * Helmut Grohne <hel...@subdivi.de> [2019-07-28 22:32]:
> 
> >  Package: liboctave-dev
> >  Version: 4.4.1-6
> >  Tags: patch
> >  User: debian-cr...@lists.debian.org
> >  Usertags: cross-satisfiability
> >  Control: affects -1 + src:mathgl
> > 
> > mathgl fails to satisfy its cross Build-Depends, because its dependency
> > on liboctave-dev is not satisfiable. liboctave-dev depends on toolchain
> > packages such as gcc, g++ or gfortran. This is very unusual. Most
> > commonly, C-libraries can depend on other C-libraries, but users are
> > expected to install their desired toolchain themselves. These
> > dependencies need toolchain dependency translation in order to work for
> > cross building. Unfortunately, toolchain dependency translation is not
> > yet implemented. Thus I think removing these dependencies is required. I
> > looked into debian/changelog for why they were added and couldn't find a
> > reason. Can we simply drop them?
> 
> I think that the reason is historical.  At least since version 2.1.64-3,
> released 14 years ago, g++ and g77 | fort77 appear as dependencies of
> octave2.1-headers. [1] The package octave2.1-headers is the predecessor of
> liboctave-dev.

I think the reason for the dependency is because liboctave-dev also
ships /usr/bin/mkoctfile, which is a wrapper for gcc|g++|gfortran to
compile Octave extensions. Users install liboctave-dev and expect to be
able to run mkoctfile to build native .mex or .oct files.

One solution may be to introduce a new package, say 'octave-dev-tools',
that would ship /usr/bin/mkoctfile and Depends: liboctave-dev. This
might allow the possibility of cross-building with liboctave-dev. This
would have a large impact on documentation, FAQs, and other accumulated
knowledge that tells users to install 'liboctave-dev' to be able to
compile and install packages.

I want to also mention that liboctave-dev includes a small number of
header files in /usr/include that are generated and include
arch-specific contents:

    usr/include/octave-5.1.0/octave/mxarray.h
    usr/include/octave-5.1.0/octave/octave-config.h
    usr/include/octave-5.1.0/octave/version.h

Does this require any specific handling with respect to multi-arch and
cross-building?

-- 
mike

Attachment: signature.asc
Description: PGP signature

Reply via email to