mirror of
https://github.com/Dasharo/systemd.git
synced 2026-03-06 15:02:31 -08:00
shared: nudge people into sending us patches to make /lib64/ symlink generation work on all archs that need it
This is an attempt to nudge people into sending us patches that fix bug #14311 for us, given that the original submitter lost interest.
This commit is contained in:
@@ -20,10 +20,10 @@
|
||||
#include "user-util.h"
|
||||
|
||||
typedef struct BaseFilesystem {
|
||||
const char *dir;
|
||||
const char *dir; /* directory or symlink to create */
|
||||
mode_t mode;
|
||||
const char *target;
|
||||
const char *exists;
|
||||
const char *target; /* if non-NULL create as symlink to this target */
|
||||
const char *exists; /* conditionalize this entry on existance of this file */
|
||||
bool ignore_failure;
|
||||
} BaseFilesystem;
|
||||
|
||||
@@ -39,11 +39,26 @@ static const BaseFilesystem table[] = {
|
||||
{ "sys", 0755, NULL, NULL, true },
|
||||
{ "dev", 0755, NULL, NULL, true },
|
||||
#if defined(__i386__) || defined(__x86_64__)
|
||||
/* Various architecture ABIs define the path to the dynamic loader via the /lib64/ subdirectory of
|
||||
* the root directory. When booting from an otherwise empty root file system (where only /usr/ has
|
||||
* been mounted into) it is thus necessary to create a symlink pointing to the right subdirectory of
|
||||
* /usr/ first — otherwise we couldn't invoke any dynamic binary. Let's detect this case here, and
|
||||
* create the symlink as needed should it be missing. We prefer doing this consistently with Debian's
|
||||
* multiarch logic, but support Fedora-style multilib too.*/
|
||||
{ "lib64", 0, "usr/lib/x86_64-linux-gnu\0"
|
||||
"usr/lib64\0", "ld-linux-x86-64.so.2" },
|
||||
#else
|
||||
/* gcc doesn't allow pragma to be used within constructs, hence log about this separately below */
|
||||
# define WARN_LIB64 1
|
||||
#endif
|
||||
};
|
||||
|
||||
#ifdef WARN_LIB64
|
||||
#pragma message "If your architecture knows a /lib64/ or /lib32/ directory, please add an entry creating it here."
|
||||
/* And if your architecture doesn't know these directories, make sure to add ifdeffery here to
|
||||
* suppress this pragma message. */
|
||||
#endif
|
||||
|
||||
int base_filesystem_create(const char *root, uid_t uid, gid_t gid) {
|
||||
_cleanup_close_ int fd = -1;
|
||||
int r;
|
||||
|
||||
Reference in New Issue
Block a user