aboutsummaryrefslogtreecommitdiffstats
path: root/meta/classes/uninative.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes/uninative.bbclass')
-rw-r--r--meta/classes/uninative.bbclass41
1 files changed, 38 insertions, 3 deletions
diff --git a/meta/classes/uninative.bbclass b/meta/classes/uninative.bbclass
index 0cd27db853..fe1e89b29c 100644
--- a/meta/classes/uninative.bbclass
+++ b/meta/classes/uninative.bbclass
@@ -2,16 +2,51 @@ NATIVELSBSTRING = "universal"
UNINATIVE_LOADER ?= "${@bb.utils.contains('BUILD_ARCH', 'x86_64', '${STAGING_DIR_NATIVE}/lib/ld-linux-x86-64.so.2', '${STAGING_DIR_NATIVE}/lib/ld-linux.so.2', d)}"
+UNINATIVE_URL ?= "unset"
+UNINATIVE_TARBALL ?= "${BUILD_ARCH}-nativesdk-libc.tar.bz2"
+# Example checksums
+#UNINATIVE_CHECKSUM[i586] = "dead"
+#UNINATIVE_CHECKSUM[x86_64] = "dead"
+UNINATIVE_DLDIR ?= "${COREBASE}"
+
addhandler uninative_eventhandler
uninative_eventhandler[eventmask] = "bb.event.BuildStarted"
python uninative_eventhandler() {
loader = e.data.getVar("UNINATIVE_LOADER", True)
+ tarball = d.getVar("UNINATIVE_TARBALL", True)
+ tarballdir = d.getVar("UNINATIVE_DLDIR", True)
if not os.path.exists(loader):
import subprocess
- cmd = e.data.expand("mkdir -p ${STAGING_DIR}; cd ${STAGING_DIR}; tar -xjf ${COREBASE}/${BUILD_ARCH}-nativesdk-libc.tar.bz2; ${STAGING_DIR}/relocate_sdk.py ${STAGING_DIR_NATIVE} ${UNINATIVE_LOADER} ${UNINATIVE_LOADER} ${STAGING_BINDIR_NATIVE}/patchelf-uninative")
- #bb.warn("nativesdk lib extraction: " + cmd)
- subprocess.check_call(cmd, shell=True)
+
+ olddir = os.getcwd()
+ if not os.path.exists(os.path.join(tarballdir, tarball)):
+ # Copy the data object and override DL_DIR and SRC_URI
+ localdata = bb.data.createCopy(d)
+
+ if d.getVar("UNINATIVE_URL", True) == "unset":
+ bb.fatal("Uninative selected but not configured, please set UNINATIVE_URL")
+
+ chksum = d.getVarFlag("UNINATIVE_CHECKSUM", d.getVar("BUILD_ARCH", True), True)
+ if not chksum:
+ bb.fatal("Uninative selected but not configured correctly, please set UNINATIVE_CHECKSUM[%s]" % d.getVar("BUILD_ARCH", True))
+
+ srcuri = d.expand("${UNINATIVE_URL}${UNINATIVE_TARBALL};md5sum=%s" % chksum)
+ dldir = localdata.expand(tarballdir)
+ localdata.setVar('FILESPATH', dldir)
+ localdata.setVar('DL_DIR', dldir)
+ bb.note("Fetching uninative binary shim from %s" % srcuri)
+ fetcher = bb.fetch2.Fetch([srcuri], localdata, cache=False)
+ try:
+ fetcher.download()
+ except Exception as exc:
+ bb.fatal("Unable to download uninative tarball: %s" % str(exc))
+ cmd = e.data.expand("mkdir -p ${STAGING_DIR}; cd ${STAGING_DIR}; tar -xjf ${UNINATIVE_DLDIR}/${UNINATIVE_TARBALL}; ${STAGING_DIR}/relocate_sdk.py ${STAGING_DIR_NATIVE} ${UNINATIVE_LOADER} ${UNINATIVE_LOADER} ${STAGING_BINDIR_NATIVE}/patchelf-uninative")
+ try:
+ subprocess.check_call(cmd, shell=True)
+ except subprocess.CalledProcessError as exc:
+ bb.fatal("Unable to install uninative tarball: %s" % str(exc))
+ os.chdir(olddir)
}
SSTATEPOSTUNPACKFUNCS_append = " uninative_changeinterp"