1*4882a593Smuzhiyun# We use scancode utlity for extacting licence information. 2*4882a593Smuzhiyun# scancode itself is an OSS Utlitity. 3*4882a593Smuzhiyun# For more informaiton https://github.com/nexB/scancode-toolkit 4*4882a593Smuzhiyun 5*4882a593SmuzhiyunSCANCODE_FORMAT ?= "html-app" 6*4882a593SmuzhiyunEXT = "${@'html' if d.getVar('SCANCODE_FORMAT') == 'html-app' else 'json'}" 7*4882a593SmuzhiyunSCANCODE_TOOLKIT = "${@get_scancode_toolkit(d)}" 8*4882a593SmuzhiyunSCANCODE_TAG = "v2.2.1" 9*4882a593SmuzhiyunSCANCODE_GIT_LOCATION ?= "https://github.com/nexB/scancode-toolkit.git" 10*4882a593SmuzhiyunSCANCODE_SRC_LOCATION ?= "${DL_DIR}/scancode" 11*4882a593Smuzhiyun 12*4882a593Smuzhiyundef get_scancode_toolkit(d): 13*4882a593Smuzhiyun lf = bb.utils.lockfile(d.getVar('SCANCODE_SRC_LOCATION') + ".lock") 14*4882a593Smuzhiyun if (not os.path.exists(d.getVar('SCANCODE_SRC_LOCATION'))): 15*4882a593Smuzhiyun os.system("git clone %s %s -b %s" % (d.getVar('SCANCODE_GIT_LOCATION'), d.getVar('SCANCODE_SRC_LOCATION'), d.getVar('SCANCODE_TAG'))) 16*4882a593Smuzhiyun bb.utils.unlockfile(lf) 17*4882a593Smuzhiyun return (d.getVar('SCANCODE_SRC_LOCATION')) 18*4882a593Smuzhiyun 19*4882a593Smuzhiyundo_scancode() { 20*4882a593Smuzhiyun mkdir -p ${DEPLOY_DIR_IMAGE}/scancode 21*4882a593Smuzhiyun cd ${SCANCODE_TOOLKIT} 22*4882a593Smuzhiyun if [ -d "${S}" ]; then 23*4882a593Smuzhiyun ./scancode ${S} --format ${SCANCODE_FORMAT} ${DEPLOY_DIR_IMAGE}/scancode/${PN}.${EXT} 24*4882a593Smuzhiyun fi 25*4882a593Smuzhiyun} 26*4882a593Smuzhiyun 27*4882a593Smuzhiyunaddtask scancode after do_patch 28*4882a593Smuzhiyun 29*4882a593Smuzhiyundo_scancode_oss() { 30*4882a593Smuzhiyun echo "We are done running scancode" 31*4882a593Smuzhiyun} 32*4882a593Smuzhiyun 33*4882a593Smuzhiyundo_scancode_oss[recrdeptask] = "do_scancode_oss do_scancode" 34*4882a593Smuzhiyundo_scancode_oss[nostamp] = "1" 35*4882a593Smuzhiyunaddtask do_scancode_oss after do_scancode 36