Bug 14201 - busybox wants to link against -lcrypt when CONFIG_USE_BB_CRYPT=y is set
Summary: busybox wants to link against -lcrypt when CONFIG_USE_BB_CRYPT=y is set
Status: NEW
Alias: None
Product: Busybox
Classification: Unclassified
Component: Other (show other bugs)
Version: unspecified
Hardware: All Linux
: P5 normal
Target Milestone: ---
Assignee: unassigned
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-09-05 11:20 UTC by Marvin Schmidt
Modified: 2021-10-07 23:45 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:


Attachments
proposed patched (1.32 KB, patch)
2021-09-05 11:20 UTC, Marvin Schmidt
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Marvin Schmidt 2021-09-05 11:20:08 UTC
Created attachment 9091 [details]
proposed patched

The logic in `Makefile.flags` wants to link against the crypt library unconditionally if it's available, even when the config sets CONFIG_USE_BB_CRYPT=y and no functionally from libcrypt is used.

The attached patch encloses the libcrypt check in a `ifneq ($(CONFIG_USE_BB_CRYPT),y)` condition so it's only executed when `CONFIG_USE_BB_CRYPT` isn't enabled
Comment 1 fbb 2021-10-07 23:11:18 UTC
I can confirm the same behavior for busybox =< v1.3.41.

gcc -malign-data=abi -Wall -Wshadow -Wwrite-strings -Wundef -Wstrict-prototypes -Wunused -Wunused-parameter -Wunused-function -Wunused-value -Wmissing-prototypes -Wmissing-declarations -Wno-format-security -Wdeclaration-after-statement -Wold-style-definition -finline-limit=0 -fno-builtin-strlen -fomit-frame-pointer -ffunction-sections -fdata-sections -fno-guess-branch-probability -funsigned-char -static-libgcc -falign-functions=1 -falign-jumps=1 -falign-labels=1 -falign-loops=1 -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-builtin-printf -Os -static -o busybox_unstripped -Wl,--sort-common -Wl,--sort-section,alignment -Wl,--start-group applets/built-in.o archival/lib.a archival/libarchive/lib.a console-tools/lib.a coreutils/lib.a coreutils/libcoreutils/lib.a debianutils/lib.a klibc-utils/lib.a e2fsprogs/lib.a editors/lib.a findutils/lib.a init/lib.a libbb/lib.a libpwdgrp/lib.a loginutils/lib.a mailutils/lib.a miscutils/lib.a modutils/lib.a networking/lib.a networking/libiproute/lib.a networking/udhcp/lib.a printutils/lib.a procps/lib.a runit/lib.a selinux/lib.a shell/lib.a sysklogd/lib.a util-linux/lib.a util-linux/volume_id/lib.a archival/built-in.o archival/libarchive/built-in.o console-tools/built-in.o coreutils/built-in.o coreutils/libcoreutils/built-in.o debianutils/built-in.o klibc-utils/built-in.o e2fsprogs/built-in.o editors/built-in.o findutils/built-in.o init/built-in.o libbb/built-in.o libpwdgrp/built-in.o loginutils/built-in.o mailutils/built-in.o miscutils/built-in.o modutils/built-in.o networking/built-in.o networking/libiproute/built-in.o networking/udhcp/built-in.o printutils/built-in.o procps/built-in.o runit/built-in.o selinux/built-in.o shell/built-in.o sysklogd/built-in.o util-linux/built-in.o util-linux/volume_id/built-in.o -Wl,--end-group -Wl,--start-group -lcrypt -lm -lresolv -lrt -Wl,--end-group

/usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lcrypt
collect2: error: ld returned 1 exit status
*Note: if build needs additional libraries, put them in CONFIG_EXTRA_LDLIBS.
*Example: CONFIG_EXTRA_LDLIBS="pthread dl tirpc audit pam"
make: *** [Makefile:719: busybox_unstripped] Error 1

This system is libcrypt free, been migrated to libxcrypt.
Comment 2 Denys Vlasenko 2021-10-07 23:45:33 UTC
(In reply to Marvin Schmidt from comment #0)
> The logic in `Makefile.flags` wants to link against the crypt library unconditionally if it's available, even when the config sets CONFIG_USE_BB_CRYPT=y and no functionally from libcrypt is used.

And the problem with that is .... ?