Opened 7 years ago

Closed 7 years ago

Last modified 7 years ago

#54552 closed defect (fixed)

LLVM Issue [ Cannot select: intrinsic %llvm.x86.sse.cvtpi2ps ] when installing volk

Reported by: har5ha Owned by: michaelld (Michael Dickens)
Priority: Normal Milestone:
Component: ports Version: 2.4.1
Keywords: lion Cc:
Port: volk

Description

I am having the following problem when trying to install volk (which is a dependency for installing Gqrx)

I would be very grateful if somebody could point me in the right direction.

Thanks in Advance!

OS : Mac OSX : 10.7.5 [Lion]

Macports : 2.4.1

:info:build cd /macports/var/macports/build/_macports_var_macports_sources_rsync.macports.org_release_tarballs_ports_science_volk/volk/work/build/lib && /usr/bin/clang -DHAVE_CPUID_H -DHAVE_DLFCN_H -DHAVE_FENV_H -DHAVE_POSIX_MEMALIGN -DHAVE_XGETBV -D_GLIBCXX_USE_CXX11_ABI=1 -I/macports/var/macports/build/_macports_var_macports_sources_rsync.macports.org_release_tarballs_ports_science_volk/volk/work/build/include -I/macports/var/macports/build/_macports_var_macports_sources_rsync.macports.org_release_tarballs_ports_science_volk/volk/work/volk-1.3/include -I/macports/var/macports/build/_macports_var_macports_sources_rsync.macports.org_release_tarballs_ports_science_volk/volk/work/volk-1.3/kernels -I/macports/var/macports/build/_macports_var_macports_sources_rsync.macports.org_release_tarballs_ports_science_volk/volk/work/build/lib -I/macports/var/macports/build/_macports_var_macports_sources_rsync.macports.org_release_tarballs_ports_science_volk/volk/work/volk-1.3/lib -I/macports/include/orc-0.4 -I/macports/include  -pipe -Os -Wall -fvisibility=hidden -DNDEBUG -arch x86_64 -mmacosx-version-min=10.7   -fPIC -m64 -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mpopcnt -mavx -o CMakeFiles/volk_obj.dir/volk_machine_avx_64_mmx_orc.c.o   -c /macports/var/macports/build/_macports_var_macports_sources_rsync.macports.org_release_tarballs_ports_science_volk/volk/work/build/lib/volk_machine_avx_64_mmx_orc.c
:info:build fatal error: error in backend: Cannot select: intrinsic %llvm.x86.sse.cvtpi2ps
:info:build make[2]: *** [lib/CMakeFiles/volk_obj.dir/volk_machine_avx_64_mmx_orc.c.o] Error 1
:info:build make[2]: *** Waiting for unfinished jobs....
:info:build make[2]: Leaving directory `/macports/var/macports/build/_macports_var_macports_sources_rsync.macports.org_release_tarballs_ports_science_volk/volk/work/build'
:info:build make[1]: *** [lib/CMakeFiles/volk_obj.dir/all] Error 2
:info:build make[1]: Leaving directory `/macports/var/macports/build/_macports_var_macports_sources_rsync.macports.org_release_tarballs_ports_science_volk/volk/work/build'
:info:build make: *** [all] Error 2
:info:build make: Leaving directory `/macports/var/macports/build/_macports_var_macports_sources_rsync.macports.org_release_tarballs_ports_science_volk/volk/work/build'
:info:build Command failed:  cd "/macports/var/macports/build/_macports_var_macports_sources_rsync.macports.org_release_tarballs_ports_science_volk/volk/work/build" && /usr/bin/make -j4 -w all VERBOSE=ON
:info:build Exit code: 2
:error:build Failed to build volk: command execution failed
:debug:build Error code: CHILDSTATUS 44578 2
:debug:build Backtrace: command execution failed
:debug:build     while executing
:debug:build "system {*}$notty {*}$nice $fullcmdstring"
:debug:build     invoked from within
:debug:build "command_exec build"
:debug:build     (procedure "portbuild::build_main" line 8)
:debug:build     invoked from within
:debug:build "$procedure $targetname"
:error:build See /macports/var/macports/logs/_macports_var_macports_sources_rsync.macports.org_release_tarballs_ports_science_volk/volk/main.log for details.

Attachments (2)

main.log (182.2 KB) - added by har5ha 7 years ago.
volk main.log
volk.build.10.7.with.cxx11-11-Portgroup.txt (566.8 KB) - added by kencu (Ken) 7 years ago.
volk successful build with cxx11 1.1 PortGroup (but lots of errors)

Download all attachments as: .zip

Change History (14)

Changed 7 years ago by har5ha

Attachment: main.log added

volk main.log

comment:1 Changed 7 years ago by mf2k (Frank Schima)

Cc: jeremyhu larryv removed
Keywords: lion added
Owner: set to michaelld
Port: volk added; llvm-4.0 removed
Status: newassigned

In the future, please fill in the Port field with the port that actually fails to build and Cc that port's maintainers (port info --maintainers volk), if any.

comment:2 Changed 7 years ago by michaelld (Michael Dickens)

What does /usr/bin/clang --version return? Also, what's the actual commandline you used to try to do this install?

comment:3 in reply to:  2 Changed 7 years ago by har5ha

Replying to michaelld:

What does /usr/bin/clang --version return? Also, what's the actual commandline you used to try to do this install?

$ /usr/bin/clang --version                                                                                                                 
Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
Target: x86_64-apple-darwin11.4.2
Thread model: posix

The command I used to install GQRX :

$ sudo port install gqrx

and it fails while installing volk which is a dependency for installing gqrx.

I tried

$ sudo port clean volk 

$ sudo port install volk

got the same result.

Thanks in advance!.

Last edited 7 years ago by har5ha (previous) (diff)

comment:4 Changed 7 years ago by kencu (Ken)

hmm. I got a different error on 10.7:

[ 91%] Linking C shared library libvolk.dylib
cd /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_volk/volk/work/build/lib && /opt/local/bin/cmake -E cmake_link_script CMakeFiles/volk.dir/link.txt --verbose=ON
/usr/bin/clang -pipe -Os -Wall -fvisibility=hidden -DNDEBUG -arch x86_64 -mmacosx-version-min=10.7 -dynamiclib -Wl,-headerpad_max_install_names -Wl,-headerpad_max_install_names -compatibility_version 1.3.0 -o libvolk.1.3.dylib -install_name /opt/local/lib/libvolk.1.3.dylib CMakeFiles/volk_obj.dir/volk_16ic_deinterleave_16i_x2_a_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_16ic_deinterleave_real_8i_a_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_16ic_magnitude_16i_a_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_16ic_s32f_deinterleave_32f_x2_a_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_16sc_magnitude_32f_aligned16_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_16u_byteswap_a_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_32f_s32f_multiply_32f_a_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_32f_s32f_normalize_a_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_32f_sqrt_32f_a_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_32f_x2_add_32f_a_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_32f_x2_divide_32f_a_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_32f_x2_dot_prod_32f_a_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_32f_x2_max_32f_a_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_32f_x2_min_32f_a_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_32f_x2_multiply_32f_a_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_32f_x2_subtract_32f_a_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_32fc_32f_multiply_32fc_a_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_32fc_magnitude_32f_a_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_32fc_s32f_magnitude_16i_a_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_32fc_s32fc_multiply_32fc_a_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_32fc_x2_multiply_32fc_a_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_32i_x2_and_32i_a_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_32i_x2_or_32i_a_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_8i_convert_16i_a_orc_impl.c.o CMakeFiles/volk_obj.dir/volk_8i_s32f_convert_32f_a_orc_impl.c.o CMakeFiles/volk_obj.dir/constants.c.o CMakeFiles/volk_obj.dir/volk_prefs.c.o CMakeFiles/volk_obj.dir/volk_rank_archs.c.o CMakeFiles/volk_obj.dir/volk_malloc.c.o CMakeFiles/volk_obj.dir/volk.c.o CMakeFiles/volk_obj.dir/volk_cpu.c.o CMakeFiles/volk_obj.dir/volk_machines.c.o CMakeFiles/volk_obj.dir/volk_machine_generic_orc.c.o CMakeFiles/volk_obj.dir/volk_machine_sse2_64_mmx_orc.c.o CMakeFiles/volk_obj.dir/volk_machine_sse3_64_mmx_orc.c.o CMakeFiles/volk_obj.dir/volk_machine_ssse3_64_mmx_orc.c.o CMakeFiles/volk_obj.dir/volk_machine_sse4_a_64_mmx_orc.c.o CMakeFiles/volk_obj.dir/volk_machine_sse4_1_64_mmx_orc.c.o CMakeFiles/volk_obj.dir/volk_machine_sse4_2_64_mmx_orc.c.o -Wl,-rpath,/opt/local/lib /opt/local/lib/liborc-0.4.dylib 
Undefined symbols for architecture x86_64:
  "___cpuid_count", referenced from:
      _i_can_has_avx2 in volk_cpu.c.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [lib/libvolk.1.3.dylib] Error 1
make[2]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_volk/volk/work/build'
make[1]: *** [lib/CMakeFiles/volk.dir/all] Error 2
make[1]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_volk/volk/work/build'
make: *** [all] Error 2
make: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_volk/volk/work/build'
Command failed:  cd "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_volk/volk/work/build" && /usr/bin/make -j2 -w all VERBOSE=ON 
Exit code: 2
Error: Failed to build volk: command execution failed
Error: See /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_science_volk/volk/main.log for details.
Error: Follow https://guide.macports.org/#project.tickets to report a bug.
Error: Processing of port volk failed

which was fixed by adding:

PortGroup cxx11 1.1

which resulted in build success:

$ port -v installed volk
The following ports are currently installed:
  volk @1.3_0+docs+orc (active) platform='darwin 11' archs='x86_64' date='2017-08-02T15:08:26+0200'

There were a lot of warnings. I'll put up the build log for you.

Changed 7 years ago by kencu (Ken)

volk successful build with cxx11 1.1 PortGroup (but lots of errors)

comment:5 Changed 7 years ago by michaelld (Michael Dickens)

Yeah; hmmm; OK. I'm guessing that the default compiler is too old. Moving to the cxx11 1.1 PortGroup should solve the issue, but technically should not be required. The Volk CMake script should be smart enough to detect intrinsics & compiler features ... but, clearly it's failing here. I think I'll just move to using the cxx11 1.1 PortGroup since it's an easy fix & deal with non-MP builds when they come up.

comment:6 Changed 7 years ago by michaelld (Michael Dickens)

In b9d3e619570e51d8fb9010ad3a5318c8616ebcba/macports-ports:

volk*: use cxx11 1.1 PortGroup for more robust compilation

Although Volk does not technically require C++11, forcing the use of modern compilers reduces build failures. Also, it will require C++11 in the future, so let's just get on the bandwagon early. Addresses ticket #54552 .

comment:7 Changed 7 years ago by michaelld (Michael Dickens)

@har5ha : Please do the following and report back:

sudo port selfupdate
sudo port clean volk*
sudo port install volk

This might take a while because it will try to install macports-clang-4.0 to use as the compiler instead of that provided by Xcode.

comment:8 Changed 7 years ago by kencu (Ken)

FWIW, I saw this in the config, which led me to the cxx11 1.1 PortGroup:

-D_GLIBCXX_USE_CXX11_ABI=1

comment:9 in reply to:  6 Changed 7 years ago by har5ha

Replying to michaelld:

In b9d3e619570e51d8fb9010ad3a5318c8616ebcba/macports-ports:

volk*: use cxx11 1.1 PortGroup for more robust compilation

Although Volk does not technically require C++11, forcing the use of modern compilers reduces build failures. Also, it will require C++11 in the future, so let's just get on the bandwagon early. Addresses ticket #54552 .


Is there something that as a user, I need to do with regards to cxx11 1.1 PortGroup or is it just for Port maintainers?.

TIA

PS: Nevermind I saw that you have included the following in the newer version of the port file [.../var/macports/sources/rsync.macports.org/release/tarballs/ports/science/volk]

# although Volk does not technically require C++11, forcing the use of
# modern compilers reduces build failures. Also, it will require C++11
# in the future, so let's just get on the bandwagon early.
PortGroup           cxx11 1.1
Last edited 7 years ago by har5ha (previous) (diff)

comment:10 Changed 7 years ago by michaelld (Michael Dickens)

I started writing this before your edit. I'll post it anyway as is.

There's nothing you need to do about PortGroups. We use them for common code, shared between multiple ports. In this case, the cxx11 1.1 PortGroup changes the compiler to one that supports C++11 compliance. For your specific Mac OS X version, the compiler should end up being "macports-clang-4.0", or the clang-4.0 port.

Thus, when you do a "sudo port selfupdate" if this clang-4.0 port is not yet installed, it will be -- and, that takes quite a bit of compile time.

Hope this helps!

comment:11 in reply to:  7 Changed 7 years ago by har5ha

Replying to michaelld:

@har5ha : Please do the following and report back:

sudo port selfupdate
sudo port clean volk
sudo port install volk

This might take a while because it will try to install macports-clang-4.0 to use as the compiler instead of that provided by Xcode.

Successfully! installed volk. Thanks! for all the help @michaelld and @kencu

Last edited 7 years ago by har5ha (previous) (diff)

comment:12 Changed 7 years ago by michaelld (Michael Dickens)

Resolution: fixed
Status: assignedclosed

Great & you're welcome! Thanks for reporting back.

Note: See TracTickets for help on using tickets.