conan-io / conan

Conan - The open-source C and C++ package manager
https://conan.io
MIT License
8.3k stars 986 forks source link

[bug] CMakeDeps for Autotools based package does not contain library #17193

Closed maichmueller closed 1 month ago

maichmueller commented 1 month ago

Describe the bug

I have generated a conanfile recipe for a 3rd-party dependency nauty which uses autotools to configure and build. My recipe is straightforward. It pulls the source archive of the lib, and delegates the work to the conan autotools abstractions:

from conan import ConanFile
from conan.tools.files import get
from conan.tools.gnu import AutotoolsToolchain, Autotools, PkgConfig

class NautyRecipe(ConanFile):
    name = "nauty"
    version = "2.8.8"
    package_type = "static-library"
    settings = "os", "compiler", "build_type", "arch"
    generators = ["CMakeDeps", "CMakeToolchain"]

    options = {
        "fPIC": [True, False],
    }

    default_options = {
        "fPIC": True,
    }

    def source(self):
        get(
            self,
            "https://users.cecs.anu.edu.au/~bdm/nauty/nauty2_8_8.tar.gz",
            strip_root=True,
        )

    def configure(self):
        if self.settings.os == "Windows":
            self.options.rm_safe("fPIC")

    def build(self):
        ac = Autotools(self)
        ac.configure()
        ac.make()

    def generate(self):
        tc = AutotoolsToolchain(self)
        tc.configure_args.append("--enable-tls")
        tc.generate()

    def package(self):
        ac = Autotools(self)
        ac.install()

    def package_info(self):
        pkg_config = PkgConfig(
            self,
            "nauty",
            pkg_config_path=f"{self.package_folder}/libdata/pkgconfig",
        )
        pkg_config.fill_cpp_info(self.cpp_info, is_system=False)
        print(self.cpp_info.libs)

This works and builds the package just fine with conan create . --build=missing (although it seems to always rebuild the package, despite having a fitting one in the cache):

Conan Log ``` ======== Exporting recipe to the cache ======== nauty/2.8.8: Exporting package recipe: /work/rleap1/michael.aichmueller/github/mimir/dependencies/nauty/conanfile.py nauty/2.8.8: Copied 1 '.py' file: conanfile.py nauty/2.8.8: Exported to cache folder: /u/michael.aichmueller/.conan2/p/nauty60959c4ac2870/e nauty/2.8.8: Exported: nauty/2.8.8#2f55b9f554b0462fcbac4864c4889310 (2024-10-21 10:51:01 UTC) ======== Input profiles ======== Profile host: [settings] arch=x86_64 build_type=Release compiler=gcc compiler.cppstd=20 compiler.libcxx=libstdc++11 compiler.version=11 os=Linux Profile build: [settings] arch=x86_64 build_type=Release compiler=gcc compiler.cppstd=20 compiler.libcxx=libstdc++11 compiler.version=11 os=Linux ======== Computing dependency graph ======== Graph root cli Requirements nauty/2.8.8#2f55b9f554b0462fcbac4864c4889310 - Cache ======== Computing necessary packages ======== nauty/2.8.8: Compatible package ID b7dafdee21a50513ab60fce9725ed9189e8c7101 equal to the default package ID: Skipping it. nauty/2.8.8: Checking 11 compatible configurations nauty/2.8.8: Compatible configurations not found in cache, checking servers nauty/2.8.8: '423a2d3ca3d52314a7aaee4083c9bb328a630ed0': compiler.cppstd=98 nauty/2.8.8: '99f0f9166779c80a0d0fbfd6368a143cb50549a9': compiler.cppstd=gnu98 nauty/2.8.8: '6f065afdbdd8993f2c406a0c1f18783e0c20c6f0': compiler.cppstd=11 nauty/2.8.8: '1c18facc49f479676235188124a26eb7bea553d4': compiler.cppstd=gnu11 nauty/2.8.8: 'dd09ae7f0de48e2f38110b0b73449c556789c519': compiler.cppstd=14 nauty/2.8.8: '5ecd8535fa1aba7887fb2bdb27e50b13a0518f62': compiler.cppstd=gnu14 nauty/2.8.8: 'e49894dbdecadcada99ecd7d1f2cdf98fecabae0': compiler.cppstd=17 nauty/2.8.8: '8ba5d903e072964e1ffb5590dcb6e372bbaa0442': compiler.cppstd=gnu17 nauty/2.8.8: '9c308f205ed868a17b0982ea5cc90bf6ce4c828e': compiler.cppstd=gnu20 nauty/2.8.8: '065cc280ebc0eb269834034226612c73d4e7e06a': compiler.cppstd=23 nauty/2.8.8: 'bd4a311fd5c8de54e073542035d146f3f182903e': compiler.cppstd=gnu23 Requirements nauty/2.8.8#2f55b9f554b0462fcbac4864c4889310:b7dafdee21a50513ab60fce9725ed9189e8c7101 - Build ======== Installing packages ======== nauty/2.8.8: Calling source() in /u/michael.aichmueller/.conan2/p/nauty60959c4ac2870/s -------- Installing package nauty/2.8.8 (1 of 1) -------- nauty/2.8.8: Building from source nauty/2.8.8: Package nauty/2.8.8:b7dafdee21a50513ab60fce9725ed9189e8c7101 nauty/2.8.8: Copying sources to build folder nauty/2.8.8: Building your package in /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/b nauty/2.8.8: Writing generators to /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/b nauty/2.8.8: Generator 'CMakeDeps' calling 'generate()' nauty/2.8.8: Generator 'CMakeToolchain' calling 'generate()' nauty/2.8.8: CMakeToolchain generated: conan_toolchain.cmake nauty/2.8.8: CMakeToolchain generated: /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/b/CMakePresets.json nauty/2.8.8: Calling generate() nauty/2.8.8: Generators folder: /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/b nauty/2.8.8: Generating aggregated env files nauty/2.8.8: Generated aggregated env files: ['conanbuild.sh', 'conanrun.sh'] nauty/2.8.8: Calling build() nauty/2.8.8: RUN: "/u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/b/configure" --disable-shared --enable-static --prefix=/ '--bindir=${prefix}/bin' '--sbindir=${prefix}/bin' '--libdir=${prefix}/lib' '--includedir=${prefix}/include' '--oldincludedir=${prefix}/include' --enable-tls configure: WARNING: unrecognized options: --disable-shared, --enable-static checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking for special C compiler options needed for large files... no checking for _FILE_OFFSET_BITS value needed for large files... no checking for sys/wait.h that is POSIX.1 compatible... yes checking how to run the C preprocessor... gcc -E checking for grep that handles long lines and -e... /usr/bin/grep checking for egrep... /usr/bin/grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking signal.h usability... yes checking signal.h presence... yes checking for signal.h... yes checking stddef.h usability... yes checking stddef.h presence... yes checking for stddef.h... yes checking for unistd.h... (cached) yes checking for sys/types.h... (cached) yes checking for sys/wait.h... (cached) yes checking for stdlib.h... (cached) yes checking for string.h... (cached) yes checking errno.h usability... yes checking errno.h presence... yes checking for errno.h... yes checking limits.h usability... yes checking limits.h presence... yes checking for limits.h... yes checking for stdint.h... (cached) yes checking for pid_t... yes checking whether ftell is declared... yes checking whether popen is declared... yes checking whether fdopen is declared... yes checking whether putenv is declared... yes checking whether setenv is declared... yes checking whether malloc is declared... yes checking if compiler accepts flexible array members... 1 checking if INFINITY is declared in math.h... 1 checking size of int... 4 checking size of long... 8 checking size of long long... 8 checking size of void*... 8 checking size of __uint128_t... 16 checking size of unsigned __int128... 16 checking for isatty... yes checking for time... yes checking for gettimeofday... yes checking for clock_gettime... yes checking for clock... yes checking for times... yes checking for getrusage... yes checking for perror... yes checking for pipe... yes checking for wait... yes checking for popen... yes checking for putenv... yes checking for setenv... yes checking vfork.h usability... no checking vfork.h presence... no checking for vfork.h... no checking for fork... yes checking for vfork... yes checking for working fork... yes checking for working vfork... (cached) yes checking for fseeko... yes checking for sigaction... yes checking for sigprocmask... yes checking if popcnt instruction is available and requested... 1 checking if __builtin_popcount() is supported... 1 checking if __builtin_popcountl() is supported... 1 checking if __builtin_popcountll() is supported... 1 checking if gcc supports -march=native... yes CC=gcc CFLAGS= -m64 -fPIC -O3 MORECFLAGS= -mpopcnt -march=native checking if lzcnt instruction is available and requested... 1 checking if __builtin_clz() is supported... 1 checking if __builtin_clzl() is supported... 1 checking if __builtin_clzll() is supported... 1 checking for getc_unlocked... yes checking for flockfile... yes checking for noreturn attribute... _Noreturn checking for thread local storage (TLS) class... _Thread_local checking for gsort... no checking for sort... sort checking if sort supports the -k switch... 1 checking if sort supports the -S switch... 1 checking for a thread-safe mkdir -p... /usr/bin/mkdir -p checking for a BSD-compatible install... /usr/bin/install -c checking for gunzip... gunzip configure: creating ./config.status config.status: creating makefile config.status: creating nauty.h config.status: creating naututil.h config.status: creating gtools.h config.status: creating nauty.pc config.status: creating runalltests configure: WARNING: unrecognized options: --disable-shared, --enable-static nauty/2.8.8: RUN: make -j20 gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o naututil.o naututil.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautinv.o nautinv.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o traces.o traces.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gtools.o gtools.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nauty.o nauty.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautil.o nautil.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nausparse.o nausparse.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o naugraph.o naugraph.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o schreier.o schreier.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o naurng.o naurng.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nauchromatic.o nauchromatic.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gutil1.o gutil1.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gutil2.o gutil2.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gtnauty.o gtnauty.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o naugroup.o naugroup.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautycliquer.o nautycliquer.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nauconnect.o nauconnect.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nauty1.o -DMAXN=WORDSIZE nauty.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautil1.o -DMAXN=WORDSIZE nautil.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o naugraph1.o -DMAXN=WORDSIZE naugraph.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o naututil1.o -DMAXN=WORDSIZE naututil.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautinv1.o -DMAXN=WORDSIZE nautinv.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautyS.o -DWORDSIZE=16 nauty.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautilS.o -DWORDSIZE=16 nautil.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nausparseS.o -DWORDSIZE=16 nausparse.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o naugraphS.o -DWORDSIZE=16 naugraph.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o schreierS.o -DWORDSIZE=16 schreier.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gtoolsS.o -DWORDSIZE=16 gtools.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o naututilS.o -DWORDSIZE=16 naututil.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautinvS.o -DWORDSIZE=16 nautinv.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gutil1S.o -DWORDSIZE=16 gutil1.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gutil2S.o -DWORDSIZE=16 gutil2.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gtnautyS.o -DWORDSIZE=16 gtnauty.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o naugroupS.o -DWORDSIZE=16 naugroup.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautycliquerS.o -DWORDSIZE=16 nautycliquer.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nauchromaticS.o -DWORDSIZE=16 nauchromatic.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nauconnectS.o -DWORDSIZE=16 nauconnect.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautyS1.o -DMAXN=WORDSIZE -DWORDSIZE=16 nauty.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautilS1.o -DMAXN=WORDSIZE -DWORDSIZE=16 nautil.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o naugraphS1.o -DMAXN=WORDSIZE -DWORDSIZE=16 naugraph.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o naututilS1.o -DMAXN=WORDSIZE -DWORDSIZE=16 naututil.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautinvS1.o -DMAXN=WORDSIZE -DWORDSIZE=16 nautinv.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gutil1S1.o -DMAXN=WORDSIZE -DWORDSIZE=16 gutil1.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gutil2S1.o -DMAXN=WORDSIZE -DWORDSIZE=16 gutil2.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gtnautyS1.o -DMAXN=WORDSIZE -DWORDSIZE=16 gtnauty.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautyW.o -DWORDSIZE=32 nauty.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautilW.o -DWORDSIZE=32 nautil.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nausparseW.o -DWORDSIZE=32 nausparse.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o naugraphW.o -DWORDSIZE=32 naugraph.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o schreierW.o -DWORDSIZE=32 schreier.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gtoolsW.o -DWORDSIZE=32 gtools.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o naututilW.o -DWORDSIZE=32 naututil.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautinvW.o -DWORDSIZE=32 nautinv.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gutil1W.o -DWORDSIZE=32 gutil1.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gutil2W.o -DWORDSIZE=32 gutil2.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gtnautyW.o -DWORDSIZE=32 gtnauty.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o naugroupW.o -DWORDSIZE=32 naugroup.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautycliquerW.o -DWORDSIZE=32 nautycliquer.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nauchromaticW.o -DWORDSIZE=32 nauchromatic.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nauconnectW.o -DWORDSIZE=32 nauconnect.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautyW1.o -DMAXN=WORDSIZE -DWORDSIZE=32 nauty.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautilW1.o -DMAXN=WORDSIZE -DWORDSIZE=32 nautil.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o naugraphW1.o -DMAXN=WORDSIZE -DWORDSIZE=32 naugraph.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o naututilW1.o -DMAXN=WORDSIZE -DWORDSIZE=32 naututil.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautinvW1.o -DMAXN=WORDSIZE -DWORDSIZE=32 nautinv.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gutil1W1.o -DMAXN=WORDSIZE -DWORDSIZE=32 gutil1.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gutil2W1.o -DMAXN=WORDSIZE -DWORDSIZE=32 gutil2.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gtnautyW1.o -DMAXN=WORDSIZE -DWORDSIZE=32 gtnauty.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautyL.o -DWORDSIZE=64 nauty.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautilL.o -DWORDSIZE=64 nautil.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nausparseL.o -DWORDSIZE=64 nausparse.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o naugraphL.o -DWORDSIZE=64 naugraph.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o schreierL.o -DWORDSIZE=64 schreier.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gtoolsL.o -DWORDSIZE=64 gtools.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o naututilL.o -DWORDSIZE=64 naututil.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautinvL.o -DWORDSIZE=64 nautinv.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gutil1L.o -DWORDSIZE=64 gutil1.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gutil2L.o -DWORDSIZE=64 gutil2.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gtnautyL.o -DWORDSIZE=64 gtnauty.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o naugroupL.o -DWORDSIZE=64 naugroup.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautycliquerL.o -DWORDSIZE=64 nautycliquer.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nauchromaticL.o -DWORDSIZE=64 nauchromatic.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nauconnectL.o -DWORDSIZE=64 nauconnect.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautyL1.o -DMAXN=WORDSIZE -DWORDSIZE=64 nauty.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautilL1.o -DMAXN=WORDSIZE -DWORDSIZE=64 nautil.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o naugraphL1.o -DMAXN=WORDSIZE -DWORDSIZE=64 naugraph.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o naututilL1.o -DMAXN=WORDSIZE -DWORDSIZE=64 naututil.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o nautinvL1.o -DMAXN=WORDSIZE -DWORDSIZE=64 nautinv.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gutil1L1.o -DMAXN=WORDSIZE -DWORDSIZE=64 gutil1.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gutil2L1.o -DMAXN=WORDSIZE -DWORDSIZE=64 gutil2.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -o gtnautyL1.o -DMAXN=WORDSIZE -DWORDSIZE=64 gtnauty.c gcc -o copyg -m64 -fPIC -O3 -mpopcnt -march=native copyg.c gtools.o -m64 gcc -o listg -m64 -fPIC -O3 -mpopcnt -march=native listg.c gtools.o nautil.o -m64 gcc -o dretog -m64 -fPIC -O3 -mpopcnt -march=native dretog.c naututil.o gtools.o \ nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o amtog -m64 -fPIC -O3 -mpopcnt -march=native amtog.c gtools.o nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o geng -m64 -fPIC -O3 -mpopcnt -march=native -DMAXN=WORDSIZE -DWORDSIZE=32 geng.c gtoolsW.o nautyW1.o \ nautilW1.o naugraphW1.o schreier.o naurng.o -m64 gcc -o complg -m64 -fPIC -O3 -mpopcnt -march=native complg.c gtools.o gtnauty.o \ nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o showg -m64 -fPIC -O3 -mpopcnt -march=native showg.c -m64 gcc -o NRswitchg -m64 -fPIC -O3 -mpopcnt -march=native NRswitchg.c gtools.o gtnauty.o \ nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o biplabg -m64 -fPIC -O3 -mpopcnt -march=native biplabg.c \ gtools.o gutil1.o nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o addedgeg -m64 -fPIC -O3 -mpopcnt -march=native addedgeg.c gtools.o gtnauty.o \ gutil1.o nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o deledgeg -m64 -fPIC -O3 -mpopcnt -march=native deledgeg.c gtools.o gtnauty.o \ nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o countg -m64 -fPIC -O3 testg.c gtools.o gtnauty.o gutil1.o \ gutil2.o nautinv.o nautycliquer.o nauchromatic.o \ nauconnect.o nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o pickg -m64 -fPIC -O3 testg.c gtools.o gtnauty.o gutil1.o \ gutil2.o nautinv.o nautycliquer.o nauchromatic.o \ nauconnect.o nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o genrang -m64 -fPIC -O3 -mpopcnt -march=native genrang.c \ gtools.o naututil.o nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o newedgeg -m64 -fPIC -O3 -mpopcnt -march=native newedgeg.c gtools.o gtnauty.o \ nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o catg -m64 -fPIC -O3 -mpopcnt -march=native catg.c gtools.o -m64 gcc -o genbg -m64 -fPIC -O3 -mpopcnt -march=native -DMAXN=WORDSIZE -DWORDSIZE=32 genbg.c gtoolsW.o schreierW.o \ nautyW1.o nautilW1.o naugraphW1.o naurng.o -m64 gcc -o directg -m64 -fPIC -O3 -mpopcnt -march=native directg.c gtools.o \ nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o naugroup.o -m64 gcc -o gentreeg -m64 -fPIC -O3 -mpopcnt -march=native gentreeg.c gtools.o -m64 gcc -o genquarticg -m64 -fPIC -O3 -mpopcnt -march=native genquarticg.c gtoolsL.o nautyL1.o \ nautilL1.o naugraphL1.o schreierL.o naurng.o -m64 gcc -o underlyingg -m64 -fPIC -O3 -mpopcnt -march=native underlyingg.c gtools.o \ nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o assembleg -m64 -fPIC -O3 -mpopcnt -march=native assembleg.c gtools.o \ nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o gengL -m64 -fPIC -O3 -mpopcnt -march=native -DMAXN=WORDSIZE -DWORDSIZE=64 geng.c gtoolsL.o nautyL1.o \ nautilL1.o naugraphL1.o schreier.o naurng.o -m64 gcc -o addptg -m64 -fPIC -O3 -mpopcnt -march=native addptg.c nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o gtnauty.o gtools.o -m64 gcc -o ransubg -m64 -fPIC -O3 -mpopcnt -march=native ransubg.c gtools.o gtnauty.o nautinv.o \ nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o ranlabg -m64 -fPIC -O3 -mpopcnt -march=native ranlabg.c gtools.o nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o multig -m64 -fPIC -O3 -mpopcnt -march=native multig.c gtools.o gtnauty.o \ nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o naugroup.o -m64 gcc -o planarg -m64 -fPIC -O3 -mpopcnt -march=native \ planarg.c planarity.c gtools.o -m64 gcc -o gentourng -m64 -fPIC -O3 -mpopcnt -march=native -DMAXN=24 -DWORDSIZE=32 gentourng.c gtoolsW.o nautyW1.o \ nautilW1.o naugraphW1.o schreier.o naurng.o -m64 gcc -o linegraphg -m64 -fPIC -O3 -mpopcnt -march=native linegraphg.c gtools.o \ nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o watercluster2 -m64 -fPIC -O3 -mpopcnt -march=native -DMAXN=WORDSIZE -DWORDSIZE=32 watercluster2.c \ gtoolsW.o nautyW1.o nautilW1.o nausparseW.o naugraphW1.o schreierW.o naurng.o -m64 gcc -o subdivideg -m64 -fPIC -O3 -mpopcnt -march=native subdivideg.c gtools.o \ nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o vcolg -m64 -fPIC -O3 -mpopcnt -march=native vcolg.c gtnauty.o naututil.o gutil2.o \ nautinv.o gtools.o naugroup.o nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o delptg -m64 -fPIC -O3 -mpopcnt -march=native delptg.c gtools.o gtnauty.o \ nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o cubhamg -m64 -fPIC -O3 -mpopcnt -march=native cubhamg.c gtools.o \ nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o twohamg -m64 -fPIC -O3 -mpopcnt -march=native twohamg.c gtools.o \ nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o hamheuristic -m64 -fPIC -O3 -mpopcnt -march=native hamheuristic.c gtools.o \ nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o converseg -m64 -fPIC -O3 -mpopcnt -march=native converseg.c nautinv.o gtools.o \ nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o genposetg -m64 -fPIC -O3 -mpopcnt -march=native -DMAXN=WORDSIZE -DWORDSIZE=16 genposetg.c \ gtoolsS.o nautyS1.o nautilS1.o nausparseS.o naugraphS1.o schreierS.o naurng.o -m64 gcc -o nbrhoodg -m64 -fPIC -O3 -mpopcnt -march=native nbrhoodg.c gtools.o gtnauty.o nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o genspecialg -m64 -fPIC -O3 -mpopcnt -march=native genspecialg.c nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o naututil.o \ gtools.o -m64 gcc -o edgetransg -m64 -fPIC -O3 -mpopcnt -march=native edgetransg.c gtnauty.o naututil.o \ nautinv.o gtools.o naugroup.o nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o genbgL -m64 -fPIC -O3 -mpopcnt -march=native -DMAXN=WORDSIZE -DWORDSIZE=64 -DMAXN1=30 genbg.c gtoolsL.o \ schreierL.o naurng.o nautyL1.o nautilL1.o naugraphL1.o -m64 gcc -o ancestorg -m64 -fPIC -O3 -mpopcnt -march=native ancestorg.c gtools.o nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o productg -m64 -fPIC -O3 -mpopcnt -march=native productg.c gtools.o nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o dimacs2g -m64 -fPIC -O3 -mpopcnt -march=native dimacs2g.c naututil.o gtools.o nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 gcc -o countneg -m64 -fPIC -O3 countneg.c gtools.o -m64 gcc -o genktreeg -m64 -fPIC -O3 -mpopcnt -march=native -DMAXN=WORDSIZE genktreeg.c \ gtools.o nauty1.o nautil1.o nausparse.o naugraph1.o schreier.o naurng.o -m64 gcc -o dreadnaut -m64 -fPIC -O3 dreadnaut.c naututil.o \ nautinv.o gtools.o traces.o nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 rm -f nauty.a rm -f nauty1.a rm -f nautyS.a rm -f nautyS1.a rm -f nautyW.a rm -f nautyW1.a rm -f nautyL.a rm -f nautyL1.a rm -f nautyQ1.a rm -f nautyQ.a gcc -o labelg -m64 -fPIC -O3 labelg.c gtools.o gtnauty.o naututil.o \ nautinv.o gutil2.o traces.o nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 ar crs nautyS.a nautyS.o nautilS.o nausparseS.o naugraphS.o schreierS.o naurng.o traces.o gtoolsS.o naututilS.o \ nautinvS.o gutil1S.o gutil2S.o gtnautyS.o naugroupS.o \ nautycliquerS.o nauchromaticS.o nauconnectS.o ar crs nautyS1.a nautyS1.o nautilS1.o nausparseS.o naugraphS1.o schreierS.o naurng.o traces.o gtoolsS.o naututilS1.o \ nautinvS1.o gutil1S1.o gutil2S1.o gtnautyS1.o naugroupS.o \ nautycliquerS.o nauchromaticS.o nauconnectS.o gcc -o dretodot -m64 -fPIC -O3 -mpopcnt -march=native dretodot.c naututil.o gtools.o \ traces.o nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o -m64 -lm ar crs nauty.a nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o traces.o gtools.o naututil.o nautinv.o \ gutil1.o gutil2.o gtnauty.o naugroup.o naurng.o \ schreier.o nautycliquer.o nauchromatic.o nauconnect.o ar crs nautyW.a nautyW.o nautilW.o nausparseW.o naugraphW.o schreierW.o naurng.o traces.o gtoolsW.o naututilW.o \ nautinvW.o gutil1W.o gutil2W.o gtnautyW.o naugroupW.o \ nautycliquerW.o nauchromaticW.o nauconnectW.o gcc -o shortg -m64 -fPIC -O3 -mpopcnt -march=native shortg.c gtools.o gtnauty.o nautinv.o \ nauty.o nautil.o nausparse.o naugraph.o schreier.o naurng.o gutil2.o naututil.o traces.o -m64 ar crs nautyL.a nautyL.o nautilL.o nausparseL.o naugraphL.o schreierL.o naurng.o traces.o gtoolsL.o naututilL.o \ nautinvL.o gutil1L.o gutil2L.o gtnautyL.o naugroupL.o \ nautycliquerL.o nauchromaticL.o nauconnectL.o ar crs nauty1.a nauty1.o nautil1.o nausparse.o naugraph1.o schreier.o naurng.o traces.o gtools.o naututil1.o \ nautinv1.o gutil1.o gutil2.o gtnauty.o naugroup.o \ nautycliquer.o nauchromatic.o nauconnect.o ar crs nautyW1.a nautyW1.o nautilW1.o nausparseW.o naugraphW1.o schreierW.o naurng.o traces.o gtoolsW.o naututilW1.o \ nautinvW1.o gutil1W1.o gutil2W1.o gtnautyW1.o naugroupW.o \ nautycliquerW.o nauchromaticW.o nauconnectW.o ar crs nautyL1.a nautyL1.o nautilL1.o nausparseL.o naugraphL1.o schreierL.o naurng.o traces.o gtoolsL.o naututilL1.o \ nautinvL1.o gutil1L1.o gutil2L1.o gtnautyL1.o naugroupL.o \ nautycliquerL.o nauchromaticL.o nauconnectL.o gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DMAXN=WORDSIZE -DWORDSIZE=128 -o nautyQ1.o nauty.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DWORDSIZE=128 -o nautyQ.o nauty.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DWORDSIZE=128 -o nautilQ.o nautil.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DMAXN=WORDSIZE -DWORDSIZE=128 -o nautilQ1.o nautil.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DMAXN=WORDSIZE -DWORDSIZE=128 -o nausparseQ1.o nausparse.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DWORDSIZE=128 -o nausparseQ.o nausparse.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DMAXN=WORDSIZE -DWORDSIZE=128 -o naugraphQ1.o naugraph.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DWORDSIZE=128 -o naugraphQ.o naugraph.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DMAXN=WORDSIZE -DWORDSIZE=128 -o schreierQ1.o schreier.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DWORDSIZE=128 -o schreierQ.o schreier.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DMAXN=WORDSIZE -DWORDSIZE=128 -o gtoolsQ1.o gtools.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DWORDSIZE=128 -o gtoolsQ.o gtools.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DMAXN=WORDSIZE -DWORDSIZE=128 -o naututilQ1.o naututil.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DWORDSIZE=128 -o naututilQ.o naututil.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DMAXN=WORDSIZE -DWORDSIZE=128 -o nautinvQ1.o nautinv.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DWORDSIZE=128 -o nautinvQ.o nautinv.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DMAXN=WORDSIZE -DWORDSIZE=128 -o gutil1Q1.o gutil1.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DMAXN=WORDSIZE -DWORDSIZE=128 -o gutil2Q1.o gutil2.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DWORDSIZE=128 -o gutil1Q.o gutil1.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DMAXN=WORDSIZE -DWORDSIZE=128 -o gtnautyQ1.o gtnauty.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DWORDSIZE=128 -o gutil2Q.o gutil2.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DMAXN=WORDSIZE -DWORDSIZE=128 -o naugroupQ1.o naugroup.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DMAXN=WORDSIZE -DWORDSIZE=128 -o nautycliquerQ1.o nautycliquer.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DWORDSIZE=128 -o gtnautyQ.o gtnauty.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DWORDSIZE=128 -o naugroupQ.o naugroup.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DMAXN=WORDSIZE -DWORDSIZE=128 -o nauchromaticQ1.o nauchromatic.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DWORDSIZE=128 -o nautycliquerQ.o nautycliquer.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DMAXN=WORDSIZE -DWORDSIZE=128 -o nauconnectQ1.o nauconnect.c gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DWORDSIZE=128 -o nauchromaticQ.o nauchromatic.c ar crs nautyQ1.a nautyQ1.o nautilQ1.o nausparseQ1.o \ naugraphQ1.o schreierQ1.o naurng.o gtoolsQ1.o naututilQ1.o \ nautinvQ1.o gutil1Q1.o gutil2Q1.o gtnautyQ1.o naugroupQ1.o \ nautycliquerQ1.o traces.o nauchromaticQ1.o nauconnectQ1.o rm nautyQ1.o nautilQ1.o nausparseQ1.o \ naugraphQ1.o schreierQ1.o gtoolsQ1.o \ naututilQ1.o nautinvQ1.o gutil1Q1.o gutil2Q1.o gtnautyQ1.o \ naugroupQ1.o nautycliquerQ1.o nauchromaticQ1.o gcc -c -m64 -fPIC -O3 -mpopcnt -march=native -DWORDSIZE=128 -o nauconnectQ.o nauconnect.c ar crs nautyQ.a nautyQ.o nautilQ.o nausparseQ.o \ naugraphQ.o schreierQ.o naurng.o traces.o gtoolsQ.o \ naututilQ.o nautinvQ.o gutil1Q.o gutil2Q.o gtnautyQ.o \ naugroupQ.o nautycliquerQ.o nauchromaticQ.o nauconnectQ.o rm nautyQ.o nautilQ.o nausparseQ.o nauchromaticQ.o \ naugraphQ.o schreierQ.o gtoolsQ.o \ naututilQ.o nautinvQ.o gutil1Q.o gutil2Q.o gtnautyQ.o \ naugroupQ.o nautycliquerQ.o nauconnectQ.o nauty/2.8.8: Package 'b7dafdee21a50513ab60fce9725ed9189e8c7101' built nauty/2.8.8: Build folder /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/b nauty/2.8.8: Generating the package nauty/2.8.8: Packaging in folder /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p nauty/2.8.8: Calling package() nauty/2.8.8: RUN: make install DESTDIR=/u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p -j20 /usr/bin/mkdir -p /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p//bin /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p//include /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p//lib /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p//libdata/pkgconfig /usr/bin/install -c copyg listg labelg dretog amtog geng complg showg NRswitchg biplabg addedgeg deledgeg countg pickg genrang newedgeg catg genbg directg gentreeg genquarticg underlyingg assembleg gengL addptg ransubg ranlabg multig planarg gentourng linegraphg watercluster2 dretodot subdivideg vcolg delptg cubhamg twohamg hamheuristic converseg genposetg nbrhoodg genspecialg edgetransg genbgL dreadnaut ancestorg productg dimacs2g countneg genktreeg shortg /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p//bin /usr/bin/install -c -m 644 gtools.h nauty.h naututil.h nausparse.h naurng.h gutils.h naugroup.h nautinv.h schreier.h nautycliquer.h traces.h nauchromatic.h naugstrings.h planarity.h quarticirred28.h nauconnect.h namedgraphs.h /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p//include /usr/bin/install -c nauty.a nauty1.a nautyS.a nautyS1.a nautyW.a nautyW1.a nautyL.a nautyL1.a nautyQ1.a nautyQ.a /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p//lib for lib in nauty.a nauty1.a nautyS.a nautyS1.a nautyW.a nautyW1.a nautyL.a nautyL1.a nautyQ1.a nautyQ.a ; do \ mv -f /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p//lib/${lib} /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p//lib/lib${lib} ; \ case ${lib} in \ nauty.a) sed -e 's/LIBS/-lnauty/' -e 's/CFLGS//' \ nauty.pc > /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p//libdata/pkgconfig/nauty.pc ;; \ nauty1.a) sed -e 's/LIBS/-lnauty1/' -e 's/CFLGS/-DMAXN=WORDSIZE/' \ nauty.pc > /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p//libdata/pkgconfig/nauty1.pc ;; \ nautyS.a) sed -e 's/LIBS/-lnautyS/' -e 's/CFLGS/-DWORDSIZE=16/' \ nauty.pc > /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p//libdata/pkgconfig/nautyS.pc ;; \ nautyS1.a) sed -e 's/LIBS/-lnautyS1/' -e 's/CFLGS/-DWORDSIZE=16 -DMAXN=WORDSIZE/' \ nauty.pc > /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p//libdata/pkgconfig/nautyS1.pc ;; \ nautyW.a) sed -e 's/LIBS/-lnautyW/' -e 's/CFLGS/-DWORDSIZE=32/' \ nauty.pc > /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p//libdata/pkgconfig/nautyW.pc ;; \ nautyW1.a) sed -e 's/LIBS/-lnautyW1/' -e 's/CFLGS/-DWORDSIZE=32 -DMAXN=WORDSIZE/' \ nauty.pc > /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p//libdata/pkgconfig/nautyW1.pc ;; \ nautyL.a) sed -e 's/LIBS/-lnautyL/' -e 's/CFLGS/-DWORDSIZE=64/' \ nauty.pc > /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p//libdata/pkgconfig/nautyL.pc ;; \ nautyL1.a) sed -e 's/LIBS/-lnautyL1/' -e 's/CFLGS/-DWORDSIZE=64 -DMAXN=WORDSIZE/' \ nauty.pc > /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p//libdata/pkgconfig/nautyL1.pc ;; \ nautyQ.a) sed -e 's/LIBS/-lnautyQ/' -e 's/CFLGS/-DWORDSIZE=128/' \ nauty.pc > /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p//libdata/pkgconfig/nautyQ.pc ;; \ nautyQ1.a) sed -e 's/LIBS/-lnautyQ1/' -e 's/CFLGS/-DWORDSIZE=128 -DMAXN=WORDSIZE/' \ nauty.pc > /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p//libdata/pkgconfig/nautyQ1.pc ;; \ *.so) ;; *.dylib) ;; *.dll) ;; *.DLL) ;; \ *) echo "Unknown library" ${lib} ;; \ esac ; done nauty/2.8.8: package(): Packaged 10 '.pc' files nauty/2.8.8: package(): Packaged 10 '.a' files nauty/2.8.8: package(): Packaged 52 files nauty/2.8.8: package(): Packaged 17 '.h' files nauty/2.8.8: Created package revision 0fa14f5020f7a3946496bc4bf2bc7832 nauty/2.8.8: Package 'b7dafdee21a50513ab60fce9725ed9189e8c7101' created nauty/2.8.8: Full package reference: nauty/2.8.8#2f55b9f554b0462fcbac4864c4889310:b7dafdee21a50513ab60fce9725ed9189e8c7101#0fa14f5020f7a3946496bc4bf2bc7832 nauty/2.8.8: Package folder /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p [] ```

