Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fftw fails to compile #551

Closed
mjakl opened this issue Mar 9, 2012 · 21 comments
Closed

fftw fails to compile #551

mjakl opened this issue Mar 9, 2012 · 21 comments
Assignees
Labels
building Build system, or building Julia or its dependencies

Comments

@mjakl
Copy link

mjakl commented Mar 9, 2012

When compiling a recent Julia snapshot, I get this error:

libtool: link: gcc -shared -Wl,--whole-archive kernel/.libs/libkernel.a dft/.libs/libdft.a dft/scalar/.libs/libdft_scalar.a dft/scalar/codelets/.libs/libdft_scalar_codelets.a rdft/.libs/librdft.a rdft/scalar/.libs/librdft_scalar.a rdft/scalar/r2cf/.libs/librdft_scalar_r2cf.a rdft/scalar/r2cb/.libs/librdft_scalar_r2cb.a rdft/scalar/r2r/.libs/librdft_scalar_r2r.a reodft/.libs/libreodft.a api/.libs/libapi.a simd-support/.libs/libsimd_support.a simd-support/.libs/libsimd_sse2_nonportable.a dft/simd/sse2/.libs/libdft_sse2_codelets.a rdft/simd/sse2/.libs/librdft_sse2_codelets.a -Wl,--no-whole-archive -lm -Wl,-rpath -Wl,-soname -Wl,libfftw3f.so.3 -o .libs/libfftw3f.so.3.3.0
/usr/bin/ld: cannot find libfftw3f.so.3: No such file or directory
collect2: ld returned 1 exit status
make[3]: *** [libfftw3f.la] Error 1
make[2]: *** [install-recursive] Error 1
make[1]: *** [/home/JuliaLang/src/julia-build/external/root/lib/libfftw3f.3.so] Error 2
make: *** [julia-release] Error 2

Would it be possible to include a USE_SYSTEM_FFTW for distributions having this problem?

Please also see https://aur.archlinux.org/packages.php?ID=56877

@ghost ghost assigned ViralBShah Mar 10, 2012
@ViralBShah
Copy link
Member

Yes, we should have a USE_SYSTEM_FFTW. I'll take a crack at it unless someone beats me to it. :-)

@ViralBShah
Copy link
Member

Fixed in commit 0d2b254. This was easy. Can you try it out?

@mjakl
Copy link
Author

mjakl commented Mar 10, 2012

FFTW is working fine now. Thank you. Now gmp is having issues, but it seems to be an issues related to Archlinux' build system since issuing the (make) commands directly on the command line works fine. I'll have to dig into that.

@ViralBShah
Copy link
Member

We should have a USE_SYSTEM_GMP as well.

-viral

On 10-Mar-2012, at 6:18 PM, Michael Jakl wrote:

FFTW is working fine now. Thank you. Now gmp is having issues, but it seems to be an issues related to Archlinux' build system since issuing the (make) commands directly on the command line works fine. I'll have to dig into that.


Reply to this email directly or view it on GitHub:
#551 (comment)

ViralBShah added a commit that referenced this issue Mar 10, 2012
@mjakl
Copy link
Author

mjakl commented Mar 10, 2012

Unfortunately, the USE_SYSTEM_GMP switch does not work. The gmp-wrapper depends on the custom compiled gmp and starts the download/compilation (which in turn fails).

@ViralBShah
Copy link
Member

Can you try now? Added a few more USE_SYSTEM_* options also.

-viral

On 11-Mar-2012, at 4:39 AM, Michael Jakl wrote:

Unfortunately, the USE_SYSTEM_GMP switch does not work. The gmp-wrapper depends on the custom compiled gmp and starts the download/compilation (which in turn fails).


Reply to this email directly or view it on GitHub:
#551 (comment)

@mjakl
Copy link
Author

mjakl commented Mar 11, 2012

Thank you, the compilation phase works fine now. Yet, the install phase still searches for the libs and fails:

