Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 246521 - Using sci-libs/mkl as blas implementation, R and gsl compiles fail in ld phase
Summary: Using sci-libs/mkl as blas implementation, R and gsl compiles fail in ld phase
Status: RESOLVED OBSOLETE
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Library (show other bugs)
Hardware: x86 Linux
: High normal (vote)
Assignee: Gentoo Science Mathematics related packages
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-11-12 18:25 UTC by Andre
Modified: 2019-08-08 01:30 UTC (History)
4 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
Patch to blas-mkl-gfortran-threads.pc, reversing linking order for -liomp5 and -lpthreads. (blas-mkl-gfortran-threads.pc.patch,489 bytes, patch)
2009-03-25 21:23 UTC, Chris Larson
Details | Diff
Patch to cblas-mkl-gfortran-threads.pc, reversing link order for -liomp5 and -lpthreads. (cblas-mkl-gfortran-threads.pc.patch,387 bytes, patch)
2009-03-25 21:24 UTC, Chris Larson
Details | Diff
Patch to lapack-mkl-gfortran-threads.pc, reversing link order for -liomp5 and -lpthreads. (lapack-mkl-gfortran-threads.pc.patch,390 bytes, patch)
2009-03-25 21:26 UTC, Chris Larson
Details | Diff
Patch to allow gsl compilation with mkl-10.0.5.025 (gsl-1.12-cblas.patch,16.51 KB, patch)
2009-08-15 03:39 UTC, Chris Larson
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Andre 2008-11-12 18:25:40 UTC
Using mkl-gfortran-threads as blas, cblas and lapack library, R and gsl fail in the ld phase. This error is robust against different versions of mkl, gcc, R and gsl. 

I cannot rule out that this relates to Bug #233932, but do not think so. 

The error when compiling R:

i686-pc-linux-gnu-gcc -std=gnu99 -Wl,--export-dynamic  -o R.bin Rmain.o -L../../lib -lR 
/opt/intel/mkl/10.0.5.025/lib/32/libiomp5.so: undefined reference to `pthread_atfork'
collect2: ld returned 1 exit status
make[3]: *** [R.bin] Error 1
make[3]: Leaving directory `/var/tmp/portage/dev-lang/R-2.7.2/work/R-2.7.2/src/main'
make[2]: *** [R] Error 2
make[2]: Leaving directory `/var/tmp/portage/dev-lang/R-2.7.2/work/R-2.7.2/src/main'
make[1]: *** [R] Error 1
make[1]: Leaving directory `/var/tmp/portage/dev-lang/R-2.7.2/work/R-2.7.2/src'
make: *** [R] Error 1
 * 
 * ERROR: dev-lang/R-2.7.2 failed.
 * Call stack:
 *               ebuild.sh, line   49:  Called src_compile
 *             environment, line 3336:  Called die
 * The specific snippet of code:
 *       emake || die "emake failed";
 *  The die message:
 *   emake failed

And in gsl:

i686-pc-linux-gnu-gcc -O2 -march=i686 -pipe -o .libs/gsl-randist gsl-randist.o -Wl,--no-as-needed  ./.libs/libgsl.so -L/opt/intel/mkl/10.0.5.025/lib/32 -lmkl_gf -lmkl_gnu_thread -lmkl_core -liomp5 -lpthread -lm 
i686-pc-linux-gnu-gcc -O2 -march=i686 -pipe -o .libs/gsl-histogram gsl-histogram.o -Wl,--no-as-needed  ./.libs/libgsl.so -L/opt/intel/mkl/10.0.5.025/lib/32 -lmkl_gf -lmkl_gnu_thread -lmkl_core -liomp5 -lpthread -lm 
//opt/intel/mkl/10.0.5.025/lib/32/libmkl_gnu_thread.so: undefined reference to `_gfortran_malloc'
/opt/intel/mkl/10.0.5.025/lib/32/libmkl_gnu_thread.so: undefined reference to `_gfortran_free'
collect2: ld returned 1 exit status
opt/intel/mkl/10.0.5.025/lib/32/make[2]: libmkl_gnu_thread.so*** [gsl-randist] Error 1: undefined reference to `_gfortran_malloc'
/opt/intel
/mkl/10.0.5.025/lib/32/libmkl_gnu_thread.so: make[2]: undefined*** Waiting for unfinished jobs.... 
reference to `_gfortran_free'
collect2: ld returned 1 exit status
make[2]: *** [gsl-histogram] Error 1
make[2]: Leaving directory `/var/tmp/portage/sci-libs/gsl-1.11/work/gsl-1.11'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/tmp/portage/sci-libs/gsl-1.11/work/gsl-1.11'
make: *** [all] Error 2
 * 
 * ERROR: sci-libs/gsl-1.11 failed.
 * Call stack:
 *               ebuild.sh, line   49:  Called src_compile
 *             environment, line 2831:  Called die
 * The specific snippet of code:
 *       emake || die "emake failed"
 *  The die message:
 *   emake failed


