diff options
author | Richard Purdie <rpurdie@linux.intel.com> | 2010-08-19 22:48:17 +0100 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2010-08-19 22:48:17 +0100 |
commit | f070ee959c8eb4d49f820ec46f22be221b46485a (patch) | |
tree | 2ec8c060e4c49e01009d8b281046b5519b0d6ee8 /meta/classes/packaged-staging2.bbclass | |
parent | 657188bfef94fd0e124fb6415051a83e99db7563 (diff) | |
download | openembedded-core-f070ee959c8eb4d49f820ec46f22be221b46485a.tar.gz openembedded-core-f070ee959c8eb4d49f820ec46f22be221b46485a.tar.bz2 openembedded-core-f070ee959c8eb4d49f820ec46f22be221b46485a.tar.xz openembedded-core-f070ee959c8eb4d49f820ec46f22be221b46485a.zip |
Rename packaged-staging2 -> sstate and remove the old empty class
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'meta/classes/packaged-staging2.bbclass')
-rw-r--r-- | meta/classes/packaged-staging2.bbclass | 297 |
1 files changed, 0 insertions, 297 deletions
diff --git a/meta/classes/packaged-staging2.bbclass b/meta/classes/packaged-staging2.bbclass deleted file mode 100644 index 6476257fc..000000000 --- a/meta/classes/packaged-staging2.bbclass +++ /dev/null @@ -1,297 +0,0 @@ -PSTAGE2_MANIFESTS = "${TMPDIR}/pstagelogs" -PSTAGE2_MANFILEPREFIX = "${PSTAGE2_MANIFESTS}/manifest-${PSTAGE2_PKGARCH}-${PN}" - - -PSTAGE2_PKGARCH = "${TARGET_ARCH}" -PSTAGE2_PKGVERSION = "${PV}-${PR}" -PSTAGE2_PKGPN = "${@bb.data.expand('staging-${PN}-${MULTIMACH_ARCH}${TARGET_VENDOR}-${TARGET_OS}', d).replace('_', '-')}" - -PSTAGE2_PKGNAME = "${PSTAGE2_PKGPN}_${PSTAGE2_PKGVERSION}_${PSTAGE2_PKGARCH}" -PSTAGE2_EXTRAPATH ?= "" -PSTAGE2_PKGPATH = "${DISTRO}/${OELAYOUT_ABI}${PSTAGE2_EXTRAPATH}" -PSTAGE2_PKG = "${PSTAGE_DIR}2/${PSTAGE2_PKGPATH}/${PSTAGE2_PKGNAME}" - -PSTAGE2_SCAN_CMD ?= "find ${PSTAGE2_BUILDDIR} \( -name "*.la" -o -name "*-config" \) -type f" - -python () { - if bb.data.inherits_class('native', d): - bb.data.setVar('PSTAGE2_PKGARCH', bb.data.getVar('BUILD_ARCH', d), d) - elif bb.data.inherits_class('cross', d) or bb.data.inherits_class('crosssdk', d): - bb.data.setVar('PSTAGE2_PKGARCH', bb.data.expand("${BUILD_ARCH}_${TARGET_ARCH}", d), d) - elif bb.data.inherits_class('nativesdk', d): - bb.data.setVar('PSTAGE2_PKGARCH', bb.data.expand("${SDK_ARCH}", d), d) - elif bb.data.inherits_class('cross-canadian', d): - bb.data.setVar('PSTAGE2_PKGARCH', bb.data.expand("${SDK_ARCH}_${TARGET_ARCH}", d), d) - - # These classes encode staging paths into their scripts data so can only be - # reused if we manipulate the paths - if bb.data.inherits_class('native', d) or bb.data.inherits_class('cross', d) or bb.data.inherits_class('sdk', d) or bb.data.inherits_class('crosssdk', d): - scan_cmd = "grep -Irl ${STAGING_DIR} ${PSTAGE2_BUILDDIR}" - bb.data.setVar('PSTAGE2_SCAN_CMD', scan_cmd, d) - - for task in (bb.data.getVar('SSTATETASKS', d, True) or "").split(): - funcs = bb.data.getVarFlag(task, 'prefuncs', d) or "" - funcs = "sstate_task_prefunc " + funcs - bb.data.setVarFlag(task, 'prefuncs', funcs, d) - funcs = bb.data.getVarFlag(task, 'postfuncs', d) or "" - funcs = "sstate_task_postfunc " + funcs - bb.data.setVarFlag(task, 'postfuncs', funcs, d) -} - -def sstate_init(name, d): - ss = {} - ss['name'] = name - ss['dirs'] = [] - ss['plaindirs'] = [] - ss['lockfiles'] = [] - return ss - -def sstate_state_fromvars(d): - task = bb.data.getVar('BB_CURRENTTASK', d, True) - if not task: - bb.fatal("sstate code running without task context?!") - task = task.replace("_setscene", "") - - name = bb.data.expand(bb.data.getVarFlag("do_" + task, 'sstate-name', d), d) - inputs = (bb.data.expand(bb.data.getVarFlag("do_" + task, 'sstate-inputdirs', d) or "", d)).split() - outputs = (bb.data.expand(bb.data.getVarFlag("do_" + task, 'sstate-outputdirs', d) or "", d)).split() - plaindirs = (bb.data.expand(bb.data.getVarFlag("do_" + task, 'sstate-plaindirs', d) or "", d)).split() - lockfiles = (bb.data.expand(bb.data.getVarFlag("do_" + task, 'sstate-lockfile', d) or "", d)).split() - if not name or len(inputs) != len(outputs): - bb.fatal("sstate variables not setup correctly?!") - - ss = sstate_init(name, d) - for i in range(len(inputs)): - sstate_add(ss, inputs[i], outputs[i], d) - ss['lockfiles'] = lockfiles - ss['plaindirs'] = plaindirs - return ss - -def sstate_add(ss, source, dest, d): - srcbase = os.path.basename(source) - ss['dirs'].append([srcbase, source, dest]) - return ss - -def sstate_install(ss, d): - import oe.path - - sharedfiles = [] - shareddirs = [] - bb.mkdirhier(bb.data.expand("${PSTAGE2_MANIFESTS}", d)) - manifest = bb.data.expand("${PSTAGE2_MANFILEPREFIX}.%s" % ss['name'], d) - - if os.access(manifest, os.R_OK): - bb.fatal("Package already staged (%s)?!" % manifest) - - locks = [] - for lock in ss['lockfiles']: - locks.append(bb.utils.lockfile(lock)) - - for state in ss['dirs']: - oe.path.copytree(state[1], state[2]) - for walkroot, dirs, files in os.walk(state[1]): - for file in files: - srcpath = os.path.join(walkroot, file) - dstpath = srcpath.replace(state[1], state[2]) - bb.debug(2, "Staging %s to %s" % (srcpath, dstpath)) - sharedfiles.append(dstpath) - for dir in dirs: - dir = os.path.join(state[2], dir) - if not dir.endswith("/"): - dir = dir + "/" - shareddirs.append(dir) - f = open(manifest, "w") - for file in sharedfiles: - f.write(file + "\n") - # We want to ensure that directories appear at the end of the manifest - # so that when we test to see if they should be deleted any contents - # added by the task will have been removed first. - for dir in shareddirs: - f.write(dir + "\n") - f.close() - - for lock in locks: - bb.utils.unlockfile(lock) - -def sstate_installpkg(ss, d): - import oe.path - - pstageinst = bb.data.expand("${WORKDIR}/pstage-install-%s/" % ss['name'], d) - pstagepkg = bb.data.getVar('PSTAGE2_PKG', d, True) + '_' + ss['name'] + ".tgz" - - if not os.path.exists(pstagepkg): - pstaging_fetch(pstagepkg, d) - - if not os.path.isfile(pstagepkg): - bb.note("Staging package %s does not exist" % pstagepkg) - return False - - sstate_clean(ss, d) - - bb.data.setVar('PSTAGE2_INSTDIR', pstageinst, d) - bb.data.setVar('PSTAGE2_PKG', pstagepkg, d) - bb.build.exec_func('sstate_unpack_package', d) - - # Fixup hardcoded paths - fixmefn = pstageinst + "fixmepath" - if os.path.isfile(fixmefn): - staging = bb.data.getVar('STAGING_DIR', d, True) - fixmefd = open(fixmefn, "r") - fixmefiles = fixmefd.readlines() - fixmefd.close() - for file in fixmefiles: - os.system("sed -i -e s:FIXMESTAGINGDIR:%s:g %s" % (staging, pstageinst + file)) - - for state in ss['dirs']: - if os.path.exists(state[1]): - oe.path.remove(state[1]) - oe.path.copytree(pstageinst + state[0], state[1]) - sstate_install(ss, d) - - for plain in ss['plaindirs']: - bb.mkdirhier(pstageinst + plain) - oe.path.copytree(pstageinst + plain, bb.data.getVar('WORKDIR', d, True) + plain) - - return True - -def sstate_clean_manifest(manifest, d): - import oe.path - - if not os.path.exists(manifest): - return - - mfile = open(manifest) - entries = mfile.readlines() - mfile.close() - - for entry in entries: - entry = entry.strip() - if entry.endswith("/"): - if os.path.exists(entry) and len(os.listdir(entry)) == 0: - os.rmdir(entry) - else: - oe.path.remove(entry) - - oe.path.remove(manifest) - -def sstate_clean(ss, d): - - manifest = bb.data.expand("${PSTAGE2_MANFILEPREFIX}.%s" % ss['name'], d) - - locks = [] - for lock in ss['lockfiles']: - locks.append(bb.utils.lockfile(lock)) - - sstate_clean_manifest(manifest, d) - - for lock in locks: - bb.utils.unlockfile(lock) - -python sstate_cleanall() { - import fnmatch - - bb.note("Removing %s from staging" % bb.data.getVar('PN', d, True)) - - manifest_dir = bb.data.getVar('PSTAGE2_MANIFESTS', d, True) - manifest_pattern = bb.data.expand("manifest-${PN}.*", d) - - for manifest in (os.listdir(manifest_dir)): - if fnmatch.fnmatch(manifest, manifest_pattern): - sstate_clean_manifest(manifest_dir + "/" + manifest, d) -} - -do_clean[postfuncs] += "sstate_cleanall" -do_clean[dirs] += "${PSTAGE2_MANIFESTS}" - -def sstate_package(ss, d): - import oe.path - - pstagebuild = bb.data.expand("${WORKDIR}/pstage-build-%s/" % ss['name'], d) - pstagepkg = bb.data.getVar('PSTAGE2_PKG', d, True) + '_'+ ss['name'] + ".tgz" - bb.mkdirhier(pstagebuild) - bb.mkdirhier(os.path.dirname(pstagepkg)) - for state in ss['dirs']: - srcbase = state[0].rstrip("/").rsplit('/', 1)[0] - oe.path.copytree(state[1], pstagebuild + state[0]) - for walkroot, dirs, files in os.walk(state[1]): - for file in files: - srcpath = os.path.join(walkroot, file) - dstpath = srcpath.replace(state[1], pstagebuild + state[0]) - bb.debug(2, "Preparing %s for packaging at %s" % (srcpath, dstpath)) - - workdir = bb.data.getVar('WORKDIR', d, True) - for plain in ss['plaindirs']: - pdir = plain.replace(workdir, pstagebuild) - bb.mkdirhier(plain) - bb.mkdirhier(pdir) - oe.path.copytree(plain, pdir) - - bb.data.setVar('PSTAGE2_BUILDDIR', pstagebuild, d) - bb.data.setVar('PSTAGE2_PKG', pstagepkg, d) - bb.build.exec_func('sstate_create_package', d) - - return - -def pstaging_fetch(pstagepkg, d): - import bb.fetch - - # only try and fetch if the user has configured a mirror - if bb.data.getVar('PSTAGE_MIRROR', d) != "": - # Copy the data object and override DL_DIR and SRC_URI - pd = d.createCopy() - dldir = bb.data.expand("${PSTAGE_DIR}/${PSTAGE_PKGPATH}", pd) - mirror = bb.data.expand("${PSTAGE_MIRROR}/${PSTAGE_PKGPATH}/", pd) - srcuri = mirror + os.path.basename(pstagepkg) - bb.data.setVar('DL_DIR', dldir, pd) - bb.data.setVar('SRC_URI', srcuri, pd) - - # Try a fetch from the pstage mirror, if it fails just return and - # we will build the package - try: - bb.fetch.init([srcuri], pd) - bb.fetch.go(pd, [srcuri]) - except: - return - -def sstate_setscene(d): - shared_state = sstate_state_fromvars(d) - accelerate = sstate_installpkg(shared_state, d) - if not accelerate: - raise bb.build.FuncFailed("No suitable staging package found") - -python sstate_task_prefunc () { - shared_state = sstate_state_fromvars(d) - sstate_clean(shared_state, d) -} - -python sstate_task_postfunc () { - shared_state = sstate_state_fromvars(d) - sstate_install(shared_state, d) - sstate_package(shared_state, d) -} - - -# -# Shell function to generate a pstage package from a directory -# set as PSTAGE2_BUILDDIR -# -sstate_create_package () { - # Need to remove hardcoded paths and fix these when we install the - # staging packages. - for i in `${PSTAGE2_SCAN_CMD}` ; do \ - sed -i -e s:${STAGING_DIR}:FIXMESTAGINGDIR:g $i - echo $i | sed -e 's:${PSTAGE2_BUILDDIR}::' >> ${PSTAGE2_BUILDDIR}fixmepath - done - - cd ${PSTAGE2_BUILDDIR} - tar -cvzf ${PSTAGE2_PKG} * -} - -# -# Shell function to decompress and prepare a package for installation -# -sstate_unpack_package () { - mkdir -p ${PSTAGE2_INSTDIR} - cd ${PSTAGE2_INSTDIR} - tar -xvzf ${PSTAGE2_PKG} -} |