Note the empty list at the end of the log indicating that no lib is added to self.cpp_info.libs. This is the package content:

Package tree ``` tree /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p /u/michael.aichmueller/.conan2/p/b/nautye5f807ce77efb/p ├── bin │   ├── addedgeg │   ├── addptg │   ├── amtog │   ├── ancestorg │   ├── assembleg │   ├── biplabg │   ├── catg │   ├── complg │   ├── converseg │   ├── copyg │   ├── countg │   ├── countneg │   ├── cubhamg │   ├── deledgeg │   ├── delptg │   ├── dimacs2g │   ├── directg │   ├── dreadnaut │   ├── dretodot │   ├── dretog │   ├── edgetransg │   ├── genbg │   ├── genbgL │   ├── geng │   ├── gengL │   ├── genktreeg │   ├── genposetg │   ├── genquarticg │   ├── genrang │   ├── genspecialg │   ├── gentourng │   ├── gentreeg │   ├── hamheuristic │   ├── labelg │   ├── linegraphg │   ├── listg │   ├── multig │   ├── nbrhoodg │   ├── newedgeg │   ├── NRswitchg │   ├── pickg │   ├── planarg │   ├── productg │   ├── ranlabg │   ├── ransubg │   ├── shortg │   ├── showg │   ├── subdivideg │   ├── twohamg │   ├── underlyingg │   ├── vcolg │   └── watercluster2 ├── conaninfo.txt ├── conanmanifest.txt ├── include │   ├── gtools.h │   ├── gutils.h │   ├── namedgraphs.h │   ├── nauchromatic.h │   ├── nauconnect.h │   ├── naugroup.h │   ├── naugstrings.h │   ├── naurng.h │   ├── nausparse.h │   ├── nautinv.h │   ├── naututil.h │   ├── nautycliquer.h │   ├── nauty.h │   ├── planarity.h │   ├── quarticirred28.h │   ├── schreier.h │   └── traces.h ├── lib │   ├── libnauty1.a │   ├── libnauty.a │   ├── libnautyL1.a │   ├── libnautyL.a │   ├── libnautyQ1.a │   ├── libnautyQ.a │   ├── libnautyS1.a │   ├── libnautyS.a │   ├── libnautyW1.a │   └── libnautyW.a └── libdata └── pkgconfig ├── nauty1.pc ├── nautyL1.pc ├── nautyL.pc ├── nauty.pc <--- This should be the main lib configuration ├── nautyQ1.pc ├── nautyQ.pc ├── nautyS1.pc ├── nautyS.pc ├── nautyW1.pc └── nautyW.pc ```

