forked from Mirrors/flatpak-builder
build: Always set personality to linux32 when cross-building
This means that autodetection during builds works much better. Fixes https://github.com/flatpak/flatpak/issues/712tingping/wmclass
parent
63978c299a
commit
fe56c08203
|
@ -269,7 +269,7 @@ flatpak_builtin_build (int argc, char **argv, GCancellable *cancellable, GError
|
|||
argv_array = g_ptr_array_new_with_free_func (g_free);
|
||||
g_ptr_array_add (argv_array, g_strdup (flatpak_get_bwrap ()));
|
||||
|
||||
run_flags = FLATPAK_RUN_FLAG_DEVEL | FLATPAK_RUN_FLAG_NO_SESSION_HELPER;
|
||||
run_flags = FLATPAK_RUN_FLAG_DEVEL | FLATPAK_RUN_FLAG_NO_SESSION_HELPER | FLATPAK_RUN_FLAG_SET_PERSONALITY;
|
||||
if (custom_usr)
|
||||
run_flags |= FLATPAK_RUN_FLAG_WRITABLE_ETC;
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include <sys/utsname.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/personality.h>
|
||||
#include <grp.h>
|
||||
|
||||
#ifdef ENABLE_SECCOMP
|
||||
|
@ -4133,6 +4134,13 @@ flatpak_run_setup_base_argv (GPtrArray *argv_array,
|
|||
if ((flags & FLATPAK_RUN_FLAG_WRITABLE_ETC) == 0)
|
||||
add_monitor_path_args ((flags & FLATPAK_RUN_FLAG_NO_SESSION_HELPER) == 0, argv_array);
|
||||
|
||||
if ((flags & FLATPAK_RUN_FLAG_SET_PERSONALITY) &&
|
||||
flatpak_is_linux32_arch (arch))
|
||||
{
|
||||
g_debug ("Setting personality linux32");
|
||||
personality (PER_LINUX32);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -84,6 +84,7 @@ typedef enum {
|
|||
FLATPAK_RUN_FLAG_WRITABLE_ETC = (1 << 6),
|
||||
FLATPAK_RUN_FLAG_NO_SESSION_BUS_PROXY = (1 << 7),
|
||||
FLATPAK_RUN_FLAG_NO_SYSTEM_BUS_PROXY = (1 << 8),
|
||||
FLATPAK_RUN_FLAG_SET_PERSONALITY = (1 << 9),
|
||||
} FlatpakRunFlags;
|
||||
|
||||
gboolean flatpak_run_add_extension_args (GPtrArray *argv_array,
|
||||
|
|
|
@ -368,6 +368,22 @@ flatpak_get_arch (void)
|
|||
#endif
|
||||
}
|
||||
|
||||
gboolean
|
||||
flatpak_is_linux32_arch (const char *arch)
|
||||
{
|
||||
const char *kernel_arch = flatpak_get_kernel_arch ();
|
||||
|
||||
if (strcmp (kernel_arch, "x86_64") == 0 &&
|
||||
strcmp (arch, "i386") == 0)
|
||||
return TRUE;
|
||||
|
||||
if (strcmp (kernel_arch, "aarch64") == 0 &&
|
||||
strcmp (arch, "arm") == 0)
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* Get all compatible arches for this host in order of priority */
|
||||
const char **
|
||||
flatpak_get_arches (void)
|
||||
|
|
|
@ -65,6 +65,7 @@ gboolean flatpak_is_in_sandbox (void);
|
|||
|
||||
const char * flatpak_get_arch (void);
|
||||
const char ** flatpak_get_arches (void);
|
||||
gboolean flatpak_is_linux32_arch (const char *arch);
|
||||
|
||||
const char ** flatpak_get_gl_drivers (void);
|
||||
gboolean flatpak_extension_matches_reason (const char *extension_id,
|
||||
|
|
Loading…
Reference in New Issue