1*4882a593SmuzhiyunFrom 9eceb43dd676afe2f675bd65ab369ba4d14f6537 Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Changqing Li <changqing.li@windriver.com> 3*4882a593SmuzhiyunDate: Thu, 18 Nov 2021 07:16:39 +0000 4*4882a593SmuzhiyunSubject: [PATCH] Rewrite cargo-host-linker in python3 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunMozjs compile failed with this failure: 7*4882a593Smuzhiyun/bin/sh: /lib64/libc.so.6: version `GLIBC_2.33' not found (required by /build/tmp-glibc/work/corei7-64-wrs-linux/mozjs/91.1.0-r0/recipe-sysroot-native/usr/lib/libtinfo.so.5) 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunRoot Cause: 10*4882a593Smuzhiyuncargo-host-linker has /bin/sh as it's interpreter, but cargo run the cmd 11*4882a593Smuzhiyunwith LD_LIBRARY_PATH set to recipe-sysroot-native. The host /bin/sh links 12*4882a593Smuzhiyunlibtinfo.so.5 under recipe-sysroot-native, which needs higher libc. But 13*4882a593Smuzhiyunhost libc is older libc. So the incompatible problem occurred. 14*4882a593Smuzhiyun 15*4882a593SmuzhiyunSolution: 16*4882a593Smuzhiyunrewrite cargo-host-linker in python3 17*4882a593Smuzhiyun 18*4882a593SmuzhiyunUpstream-Status: Inappropriate [oe specific] 19*4882a593Smuzhiyun 20*4882a593SmuzhiyunSigned-off-by: Changqing Li <changqing.li@windriver.com> 21*4882a593Smuzhiyun--- 22*4882a593Smuzhiyun build/cargo-host-linker | 24 +++++++--- 23*4882a593Smuzhiyun 1 file changed, 21 insertions(+), 3 deletions(-) 24*4882a593Smuzhiyun 25*4882a593Smuzhiyundiff --git a/build/cargo-host-linker b/build/cargo-host-linker 26*4882a593Smuzhiyunindex cbd0472bf7..ccd8bffec1 100755 27*4882a593Smuzhiyun--- a/build/cargo-host-linker 28*4882a593Smuzhiyun+++ b/build/cargo-host-linker 29*4882a593Smuzhiyun@@ -1,3 +1,21 @@ 30*4882a593Smuzhiyun-#!/bin/sh 31*4882a593Smuzhiyun-# See comment in cargo-linker. 32*4882a593Smuzhiyun-eval ${MOZ_CARGO_WRAP_HOST_LD} ${MOZ_CARGO_WRAP_HOST_LDFLAGS} '"$@"' 33*4882a593Smuzhiyun+#!/usr/bin/env python3 34*4882a593Smuzhiyun+ 35*4882a593Smuzhiyun+import os,sys 36*4882a593Smuzhiyun+ 37*4882a593Smuzhiyun+if os.environ['MOZ_CARGO_WRAP_HOST_LD'].strip(): 38*4882a593Smuzhiyun+ binary=os.environ['MOZ_CARGO_WRAP_HOST_LD'].split()[0] 39*4882a593Smuzhiyun+else: 40*4882a593Smuzhiyun+ sys.exit(0) 41*4882a593Smuzhiyun+ 42*4882a593Smuzhiyun+if os.environ['MOZ_CARGO_WRAP_HOST_LDFLAGS'].strip(): 43*4882a593Smuzhiyun+ if os.environ['MOZ_CARGO_WRAP_HOST_LD'].split()[1:]: 44*4882a593Smuzhiyun+ args=[os.environ['MOZ_CARGO_WRAP_HOST_LD'].split()[0]] + os.environ['MOZ_CARGO_WRAP_HOST_LD'].split()[1:] + [os.environ['MOZ_CARGO_WRAP_HOST_LDFLAGS']] + sys.argv[1:] 45*4882a593Smuzhiyun+ else: 46*4882a593Smuzhiyun+ args=[os.environ['MOZ_CARGO_WRAP_HOST_LD'].split()[0]] + [os.environ['MOZ_CARGO_WRAP_HOST_LDFLAGS']] + sys.argv[1:] 47*4882a593Smuzhiyun+else: 48*4882a593Smuzhiyun+ if os.environ['MOZ_CARGO_WRAP_HOST_LD'].split()[1:]: 49*4882a593Smuzhiyun+ args=[os.environ['MOZ_CARGO_WRAP_HOST_LD'].split()[0]] + os.environ['MOZ_CARGO_WRAP_HOST_LD'].split()[1:] + sys.argv[1:] 50*4882a593Smuzhiyun+ else: 51*4882a593Smuzhiyun+ args=[os.environ['MOZ_CARGO_WRAP_HOST_LD'].split()[0]] + sys.argv[1:] 52*4882a593Smuzhiyun+ 53*4882a593Smuzhiyun+os.execvp(binary, args) 54*4882a593Smuzhiyun-- 55*4882a593Smuzhiyun2.33.1 56*4882a593Smuzhiyun 57