diff options
Diffstat (limited to 'poky/meta/files/rust-ccld-wrapper.c')
-rw-r--r-- | poky/meta/files/rust-ccld-wrapper.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/poky/meta/files/rust-ccld-wrapper.c b/poky/meta/files/rust-ccld-wrapper.c new file mode 100644 index 000000000..6bc9958b9 --- /dev/null +++ b/poky/meta/files/rust-ccld-wrapper.c @@ -0,0 +1,29 @@ +/* + * Copyright 2021 Richard Purdie + * + * SPDX-License-Identifier: GPL-2.0-only + */ + +#include <errno.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +/* + * Run the original script (argv[0] + ".real") with LD_LIBRARY_PATH unset + * This avoids issues where cargo is running a wrapper script using /bin/sh from the host + * which links to something which has an incompatible version in in recipe-sysroot-native + * such as libtinfo on centos 7. + */ + +int main(int argc, char* argv[]) { + char *real = malloc(strlen(argv[0] + 5)); + strcpy(real, argv[0]); + strcpy(real + strlen(argv[0]), ".real"); + putenv("LD_LIBRARY_PATH="); + if(execv(real, argv) == -1) { + printf("Wrapper failed to execute, error: %s\n", strerror(errno)); + return -1; + } +} |