1*4882a593Smuzhiyun# 2*4882a593Smuzhiyun# Recipe needs to set MULTILIB_SCRIPTS in the form <pkgname>:<scriptname>, e.g. 3*4882a593Smuzhiyun# MULTILIB_SCRIPTS = "${PN}-dev:${bindir}/file1 ${PN}:${base_bindir}/file2" 4*4882a593Smuzhiyun# to indicate which script files to process from which packages. 5*4882a593Smuzhiyun# 6*4882a593Smuzhiyun 7*4882a593Smuzhiyuninherit update-alternatives 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunMULTILIB_SUFFIX = "${@d.getVar('base_libdir',1).split('/')[-1]}" 10*4882a593Smuzhiyun 11*4882a593SmuzhiyunPACKAGE_PREPROCESS_FUNCS += "multilibscript_rename" 12*4882a593Smuzhiyun 13*4882a593Smuzhiyunmultilibscript_rename() { 14*4882a593Smuzhiyun : 15*4882a593Smuzhiyun} 16*4882a593Smuzhiyun 17*4882a593Smuzhiyunpython () { 18*4882a593Smuzhiyun # Do nothing if multilib isn't being used 19*4882a593Smuzhiyun if not d.getVar("MULTILIB_VARIANTS"): 20*4882a593Smuzhiyun return 21*4882a593Smuzhiyun # Do nothing for native/cross 22*4882a593Smuzhiyun if bb.data.inherits_class('native', d) or bb.data.inherits_class('cross', d): 23*4882a593Smuzhiyun return 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun for entry in (d.getVar("MULTILIB_SCRIPTS", False) or "").split(): 26*4882a593Smuzhiyun pkg, script = entry.split(":") 27*4882a593Smuzhiyun epkg = d.expand(pkg) 28*4882a593Smuzhiyun scriptname = os.path.basename(script) 29*4882a593Smuzhiyun d.appendVar("ALTERNATIVE:" + epkg, " " + scriptname + " ") 30*4882a593Smuzhiyun d.setVarFlag("ALTERNATIVE_LINK_NAME", scriptname, script) 31*4882a593Smuzhiyun d.setVarFlag("ALTERNATIVE_TARGET", scriptname, script + "-${MULTILIB_SUFFIX}") 32*4882a593Smuzhiyun d.appendVar("multilibscript_rename", "\n mv ${PKGD}" + script + " ${PKGD}" + script + "-${MULTILIB_SUFFIX}") 33*4882a593Smuzhiyun d.appendVar("FILES:" + epkg, " " + script + "-${MULTILIB_SUFFIX}") 34*4882a593Smuzhiyun} 35