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

Tests fail to link because googletests's library libgtest isn't linked, and because -pthread is missing #2827

Closed
1 of 2 tasks
yurivict opened this issue Apr 22, 2023 · 3 comments
Labels

Comments

@yurivict
Copy link
Contributor

yurivict commented Apr 22, 2023

Summary

Tests fail to build:

-- Build files have been written to: /usr/ports/math/faiss/work/.build
[ 50% 1/2] : && /usr/local/libexec/ccache/c++ -fPIC -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing  -isystem /usr/local/include -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing  -isystem /usr/local/include  -DNDEBUG  -fstack-protector-strong -L/usr/local/lib   -fopenmp=libomp -shared -Wl,-soname,libfaiss.so -o faiss/libfaiss.so faiss/CMakeFiles/faiss.dir/AutoTune.cpp.o faiss/CMakeFiles/faiss.dir/Clustering.cpp.o faiss/CMakeFiles/faiss.dir/IVFlib.cpp.o faiss/CMakeFiles/faiss.dir/Index.cpp.o faiss/CMakeFiles/faiss.dir/Index2Layer.cpp.o faiss/CMakeFiles/faiss.dir/IndexAdditiveQuantizer.cpp.o faiss/CMakeFiles/faiss.dir/IndexBinary.cpp.o faiss/CMakeFiles/faiss.dir/IndexBinaryFlat.cpp.o faiss/CMakeFiles/faiss.dir/IndexBinaryFromFloat.cpp.o faiss/CMakeFiles/faiss.dir/IndexBinaryHNSW.cpp.o faiss/CMakeFiles/faiss.dir/IndexBinaryHash.cpp.o faiss/CMakeFiles/faiss.dir/IndexBinaryIVF.cpp.o faiss/CMakeFiles/faiss.dir/IndexFlat.cpp.o faiss/CMakeFiles/faiss.dir/IndexFlatCodes.cpp.o faiss/CMakeFiles/faiss.dir/IndexHNSW.cpp.o faiss/CMakeFiles/faiss.dir/IndexIDMap.cpp.o faiss/CMakeFiles/faiss.dir/IndexIVF.cpp.o faiss/CMakeFiles/faiss.dir/IndexIVFAdditiveQuantizer.cpp.o faiss/CMakeFiles/faiss.dir/IndexIVFFlat.cpp.o faiss/CMakeFiles/faiss.dir/IndexIVFPQ.cpp.o faiss/CMakeFiles/faiss.dir/IndexIVFFastScan.cpp.o faiss/CMakeFiles/faiss.dir/IndexIVFAdditiveQuantizerFastScan.cpp.o faiss/CMakeFiles/faiss.dir/IndexIVFPQFastScan.cpp.o faiss/CMakeFiles/faiss.dir/IndexIVFPQR.cpp.o faiss/CMakeFiles/faiss.dir/IndexIVFSpectralHash.cpp.o faiss/CMakeFiles/faiss.dir/IndexLSH.cpp.o faiss/CMakeFiles/faiss.dir/IndexNNDescent.cpp.o faiss/CMakeFiles/faiss.dir/IndexLattice.cpp.o faiss/CMakeFiles/faiss.dir/IndexNSG.cpp.o faiss/CMakeFiles/faiss.dir/IndexPQ.cpp.o faiss/CMakeFiles/faiss.dir/IndexFastScan.cpp.o faiss/CMakeFiles/faiss.dir/IndexAdditiveQuantizerFastScan.cpp.o faiss/CMakeFiles/faiss.dir/IndexPQFastScan.cpp.o faiss/CMakeFiles/faiss.dir/IndexPreTransform.cpp.o faiss/CMakeFiles/faiss.dir/IndexRefine.cpp.o faiss/CMakeFiles/faiss.dir/IndexReplicas.cpp.o faiss/CMakeFiles/faiss.dir/IndexRowwiseMinMax.cpp.o faiss/CMakeFiles/faiss.dir/IndexScalarQuantizer.cpp.o faiss/CMakeFiles/faiss.dir/IndexShards.cpp.o faiss/CMakeFiles/faiss.dir/IndexShardsIVF.cpp.o faiss/CMakeFiles/faiss.dir/MatrixStats.cpp.o faiss/CMakeFiles/faiss.dir/MetaIndexes.cpp.o faiss/CMakeFiles/faiss.dir/VectorTransform.cpp.o faiss/CMakeFiles/faiss.dir/clone_index.cpp.o faiss/CMakeFiles/faiss.dir/index_factory.cpp.o faiss/CMakeFiles/faiss.dir/impl/AuxIndexStructures.cpp.o faiss/CMakeFiles/faiss.dir/impl/CodePacker.cpp.o faiss/CMakeFiles/faiss.dir/impl/IDSelector.cpp.o faiss/CMakeFiles/faiss.dir/impl/FaissException.cpp.o faiss/CMakeFiles/faiss.dir/impl/HNSW.cpp.o faiss/CMakeFiles/faiss.dir/impl/NSG.cpp.o faiss/CMakeFiles/faiss.dir/impl/PolysemousTraining.cpp.o faiss/CMakeFiles/faiss.dir/impl/ProductQuantizer.cpp.o faiss/CMakeFiles/faiss.dir/impl/AdditiveQuantizer.cpp.o faiss/CMakeFiles/faiss.dir/impl/ResidualQuantizer.cpp.o faiss/CMakeFiles/faiss.dir/impl/LocalSearchQuantizer.cpp.o faiss/CMakeFiles/faiss.dir/impl/ProductAdditiveQuantizer.cpp.o faiss/CMakeFiles/faiss.dir/impl/ScalarQuantizer.cpp.o faiss/CMakeFiles/faiss.dir/impl/index_read.cpp.o faiss/CMakeFiles/faiss.dir/impl/index_write.cpp.o faiss/CMakeFiles/faiss.dir/impl/io.cpp.o faiss/CMakeFiles/faiss.dir/impl/kmeans1d.cpp.o faiss/CMakeFiles/faiss.dir/impl/lattice_Zn.cpp.o faiss/CMakeFiles/faiss.dir/impl/pq4_fast_scan.cpp.o faiss/CMakeFiles/faiss.dir/impl/pq4_fast_scan_search_1.cpp.o faiss/CMakeFiles/faiss.dir/impl/pq4_fast_scan_search_qbs.cpp.o faiss/CMakeFiles/faiss.dir/impl/NNDescent.cpp.o faiss/CMakeFiles/faiss.dir/invlists/BlockInvertedLists.cpp.o faiss/CMakeFiles/faiss.dir/invlists/DirectMap.cpp.o faiss/CMakeFiles/faiss.dir/invlists/InvertedLists.cpp.o faiss/CMakeFiles/faiss.dir/invlists/InvertedListsIOHook.cpp.o faiss/CMakeFiles/faiss.dir/utils/Heap.cpp.o faiss/CMakeFiles/faiss.dir/utils/WorkerThread.cpp.o faiss/CMakeFiles/faiss.dir/utils/distances.cpp.o faiss/CMakeFiles/faiss.dir/utils/distances_simd.cpp.o faiss/CMakeFiles/faiss.dir/utils/extra_distances.cpp.o faiss/CMakeFiles/faiss.dir/utils/hamming.cpp.o faiss/CMakeFiles/faiss.dir/utils/partitioning.cpp.o faiss/CMakeFiles/faiss.dir/utils/quantize_lut.cpp.o faiss/CMakeFiles/faiss.dir/utils/random.cpp.o faiss/CMakeFiles/faiss.dir/utils/sorting.cpp.o faiss/CMakeFiles/faiss.dir/utils/utils.cpp.o faiss/CMakeFiles/faiss.dir/utils/distances_fused/avx512.cpp.o faiss/CMakeFiles/faiss.dir/utils/distances_fused/distances_fused.cpp.o faiss/CMakeFiles/faiss.dir/utils/distances_fused/simdlib_based.cpp.o faiss/CMakeFiles/faiss.dir/invlists/OnDiskInvertedLists.cpp.o  /usr/local/lib/libopenblas.so  /usr/local/lib/libopenblas.so  -lpthread  -lm  -ldl  /usr/lib/libomp.so && :
[100% 2/2] : && /usr/local/libexec/ccache/c++ -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing  -isystem /usr/local/include -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing  -isystem /usr/local/include  -DNDEBUG -fstack-protector-strong -L/usr/local/lib     -fopenmp=libomp tests/CMakeFiles/faiss_test.dir/test_binary_flat.cpp.o tests/CMakeFiles/faiss_test.dir/test_dealloc_invlists.cpp.o tests/CMakeFiles/faiss_test.dir/test_ivfpq_codec.cpp.o tests/CMakeFiles/faiss_test.dir/test_ivfpq_indexing.cpp.o tests/CMakeFiles/faiss_test.dir/test_lowlevel_ivf.cpp.o tests/CMakeFiles/faiss_test.dir/test_merge.cpp.o tests/CMakeFiles/faiss_test.dir/test_omp_threads.cpp.o tests/CMakeFiles/faiss_test.dir/test_ondisk_ivf.cpp.o tests/CMakeFiles/faiss_test.dir/test_pairs_decoding.cpp.o tests/CMakeFiles/faiss_test.dir/test_params_override.cpp.o tests/CMakeFiles/faiss_test.dir/test_pq_encoding.cpp.o tests/CMakeFiles/faiss_test.dir/test_sliding_ivf.cpp.o tests/CMakeFiles/faiss_test.dir/test_threaded_index.cpp.o tests/CMakeFiles/faiss_test.dir/test_transfer_invlists.cpp.o tests/CMakeFiles/faiss_test.dir/test_mem_leak.cpp.o tests/CMakeFiles/faiss_test.dir/test_cppcontrib_sa_decode.cpp.o tests/CMakeFiles/faiss_test.dir/test_cppcontrib_uintreader.cpp.o tests/CMakeFiles/faiss_test.dir/test_simdlib.cpp.o tests/CMakeFiles/faiss_test.dir/test_approx_topk.cpp.o tests/CMakeFiles/faiss_test.dir/test_RCQ_cropping.cpp.o -o tests/faiss_test  -Wl,-rpath,/usr/ports/math/faiss/work/.build/faiss  faiss/libfaiss.so  -lgtest_main  /usr/lib/libomp.so && cd /usr/ports/math/faiss/work/.build/tests && /usr/local/bin/cmake -D TEST_TARGET=faiss_test -D TEST_EXECUTABLE=/usr/ports/math/faiss/work/.build/tests/faiss_test -D TEST_EXECUTOR= -D TEST_WORKING_DIR=/usr/ports/math/faiss/work/.build/tests -D TEST_EXTRA_ARGS= -D TEST_PROPERTIES= -D TEST_PREFIX= -D TEST_SUFFIX= -D TEST_FILTER= -D NO_PRETTY_TYPES=FALSE -D NO_PRETTY_VALUES=FALSE -D TEST_LIST=faiss_test_TESTS -D CTEST_FILE=/usr/ports/math/faiss/work/.build/tests/faiss_test[1]_tests.cmake -D TEST_DISCOVERY_TIMEOUT=5 -D TEST_XML_OUTPUT_DIR= -P /usr/local/share/cmake/Modules/GoogleTestAddTests.cmake
FAILED: tests/faiss_test tests/faiss_test[1]_tests.cmake /usr/ports/math/faiss/work/.build/tests/faiss_test[1]_tests.cmake 
: && /usr/local/libexec/ccache/c++ -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing  -isystem /usr/local/include -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing  -isystem /usr/local/include  -DNDEBUG -fstack-protector-strong -L/usr/local/lib     -fopenmp=libomp tests/CMakeFiles/faiss_test.dir/test_binary_flat.cpp.o tests/CMakeFiles/faiss_test.dir/test_dealloc_invlists.cpp.o tests/CMakeFiles/faiss_test.dir/test_ivfpq_codec.cpp.o tests/CMakeFiles/faiss_test.dir/test_ivfpq_indexing.cpp.o tests/CMakeFiles/faiss_test.dir/test_lowlevel_ivf.cpp.o tests/CMakeFiles/faiss_test.dir/test_merge.cpp.o tests/CMakeFiles/faiss_test.dir/test_omp_threads.cpp.o tests/CMakeFiles/faiss_test.dir/test_ondisk_ivf.cpp.o tests/CMakeFiles/faiss_test.dir/test_pairs_decoding.cpp.o tests/CMakeFiles/faiss_test.dir/test_params_override.cpp.o tests/CMakeFiles/faiss_test.dir/test_pq_encoding.cpp.o tests/CMakeFiles/faiss_test.dir/test_sliding_ivf.cpp.o tests/CMakeFiles/faiss_test.dir/test_threaded_index.cpp.o tests/CMakeFiles/faiss_test.dir/test_transfer_invlists.cpp.o tests/CMakeFiles/faiss_test.dir/test_mem_leak.cpp.o tests/CMakeFiles/faiss_test.dir/test_cppcontrib_sa_decode.cpp.o tests/CMakeFiles/faiss_test.dir/test_cppcontrib_uintreader.cpp.o tests/CMakeFiles/faiss_test.dir/test_simdlib.cpp.o tests/CMakeFiles/faiss_test.dir/test_approx_topk.cpp.o tests/CMakeFiles/faiss_test.dir/test_RCQ_cropping.cpp.o -o tests/faiss_test  -Wl,-rpath,/usr/ports/math/faiss/work/.build/faiss  faiss/libfaiss.so  -lgtest_main  /usr/lib/libomp.so && cd /usr/ports/math/faiss/work/.build/tests && /usr/local/bin/cmake -D TEST_TARGET=faiss_test -D TEST_EXECUTABLE=/usr/ports/math/faiss/work/.build/tests/faiss_test -D TEST_EXECUTOR= -D TEST_WORKING_DIR=/usr/ports/math/faiss/work/.build/tests -D TEST_EXTRA_ARGS= -D TEST_PROPERTIES= -D TEST_PREFIX= -D TEST_SUFFIX= -D TEST_FILTER= -D NO_PRETTY_TYPES=FALSE -D NO_PRETTY_VALUES=FALSE -D TEST_LIST=faiss_test_TESTS -D CTEST_FILE=/usr/ports/math/faiss/work/.build/tests/faiss_test[1]_tests.cmake -D TEST_DISCOVERY_TIMEOUT=5 -D TEST_XML_OUTPUT_DIR= -P /usr/local/share/cmake/Modules/GoogleTestAddTests.cmake
ld: error: undefined symbol: testing::AssertionSuccess()
>>> referenced by test_binary_flat.cpp
>>>               tests/CMakeFiles/faiss_test.dir/test_binary_flat.cpp.o:(BinaryFlat_accuracy_Test::TestBody())
>>> referenced by test_dealloc_invlists.cpp
>>>               tests/CMakeFiles/faiss_test.dir/test_dealloc_invlists.cpp.o:((anonymous namespace)::test_dealloc_invlists(char const*))
>>> referenced by test_ivfpq_codec.cpp
>>>               tests/CMakeFiles/faiss_test.dir/test_ivfpq_codec.cpp.o:(IVFPQ_codec_Test::TestBody())
>>> referenced 692 more times

