Installation fails with "No rule to make target `man/archive'"

The C UUID libraries are a notorious problem. There are multiple and they have incompatible interfaces. We are looking for “ossp-uuid”. This does exist for most Linux distros, but under various names and if you find the right package name the actual libraries and headers may be named differently from distro to distro and they may also be defined in several locations :frowning:

So, you’ll have to do some searching and possibly adjustments to packages/clib/cmake/FindLibUUID.cmake which provides the code to find the library. If you (or someone else with OpenSUSE) manages to figure it out, please provide a PR or send a description here how it works.

Note that SWI-Prolog provides a pure Prolog implementation of part of the UUID library, so missing this library is typically not too bad. Prolog itself also doesn’t need it.

I did manage to finish the build. the package that has Development files for OSSP uuid is “uuid-devel”.
What I did to resolve the cmake complain was to install the “uuid-devel” and add the following line: set(LIBUUID_INCLUDE_DIR "/usr/include/ossp") in packages/clib/cmake/FindLibUUID file.

What puzzles me now is that the SWI-Prolog GUI ‘swipl-win’ after running check_installation. tells me that tcmalloc … not present, but when I run check_installation. in the SWI-Prolog cli ‘swipl’ it tells me that Congratulations, your kit seems sound and complete! and all libraries are installed when checked from the cli unlike the GUI.

You can do that also from the command line

cmake -DLIBUUID_INCLUDE_DIR=/usr/include/ossp

Normally the configuration is done using the utility uuid-config. Is that not present in the OpenSUSE version or is it installed somewhere else?

That is normal. Maybe this should be suppressed. linking to tcmalloc must be done in the main program and is only done for swipl as the advantages are mostly relevant to multi threaded server applications. Standard glibc ptmalloc results in poor memory reuse in e.g. Prolog based web servers. It is not very likely that people will run 24x7 web servers from the GUI application :slight_smile:

I did not locate the uuid-config where it always located? I am still learning.

I don’t know. There should be some way to list the files from the uuid-devel package. Ubuntu has this file simply in /usr/bin. Maybe OpenSUSE doesn’t have it or installs it elsewhere. For example in Ubuntu we can do

> dpkg -L libossp-uuid-dev
/.
/usr
/usr/bin
/usr/bin/uuid-config
/usr/include
/usr/include/ossp
/usr/include/ossp/uuid++.hh
/usr/include/ossp/uuid.h
/usr/lib
/usr/lib/pkgconfig
/usr/lib/pkgconfig/ossp-uuid.pc
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/libossp-uuid++.a
/usr/lib/x86_64-linux-gnu/libossp-uuid.a
/usr/share
/usr/share/doc
/usr/share/doc/libossp-uuid-dev
/usr/share/doc/libossp-uuid-dev/copyright
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/libossp-uuid-dev
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/uuid-config.1.gz
/usr/share/man/man3
/usr/share/man/man3/uuid++.3ossp.gz
/usr/share/man/man3/uuid.3ossp.gz
/usr/lib/x86_64-linux-gnu/libossp-uuid++.so
/usr/lib/x86_64-linux-gnu/libossp-uuid.so
/usr/share/doc/libossp-uuid-dev/changelog.Debian.gz

You can do an exhaustive search of your file system using something like this:

find / -xdev -name uuid-config 2>/dev/null

Or, the locate command could be used. (I’m assuming that type uuid-config or which uuid-config finds nothing). If you know the file’s name, you can find the package, e.g.:

$ find / -xdev -name uuid-config 2>/dev/null
/usr/bin/uuid-config
$ dpkg -S /usr/bin/uuid-config
libossp-uuid-dev:amd64: /usr/bin/uuid-config

(I ran these commands on Debian)

1 Like