From 58e0b0dc2501957c27a58ad1e2ffebf61f48c3b6 Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Sun, 8 Nov 2009 12:43:39 +0100 Subject: gnome bbclass: delete more scrollkeeper junk --- classes/gnome.bbclass | 1 + 1 file changed, 1 insertion(+) (limited to 'classes') diff --git a/classes/gnome.bbclass b/classes/gnome.bbclass index 2045697516..cb03650b48 100644 --- a/classes/gnome.bbclass +++ b/classes/gnome.bbclass @@ -24,6 +24,7 @@ gnome_stage_includes() { do_install_append() { rm -rf ${D}${localstatedir}/lib/scrollkeeper/* + rm -rf ${D}${localstatedir}/scrollkeeper/* rm -f ${D}${datadir}/applications/*.cache } -- cgit v1.2.3 From 0d722f5b12f447a46af3f935c0c516bfab927893 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Sun, 8 Nov 2009 20:48:44 +0000 Subject: base.bbclass: Drop legacy rebuild mangling code Signed-off-by: Richard Purdie --- classes/base.bbclass | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) (limited to 'classes') diff --git a/classes/base.bbclass b/classes/base.bbclass index 89ee917d20..4cda29cf38 100644 --- a/classes/base.bbclass +++ b/classes/base.bbclass @@ -529,21 +529,11 @@ python do_cleanall() { do_cleanall[recrdeptask] = "do_clean" addtask cleanall after do_clean -#Uncomment this for bitbake 1.8.12 -#addtask rebuild after do_${BB_DEFAULT_TASK} -addtask rebuild +addtask rebuild after do_${BB_DEFAULT_TASK} do_rebuild[dirs] = "${TOPDIR}" do_rebuild[nostamp] = "1" python base_do_rebuild() { """rebuild a package""" - from bb import __version__ - try: - from distutils.version import LooseVersion - except ImportError: - def LooseVersion(v): print "WARNING: sanity.bbclass can't compare versions without python-distutils"; return 1 - if (LooseVersion(__version__) < LooseVersion('1.8.11')): - bb.build.exec_func('do_clean', d) - bb.build.exec_task('do_' + bb.data.getVar('BB_DEFAULT_TASK', d, 1), d) } addtask mrproper @@ -1235,18 +1225,7 @@ def base_after_parse(d): python () { import bb - from bb import __version__ base_after_parse(d) - - # Remove this for bitbake 1.8.12 - try: - from distutils.version import LooseVersion - except ImportError: - def LooseVersion(v): print "WARNING: sanity.bbclass can't compare versions without python-distutils"; return 1 - if (LooseVersion(__version__) >= LooseVersion('1.8.11')): - deps = bb.data.getVarFlag('do_rebuild', 'deps', d) or [] - deps.append('do_' + bb.data.getVar('BB_DEFAULT_TASK', d, 1)) - bb.data.setVarFlag('do_rebuild', 'deps', deps, d) } def check_app_exists(app, d): -- cgit v1.2.3 From 9a5937f6c6417ba8fd3464f03c69782d29813bbc Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Sun, 8 Nov 2009 20:54:00 +0000 Subject: base.bbclass: Drop import bb and import os as no longer needed Signed-off-by: Richard Purdie --- classes/base.bbclass | 34 +++++----------------------------- 1 file changed, 5 insertions(+), 29 deletions(-) (limited to 'classes') diff --git a/classes/base.bbclass b/classes/base.bbclass index 4cda29cf38..a3ea7bc685 100644 --- a/classes/base.bbclass +++ b/classes/base.bbclass @@ -49,7 +49,7 @@ def base_path_out(path, d): # for MD5/SHA handling def base_chk_load_parser(config_paths): - import ConfigParser, os, bb + import ConfigParser parser = ConfigParser.ConfigParser() if len(parser.read(config_paths)) < 1: raise ValueError("no ini files could be found") @@ -57,7 +57,6 @@ def base_chk_load_parser(config_paths): return parser def base_chk_file(parser, pn, pv, src_uri, localpath, data): - import os, bb no_checksum = False # Try PN-PV-SRC_URI first and then try PN-SRC_URI # we rely on the get method to create errors @@ -128,7 +127,6 @@ def base_chk_file(parser, pn, pv, src_uri, localpath, data): def base_dep_prepend(d): - import bb # # Ideally this will check a flag so we will operate properly in # the case where host == build == target, for now we don't work in @@ -150,7 +148,6 @@ def base_dep_prepend(d): return deps def base_read_file(filename): - import bb try: f = file( filename, "r" ) except IOError, reason: @@ -166,21 +163,18 @@ def base_ifelse(condition, iftrue = True, iffalse = False): return iffalse def base_conditional(variable, checkvalue, truevalue, falsevalue, d): - import bb if bb.data.getVar(variable,d,1) == checkvalue: return truevalue else: return falsevalue def base_less_or_equal(variable, checkvalue, truevalue, falsevalue, d): - import bb if float(bb.data.getVar(variable,d,1)) <= float(checkvalue): return truevalue else: return falsevalue def base_version_less_or_equal(variable, checkvalue, truevalue, falsevalue, d): - import bb result = bb.vercmp(bb.data.getVar(variable,d,True), checkvalue) if result <= 0: return truevalue @@ -188,7 +182,6 @@ def base_version_less_or_equal(variable, checkvalue, truevalue, falsevalue, d): return falsevalue def base_contains(variable, checkvalues, truevalue, falsevalue, d): - import bb matches = 0 if type(checkvalues).__name__ == "str": checkvalues = [checkvalues] @@ -200,7 +193,6 @@ def base_contains(variable, checkvalues, truevalue, falsevalue, d): return falsevalue def base_both_contain(variable1, variable2, checkvalue, d): - import bb if bb.data.getVar(variable1,d,1).find(checkvalue) != -1 and bb.data.getVar(variable2,d,1).find(checkvalue) != -1: return checkvalue else: @@ -211,8 +203,6 @@ DEPENDS_prepend="${@base_dep_prepend(d)} " # Returns PN with various suffixes removed # or PN if no matching suffix was found. def base_package_name(d): - import bb; - pn = bb.data.getVar('PN', d, 1) if pn.endswith("-native"): pn = pn[0:-7] @@ -229,7 +219,6 @@ def base_package_name(d): return pn def base_set_filespath(path, d): - import os, bb bb.note("base_set_filespath usage is deprecated, %s should be fixed" % d.getVar("P", 1)) filespath = [] # The ":" ensures we have an 'empty' override @@ -448,7 +437,6 @@ oe_libinstall() { } def package_stagefile(file, d): - import bb, os if bb.data.getVar('PSTAGING_ACTIVE', d, True) == "1": destfile = file.replace(bb.data.getVar("TMPDIR", d, 1), bb.data.getVar("PSTAGE_TMPDIR_STAGE", d, 1)) @@ -553,7 +541,6 @@ do_distclean[dirs] = "${TOPDIR}" do_distclean[nostamp] = "1" python base_do_distclean() { """clear downloaded sources, build and temp directories""" - import os bb.build.exec_func('do_clean', d) @@ -731,7 +718,7 @@ def subprocess_setup(): signal.signal(signal.SIGPIPE, signal.SIG_DFL) def oe_unpack_file(file, data, url = None): - import bb, os, subprocess + import subprocess if not url: url = "file://%s" % file dots = file.split(".") @@ -809,7 +796,7 @@ def oe_unpack_file(file, data, url = None): addtask unpack after do_fetch do_unpack[dirs] = "${WORKDIR}" python base_do_unpack() { - import re, os + import re localdata = bb.data.createCopy(d) bb.data.update_data(localdata) @@ -836,7 +823,6 @@ METADATA_REVISION = "${@base_get_scm_revision(d)}" METADATA_BRANCH = "${@base_get_scm_branch(d)}" def base_get_scm(d): - import os from bb import which baserepo = os.path.dirname(os.path.dirname(which(d.getVar("BBPATH", 1), "classes/base.bbclass"))) for (scm, scmpath) in {"svn": ".svn", @@ -897,7 +883,6 @@ def base_get_metadata_svn_revision(path, d): return revision def base_get_metadata_git_branch(path, d): - import os branch = os.popen('cd %s; PATH=%s git symbolic-ref HEAD 2>/dev/null' % (path, d.getVar("PATH", 1))).read().rstrip() if len(branch) != 0: @@ -905,7 +890,6 @@ def base_get_metadata_git_branch(path, d): return "" def base_get_metadata_git_revision(path, d): - import os rev = os.popen("cd %s; PATH=%s git show-ref HEAD 2>/dev/null" % (path, d.getVar("PATH", 1))).read().split(" ")[0].rstrip() if len(rev) != 0: return rev @@ -916,7 +900,7 @@ addhandler base_eventhandler python base_eventhandler() { from bb import note, error, data from bb.event import Handled, NotHandled, getName - import os + name = getName(e) if name == "TaskCompleted": @@ -1071,7 +1055,6 @@ def read_pkgdatafile(fn): return pkgdata def get_subpkgedata_fn(pkg, d): - import bb, os archs = bb.data.expand("${PACKAGE_ARCHS}", d).split(" ") archs.reverse() pkgdata = bb.data.expand('${TMPDIR}/pkgdata/', d) @@ -1083,25 +1066,20 @@ def get_subpkgedata_fn(pkg, d): return bb.data.expand('${PKGDATA_DIR}/runtime/%s' % pkg, d) def has_subpkgdata(pkg, d): - import bb, os return os.access(get_subpkgedata_fn(pkg, d), os.R_OK) def read_subpkgdata(pkg, d): - import bb return read_pkgdatafile(get_subpkgedata_fn(pkg, d)) def has_pkgdata(pn, d): - import bb, os fn = bb.data.expand('${PKGDATA_DIR}/%s' % pn, d) return os.access(fn, os.R_OK) def read_pkgdata(pn, d): - import bb fn = bb.data.expand('${PKGDATA_DIR}/%s' % pn, d) return read_pkgdatafile(fn) python read_subpackage_metadata () { - import bb data = read_pkgdata(bb.data.getVar('PN', d, 1), d) for key in data.keys(): @@ -1118,7 +1096,6 @@ python read_subpackage_metadata () { # Collapse FOO_pkg variables into FOO # def read_subpkgdata_dict(pkg, d): - import bb ret = {} subd = read_pkgdatafile(get_subpkgedata_fn(pkg, d)) for var in subd: @@ -1141,7 +1118,7 @@ DISTRO[unexport] = "1" def base_after_parse(d): - import bb, os, exceptions + import exceptions source_mirror_fetch = bb.data.getVar('SOURCE_MIRROR_FETCH', d, 0) if not source_mirror_fetch: @@ -1224,7 +1201,6 @@ def base_after_parse(d): bb.data.setVar('MULTIMACH_ARCH', multiarch, d) python () { - import bb base_after_parse(d) } -- cgit v1.2.3 From 353ba77e54bdd3d2af60e31590860b4a1e0b76a6 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Thu, 29 Oct 2009 23:39:34 +0000 Subject: package.bbclass: Move variable checks to one place making the code more readable (from Poky) Signed-off-by: Richard Purdie --- classes/package.bbclass | 52 +++++++++++++------------------------------------ 1 file changed, 14 insertions(+), 38 deletions(-) (limited to 'classes') diff --git a/classes/package.bbclass b/classes/package.bbclass index e7865754eb..f4a881ab57 100644 --- a/classes/package.bbclass +++ b/classes/package.bbclass @@ -29,9 +29,6 @@ def do_split_packages(d, root, file_regex, output_pattern, description, postinst import os, os.path, bb dvar = bb.data.getVar('D', d, True) - if not dvar: - bb.error("D not defined") - return packages = bb.data.getVar('PACKAGES', d, True).split() @@ -303,14 +300,7 @@ python package_do_split_locales() { return dvar = bb.data.getVar('D', d, True) - if not dvar: - bb.error("D not defined") - return - pn = bb.data.getVar('PN', d, True) - if not pn: - bb.error("PN not defined") - return if pn + '-locale' in packages: packages.remove(pn + '-locale') @@ -344,32 +334,17 @@ python package_do_split_locales() { } python populate_packages () { - import glob, stat, errno, re + import os, glob, stat, errno, re workdir = bb.data.getVar('WORKDIR', d, True) - if not workdir: - bb.error("WORKDIR not defined, unable to package") - return - - import os # path manipulations outdir = bb.data.getVar('DEPLOY_DIR', d, True) - if not outdir: - bb.error("DEPLOY_DIR not defined, unable to package") - return - bb.mkdirhier(outdir) - dvar = bb.data.getVar('D', d, True) - if not dvar: - bb.error("D not defined, unable to package") - return - bb.mkdirhier(dvar) - packages = bb.data.getVar('PACKAGES', d, True) - pn = bb.data.getVar('PN', d, True) - if not pn: - bb.error("PN not defined") - return + + bb.mkdirhier(outdir) + bb.mkdirhier(dvar) + os.chdir(dvar) @@ -621,9 +596,6 @@ python package_do_shlibs() { packages = bb.data.getVar('PACKAGES', d, True) workdir = bb.data.getVar('WORKDIR', d, True) - if not workdir: - bb.error("WORKDIR not defined") - return ver = bb.data.getVar('PV', d, True) if not ver: @@ -787,12 +759,7 @@ python package_do_pkgconfig () { import re, os packages = bb.data.getVar('PACKAGES', d, True) - workdir = bb.data.getVar('WORKDIR', d, True) - if not workdir: - bb.error("WORKDIR not defined") - return - pkgdest = bb.data.getVar('PKGDEST', d, True) shlibs_dir = bb.data.getVar('SHLIBSDIR', d, True) @@ -1059,6 +1026,15 @@ python package_do_package () { bb.debug(1, "No packages to build, skipping do_package") return + workdir = bb.data.getVar('WORKDIR', d, True) + outdir = bb.data.getVar('DEPLOY_DIR', d, True) + dvar = bb.data.getVar('D', d, True) + pn = bb.data.getVar('PN', d, True) + + if not workdir or not outdir or not dvar or not pn or not packages: + bb.error("WORKDIR, DEPLOY_DIR, D, and PN all must be defined, unable to package") + return + for f in (bb.data.getVar('PACKAGEFUNCS', d, True) or '').split(): bb.build.exec_func(f, d) package_run_hooks(f, d) -- cgit v1.2.3 From c41e3631d31a1932fcbb0098eab0520f90711cc3 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Thu, 29 Oct 2009 23:42:11 +0000 Subject: package.bbclass: Remove hardcoded use of PKGDEST variable (from Poky) Signed-off-by: Richard Purdie --- classes/package.bbclass | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'classes') diff --git a/classes/package.bbclass b/classes/package.bbclass index f4a881ab57..2c085be797 100644 --- a/classes/package.bbclass +++ b/classes/package.bbclass @@ -517,6 +517,7 @@ python emit_pkgdata() { return packages = bb.data.getVar('PACKAGES', d, True) + pkgdest = bb.data.getVar('PKGDEST', d, 1) pkgdatadir = bb.data.getVar('PKGDATA_DIR', d, True) pstageactive = bb.data.getVar('PSTAGING_ACTIVE', d, True) @@ -560,7 +561,7 @@ python emit_pkgdata() { allow_empty = bb.data.getVar('ALLOW_EMPTY_%s' % pkg, d, True) if not allow_empty: allow_empty = bb.data.getVar('ALLOW_EMPTY', d, True) - root = "%s/install/%s" % (workdir, pkg) + root = "%s/%s" % (pkgdest, pkg) os.chdir(root) g = glob('*') + glob('.[!.]*') if g or allow_empty == "1": -- cgit v1.2.3 From 29c7d3351f43678c6e93b707b301832009f64b31 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Fri, 30 Oct 2009 00:08:19 +0000 Subject: package.bbclass: Change to operate on a copy of the install directory instead of directly. Also take the opportunity to rename the temp directories so their function is clear (from Poky) Signed-off-by: Richard Purdie --- classes/package.bbclass | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) (limited to 'classes') diff --git a/classes/package.bbclass b/classes/package.bbclass index 2c085be797..03618ba6fc 100644 --- a/classes/package.bbclass +++ b/classes/package.bbclass @@ -2,7 +2,8 @@ # General packaging help functions # -PKGDEST = "${WORKDIR}/install" +PKGD = "${WORKDIR}/package" +PKGDEST = "${WORKDIR}/packages-split" def legitimize_package_name(s): """ @@ -28,7 +29,7 @@ def do_split_packages(d, root, file_regex, output_pattern, description, postinst """ import os, os.path, bb - dvar = bb.data.getVar('D', d, True) + dvar = bb.data.getVar('PKGD', d, True) packages = bb.data.getVar('PACKAGES', d, True).split() @@ -299,7 +300,7 @@ python package_do_split_locales() { bb.note("datadir not defined") return - dvar = bb.data.getVar('D', d, True) + dvar = bb.data.getVar('PKGD', d, True) pn = bb.data.getVar('PN', d, True) if pn + '-locale' in packages: @@ -333,19 +334,29 @@ python package_do_split_locales() { bb.data.setVar('PACKAGES', ' '.join(packages), d) } +python perform_packagecopy () { + import os + + dest = bb.data.getVar('D', d, True) + dvar = bb.data.getVar('PKGD', d, True) + + bb.mkdirhier(dvar) + + # Start by package population by taking a copy of the installed + # files to operate on + os.system('cp -pPR %s/* %s/' % (dest, dvar)) +} + python populate_packages () { import os, glob, stat, errno, re workdir = bb.data.getVar('WORKDIR', d, True) outdir = bb.data.getVar('DEPLOY_DIR', d, True) - dvar = bb.data.getVar('D', d, True) + dvar = bb.data.getVar('PKGD', d, True) packages = bb.data.getVar('PACKAGES', d, True) pn = bb.data.getVar('PN', d, True) bb.mkdirhier(outdir) - bb.mkdirhier(dvar) - - os.chdir(dvar) def isexec(path): @@ -981,7 +992,8 @@ python package_depchains() { } -PACKAGEFUNCS ?= "package_do_split_locales \ +PACKAGEFUNCS ?= "perform_packagecopy \ + package_do_split_locales \ populate_packages \ package_do_shlibs \ package_do_pkgconfig \ @@ -1029,11 +1041,12 @@ python package_do_package () { workdir = bb.data.getVar('WORKDIR', d, True) outdir = bb.data.getVar('DEPLOY_DIR', d, True) - dvar = bb.data.getVar('D', d, True) + dest = bb.data.getVar('D', d, True) + dvar = bb.data.getVar('PKGD', d, True) pn = bb.data.getVar('PN', d, True) - if not workdir or not outdir or not dvar or not pn or not packages: - bb.error("WORKDIR, DEPLOY_DIR, D, and PN all must be defined, unable to package") + if not workdir or not outdir or not dest or not dvar or not pn or not packages: + bb.error("WORKDIR, DEPLOY_DIR, D, PN and PKGD all must be defined, unable to package") return for f in (bb.data.getVar('PACKAGEFUNCS', d, True) or '').split(): -- cgit v1.2.3 From 6111d7132a0c7aa0b4827a3bcca05156a7d20d57 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Fri, 30 Oct 2009 00:31:21 +0000 Subject: package.bbclass: Add the option to declare package preprocess function hooks (from Poky) Signed-off-by: Richard Purdie --- classes/package.bbclass | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'classes') diff --git a/classes/package.bbclass b/classes/package.bbclass index 03618ba6fc..1c14908f1a 100644 --- a/classes/package.bbclass +++ b/classes/package.bbclass @@ -991,8 +991,9 @@ python package_depchains() { pkg_addrrecs(pkg, base, suffix, func, rdeps, d) } - +PACKAGE_PREPROCESS_FUNCS ?= "" PACKAGEFUNCS ?= "perform_packagecopy \ + ${PACKAGE_PREPROCESS_FUNCS} \ package_do_split_locales \ populate_packages \ package_do_shlibs \ -- cgit v1.2.3 From 96b090d1b469720f6f6a44a20f1bb96228979d6b Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Fri, 30 Oct 2009 02:41:02 +0000 Subject: autotools.bbclass: Remove pointless inherit (from Poky) Signed-off-by: Richard Purdie --- classes/autotools.bbclass | 2 -- 1 file changed, 2 deletions(-) (limited to 'classes') diff --git a/classes/autotools.bbclass b/classes/autotools.bbclass index 8236a27c76..b4b1c6ec8a 100644 --- a/classes/autotools.bbclass +++ b/classes/autotools.bbclass @@ -1,5 +1,3 @@ -inherit base - # use autotools_stage_all for native packages AUTOTOOLS_NATIVE_STAGE_INSTALL = "1" -- cgit v1.2.3 From 6f481bcc549751aa1d7017de8c77a7606a74c468 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Fri, 30 Oct 2009 02:42:06 +0000 Subject: autotools.bbclass: Allow for leading whitespace in gettext and intltool searches (from Poky) Signed-off-by: Richard Purdie --- classes/autotools.bbclass | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'classes') diff --git a/classes/autotools.bbclass b/classes/autotools.bbclass index b4b1c6ec8a..b7a91693e1 100644 --- a/classes/autotools.bbclass +++ b/classes/autotools.bbclass @@ -113,7 +113,7 @@ autotools_do_configure() { else CONFIGURE_AC=configure.ac fi - if grep "^AM_GLIB_GNU_GETTEXT" $CONFIGURE_AC >/dev/null; then + if grep "^[[:space:]]*AM_GLIB_GNU_GETTEXT" $CONFIGURE_AC >/dev/null; then if grep "sed.*POTFILES" $CONFIGURE_AC >/dev/null; then : do nothing -- we still have an old unmodified configure.ac else @@ -121,7 +121,7 @@ autotools_do_configure() { echo "no" | glib-gettextize --force --copy fi fi - if grep "^[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC >/dev/null; then + if grep "^[[:space:]]*[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC >/dev/null; then oenote Executing intltoolize --copy --force --automake intltoolize --copy --force --automake fi -- cgit v1.2.3 From f6c3cb05c0ef1836a3146a39dc40cbee367486e8 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Fri, 30 Oct 2009 02:43:12 +0000 Subject: autotools.bbclass: Create m4 directory earlier avoding issues with intltoolize (from Poky) Signed-off-by: Richard Purdie --- classes/autotools.bbclass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'classes') diff --git a/classes/autotools.bbclass b/classes/autotools.bbclass index b7a91693e1..45b269f4fd 100644 --- a/classes/autotools.bbclass +++ b/classes/autotools.bbclass @@ -121,12 +121,12 @@ autotools_do_configure() { echo "no" | glib-gettextize --force --copy fi fi + mkdir -p m4 if grep "^[[:space:]]*[AI][CT]_PROG_INTLTOOL" $CONFIGURE_AC >/dev/null; then oenote Executing intltoolize --copy --force --automake intltoolize --copy --force --automake fi oenote Executing autoreconf --verbose --install --force ${EXTRA_AUTORECONF} $acpaths - mkdir -p m4 autoreconf -Wcross --verbose --install --force ${EXTRA_AUTORECONF} $acpaths || oefatal "autoreconf execution failed." cd $olddir fi -- cgit v1.2.3 From c942cea699be2e07b4dfe9ced8b200756c80eb02 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Fri, 30 Oct 2009 21:59:06 +0000 Subject: packagedata.bbclass: Split package data handling functions out from base.bclass (from Poky) Signed-off-by: Richard Purdie --- classes/base.bbclass | 77 ++------------------------------------------- classes/packagedata.bbclass | 73 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+), 75 deletions(-) create mode 100644 classes/packagedata.bbclass (limited to 'classes') diff --git a/classes/base.bbclass b/classes/base.bbclass index a3ea7bc685..7f24482605 100644 --- a/classes/base.bbclass +++ b/classes/base.bbclass @@ -1008,6 +1008,8 @@ addtask build after do_populate_staging do_build = "" do_build[func] = "1" +INHERIT =+ "packagedata" + # Functions that update metadata based on files outputted # during the build process. @@ -1028,81 +1030,6 @@ def explode_deps(s): r.append(i) return r -def packaged(pkg, d): - import os, bb - return os.access(get_subpkgedata_fn(pkg, d) + '.packaged', os.R_OK) - -def read_pkgdatafile(fn): - pkgdata = {} - - def decode(str): - import codecs - c = codecs.getdecoder("string_escape") - return c(str)[0] - - import os - if os.access(fn, os.R_OK): - import re - f = file(fn, 'r') - lines = f.readlines() - f.close() - r = re.compile("([^:]+):\s*(.*)") - for l in lines: - m = r.match(l) - if m: - pkgdata[m.group(1)] = decode(m.group(2)) - - return pkgdata - -def get_subpkgedata_fn(pkg, d): - archs = bb.data.expand("${PACKAGE_ARCHS}", d).split(" ") - archs.reverse() - pkgdata = bb.data.expand('${TMPDIR}/pkgdata/', d) - targetdir = bb.data.expand('${TARGET_VENDOR}-${TARGET_OS}/runtime/', d) - for arch in archs: - fn = pkgdata + arch + targetdir + pkg - if os.path.exists(fn): - return fn - return bb.data.expand('${PKGDATA_DIR}/runtime/%s' % pkg, d) - -def has_subpkgdata(pkg, d): - return os.access(get_subpkgedata_fn(pkg, d), os.R_OK) - -def read_subpkgdata(pkg, d): - return read_pkgdatafile(get_subpkgedata_fn(pkg, d)) - -def has_pkgdata(pn, d): - fn = bb.data.expand('${PKGDATA_DIR}/%s' % pn, d) - return os.access(fn, os.R_OK) - -def read_pkgdata(pn, d): - fn = bb.data.expand('${PKGDATA_DIR}/%s' % pn, d) - return read_pkgdatafile(fn) - -python read_subpackage_metadata () { - data = read_pkgdata(bb.data.getVar('PN', d, 1), d) - - for key in data.keys(): - bb.data.setVar(key, data[key], d) - - for pkg in bb.data.getVar('PACKAGES', d, 1).split(): - sdata = read_subpkgdata(pkg, d) - for key in sdata.keys(): - bb.data.setVar(key, sdata[key], d) -} - - -# -# Collapse FOO_pkg variables into FOO -# -def read_subpkgdata_dict(pkg, d): - ret = {} - subd = read_pkgdatafile(get_subpkgedata_fn(pkg, d)) - for var in subd: - newvar = var.replace("_" + pkg, "") - ret[newvar] = subd[var] - return ret - # Make sure MACHINE isn't exported # (breaks binutils at least) MACHINE[unexport] = "1" diff --git a/classes/packagedata.bbclass b/classes/packagedata.bbclass new file mode 100644 index 0000000000..86f18a9e96 --- /dev/null +++ b/classes/packagedata.bbclass @@ -0,0 +1,73 @@ +def packaged(pkg, d): + return os.access(get_subpkgedata_fn(pkg, d) + '.packaged', os.R_OK) + +def read_pkgdatafile(fn): + pkgdata = {} + + def decode(str): + import codecs + c = codecs.getdecoder("string_escape") + return c(str)[0] + + if os.access(fn, os.R_OK): + import re + f = file(fn, 'r') + lines = f.readlines() + f.close() + r = re.compile("([^:]+):\s*(.*)") + for l in lines: + m = r.match(l) + if m: + pkgdata[m.group(1)] = decode(m.group(2)) + + return pkgdata + +def get_subpkgedata_fn(pkg, d): + archs = bb.data.expand("${PACKAGE_ARCHS}", d).split(" ") + archs.reverse() + pkgdata = bb.data.expand('${TMPDIR}/pkgdata/', d) + targetdir = bb.data.expand('${TARGET_VENDOR}-${TARGET_OS}/runtime/', d) + for arch in archs: + fn = pkgdata + arch + targetdir + pkg + if os.path.exists(fn): + return fn + return bb.data.expand('${PKGDATA_DIR}/runtime/%s' % pkg, d) + +def has_subpkgdata(pkg, d): + return os.access(get_subpkgedata_fn(pkg, d), os.R_OK) + +def read_subpkgdata(pkg, d): + return read_pkgdatafile(get_subpkgedata_fn(pkg, d)) + +def has_pkgdata(pn, d): + fn = bb.data.expand('${PKGDATA_DIR}/%s' % pn, d) + return os.access(fn, os.R_OK) + +def read_pkgdata(pn, d): + fn = bb.data.expand('${PKGDATA_DIR}/%s' % pn, d) + return read_pkgdatafile(fn) + +python read_subpackage_metadata () { + data = read_pkgdata(bb.data.getVar('PN', d, 1), d) + + for key in data.keys(): + bb.data.setVar(key, data[key], d) + + for pkg in bb.data.getVar('PACKAGES', d, 1).split(): + sdata = read_subpkgdata(pkg, d) + for key in sdata.keys(): + bb.data.setVar(key, sdata[key], d) +} + + +# +# Collapse FOO_pkg variables into FOO +# +def read_subpkgdata_dict(pkg, d): + ret = {} + subd = read_pkgdatafile(get_subpkgedata_fn(pkg, d)) + for var in subd: + newvar = var.replace("_" + pkg, "") + ret[newvar] = subd[var] + return ret + -- cgit v1.2.3 From 0fc2395bd61abaac94c670e671042f59c6d88e00 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Mon, 9 Nov 2009 14:07:11 +0000 Subject: base.bbclass: Promote packagedata inherit to a direct inherit due to ordering issues Signed-off-by: Richard Purdie --- classes/base.bbclass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'classes') diff --git a/classes/base.bbclass b/classes/base.bbclass index 7f24482605..9de2c67af1 100644 --- a/classes/base.bbclass +++ b/classes/base.bbclass @@ -1008,7 +1008,7 @@ addtask build after do_populate_staging do_build = "" do_build[func] = "1" -INHERIT =+ "packagedata" +inherit packagedata # Functions that update metadata based on files outputted # during the build process. -- cgit v1.2.3