Reproducible: Always

Steps to Reproduce:
1. eselect {blas|cblas|lapack} mkl-gfortran-threads
2. emerge {gsl|R}


Actual Results:  
Compilation dies with ld exit status 1

Expected Results:  
Compile Fine

My emerge --info:

Portage 2.2_rc14 (default-linux/x86/2007.0/desktop, gcc-4.1.2, glibc-2.6.1-r0, 2.6.25.17 i686)
=================================================================
System uname: Linux-2.6.25.17-i686-Intel-R-_Pentium-R-_4_CPU_3.00GHz-with-glibc2.0
Timestamp of tree: Wed, 12 Nov 2008 14:00:01 +0000
app-shells/bash:     3.2_p33
dev-java/java-config: 1.3.7, 2.1.6
dev-lang/python:     2.5.2-r7
dev-util/cmake:      2.4.6-r1
sys-apps/baselayout: 1.12.11.1
sys-apps/sandbox:    1.2.18.1-r2
sys-devel/autoconf:  2.13, 2.61-r2
sys-devel/automake:  1.4_p6, 1.7.9-r1, 1.9.6-r2, 1.10.1-r1
sys-devel/binutils:  2.18-r3
sys-devel/gcc-config: 1.4.0-r4
sys-devel/libtool:   1.5.26
virtual/os-headers:  2.6.23-r3
ACCEPT_KEYWORDS="x86"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-O2 -march=i686 -pipe"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /var/lib/hsqldb"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/init.d /etc/revdep-rebuild /etc/terminfo /etc/texmf/web2c /etc/udev/rules.d /usr/share/X11"
CXXFLAGS="-O2 -march=i686 -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="distlocks parallel-fetch preserve-libs protect-owned sandbox sfperms strict unmerge-orphans userfetch"
GENTOO_MIRRORS="http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo"
LDFLAGS=""
MAKEOPTS="-j3"
PKGDIR="/usr/portage/packages"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="X acpi alsa bash-completion berkdb blas bzip2 cairo cdr cli cracklib crypt cups curl dri dvd dvdr dvdread emacs emboss encode evo fftw firefox fortran ftp gdbm gif glib gnutls gpm gtk gtk2 iconv ipv6 isdnlog java jpeg lapack latex mad midi mikmod mmx mp3 mpeg mudflap mysql ncurses nptl nptlonly nsplugin ogg opengl openmp oss pcre pdf perl png posix ppds pppd python qt4 quicktime readline reflection sdl session spl sse ssl svg tcpd tetex tiff truetype unicode vim-syntax vorbis win32codecs wmf x86 xml xorg xv zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1         emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m       maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="mouse keyboard" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" USERLAND="GNU" VIDEO_CARDS="intel"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, LANG, LC_ALL, LINGUAS, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PORTDIR_OVERLAY
Comment 1 Wormo (RETIRED) gentoo-dev 2008-11-13 05:58:08 UTC
Bug 233932 concerns the method of specifying blas flags when compiling user programs, so you are right that these broken emerges are a separate (though not unrelated) issue. 

These packages are not linking with -lpthread. Looking at the R configure script, I see certain supported blas implementations with extra libraries specified, but mkl is not called out as a known implementation... so it doesn't get to have any extra libraries (such as pthread).

Assigning to maintainers of these ebuilds.
Comment 2 Robert Wynne 2008-11-14 17:35:01 UTC
Same error trying to compile R and gsl, but different setup.

