firstboot: Include <crypt.h> for declaration of crypt() if needed (#7944)

Not every target system may provide a crypt() function in its stdlibc
and may use an external or replacement library, like libxcrypt, for
providing such functions.

See https://fedoraproject.org/wiki/Changes/Replace_glibc_libcrypt_with_libxcrypt.
This commit is contained in:
Björn Esser 2018-01-25 15:30:15 +01:00 committed by Zbigniew Jędrzejewski-Szmek
parent 16c73c765d
commit 9f555bba67
2 changed files with 15 additions and 1 deletions

View File

@ -589,7 +589,8 @@ conf.set('GPERF_LEN_TYPE', gperf_len_type,
if not cc.has_header('sys/capability.h')
error('POSIX caps headers not found')
endif
foreach header : ['linux/btrfs.h',
foreach header : ['crypt.h',
'linux/btrfs.h',
'linux/memfd.h',
'linux/vm_sockets.h',
'sys/auxv.h',

View File

@ -23,6 +23,19 @@
#include <shadow.h>
#include <unistd.h>
#ifdef HAVE_CRYPT_H
/* libxcrypt is a replacement for glibc's libcrypt, and libcrypt might be
* removed from glibc at some point. As part of the removal, defines for
* crypt(3) are dropped from unistd.h, and we must include crypt.h instead.
*
* Newer versions of glibc (v2.0+) already ship crypt.h with a definition
* of crypt(3) as well, so we simply include it if it is present. MariaDB,
* MySQL, PostgreSQL, Perl and some other wide-spread packages do it the
* same way since ages without any problems.
*/
# include <crypt.h>
#endif
#include "sd-id128.h"
#include "alloc-util.h"