Consequently, when I try to use "nauty/2.8.8" as dependency in a downstream project, I get the error:

-- CMake-Conan: find_package(Nauty) found, 'conan install' already ran
-- Conan: Target declared 'nauty::nauty'
CMake Error at cmake-build-debug-gcc12-lactose/conan/build/Debug/generators/cmakedeps_macros.cmake:67 (message):
  Library 'nauty' not found in package.  If 'nauty' is a system library,
  declare it with 'cpp_info.system_libs' property
Call Stack (most recent call first):
  cmake-build-debug-gcc12-lactose/conan/build/Debug/generators/nauty-Target-debug.cmake:23 (conan_package_library_targets)
  cmake-build-debug-gcc12-lactose/conan/build/Debug/generators/nautyTargets.cmake:24 (include)
  cmake-build-debug-gcc12-lactose/conan/build/Debug/generators/nauty-config.cmake:16 (include)
  conan_provider.cmake:619 (find_package)
  CMakeLists.txt:86 (find_package)

-- Configuring incomplete, errors occurred!

nauty7b72780a34b5d/p/libdata/pkgconfig/nauty.pc` contains the following:

prefix=/
exec_prefix=${prefix}
libdir=${prefix}/lib
includedir=${prefix}/include

Name: nauty
Description: Programs and library for graph isomorphism
Version: 2.8.8
Libs: -L${libdir} -lnauty
Libs.private:
Cflags: -I${includedir}

What am I missing in creating a correct conan recipe? Can I not use this autotools dependency with a cmakedeps generator?

How to reproduce it

  1. Take the above conanfile.py
  2. run conan create . on it.
  3. require nauty/2.8.8 in a consuming cmake-based package and state find_package(nauty REQUIRED) within the CMakeLists.txt
memsharded commented 1 month ago

Hi @maichmueller

Thanks for your detailed report.

Indeed, the pkg_config.fill_cpp_info() is executing (seen with -vv):

nauty/2.8.8: Full command: pkg-config --print-provides nauty --print-errors
nauty/2.8.8: PkgConfig fill cpp_info for nauty
nauty/2.8.8: Full command: pkg-config --libs-only-l nauty --print-errors
nauty/2.8.8: Full command: pkg-config --libs-only-L nauty --print-errors
nauty/2.8.8: Full command: pkg-config --libs-only-other nauty --print-errors
nauty/2.8.8: Full command: pkg-config --cflags-only-other nauty --print-errors
nauty/2.8.8: Full command: pkg-config --cflags-only-I nauty --print-errors

And the internal libdirs seems to be empty:

{'root': {'includedirs': ['/include'], 'srcdirs': None, 'libdirs': [], 'resdirs': None, 'bindirs': ['bin'], 'builddirs': None, 'frameworkdirs': None, 'system_libs': [], 'frameworks': None, 'libs': ['nauty'], 'defines': [], 'cflags': [], 'cxxflags': [], 'sharedlinkflags': [], 'exelinkflags': [], 'objects': None, 'sysroot': None, 'requires': None, 'properties': None, 'exe': None, 'type': None, 'location': None, 'link_location': None}}

Because the retrieval of libdirs is returning empty:

nauty/2.8.8: PkgConfig fill cpp_info for nauty
nauty/2.8.8: Full command: pkg-config --libs-only-l nauty --print-errors
nauty/2.8.8: -lnauty

nauty/2.8.8: Full command: pkg-config --libs-only-L nauty --print-errors
nauty/2.8.8:

The culprit seems to be the prefix = /. Changing it in the generated .pc file to:

prefix=/
exec_prefix=${prefix}
libdir=lib
includedir=include

Makes things work. I think the generated .pc file seems broken, as it is pointing to some absolute /lib and /include folders that do not exist. Do you know how to change in the autotools files so these .pc files are generated with relative paths instead?

If not, most like it is not worth the effort, as a very simple package_info() with self.cpp_info.libs = ["nauty"] would work.

maichmueller commented 1 month ago

Hi @memsharded , thanks so much for your quick support! Appreciate it.

You are right. The package-config seems to be the culprit. I thought it looked odd before but ignored it. My knowledge of pkg-config and auto tools is pretty non-existent, to be honest. I adapted it to your advice as self.cpp_info.libs = ["nauty"], and this works for me. It's interesting that Conan is able to make this work on its own. Fantastic job!

Closing this as resolved.

memsharded commented 1 month ago

You are right. The package-config seems to be the culprit. I thought it looked odd before but ignored it. My knowledge of pkg-config and auto tools is pretty non-existent, to be honest.

The real question is who knows autotools 😂

Yes, the idea of abstracting the contents of a package in package_info() was there from the begining of Conan. Nowadays we are collaborating in the CPS standardization effort (you can see our recent talks in CppCon), that tries to come up with a better and standard representation of packages.

Thanks very much for the feedback! Don't hesitate to open new tickets for any further question or issue.