emerge --info
Portage 2.2_rc14 (default/linux/amd64/2008.0, gcc-4.3.2, glibc-2.8_p20080602-r0, 2.6.27-gentoo-r2 x86_64)
=================================================================
System uname: Linux-2.6.27-gentoo-r2-x86_64-Intel-R-_Xeon-R-_CPU_X5482_@_3.20GHz-with-glibc2.2.5
Timestamp of tree: Fri, 14 Nov 2008 14:05:01 +0000
ccache version 2.4 [enabled]
app-shells/bash:     3.2_p39
dev-java/java-config: 1.3.7, 2.1.6-r1
dev-lang/python:     2.5.2-r8
dev-util/ccache:     2.4-r8
dev-util/cmake:      2.6.2
sys-apps/baselayout: 2.0.0
sys-apps/openrc:     0.3.0-r1
sys-apps/sandbox:    1.2.18.1-r3
sys-devel/autoconf:  2.13, 2.63
sys-devel/automake:  1.5, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10.1-r1
sys-devel/binutils:  2.19
sys-devel/gcc-config: 1.4.0-r4
sys-devel/libtool:   2.2.6a
virtual/os-headers:  2.6.27-r2
ACCEPT_KEYWORDS="amd64 ~amd64"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-mtune=core2 -march=core2 -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /opt/openjms/config /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/config"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/eselect/postgresql /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/terminfo /etc/texmf/web2c /etc/udev/rules.d"
CXXFLAGS="-mtune=core2 -march=core2 -O2 -pipe"
DISTDIR="/usr/portage/distfiles"
EMERGE_DEFAULT_OPTS=""
FEATURES="ccache distlocks metadata-transfer parallel-fetch preserve-libs protect-owned sandbox sfperms strict unmerge-orphans userfetch userpriv usersandbox"
GENTOO_MIRRORS="http://mirror.datapipe.net/gentoo http://gentoo.osuosl.org http://distfiles.gentoo.org http://www.ibiblio.org/pub/Linux/distributions/gentoo"
INSTALL_MASK=""
LDFLAGS="-Wl,-O1 -Wl,--sort-common -s"
LINGUAS="en en_US en_GB"
MAKEOPTS="-j12"
PKGDIR="/usr/portage/packages"
PORTAGE_RSYNC_EXTRA_OPTS=""
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="R X Xaw3d a52 aac aalib acl acpi akode alsa amd64 apm arts atm audiofile automount avahi bash-completion berkdb bidi bindist bl blas bluetooth bzip2 cairo caps cblas cddb cdio cdparanoia cli clisp consolekit cracklib crypt cscope cups curl dbus dga disk-partition djvu dmx doc dri drm dv dvb emacs encode esd examples exif expat ffmpeg fftw flac fontconfig fortran gcdmaster gd gdbm ggi gif gimp glep glib gmp gnutls gphoto2 gpm gs gstreamer gtk gtk+ gtkhtml guile hal hddtemp hfs html iconv ieee1394 imagemagick imlib ipv6 isdnlog jack java javascript jbig jpeg jpeg2k kde kdehiddenvisibility kerberos lapack latex lcms ldap libcaca libedit libffi libsamplerate lirc lm_sensors lzo mad midi mikmod mime mmap mmx mmxext mng mono motif mp2 mp3 mp3rtp mpeg mplayer mudflap multilib mysql mzscheme nas ncurses nis nls nptl nptlonly nsplugin nvidia ocaml octave odbc ogg openal openexr opengl openmp oss pam pccts pch pcre pda pdf perl plotutils png pnm postgres povray ppds pppd pulseaudio pvr python qt3 qt3support qt4 quicktime radius rar readline reflection rle ruby samba scanner sdl seamonkey sensord session slang sndfile snmp soundfile speex spell spl sqlite srt sse sse2 ssl ssse3 svg swat sysfs tcl tcpd test tga theora tiff timidity tk truetype unicode usb utils v4l v4l2 vcd vorbis wavpack winbind wxwindows x264 xattr xemacs xface xforms xine xinerama xml xorg xpm xprint xscreensaver xv xvid xvmc yv12 zlib" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CAMERAS="adc65 agfa_cl20 aox barbie canon casio_qv clicksmart310 digigr8 digita dimagev dimera3500 directory               enigma13 fuji gsmart300 hp215 iclick jamcam jd11 kodak_dc120 kodak_dc210 kodak_dc240 kodak_dc3200                 kodak_ez200 konica konica_qm150 largan lg_gsm mars mustek panasonic_coolshot panasonic_dc1000                     panasonic_dc1580 panasonic_l859 pccam300 pccam600 polaroid_pdc320 polaroid_pdc640 polaroid_pdc700 ptp2            ricoh ricoh_g3 samsung sierra sipix_blink sipix_blink2 sipix_web2 smal sonix sony_dscf1 sony_dscf55               soundvision spca50x sq905 stv0674 stv0680 sx330z template topfield toshiba_pdrm11" ELIBC="glibc" INPUT_DEVICES="evdev keyboard mouse aiptek wacom" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="en en_US en_GB" LIRC_DEVICES="accent act200l act220l adaptec all alsa_usb animax asusdh atilibusb atiusb audio audio_alsa                       avermedia avermedia98 avermedia_vdomate bestbuy bestbuy2 breakoutbox bte bw6130 caraca chronos                    cmdir cph06x creative creative_infracd devinput digimatrix dsp dvico ea65 exaudio flyvideo                        gvbctv5pci hauppauge hauppauge_dvb hercules_smarttv_stereo igorplugusb imon imon_knob imon_lcd                    imon_pad imon_pad2keys imon_rsc inputlirc irdeo irdeo_remote irman irreal it87 knc_one kworld                     leadtek_0007 leadtek_0010 leadtek_pvr2000 livedrive_midi livedrive_seq logitech macmini mceusb                    mceusb2 mediafocusI mouseremote mouseremote_ps2 mp3anywhere nslu2 packard_bell parallel pcmak                     pcmak_usb pctv pixelview_bt878 pixelview_pak pixelview_pro provideo realmagic remote_wonder_plus                  remotemaster sa1100 sasem sb0540 serial serial_igor_cesko silitek sir slinke streamzap tekram                     tekram_bt829 tira ttusbir tuxbox tvbox udp uirt2 uirt2_raw usb_uirt_raw usbirboy usbx userspace                   xboxusb" USERLAND="GNU" VIDEO_CARDS="nvidia v4l vesa vmware"
Unset:  CPPFLAGS, CTARGET, FFLAGS, LANG, LC_ALL, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS
Comment 3 juantxorena@gmail.com 2009-01-03 22:08:17 UTC
I'm facing the same problem. I've found this in the r-devel mailing list:
https://stat.ethz.ch/pipermail/r-devel/2008-February/048267.html

