0

The fact

I have got metis 5.1.0 installed on a desktop running on Ubuntu 12.04 LTS.

Recently I compiled a piece of software in parallel configuration that could not find the file /opt/metis/metis-5.1.0/lib/libmetis.a and threw a fatal error.

This looks weird to me because all was fine with an earlier version of the same software and with the existing metis installation.

Disappearance of libmetis.a

I have evidence that libmetis.a had been installed, though, from the stderr+stout files of the first metis installation. For example from somewhere in the output of make install I can see:

/usr/bin/cmake -P cmake_install.cmake -- Install configuration: "" -- Installing: /opt/metis/metis-5.1.0/include/metis.h -- Installing: /opt/metis/metis-5.1.0/lib/libmetis.a -- Installing: /opt/metis/metis-5.1.0/bin/gpmetis

Therefore some action must have deleted libmetis.a at some point. I have no recollection or clue of which action could have done this.

Reinstallation of metis

I then reinstalled the same version of metis by running the very same script that I used the first time. The procedure is

sudo make uninstall sudo make clean sudo make config prefix=/opt/metis/metis-5.1.0 shared=1 cc=gcc gdb=1 debug=1 sudo make sudo make install

The corresponding lines in the stdout+sterr have changed though

/usr/local/bin/cmake -P cmake_install.cmake -- Install configuration: "" -- Installing: /opt/metis/metis-5.1.0/include/metis.h -- Installing: /opt/metis/metis-5.1.0/lib/libmetis.so -- Installing: /opt/metis/metis-5.1.0/bin/gpmetis

Comparison

  • cmake lives on another path. I can't recall a reason for this. I do confirm that currently cmake is installed in /usr/local/bin/cmake and that /usr/bin/cmake does not exist any longer. Either way, the version of cmake has been 3.3.1 ever since (I believe).
  • libmetis.so gets installed instead of libmetis.a.
  • Comparing the old and new stderr+stdout of the make install line by line, I see that cmake has been engaged in the first installation a great deal more. Unfortunately I have overwritten the files of the first installation and cannot provide more detail.

Summary

To summarize the changes I noted are

  • the static library libmetis.a disappeared (blind spot why/how/when)
  • cmake is displaced (blind splot why/how/when)
  • a copycat installation of metis leads to shared-object library libmetis.so rather than libmetis.a, perhaps after a different usage of cmake. I look at that shared=1 in the config command suspiciously, but had worked with scripts with an intention to repeat all operations faithfully. (Though not always are good intentions coded down correctly.)

The aim is to have the libmetis.a file in place again, as requested by parallel software down the line.

Any suggestions tips and pieces of wisdom to fix this issue? Thanks in advance for thinking along.

usr1234567
  • 21,601
  • 16
  • 108
  • 128
XavierStuvw
  • 1,294
  • 2
  • 15
  • 30
  • If you a free to change `metis` sources, try to find remove `shared=1` option from configuration call. Or find `add_library(metis)` command (in one of `CMakeLists.txt` files, probably in top-level one) and add `STATIC` keyword to it. If correctly written, scripts probably will work correctly with such modification. – Tsyvarev Dec 03 '15 at 18:06
  • Pass `BUILD_SHARED_LIBS` with the right value to CMake. – usr1234567 Dec 04 '15 at 07:39

0 Answers0