Control: tags -1 + patch

Hi Andreas,

Le mercredi 29 novembre 2023 à 10:06 +0100, Andreas Tille a écrit :
> Control: tags -1 help
> 
> Am Fri, Jul 14, 2023 at 01:40:22AM +0200 schrieb Sébastien Villemot:
> > Le lundi 10 juillet 2023 à 22:01 +0200, Andreas Tille a écrit :
> > > I've checked my responsibility for the dependencies and stumbled about
> > > emmax
> > > 
> > > 
> > > emmax.c:10:10: fatal error: clapack.h: No such file or directory
> > >    10 | #include <clapack.h>
> > >       |          ^~~~~~~~~~~
> > > compilation terminated.
> > > ...
> > 
> > clapack.h is apparently an early attempt at providing a C interface to
> > some LAPACK functions (which are in Fortran). It indeed looks ATLAS-
> > specific.
> > 
> > The modern solution for that problem is to use LAPACKE (note the final
> > “E”), which is provided by liblapacke-dev. It is a standardized and
> > maintained C interface to all LAPACK routines.
> > 
> > I guess it should be feasible to adapt emmax to make it work with
> > LAPACKE.
> 
> I tried to do so in Salsa.  Unfortunately LAPACKE is not a drop in
> replacement and I'm lacking the necessary knowledge about all these
> LAPACK implementations.  For instance I have no idea how to fix the
> error you can see in Salsa CI[1] which has
> 
> ...
> emmax.c: In function 'dsyevd':
> emmax.c:1633:17: error: conflicting types for 'dsyevd_'; have 'void(char *, 
> char *, int *, double *, int *, double *, double *, int *, int *, int *, int 
> *)'
>  1633 |   extern  void  dsyevd_ (char *JOBZp, char *UPLOp, int *Np,
>       |                 ^~~~~~~
> In file included from /usr/include/lapack.h:11,
>                  from emmax.c:10:
> /usr/include/lapack.h:17096:6: note: previous declaration of 'dsyevd_' with 
> type 'void(const char *, const char *, const int32_t *, double *, const 
> int32_t *, double *, double *, const int32_t *, int32_t *, const int32_t *, 
> int32_t *, size_t,  size_t)' {aka 'void(const char *, const char *, const int 
> *, double *, const int *, double *, double *, const int *, int *, const int 
> *, int *, long unsigned int,  long unsigned int)'}
> 17096 | void LAPACK_dsyevd_base(
>       |      ^~~~~~~~~~~~~~~~~~
> emmax.c: In function 'dsyevr':
> emmax.c:1652:17: error: conflicting types for 'dsyevr_'; have 'void(char *, 
> char *, char *, int *, double *, int *, double *, double *, int *, int *, 
> double *, int *, double *, double *, int *, int *, double *, int *, int *, 
> int *, int *)'
>  1652 |   extern  void  dsyevr_ (char *JOBZp, char *RANGEp, char *UPLOp, int 
> *Np,
>       |                 ^~~~~~~
> 
> Looking at the last line of this snippet (line 901 in the linked CI
> log[1]) the parameter char *RANGEp is not part of the declaration of
> LAPACK_dsyevd_base given in line 17096 of /usr/include/lapack.h.
> 
> I admit this is hard to solve for me and I would love if someone
> with some knowledge of LAPACK could provide some patch.  A similar
> issue exists for dgetrf.
> 
> Any help would be appreciated.

I opened a merge request that completes the migration away from ATLAS:

 https://salsa.debian.org/med-team/emmax/-/merge_requests/1

Best,

-- 
⢀⣴⠾⠻⢶⣦⠀  Sébastien Villemot
⣾⠁⢠⠒⠀⣿⡁  Debian Developer
⢿⡄⠘⠷⠚⠋⠀  https://sebastien.villemot.name
⠈⠳⣄⠀⠀⠀⠀  https://www.debian.org

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to