summaryrefslogtreecommitdiffstats
path: root/meta/classes
diff options
context:
space:
mode:
authorNitin A Kamble <nitin.a.kamble@intel.com>2010-05-27 12:18:23 -0700
committerRichard Purdie <rpurdie@linux.intel.com>2010-06-02 14:06:02 +0100
commit5ae3f6553141aecce3b98e0f06e4b99f36764917 (patch)
tree2fe1765ea1bcf00c112794514b62cf1cfa2c76fa /meta/classes
parent8514bcf5f857db19789b6f0f88300609622a98fe (diff)
downloadpoky-5ae3f6553141aecce3b98e0f06e4b99f36764917.tar.gz
do_distro_check: Recipe exists in other distros?
This adds a new task (distro_check) for each recipe. The task generates the source package list for Fedora OpenSuSE Ubuntu Debian & Mandriva Linux distros. As one recipe or source package can generate multiple target packages the recipe name is compared with the source package name list of LInux distributions. Thread locking is used to avoid multiple threads racing for the package list update. Then the recipe name (PN) is checked if it exists in the package list of distros. And if the DISTRO_PN_ALIAS then it is used to copmare pacakge_name instead of the PN variable. Just for example the DISTRO_PN_ALIAS can be defined in the recipe (.bb) files like this In the file xset_1.0.4.bb: DISTRO_PN_ALIAS = "Fedora=xorg-x11-server-utils;\ Ubuntu=x11-xserver-utils; Debian=x11-xserver-utils;Opensuse=xorg-x11" The final results are stored in the tmp/log/distro_check-${DATETIME}.result file. FYI this command will generate the results for all recipies: bitbake world -f -c distro_check Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
Diffstat (limited to 'meta/classes')
-rw-r--r--meta/classes/utility-tasks.bbclass22
1 files changed, 22 insertions, 0 deletions
diff --git a/meta/classes/utility-tasks.bbclass b/meta/classes/utility-tasks.bbclass
index 8bec8d463a..64d65c8aed 100644
--- a/meta/classes/utility-tasks.bbclass
+++ b/meta/classes/utility-tasks.bbclass
@@ -95,3 +95,25 @@ do_buildall() {
95 : 95 :
96} 96}
97 97
98addtask distro_check after do_distro_check
99do_distro_check[nostamp] = "1"
100python do_distro_check() {
101 """checks if the package is present in other public Linux distros"""
102 import oe.distro_check as dc
103 localdata = bb.data.createCopy(d)
104 bb.data.update_data(localdata)
105
106 tmpdir = bb.data.getVar('TMPDIR', localdata, 1)
107 distro_check_dir = os.path.join(tmpdir, "distro_check")
108 datetime = bb.data.getVar('DATETIME', localdata, 1)
109
110 # if distro packages list data is old then rebuild it
111 dc.update_distro_data(distro_check_dir, datetime)
112
113 # do the comparison
114 result = dc.compare_in_distro_packages_list(distro_check_dir, d)
115
116 # save the results
117 dc.save_distro_check_result(result, datetime, d)
118}
119