ld: error: undefined symbol: testing::Message::Message()
>>> referenced by test_binary_flat.cpp
>>>               tests/CMakeFiles/faiss_test.dir/test_binary_flat.cpp.o:(BinaryFlat_accuracy_Test::TestBody())
>>> referenced by test_dealloc_invlists.cpp
>>>               tests/CMakeFiles/faiss_test.dir/test_dealloc_invlists.cpp.o:((anonymous namespace)::test_dealloc_invlists(char const*))
>>> referenced by test_ivfpq_codec.cpp
>>>               tests/CMakeFiles/faiss_test.dir/test_ivfpq_codec.cpp.o:(IVFPQ_codec_Test::TestBody())
>>> referenced 929 more times

Adding -lgtest corrects this problem.

Then it fails like this:

ld: error: undefined symbol: pthread_create
>>> referenced by test_lowlevel_ivf.cpp

... so -pthread also needs to be added.

Platform

OS: FreeBSD 13.2

Faiss version: 1.7.4 (1.7.3 had the same problem)

Installed from: source

Interface:

  • C++
  • Python
@mdouze
Copy link
Contributor

mdouze commented Apr 24, 2023

Thanks for the report.
We do not provide explicit support for FreeBSD, but it is useful to keep this for reference.

@mdouze mdouze added the install label Apr 24, 2023
@mdouze mdouze closed this as completed Apr 24, 2023
@yurivict
Copy link
Contributor Author

It would fail the same way on any system - there's nothing FreeBSD-specific in this issue.

@mdouze
Copy link
Contributor

mdouze commented Apr 24, 2023

no it doesn't otherwise tests would not pass ;-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants