Skip to content

Recursive Dependency Detected on replacing select LIBNEWLIBC with select LIBMUSL #13

@ThestralWarrior

Description

@ThestralWarrior

Yang Hu's PR #12 makes a change to Config.uk to upgrade Mimalloc to use Musl instead of Newlib which hasn't been updated since 2021/22.

When I applied the PR locally and used Mimalloc for running Nginx from https://github.com/unikraft/catalog-core, it ended up giving a recursive dependency error, so no make commands were able to run.

unikraft@wasp:~/nginx/nginx-pan-2$ make menuconfig
make[1]: Entering directory '/home/unikraft/nginx/nginx-pan-2/workdir/unikraft'
  LN      Makefile
  MKDIR   lxdialog
  MAKE    kconfig
  UPD     /home/unikraft/nginx/nginx-pan-2/workdir/build/kconfig/mconf-cfg
/home/unikraft/nginx/nginx-pan-2/workdir/unikraft/plat/xen/Config.uk:1:error: recursive dependency detected!
/home/unikraft/nginx/nginx-pan-2/workdir/unikraft/plat/xen/Config.uk:1: symbol PLAT_XEN depends on HAVE_SYSCALL
/home/unikraft/nginx/nginx-pan-2/workdir/unikraft/lib/Config.uk:23:     symbol HAVE_SYSCALL is selected by LIBSYSCALL_SHIM_HANDLER
/home/unikraft/nginx/nginx-pan-2/workdir/unikraft/lib/syscall_shim/Config.uk:28:        symbol LIBSYSCALL_SHIM_HANDLER depends on LIBSYSCALL_SHIM
/home/unikraft/nginx/nginx-pan-2/workdir/unikraft/lib/syscall_shim/Config.uk:1: symbol LIBSYSCALL_SHIM is selected by LIBUKCPIO
/home/unikraft/nginx/nginx-pan-2/workdir/unikraft/lib/ukcpio/Config.uk:1:       symbol LIBUKCPIO depends on LIBVFSCORE
/home/unikraft/nginx/nginx-pan-2/workdir/unikraft/lib/vfscore/Config.uk:1:      symbol LIBVFSCORE is selected by LIBMUSL
/home/unikraft/nginx/nginx-pan-2/workdir/libs/lib-musl/Config.uk:2:     symbol LIBMUSL is selected by LIBMIMALLOC
/home/unikraft/nginx/nginx-pan-2/workdir/libs/lib-mimalloc/Config.uk:7: symbol LIBMIMALLOC is selected by LIBUKBOOT_INITMIMALLOC
/home/unikraft/nginx/nginx-pan-2/workdir/unikraft/lib/ukboot/Config.uk:113:     symbol LIBUKBOOT_INITMIMALLOC is part of choice <choice>
/home/unikraft/nginx/nginx-pan-2/workdir/unikraft/lib/ukboot/Config.uk:98:      choice <choice> contains symbol <choice>
/home/unikraft/nginx/nginx-pan-2/workdir/unikraft/lib/ukboot/Config.uk:98:      choice <choice> contains symbol LIBUKBOOT
/home/unikraft/nginx/nginx-pan-2/workdir/unikraft/lib/ukboot/Config.uk:1:       symbol LIBUKBOOT is selected by PLAT_XEN
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"

make[3]:  [/home/unikraft/nginx/nginx-pan-2/workdir/build/Makefile:1018: menuconfig] Error 1
make[2]:  [Makefile:1175: sub-make] Error 2
make[1]:  [Makefile:41: _all] Error 2
make[1]: Leaving directory '/home/unikraft/nginx/nginx-pan-2/workdir/unikraft'
make:  [Makefile:13: menuconfig] Error 2

Replacing select LIBMUSL with depends on LIBMUSL appears to resolve the recursive dependency error for now.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions