Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 867991 - sys-libs/pam-1.5.2-r1: undefined reference to crypt_gensalt_rn on musl with sys-libs/libxcrypt[compat] installed
Summary: sys-libs/pam-1.5.2-r1: undefined reference to crypt_gensalt_rn on musl with s...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Mikle Kolyada (RETIRED)
URL:
Whiteboard:
Keywords: PullRequest
: 868375 (view as bug list)
Depends on:
Blocks: lto
  Show dependency tree
 
Reported: 2022-09-02 11:04 UTC by Lloyd
Modified: 2022-09-11 17:27 UTC (History)
4 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
build.log (build.log.gz,22.22 KB, application/gzip)
2022-09-02 14:40 UTC, Lloyd
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Lloyd 2022-09-02 11:04:37 UTC
System: Portage 3.0.30 (python 3.10.6-final-0, default/linux/amd64/17.0/musl/hardened, gcc-11.3.0, musl-1.2.3, 5.15.59-gentoo-apu2.0 x86_64)

compile stops with error

Reproducible: Always

Steps to Reproduce:
1. compile package: emerge -1 sys-libs/pam
2. compile breaks nearly the end with error: undefined reference to `crypt_gensalt_rn'.
Actual Results:  
libtool: warning: relinking 'pam_unix.la'
libtool: install: (cd /var/tmp/portage/sys-libs/pam-1.5.2-r1/work/Linux-PAM-1.5.2-abi_x86_64.amd64/modules/pam_unix; /bin/sh "/var/tmp/portage/sys-libs/pam-1.5.2-r1/work/Linux-PAM-1.5.2-abi_x86_64.amd64/libtool"  --tag CC --mode=relink x86_64-gentoo-linux-musl-gcc -I/var/tmp/portage/sys-libs/pam-1.5.2-r1/work/Linux-PAM-1.5.2/libpam/include -I/var/tmp/portage/sys-libs/pam-1.5.2-r1/work/Linux-PAM-1.5.2/libpamc/include -DCHKPWD_HELPER=\"/sbin/unix_chkpwd\" -DUPDATE_HELPER=\"/sbin/unix_update\" -W -Wall -Wbad-function-cast -Wcast-align -Wcast-align=strict -Wcast-qual -Wdeprecated -Winline -Wmain -Wmissing-declarations -Wmissing-format-attribute -Wmissing-prototypes -Wpointer-arith -Wreturn-type -Wshadow -Wstrict-prototypes -Wuninitialized -Wwrite-strings -march=native -mtune=native -m64 -flto=auto -O2 -pipe -I/usr/include/xcrypt -no-undefined -avoid-version -module -Wl,--version-script=/var/tmp/portage/sys-libs/pam-1.5.2-r1/work/Linux-PAM-1.5.2/modules/pam_unix/../modules.map -Wl,-O2 -Wl,--as-needed -Wl,--sort-common -Wl,--enable-new-dtags -Wl,--gc-sections -Wl,-flto=auto -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -o pam_unix.la -rpath /lib/security bigcrypt.lo pam_unix_acct.lo pam_unix_auth.lo pam_unix_passwd.lo pam_unix_sess.lo support.lo passverify.lo yppasswd_xdr.lo md5_good.lo md5_broken.lo ../../libpam/libpam.la -L/usr/lib/xcrypt -lcrypt -inst-prefix-dir /var/tmp/portage/sys-libs/pam-1.5.2-r1/image)
libtool: relink: x86_64-gentoo-linux-musl-gcc -shared  -fPIC -DPIC  .libs/bigcrypt.o .libs/pam_unix_acct.o .libs/pam_unix_auth.o .libs/pam_unix_passwd.o .libs/pam_unix_sess.o .libs/support.o .libs/passverify.o .libs/yppasswd_xdr.o .libs/md5_good.o .libs/md5_broken.o   -Wl,--as-needed -L/var/tmp/portage/sys-libs/pam-1.5.2-r1/image/usr/lib -L/usr/lib -lpam -L/usr/lib/xcrypt -lcrypt  -march=native -mtune=native -m64 -flto=auto -O2 -Wl,--version-script=/var/tmp/portage/sys-libs/pam-1.5.2-r1/work/Linux-PAM-1.5.2/modules/pam_unix/../modules.map -Wl,-O2 -Wl,--sort-common -Wl,--enable-new-dtags -Wl,--gc-sections -Wl,-flto=auto -Wl,--no-undefined -Wl,-O1   -Wl,-soname -Wl,pam_unix.so -o .libs/pam_unix.so
/usr/lib/gcc/x86_64-gentoo-linux-musl/11.3.0/../../../../x86_64-gentoo-linux-musl/bin/ld: /var/tmp/portage/sys-libs/pam-1.5.2-r1/temp/ccBlONcM.ltrans0.ltrans.o: in function `_unix_verify_password':
<artificial>:(.text+0x369b): undefined reference to `crypt_checksalt'
/usr/lib/gcc/x86_64-gentoo-linux-musl/11.3.0/../../../../x86_64-gentoo-linux-musl/bin/ld: /var/tmp/portage/sys-libs/pam-1.5.2-r1/temp/ccBlONcM.ltrans0.ltrans.o: in function `pam_sm_chauthtok':
<artificial>:(.text+0x4bcf): undefined reference to `crypt_gensalt_rn'
/usr/lib/gcc/x86_64-gentoo-linux-musl/11.3.0/../../../../x86_64-gentoo-linux-musl/bin/ld: <artificial>:(.text+0x50a3): undefined reference to `crypt_gensalt_rn'
collect2: error: ld returned 1 exit status
libtool:   error: error: relink 'pam_unix.la' with the above command before installing it
make[3]: *** [Makefile:784: install-securelibLTLIBRARIES] Error 1
make[2]: *** [Makefile:1367: install-am] Error 2
make[1]: *** [Makefile:498: install-recursive] Error 1
make: *** [Makefile:498: install-recursive] Error 1
 * ERROR: sys-libs/pam-1.5.2-r1::gentoo failed (install phase):
 *   emake failed


sys-libs/pam-1.5.1_p20210622-r1 - version before, compiles with same system: musl-library and my compiler and linker playground without errors. Probably at this time I'm using gcc 10 not 11.
Comment 1 Lloyd 2022-09-02 11:39:26 UTC
in detail it happens after the compile phase while package install:
[...]
>>> Source compiled.
>>> Test phase [not enabled]: sys-libs/pam-1.5.2-r1

>>> Install sys-libs/pam-1.5.2-r1 into /var/tmp/portage/sys-libs/pam-1.5.2-r1/image
 * abi_x86_64.amd64: running multilib-minimal_abi_src_install
[...]

then and after a while comes the error as described above. The package is not installed.
Comment 2 Stephan Hartmann (RETIRED) gentoo-dev 2022-09-02 13:45:03 UTC
Please attach full build.log and emerge --info.
Comment 3 Lloyd 2022-09-02 14:13:44 UTC
$ emerge --info
Portage 3.0.30 (python 3.10.6-final-0, default/linux/amd64/17.0/musl/hardened, gcc-11.3.0, musl-1.2.3, 5.15.59-gentoo-apu2.0 x86_64)
=================================================================
System uname: Linux-5.15.59-gentoo-apu2.0-x86_64-AMD_GX-412TC_SOC-with-libc
KiB Mem:     3466684 total,    677532 free
KiB Swap:   10485744 total,  10050608 free
Timestamp of repository gentoo: Fri, 02 Sep 2022 00:45:01 +0000
Head commit of repository gentoo: 5fa605296d718d9b635d6d28c8c1f1f2dab495c2
Head commit of repository musl: 630364c519d028de3192f87ccc1fd7f75cac696f

sh bash 5.1_p16-r1
ld GNU ld (Gentoo 2.38 p4) 2.38
app-misc/pax-utils:        1.3.4::gentoo
app-shells/bash:           5.1_p16-r1::gentoo
dev-lang/perl:             5.34.1-r3::gentoo
dev-lang/python:           3.10.6_p2::gentoo
dev-lang/rust-bin:         1.62.1::gentoo
dev-util/cmake:            3.23.3::gentoo
dev-util/meson:            0.62.2::gentoo
sys-apps/baselayout:       2.8::gentoo
sys-apps/openrc:           0.44.10::gentoo
sys-apps/sandbox:          2.29::gentoo
sys-devel/autoconf:        2.71-r1::gentoo
sys-devel/automake:        1.16.5::gentoo
sys-devel/binutils:        2.38-r2::gentoo
sys-devel/binutils-config: 5.4.1::gentoo
sys-devel/gcc:             11.3.0::gentoo
sys-devel/gcc-config:      2.5-r1::gentoo
sys-devel/libtool:         2.4.7::gentoo
sys-devel/make:            4.3::gentoo
sys-kernel/linux-headers:  5.15-r3::gentoo (virtual/os-headers)
sys-libs/musl:             1.2.3::gentoo
Repositories:

gentoo
    location: /var/db/repos/gentoo
    sync-type: rsync
    sync-uri: rsync://rsync.de.gentoo.org/gentoo-portage
    sync-user: portage:portage
    priority: -1000
    sync-rsync-extra-opts: -zz --bwlimit=1m
    sync-rsync-verify-max-age: 24
    sync-rsync-verify-jobs: 2
    sync-rsync-verify-metamanifest: true

localrepo
    location: /var/db/repos/localrepo
    sync-user: portage:portage
    masters: gentoo

musl
    location: /var/db/repos/layman/musl
    sync-type: git
    sync-uri: git://anongit.gentoo.org/git/proj/musl.git
    sync-user: portage:portage
    masters: gentoo
    priority: 50

ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="@FREE"
CBUILD="x86_64-gentoo-linux-musl"
CFLAGS="-O2 -march=native -mtune=native -m64 -pipe -w"
CHOST="x86_64-gentoo-linux-musl"
CONFIG_PROTECT="/etc /etc/stunnel/stunnel.conf /usr/share/gnupg/qualified.txt /var/bind"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php7.4/ext-active/ /etc/php/cgi-php7.4/ext-active/ /etc/php/cli-php7.4/ext-active/ /etc/php/fpm-php7.4/ext-active/ /etc/php/phpdbg-php7.4/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CPPFLAGS="-O2 -march=native -mtune=native -m64 -pipe -w"
CXXFLAGS="-O2 -march=native -mtune=native -m64 -pipe -w -fexceptions -ffunction-sections -fdata-sections"
DISTDIR="/var/cache/distfiles"
ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR"
FCFLAGS="-O2 -march=native -mtune=native -m64 -pipe -w"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs binpkg-multi-instance buildpkg buildpkg-live candy cgroup collision-protect compress-build-logs config-protect-if-modified distlocks downgrade-backup ebuild-locks fixlafiles ipc-sandbox merge-sync mount-sandbox network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms strict unknown-features-warn unmerge-backup unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -march=native -mtune=native -m64 -pipe -w"
GENTOO_MIRRORS="rsync://rsync.de.gentoo.org   ftp://ftp.fau.de/gentoo/   ftp://mirror.netcologne.de/gentoo/"
INSTALL_MASK="charset.alias /usr/share/locale/locale.alias"
LDFLAGS="-Wl,-O2 -Wl,--as-needed -Wl,--sort-common -Wl,--enable-new-dtags -Wl,--gc-sections -s"
MAKEOPTS="-s -j3 -l12 -Otarget"
PKGDIR="/usr/portage/binpkgs"
PORTAGE_COMPRESS="xz"
PORTAGE_COMPRESS_FLAGS="-T0"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_EXTRA_OPTS="-zz --bwlimit=1m"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"
PORTAGE_TMPDIR="/var/tmp"
RUSTFLAGS="-C target-cpu=native -O"
SHELL="/bin/bash"
USE="acl amd64 bzip2 crypt hardened iconv ipv6 libglvnd libtirpc lto native-cflags ncurses nls nptl openmp pam pcre pie readline savedconfig seccomp sha512 split-usr ssl ssp unicode verify-sig xattr xtpax zlib" ABI_X86="64" ADA_TARGET="gnat_2020" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias asis authn_socache brotli cache_disk cache_socache dbd fcgid http2 proxy proxy_fcgi proxy_http2 session session_dbd socache_memcache socache_redis substitute wsgi xml2enc" APACHE2_MPMS="event" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="aes avx f16c mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3" CURL_SSL="gnutls" ELIBC="musl" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" GRUB_PLATFORMS="pc" INPUT_DEVICES="libinput" KERNEL="linux" L10N="de en" LCD_DEVICES="ncurses text" LLVM_TARGETS="X86" LUA_SINGLE_TARGET="lua5-4" LUA_TARGETS="lua5-1 lua5-4" PHP_TARGETS="php7-4" POSTGRES_TARGETS="postgres12" PYTHON_SINGLE_TARGET="python3_10" PYTHON_TARGETS="python3_10" RUBY_TARGETS="ruby27" USERLAND="GNU"
Unset:  ADDR2LINE, AR, ARFLAGS, AS, ASFLAGS, CC, CCLD, CONFIG_SHELL, CPP, CTARGET, CXX, CXXFILT, ELFEDIT, EMERGE_DEFAULT_OPTS, EXTRA_ECONF, F77FLAGS, FC, GCOV, GPROF, LANG, LC_ALL, LD, LEX, LFLAGS, LIBTOOL, LINGUAS, MAKE, MAKEFLAGS, NM, OBJCOPY, OBJDUMP, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, RANLIB, READELF, SIZE, STRINGS, STRIP, YACC, YFLAGS
Comment 4 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2022-09-02 14:19:59 UTC
Please attach the full build.log then try without -w. -w is likely to break configure tests.
Comment 5 Lloyd 2022-09-02 14:40:50 UTC
Created attachment 802741 [details]
build.log

build.log
Comment 6 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2022-09-03 02:03:21 UTC
(In reply to Lloyd from comment #5)
> Created attachment 802741 [details]
> build.log
> 
> build.log

Does it work without -w?
Comment 7 Lloyd 2022-09-03 20:40:33 UTC
Pardon, I use a /etc/portage/env script for sys-libs/pam separately, compiler flags do not correspond to those from emerge --info. The -w argument is not active. Most packages are compiled with flto=auto, so also this. Sorry for delay.
Comment 8 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2022-09-03 20:51:40 UTC
(In reply to Lloyd from comment #7)
> Pardon, I use a /etc/portage/env script for sys-libs/pam separately,
> compiler flags do not correspond to those from emerge --info. The -w
> argument is not active. Most packages are compiled with flto=auto, so also
> this. Sorry for delay.

FWIW, it's possible that building with -w for *anything* leads to bad configure results and miscompiled binaries, not just explicit build failures for the package itself.

If you want to use -w, I recommend a hook to do it in post_src_configure so it doesn't affect configure.

Anyway, libxcrypt at least is broken with LTO (we filter it in newer versions) so I'm guessing it's related to that.
Comment 9 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2022-09-04 18:00:10 UTC
*** Bug 868375 has been marked as a duplicate of this bug. ***
Comment 10 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2022-09-04 18:00:34 UTC
Interestingly, toralf hit it with his normal musl setup: bug 868375 (dupe).
Comment 11 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2022-09-05 01:59:42 UTC
(In reply to Sam James from comment #10)
> Interestingly, toralf hit it with his normal musl setup: bug 868375 (dupe).

Reproduced. It happens if sys-libs/libxcrypt is installed. I'm guessing there's some missing $(LIBCRYPT) or whatever in the autotools.
Comment 12 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2022-09-05 02:08:50 UTC
(In reply to Sam James from comment #11)
> (In reply to Sam James from comment #10)
> > Interestingly, toralf hit it with his normal musl setup: bug 868375 (dupe).
> 
> Reproduced. It happens if sys-libs/libxcrypt is installed. I'm guessing
> there's some missing $(LIBCRYPT) or whatever in the autotools.

libtool: install: /usr/lib/portage/python3.9/ebuild-helpers/xattr/install -c unix_update /var/tmp/portage/sys-libs/pam-1.5.2-r2/image/sbin/unix_update
libtool: relink: i686-gentoo-linux-musl-gcc -shared  -fPIC -DPIC  .libs/bigcrypt.o .libs/pam_unix_acct.o .libs/pam_unix_auth.o .libs/pam_unix_passwd.o .libs/pam_unix_sess.o .libs/support.o .libs/passverify.o .libs/yppasswd_xdr.o .libs/md5_good.o .libs/md5_broken.o   -Wl,--as-needed -L/var/tmp/portage/sys-libs/pam-1.5.2-r2/image/usr/lib -L/usr/lib -lpam -L/usr/lib/xcrypt -lcrypt  -O2 -march=i686 -Wl,--version-script=/var/tmp/portage/sys-libs/pam-1.5.2-r2/work/Linux-PAM-1.5.2/modules/pam_unix/../modules.map -Wl,-O1 -Wl,--no-undefined -Wl,-O1   -Wl,-soname -Wl,pam_unix.so -o .libs/pam_unix.so
/usr/lib/gcc/i686-gentoo-linux-musl/11.3.0/../../../../i686-gentoo-linux-musl/bin/ld: .libs/passverify.o: in function `verify_pwd_hash':
passverify.c:(.text+0x3a4): undefined reference to `crypt_checksalt'
/usr/lib/gcc/i686-gentoo-linux-musl/11.3.0/../../../../i686-gentoo-linux-musl/bin/ld: .libs/passverify.o: in function `create_password_hash':
passverify.c:(.text+0x933): undefined reference to `crypt_gensalt_rn'
/usr/lib/gcc/i686-gentoo-linux-musl/11.3.0/../../../../i686-gentoo-linux-musl/bin/ld: passverify.c:(.text+0xa96): undefined reference to `crypt_gensalt_rn'
collect2: error: ld returned 1 exit status
libtool:   error: error: relink 'pam_unix.la' with the above command before installing it

# nm -D /usr/lib/xcrypt/libcrypt.so | grep crypt_checksalt
0001c730 T crypt_checksalt@@XCRYPT_4.3

musl doesn't do most forms of symbol versioning. If I try to build libxcrypt with --disable-symvers, I end up with a build failure, so whatever (I guess because the compat build makes no sense w/o symbol versioning...?)

Anyway, I think for now, we can hard-disable libxcrypt support in PAM where has_version sys-libs/libxcrypt[system]. We're still planning to do the migration for musl systems at some point, although it may be more optional there (undecided) given it's not explicitly required unlike for glibc which will remove support at some point for its own crypt.
Comment 13 Larry the Git Cow gentoo-dev 2022-09-05 02:22:58 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d9a5223420c777c1edde14239f812d788d8848e7

commit d9a5223420c777c1edde14239f812d788d8848e7
Author:     Sam James <sam@gentoo.org>
AuthorDate: 2022-09-05 02:22:36 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2022-09-05 02:22:36 +0000

    sys-libs/pam: workaround build failures on musl w/ sys-libs/libxcrypt[compat]
    
    Closes: https://bugs.gentoo.org/867991
    Signed-off-by: Sam James <sam@gentoo.org>

 sys-libs/pam/pam-1.5.2-r2.ebuild | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)
Comment 14 Larry the Git Cow gentoo-dev 2022-09-10 11:28:30 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=68061fbd8345c59ec19fbad1bf1569d55186c19a

commit 68061fbd8345c59ec19fbad1bf1569d55186c19a
Author:     Sam James <sam@gentoo.org>
AuthorDate: 2022-09-08 03:40:44 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2022-09-10 11:28:03 +0000

    profiles/features/musl: set -crypt on sys-libs/musl
    
    musl will still work with its own libcrypt, but applications
    and libraries are starting to need a fancier libcrypt (libxcrypt)
    so let's disable USE=crypt by default on sys-libs/musl to
    have libxcrypt provide crypt.h & libcrypt.so (musl's libcrypt
    is included in libc.so).
    
    This brings musl in line with the changes we made for glibc a while
    ago. The situation with glibc is a bit different because the migration
    is mandatory there, while we're just strongly recommending it for musl
    because sys-libs/libxcrypt[-system] causes headaches (see linked
    PAM bug for an example, but I've also hit a similar issue with Python
    yesterday).
    
    Bug: https://bugs.gentoo.org/867991
    Bug: https://bugs.gentoo.org/699422
    Signed-off-by: Sam James <sam@gentoo.org>
    Closes: https://github.com/gentoo/gentoo/pull/27187
    Signed-off-by: Sam James <sam@gentoo.org>

 profiles/features/musl/package.use | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f63e433a3db50537ff903195e7e7c90b80d68047

commit f63e433a3db50537ff903195e7e7c90b80d68047
Author:     Sam James <sam@gentoo.org>
AuthorDate: 2022-09-08 03:23:18 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2022-09-10 11:28:03 +0000

    profiles/features/musl: unmask sys-libs/libxcrypt[system]
    
    This brings musl in line with the changes we made for glibc a while
    ago. The situation with glibc is a bit different because the migration
    is mandatory there, while we're just strongly recommending it for musl
    because sys-libs/libxcrypt[-system] causes headaches (see linked
    PAM bug for an example, but I've also hit a similar issue with Python
    yesterday).
    
    Bug: https://bugs.gentoo.org/867991
    Bug: https://bugs.gentoo.org/699422
    Signed-off-by: Sam James <sam@gentoo.org>

 profiles/features/musl/package.mask      | 5 -----
 profiles/features/musl/package.use.force | 4 ++--
 profiles/features/musl/package.use.mask  | 2 +-
 3 files changed, 3 insertions(+), 8 deletions(-)

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4b7575b3f13e546dd2431d0ab8db699935392bdb

commit 4b7575b3f13e546dd2431d0ab8db699935392bdb
Author:     Sam James <sam@gentoo.org>
AuthorDate: 2022-09-08 03:34:26 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2022-09-10 11:28:03 +0000

    virtual/libcrypt: add 2-r1 with support for musl
    
    This brings musl in line with the changes we made for glibc a while
    ago. The situation with glibc is a bit different because the migration
    is mandatory there, while we're just strongly recommending it for musl
    because sys-libs/libxcrypt[-system] causes headaches (see linked
    PAM bug for an example, but I've also hit a similar issue with Python
    yesterday).
    
    Bug: https://bugs.gentoo.org/867991
    Bug: https://bugs.gentoo.org/699422
    Signed-off-by: Sam James <sam@gentoo.org>

 virtual/libcrypt/libcrypt-2-r1.ebuild | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=777ef3df1b81456b7b733d5673b341c6b9a22d88

commit 777ef3df1b81456b7b733d5673b341c6b9a22d88
Author:     Sam James <sam@gentoo.org>
AuthorDate: 2022-09-08 03:24:29 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2022-09-10 11:28:03 +0000

    sys-libs/libxcrypt: wire up musl USE=system support
    
    This brings musl in line with the changes we made for glibc a while
    ago. The situation with glibc is a bit different because the migration
    is mandatory there, while we're just strongly recommending it for musl
    because sys-libs/libxcrypt[-system] causes headaches (see linked
    PAM bug for an example, but I've also hit a similar issue with Python
    yesterday).
    
    Bug: https://bugs.gentoo.org/867991
    Bug: https://bugs.gentoo.org/699422
    Signed-off-by: Sam James <sam@gentoo.org>

 sys-libs/libxcrypt/libxcrypt-4.4.28-r2.ebuild | 304 ++++++++++++++++++++++++++
 1 file changed, 304 insertions(+)

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fbdcef42c8f58fdd5175f2130afd56b8e42ef226

commit fbdcef42c8f58fdd5175f2130afd56b8e42ef226
Author:     Sam James <sam@gentoo.org>
AuthorDate: 2022-09-08 03:21:04 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2022-09-10 11:28:02 +0000

    sys-libs/musl: add USE=crypt for libxcrypt support
    
    Add USE=crypt to allow enabling/disabling crypt.h installation
    (to allow sys-libs/libxcrypt[system] usage). Many things are starting
    to want functions from libxcrypt itself (additional functions and
    algorithms).
    
    musl isn't removing crypt.h (and the relevant functions from its libc),
    unlike glibc, but we need to allow disabling the installation of crypt.h
    to allow libxcrypt[system] usage (which provides crypt.h & libcrypt.so
    instead, with more functionality).
    
    This brings musl in line with the changes we made for glibc a while
    ago. The situation with glibc is a bit different because the migration
    is mandatory there, while we're just strongly recommending it for musl
    because sys-libs/libxcrypt[-system] causes headaches (see linked
    PAM bug for an example, but I've also hit a similar issue with Python
    yesterday).
    
    Bug: https://bugs.gentoo.org/867991
    Bug: https://bugs.gentoo.org/699422
    Signed-off-by: Sam James <sam@gentoo.org>

 sys-libs/musl/musl-1.2.3-r1.ebuild | 181 +++++++++++++++++++++++++++++++++++++
 sys-libs/musl/musl-9999.ebuild     |  10 +-
 2 files changed, 190 insertions(+), 1 deletion(-)
Comment 15 Samuel Holland 2022-09-11 17:24:22 UTC
Your changes to sys-libs/musl have the condition for the dependency backward:

RDEPEND="crypt? ( sys-libs/libxcrypt[system] )"

Since sys-libs/libxcrypt blocks sys-libs/musl[crypt], it is not possible to install sys-libs/musl[crypt] at the moment.

This should be RDEPEND="!crypt? ...".
Comment 16 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2022-09-11 17:25:36 UTC
(In reply to Samuel Holland from comment #15)
> Your changes to sys-libs/musl have the condition for the dependency backward:
> 
> RDEPEND="crypt? ( sys-libs/libxcrypt[system] )"
> 
> Since sys-libs/libxcrypt blocks sys-libs/musl[crypt], it is not possible to
> install sys-libs/musl[crypt] at the moment.
> 
> This should be RDEPEND="!crypt? ...".

Thanks!
Comment 17 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2022-09-11 17:25:45 UTC
(In reply to Sam James from comment #16)
> (In reply to Samuel Holland from comment #15)
> > Your changes to sys-libs/musl have the condition for the dependency backward:
> > 
> > RDEPEND="crypt? ( sys-libs/libxcrypt[system] )"
> > 
> > Since sys-libs/libxcrypt blocks sys-libs/musl[crypt], it is not possible to
> > install sys-libs/musl[crypt] at the moment.
> > 
> > This should be RDEPEND="!crypt? ...".
> 
> Thanks!

(in future, please file a new bug though)
Comment 18 Larry the Git Cow gentoo-dev 2022-09-11 17:27:36 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=dff39d4671198d0287ae9da0263b543affe57d46

commit dff39d4671198d0287ae9da0263b543affe57d46
Author:     Sam James <sam@gentoo.org>
AuthorDate: 2022-09-11 17:27:28 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2022-09-11 17:27:28 +0000

    sys-libs/musl: fix libxcrypt dep
    
    We only need libxcrypt when we DON'T install crypt.h
    
    Bug: https://bugs.gentoo.org/867991
    Signed-off-by: Sam James <sam@gentoo.org>

 sys-libs/musl/{musl-1.2.3-r1.ebuild => musl-1.2.3-r2.ebuild} | 5 ++++-
 sys-libs/musl/musl-9999.ebuild                               | 5 ++++-
 2 files changed, 8 insertions(+), 2 deletions(-)