I haven't tried anything yet, but it seems related.
Comment 4 juantxorena@gmail.com 2009-01-03 22:38:10 UTC
And for gsl, there is bug #246389
Comment 5 juantxorena@gmail.com 2009-01-04 10:06:51 UTC
The my previous R post don't fix anything, at least here.

@ Robert Wynne, since you have >gcc-4.2* installed, could you please install mkl with fortran95 USE flag and try this again?
Comment 6 juantxorena@gmail.com 2009-02-10 21:05:24 UTC
So?
Comment 7 Andre 2009-02-23 13:43:24 UTC
Jumping in for Robert, I switched to gcc-4.3.2 and re-emerged mkl with fortran95.
Compiling R and gsl still fail, and with identical errors. 

I hope this is the appropriate answer to your inquiry. 
Sorry for the delay.
Comment 8 Chris Larson 2009-03-25 21:15:57 UTC
(In reply to comment #7)
> Jumping in for Robert, I switched to gcc-4.3.2 and re-emerged mkl with
> fortran95.
> Compiling R and gsl still fail, and with identical errors. 
> 
> I hope this is the appropriate answer to your inquiry. 
> Sorry for the delay.
> 

Using:
dev-lang/R-2.8.1
sci-libs/mkl-10.0.5.025

I was able to fix the pthread_atfork problem by reversing "-liomp5 -lpthread" in the following three files:

/opt/intel/mkl/10.0.5.025/lib/32/lapack-mkl-gfortran-threads.pc /opt/intel/mkl/10.0.5.025/lib/32/cblas-mkl-gfortran-threads.pc /opt/intel/mkl/10.0.5.025/lib/32/blas-mkl-gfortran-threads.pc

So, to be clear, wherever I found "-liomp5 -lpthread", I switched the positions to "-lpthread -liomp5":

/opt/intel/mkl/10.0.5.025/lib/32/blas-mkl-gfortran-threads.pc:
Libs: -Wl,--no-as-needed -L${libdir} -lmkl_gf -lmkl_gnu_thread -lmkl_core -lpthread -liomp5

/opt/intel/mkl/10.0.5.025/lib/32/cblas-mkl-gfortran-threads.pc:
Libs: -Wl,--no-as-needed -L${libdir} -lmkl_gf -lmkl_gnu_thread -lmkl_core -lpthread -liomp5

/opt/intel/mkl/10.0.5.025/lib/32/lapack-mkl-gfortran-threads.pc:
Libs: -Wl,--no-as-needed -L${libdir} -lmkl_gf -lmkl_gnu_thread -lmkl_core -lmkl_lapack -lpthread -liomp

I'll try to pop some patches up in a minute, here.

Chris
Comment 9 Chris Larson 2009-03-25 21:23:20 UTC
Created attachment 186262 [details, diff]
Patch to blas-mkl-gfortran-threads.pc, reversing linking order for -liomp5 and -lpthreads.

Patch to blas-mkl-gfortran-threads.pc, reversing link order for -liomp5 and -lpthreads ("-liomp5 -lpthreads" becomes "-lpthreads -liomp5"). This cleans up some undefined reference issues, such as pthread_atfork.
Comment 10 Chris Larson 2009-03-25 21:24:27 UTC
Created attachment 186263 [details, diff]
Patch to cblas-mkl-gfortran-threads.pc, reversing link order for -liomp5 and -lpthreads.

Patch to cblas-mkl-gfortran-threads.pc, reversing link order for -liomp5 and -lpthreads ("-liomp5 -lpthreads" becomes "-lpthreads -liomp5"). This cleans up some undefined reference issues, such as pthread_atfork.
Comment 11 Chris Larson 2009-03-25 21:26:25 UTC
Created attachment 186264 [details, diff]
Patch to lapack-mkl-gfortran-threads.pc, reversing link order for -liomp5 and -lpthreads.

Patch to lapack-mkl-gfortran-threads.pc, reversing link order for -liomp5 and -lpthreads ("-liomp5 -lpthreads" becomes "-lpthreads -liomp5"). This cleans up some undefined reference issues, such as pthread_atfork.
Comment 12 Andre 2009-03-26 10:33:53 UTC
I can confirm that the patches allow to build R-2.8.1. Thanks!

The gsl build still fails, and with the same error, apart
from the obvious reordering of -liopm5 and -lpthreads,
so no change on that one.
Comment 13 Andre 2009-04-29 10:07:37 UTC
An update WRT gsl: The current stable 1.12 dies on an unsuccessful package check
already:

checking cblas.h usability... no
checking cblas.h presence... no
checking for cblas.h... no
configure: error:
                *** Header file cblas.h not found.
                *** If you installed cblas header in a non standard place,
                *** specify its install prefix using the following option
                ***  --with-cblas-cflags="-I<include_dir>"

!!! Please attach the following file when seeking support:
!!! /var/tmp/portage/sci-libs/gsl-1.12/work/gsl-1.12/config.log
 * 
 * ERROR: sci-libs/gsl-1.12 failed.
 * Call stack:
 *               ebuild.sh, line   49:  Called src_configure
 *             environment, line 2939:  Called econf '--with-cblas'
 *               ebuild.sh, line  527:  Called die
 * The specific snippet of code:
 *                      die "econf failed"
 *  The die message:
 *   econf failed

This is a bit odd, as the link to the header file is in /usr/include:
# ls -l /usr/include/cblas.h 
lrwxrwxrwx 1 root root 45 Mar 10 18:56 /usr/include/cblas.h -> /opt/intel/mkl/10.0.5.025/include/mkl_cblas.h

Comment 14 Chris Larson 2009-08-06 19:04:34 UTC
Any chance of getting these patches into portage?

We're four months down the road, and i still have to patch the .pc thread files if I rebuild.

Thanks.

(In reply to comment #13)
> An update WRT gsl: The current stable 1.12 dies on an unsuccessful package
> check
> already:
> 
> checking cblas.h usability... no
> checking cblas.h presence... no
> checking for cblas.h... no
> configure: error:
>                 *** Header file cblas.h not found.
>                 *** If you installed cblas header in a non standard place,
>                 *** specify its install prefix using the following option
>                 ***  --with-cblas-cflags="-I<include_dir>"
> 
> !!! Please attach the following file when seeking support:
> !!! /var/tmp/portage/sci-libs/gsl-1.12/work/gsl-1.12/config.log
>  * 
>  * ERROR: sci-libs/gsl-1.12 failed.
>  * Call stack:
>  *               ebuild.sh, line   49:  Called src_configure
>  *             environment, line 2939:  Called econf '--with-cblas'
>  *               ebuild.sh, line  527:  Called die
>  * The specific snippet of code:
>  *                      die "econf failed"
>  *  The die message:
>  *   econf failed
> 
> This is a bit odd, as the link to the header file is in /usr/include:
> # ls -l /usr/include/cblas.h 
> lrwxrwxrwx 1 root root 45 Mar 10 18:56 /usr/include/cblas.h ->
> /opt/intel/mkl/10.0.5.025/include/mkl_cblas.h
> 

Comment 15 Chris Larson 2009-08-15 03:28:58 UTC
Andre,

In the config.log file, I think you'll find that it isn't actually cblas.h that's missing. It's /usr/include/mkl_types.h. If you create that link, it should get past that problem at least.

Try:

ln -s /opt/intel/mkl/10.0.5.025/include/mkl_types.h /usr/include/mkl_types.h

That one had me stumped for a good while.

Chris

(In reply to comment #13)
> An update WRT gsl: The current stable 1.12 dies on an unsuccessful package
> check
> already:
> 
> checking cblas.h usability... no
> checking cblas.h presence... no
> checking for cblas.h... no
> configure: error:
>                 *** Header file cblas.h not found.
>                 *** If you installed cblas header in a non standard place,
>                 *** specify its install prefix using the following option
>                 ***  --with-cblas-cflags="-I<include_dir>"
> 
> !!! Please attach the following file when seeking support:
> !!! /var/tmp/portage/sci-libs/gsl-1.12/work/gsl-1.12/config.log
>  * 
>  * ERROR: sci-libs/gsl-1.12 failed.
>  * Call stack:
>  *               ebuild.sh, line   49:  Called src_configure
>  *             environment, line 2939:  Called econf '--with-cblas'
>  *               ebuild.sh, line  527:  Called die
>  * The specific snippet of code:
>  *                      die "econf failed"
>  *  The die message:
>  *   econf failed
> 
> This is a bit odd, as the link to the header file is in /usr/include:
> # ls -l /usr/include/cblas.h 
> lrwxrwxrwx 1 root root 45 Mar 10 18:56 /usr/include/cblas.h ->
> /opt/intel/mkl/10.0.5.025/include/mkl_cblas.h
> 

Comment 16 Chris Larson 2009-08-15 03:36:14 UTC
Andre,

Think I've solved this one. I'll post the patch file that I changed, but in a nutshell, you need to create the mkl_types.h link mentioned in comment #15 and make a one line change in the patch file:

/usr/portage/sci-libs/gsl/files/gsl-1.12-cblas.patch

Basically, I replaced line 7 of that file which reads:

+  use_cblas_libs="-lcblas -lblas"

with:

+  use_cblas_libs="-L/opt/intel/mkl/10.0.5.025/lib/32 -liomp5 -lpthread -lcblas -lblas"

I'm sure there is a better way to patch the thing, but after trying many, many possible things, this is the shortest route to success I've found.

All the best,

Chris

This (In reply to comment #12)
> I can confirm that the patches allow to build R-2.8.1. Thanks!
> 
> The gsl build still fails, and with the same error, apart
> from the obvious reordering of -liopm5 and -lpthreads,
> so no change on that one.
> 

Comment 17 Chris Larson 2009-08-15 03:39:00 UTC
Created attachment 201296 [details, diff]
Patch to allow gsl compilation with mkl-10.0.5.025

See comments #15 and higher.
Comment 18 Andre 2009-08-18 18:34:37 UTC
Hi Chris,

thank you for working on this. Introducing the link to mkl_types.h, gsl compiles fine already. I do not actually require the patch.
Apologies for being ignorant, but what is it supposed to fix apart from the
compilation?  

Thanks, Andre
Comment 19 Chris Larson 2009-08-18 21:41:42 UTC
Andre,

You're very welcome. Glad to do it.

To compile on my machine, I needed to add:

-L/opt/intel/mkl/10.0.5.025/lib/32 -liomp5 -lpthread

to the "use_cblas_libs=" line in file gsl-1.12/acx_cblas.m4 (line 7 of the patch) in order to compile. Could it be that you are using mkl non-threaded? libiomp5 and libpthread, as I understand it, or only needed for 'mkl-gfortran-threads,' and not for the 'mkl-gfortran' implementation.

Actually, to be completely accurate, I'm using mkl-10.1.1.019 with the ebuild from bug 260810, but as far as I can tell, there's no substantial difference between the two.

Cheers,

Chris

(In reply to comment #18)
> Hi Chris,
> 
> thank you for working on this. Introducing the link to mkl_types.h, gsl
> compiles fine already. I do not actually require the patch.
> Apologies for being ignorant, but what is it supposed to fix apart from the
> compilation?  
> 
> Thanks, Andre
> 

Comment 20 Benda Xu gentoo-dev 2019-08-08 01:30:16 UTC
Hi, please use sci-libs/mkl-rt[eselect-ldso] in tree.