eposix.so lib/librandom.so lib/liblapack.so lib/libsuitesparse*so lib/libgrisu.so lib/libamos.so /home/mjakl/PersonalProjects/archlinux-JuliaLang/pkg//usr/share/julia/lib
install: cannot stat `lib/libarpack.so': No such file or directory
`lib/libfdm.so' -> `/home/mjakl/PersonalProjects/archlinux-JuliaLang/pkg//usr/share/julia/lib/libfdm.so'
install: cannot stat `lib/libfftw3.so': No such file or directory
install: cannot stat `lib/libfftw3f.so': No such file or directory
install: cannot stat `lib/libpcre.so': No such file or directory
install: cannot stat `lib/libpcrecpp.so': No such file or directory
install: cannot stat `lib/libpcreposix.so': No such file or directory
`lib/librandom.so' -> `/home/mjakl/PersonalProjects/archlinux-JuliaLang/pkg//usr/share/julia/lib/librandom.so'
install: cannot stat `lib/liblapack.so': No such file or directory
`lib/libsuitesparse.so' -> `/home/mjakl/PersonalProjects/archlinux-JuliaLang/pkg//usr/share/julia/lib/libsuitesparse.so'
`lib/libsuitesparse_wrapper.so' -> `/home/mjakl/PersonalProjects/archlinux-JuliaLang/pkg//usr/share/julia/lib/libsuitesparse_wrapper.so'
`lib/libgrisu.so' -> `/home/mjakl/PersonalProjects/archlinux-JuliaLang/pkg//usr/share/julia/lib/libgrisu.so'
`lib/libamos.so' -> `/home/mjakl/PersonalProjects/archlinux-JuliaLang/pkg//usr/share/julia/lib/libamos.so'
make: *** [install] Error 1
==> ERROR: A failure occurred in package().
    Aborting.

I'm using:
USE_SYSTEM_LLVM=1
USE_SYSTEM_READLINE=1
USE_SYSTEM_PCRE=1
USE_SYSTEM_GMP=1
USE_SYSTEM_FFTW=1
USE_SYSTEM_LIBUNWIND=1
USE_SYSTEM_LAPACK=1
USE_SYSTEM_ARPACK=1
USE_SYSTEM_BLAS=1

@ViralBShah
Copy link
Member

Hmm, I don't think I have tested the installation ever with all these Makefile flags. This will take some work. However, you don't really need to use install if you just copy the relevant files, you should be good to go.

-viral

On 11-Mar-2012, at 4:06 PM, Michael Jakl wrote:

Thank you, the compilation phase works fine now. Yet, the install phase still searches for the libs and fails:

eposix.so lib/librandom.so lib/liblapack.so lib/libsuitesparse_so lib/libgrisu.so lib/libamos.so /home/mjakl/PersonalProjects/archlinux-JuliaLang/pkg//usr/share/julia/lib
install: cannot stat lib/libarpack.so': No such file or directory lib/libfdm.so' -> /home/mjakl/PersonalProjects/archlinux-JuliaLang/pkg//usr/share/julia/lib/libfdm.so' install: cannot statlib/libfftw3.so': No such file or directory
install: cannot stat lib/libfftw3f.so': No such file or directory install: cannot statlib/libpcre.so': No such file or directory
install: cannot stat lib/libpcrecpp.so': No such file or directory install: cannot statlib/libpcreposix.so': No such file or directory
lib/librandom.so' ->/home/mjakl/PersonalProjects/archlinux-JuliaLang/pkg//usr/share/julia/lib/librandom.so'
install: cannot stat lib/liblapack.so': No such file or directory lib/libsuitesparse.so' -> /home/mjakl/PersonalProjects/archlinux-JuliaLang/pkg//usr/share/julia/lib/libsuitesparse.so' lib/libsuitesparse_wrapper.so' -> /home/mjakl/PersonalProjects/archlinux-JuliaLang/pkg//usr/share/julia/lib/libsuitesparse_wrapper.so' lib/libgrisu.so' -> /home/mjakl/PersonalProjects/archlinux-JuliaLang/pkg//usr/share/julia/lib/libgrisu.so' lib/libamos.so' -> `/home/mjakl/PersonalProjects/archlinux-JuliaLang/pkg//usr/share/julia/lib/libamos.so'
make: *_* [install] Error 1
==> ERROR: A failure occurred in package().
Aborting.

I'm using:
USE_SYSTEM_LLVM=1
USE_SYSTEM_READLINE=1
USE_SYSTEM_PCRE=1
USE_SYSTEM_GMP=1
USE_SYSTEM_FFTW=1
USE_SYSTEM_LIBUNWIND=1
USE_SYSTEM_LAPACK=1
USE_SYSTEM_ARPACK=1
USE_SYSTEM_BLAS=1


Reply to this email directly or view it on GitHub:
#551 (comment)

@mjakl
Copy link
Author

mjakl commented Mar 11, 2012

I'm trying to get my Archlinux package working again, hence all those USE_SYSTEM flags. As a last resort, I could just copy the files. I'll keep you posted. Thanks for your help!

@mjakl
Copy link
Author

mjakl commented Mar 11, 2012

Replacing line 36 of julia's Makefiles with
>-install -v lib/*.$(SHLIB_EXT) $(DESTDIR)$(PREFIX)/share/julia/lib
works with all those switches.

We need all those libraries in the lib folder, don't we?

@ViralBShah
Copy link
Member

The simplest thing I can think of is something like:

test -f lib/libfoo.$(SHLIB_EXT) && install -v ...

This doesn't work in the Makefile because for files that are not compiled, test returns an error and the make fails. We need a quick fix for this, and a long term fix for the whole external libraries thing.

-viral

On 11-Mar-2012, at 4:06 PM, Michael Jakl wrote:

Thank you, the compilation phase works fine now. Yet, the install phase still searches for the libs and fails:

eposix.so lib/librandom.so lib/liblapack.so lib/libsuitesparse_so lib/libgrisu.so lib/libamos.so /home/mjakl/PersonalProjects/archlinux-JuliaLang/pkg//usr/share/julia/lib
install: cannot stat lib/libarpack.so': No such file or directory lib/libfdm.so' -> /home/mjakl/PersonalProjects/archlinux-JuliaLang/pkg//usr/share/julia/lib/libfdm.so' install: cannot statlib/libfftw3.so': No such file or directory
install: cannot stat lib/libfftw3f.so': No such file or directory install: cannot statlib/libpcre.so': No such file or directory
install: cannot stat lib/libpcrecpp.so': No such file or directory install: cannot statlib/libpcreposix.so': No such file or directory
lib/librandom.so' ->/home/mjakl/PersonalProjects/archlinux-JuliaLang/pkg//usr/share/julia/lib/librandom.so'
install: cannot stat lib/liblapack.so': No such file or directory lib/libsuitesparse.so' -> /home/mjakl/PersonalProjects/archlinux-JuliaLang/pkg//usr/share/julia/lib/libsuitesparse.so' lib/libsuitesparse_wrapper.so' -> /home/mjakl/PersonalProjects/archlinux-JuliaLang/pkg//usr/share/julia/lib/libsuitesparse_wrapper.so' lib/libgrisu.so' -> /home/mjakl/PersonalProjects/archlinux-JuliaLang/pkg//usr/share/julia/lib/libgrisu.so' lib/libamos.so' -> `/home/mjakl/PersonalProjects/archlinux-JuliaLang/pkg//usr/share/julia/lib/libamos.so'
make: *_* [install] Error 1
==> ERROR: A failure occurred in package().
Aborting.

I'm using:
USE_SYSTEM_LLVM=1
USE_SYSTEM_READLINE=1
USE_SYSTEM_PCRE=1
USE_SYSTEM_GMP=1
USE_SYSTEM_FFTW=1
USE_SYSTEM_LIBUNWIND=1
USE_SYSTEM_LAPACK=1
USE_SYSTEM_ARPACK=1
USE_SYSTEM_BLAS=1


Reply to this email directly or view it on GitHub:
#551 (comment)

@ViralBShah
Copy link
Member

Well - we can do without the LLVM libraries, but yes, no harm for the time being.

-viral

On 11-Mar-2012, at 5:24 PM, Michael Jakl wrote:

Replacing line 36 of julia's Makefiles with

> -install -v lib/*.$(SHLIB_EXT) $(DESTDIR)$(PREFIX)/share/julia/lib

Works with all those switches.

We need all those libraries in the lib folder, don't we?


Reply to this email directly or view it on GitHub:
#551 (comment)

@ViralBShah
Copy link
Member

BTW, just out of curiosity, does Archlinux have lapack, arpack-ng, suitesparse etc? What USE_SYSTEM flags did you end up using? Currently, these are all motivated by what is available on Debian. The only ones not in debian are double-conversion, amos, fdlibm, and dsfmt.

-viral

On 11-Mar-2012, at 5:24 PM, Michael Jakl wrote:

Replacing line 36 of julia's Makefiles with

> -install -v lib/*.$(SHLIB_EXT) $(DESTDIR)$(PREFIX)/share/julia/lib

Works with all those switches.

We need all those libraries in the lib folder, don't we?


Reply to this email directly or view it on GitHub:
#551 (comment)

@mjakl
Copy link
Author

mjakl commented Mar 11, 2012

I'm currently compiling using these flags:

    USE_SYSTEM_LLVM=1 \
    USE_SYSTEM_READLINE=1 \
    USE_SYSTEM_PCRE=1 \
    USE_SYSTEM_GMP=1 \
    USE_SYSTEM_LIBUNWIND=1 \
    USE_SYSTEM_FFTW=1 \
    USE_SYSTEM_LAPACK=1 \
    USE_SYSTEM_ARPACK=1 \
    USE_SYSTEM_BLAS=1

With these dependencies from Archlinux:
depends=('llvm' 'readline' 'pcre' 'gcc-fortran' 'fftw' 'gmp' 'lapack' 'blas' 'arpack' 'libunwind')

The versions are currently:

  • LLVM 3.0
  • READLINE 6.2.002
  • PCRE 8.30
  • GMP 5.0.4
  • FORTRAN 4.6.3
  • LIBUNWIND 1.0.1 (only available via the use repository - AUR)
  • FFTW 3.3
  • LAPACK 3.4.0
  • ARPACK 3.1.0
  • BLAS 3.4.0

SuiteSparse is also available via AUR, but did not compile on my machine, hence I'm using the one julia compiles itself.

Thank you very much for all your help. I've been able to update the julia-git package on AUR now (https://aur.archlinux.org/packages.php?ID=56877).

@mjakl
Copy link
Author

mjakl commented Mar 11, 2012

I forgot, double-conversion, amos, fdlibm, and dsfmt aren't available on Archlinux too.

@ViralBShah
Copy link
Member

BTW, looking at the archlinux blas package, it looks like it is using the reference BLAS. Is this the BLAS that julia will also ending up using?

http://www.archlinux.org/packages/extra/i686/blas/

If so, this is likely to be orders of magnitude slower than something like openblas. Unfortunately, currently the blas and lapack in julia are inseparable, and we need some cleanup in the way the libraries are built.

It's a good idea for archlinux to provide openblas, and for julia to depend on that instead at least for platforms that openblas supports. On others, ATLAS may still be faster than reference blas.

-viral

On 11-Mar-2012, at 6:14 PM, Michael Jakl wrote:

I'm currently compiling using these flags:

   USE_SYSTEM_LLVM=1 \
   USE_SYSTEM_READLINE=1 \
   USE_SYSTEM_PCRE=1 \
   USE_SYSTEM_GMP=1 \
   USE_SYSTEM_LIBUNWIND=1 \
   USE_SYSTEM_FFTW=1 \
   USE_SYSTEM_LAPACK=1 \
   USE_SYSTEM_ARPACK=1 \
   USE_SYSTEM_BLAS=1

With these dependencies from Archlinux:
depends=('llvm' 'readline' 'pcre' 'gcc-fortran' 'fftw' 'gmp' 'lapack' 'blas' 'arpack' 'libunwind')

The versions are currently:

  • LLVM 3.0
  • READLINE 6.2.002
  • PCRE 8.30
  • GMP 5.0.4
  • FORTRAN 4.6.3
  • LIBUNWIND 1.0.1 (only available via the use repository - AUR)
  • FFTW 3.3
  • LAPACK 3.4.0
  • ARPACK 3.1.0
  • BLAS 3.4.0

SuiteSparse is also available via AUR, but did not compile on my machine, hence I'm using the one julia compiles itself.

Thank you very much for all your help. I've been able to update the julia-git package on AUR now (https://aur.archlinux.org/packages.php?ID=56877).


Reply to this email directly or view it on GitHub:
#551 (comment)

@mjakl
Copy link
Author

mjakl commented Mar 11, 2012

I see. The BLAS package would indeed be the reference implementation. I've reverted back to using lapack and openblas provided by julia itself.
Thanks again :)

@ViralBShah
Copy link
Member

What happens with ARPACK? Would it link to the Archlinux ARPACK, LAPACK, and BLAS? Sorry, all the stuff that links to BLAS and LAPACK is a bit of a mess right now.

-viral

On 11-Mar-2012, at 6:47 PM, Michael Jakl wrote:

I see. The BLAS package would indeed be the reference implementation. I've reverted back to using lapack and openblas provided by julia itself.
Thanks again :)


Reply to this email directly or view it on GitHub:
#551 (comment)

@ViralBShah
Copy link
Member

It should be ok to use the system arpack, which uses the system lapack and blas for now, because arpack doesn't seem to use level 3 BLAS.

Eventually, though, it's best to have Archlinux include openblas.

-viral

On 11-Mar-2012, at 6:47 PM, Michael Jakl wrote:

I see. The BLAS package would indeed be the reference implementation. I've reverted back to using lapack and openblas provided by julia itself.
Thanks again :)


Reply to this email directly or view it on GitHub:
#551 (comment)

@mjakl
Copy link
Author

mjakl commented Mar 11, 2012

I'd like to integrate julia nicely into the system, but it seems that I'd need to create my own set of arpack, lapack, openblas libs, I think it's OK to use the custom ones directly in julia where necessary.

@ViralBShah
Copy link
Member

I think that is a good idea. We will have more packages that will depend on BLAS. CLP is in the works somewhere, and then there is SuiteSparse already that needs a good BLAS.

-viral

On 11-Mar-2012, at 7:42 PM, Michael Jakl wrote:

I see, I'll look into creating a fitting OpenBLAS package. In the meantime I'll leave arpack as system library.


Reply to this email directly or view it on GitHub:
#551 (comment)

Keno pushed a commit that referenced this issue Oct 9, 2023
also optimize `getproperty` where first argument is a constant module
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
building Build system, or building Julia or its dependencies
Projects
None yet
Development

No branches or pull requests

2 participants