[oe-commits] org.oe.dev Restructure the subpackage metadata to facilitate use of that metadata by other packages.

clarson commit openembedded-commits at lists.openembedded.org
Thu Sep 14 21:13:48 UTC 2006


Restructure the subpackage metadata to facilitate use of that metadata by other packages.

Author: clarson at kergoth.com
Branch: org.openembedded.dev
Revision: db2f843f48cece5e25cf2e654db269ba3dba5192
ViewMTN: http://monotone.openembedded.org/revision.psp?id=db2f843f48cece5e25cf2e654db269ba3dba5192
Files:
1
classes/base.bbclass
classes/package.bbclass
classes/package_ipk.bbclass
classes/package_tar.bbclass
Diffs:

#
# mt diff -r3a18c612a87aa7ac8ef62ccb9ab6920dbb1cd0de -rdb2f843f48cece5e25cf2e654db269ba3dba5192
#
# 
# 
# patch "classes/base.bbclass"
#  from [3e7680e8579df98a1bd93c868637d9d57b30150c]
#    to [4df5e134dcb8fa62d546cfcc487751c27dab00bb]
# 
# patch "classes/package.bbclass"
#  from [a4baf77c66c1d7b547f4b021cbd62d310e923f2c]
#    to [b159264f3db7d8574669025ea38bf8007d06242f]
# 
# patch "classes/package_ipk.bbclass"
#  from [d2516b6ecd7a40ba2b7d5e91a87a3af4d79ac16a]
#    to [b3a44a388c4b2b9d8aaeeb6d969d6b07c0bc8cac]
# 
# patch "classes/package_tar.bbclass"
#  from [e0b23ad7e6e2d02fe22e1d72b11f4c8192826ce3]
#    to [c06d37b142acf556e3eb869db5d8aa14a8b5fc1d]
# 
============================================================
--- classes/base.bbclass	3e7680e8579df98a1bd93c868637d9d57b30150c
+++ classes/base.bbclass	4df5e134dcb8fa62d546cfcc487751c27dab00bb
@@ -631,24 +631,60 @@ python read_shlibdeps () {
 		bb.data.setVar('RDEPENDS_' + pkg, " " + " ".join(rdepends), d)
 }
 
-python read_subpackage_metadata () {
-	import re
+def read_pkgdatafile(fn):
+	pkgdata = {}
 
 	def decode(str):
 		import codecs
 		c = codecs.getdecoder("string_escape")
 		return c(str)[0]
 
-	data_file = bb.data.expand("${WORKDIR}/install/${PN}.package", d)
-	if os.access(data_file, os.R_OK):
-		f = file(data_file, 'r')
+	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:
-				bb.data.setVar(m.group(1), decode(m.group(2)), d)
+				pkgdata[m.group(1)] = decode(m.group(2))
+
+	return pkgdata
+
+def has_subpkgdata(pkg, d):
+	import bb, os
+	fn = bb.data.expand('${STAGING_DIR}/pkgdata/runtime/%s' % pkg, d)
+	return os.access(fn, os.R_OK)
+
+def read_subpkgdata(pkg, d):
+	import bb, os
+	fn = bb.data.expand('${STAGING_DIR}/pkgdata/runtime/%s' % pkg, d)
+	return read_pkgdatafile(fn)
+
+
+def has_pkgdata(pn, d):
+	import bb, os
+	fn = bb.data.expand('${STAGING_DIR}/pkgdata/%s' % pn, d)
+	return os.access(fn, os.R_OK)
+
+def read_pkgdata(pn, d):
+	import bb, os
+	fn = bb.data.expand('${STAGING_DIR}/pkgdata/%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():
+		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)
 }
 
 python __anonymous () {
============================================================
--- classes/package.bbclass	a4baf77c66c1d7b547f4b021cbd62d310e923f2c
+++ classes/package.bbclass	b159264f3db7d8574669025ea38bf8007d06242f
@@ -401,21 +401,25 @@ python populate_packages () {
 		if val:
 			f.write('%s_%s: %s\n' % (var, pkg, encode(val)))
 
-	data_file = os.path.join(workdir, "install", pn + ".package")
+	data_file = bb.data.expand("${STAGING_DIR}/pkgdata/${PN}", d)
 	f = open(data_file, 'w')
 	f.write("PACKAGES: %s\n" % packages)
+	f.close()
+
 	for pkg in package_list:
-		write_if_exists(f, pkg, 'DESCRIPTION')
-		write_if_exists(f, pkg, 'RDEPENDS')
-		write_if_exists(f, pkg, 'RPROVIDES')
-		write_if_exists(f, pkg, 'PKG')
-		write_if_exists(f, pkg, 'ALLOW_EMPTY')
-		write_if_exists(f, pkg, 'FILES')
-		write_if_exists(f, pkg, 'pkg_postinst')
-		write_if_exists(f, pkg, 'pkg_postrm')
-		write_if_exists(f, pkg, 'pkg_preinst')
-		write_if_exists(f, pkg, 'pkg_prerm')
-	f.close()
+		subdata_file = bb.data.expand("${STAGING_DIR}/pkgdata/runtime/%s" % pkg, d)
+		sf = open(subdata_file, 'w')
+		write_if_exists(sf, pkg, 'DESCRIPTION')
+		write_if_exists(sf, pkg, 'RDEPENDS')
+		write_if_exists(sf, pkg, 'RPROVIDES')
+		write_if_exists(sf, pkg, 'PKG')
+		write_if_exists(sf, pkg, 'ALLOW_EMPTY')
+		write_if_exists(sf, pkg, 'FILES')
+		write_if_exists(sf, pkg, 'pkg_postinst')
+		write_if_exists(sf, pkg, 'pkg_postrm')
+		write_if_exists(sf, pkg, 'pkg_preinst')
+		write_if_exists(sf, pkg, 'pkg_prerm')
+		sf.close()
 	bb.build.exec_func("read_subpackage_metadata", d)
 }
 
@@ -741,6 +745,6 @@ do_package[deptask] = "do_package"
 do_package[dirs] = "${D}"
 # shlibs requires any DEPENDS to have already packaged for the *.list files
 do_package[deptask] = "do_package"
-populate_packages[dirs] = "${D}"
+populate_packages[dirs] = "${STAGING_DIR}/pkgdata/runtime ${D}"
 EXPORT_FUNCTIONS do_package do_shlibs do_split_locales mapping_rename_hook
 addtask package before do_build after do_install
============================================================
--- classes/package_ipk.bbclass	d2516b6ecd7a40ba2b7d5e91a87a3af4d79ac16a
+++ classes/package_ipk.bbclass	b3a44a388c4b2b9d8aaeeb6d969d6b07c0bc8cac
@@ -129,6 +129,7 @@ python do_package_ipk () {
 			from bb import note
 			note("Not creating empty archive for %s-%s-%s" % (pkg, bb.data.getVar('PV', localdata, 1), bb.data.getVar('PR', localdata, 1)))
 			continue
+
 		controldir = os.path.join(root, 'CONTROL')
 		bb.mkdirhier(controldir)
 		try:
@@ -220,6 +221,8 @@ python do_package_ipk () {
 		if ret != 0:
 			raise bb.build.FuncFailed("ipkg-build execution failed")
 
+		file(bb.data.expand('${STAGING_DIR}/pkgdata/runtime/%s.packaged' % pkg, d), 'w').close()
+
 		for script in ["preinst", "postinst", "prerm", "postrm", "control" ]:
 			scriptfile = os.path.join(controldir, script)
 			try:
============================================================
--- classes/package_tar.bbclass	e0b23ad7e6e2d02fe22e1d72b11f4c8192826ce3
+++ classes/package_tar.bbclass	c06d37b142acf556e3eb869db5d8aa14a8b5fc1d
@@ -94,6 +94,9 @@ python do_package_tar () {
 		ret = os.system("tar -czvf %s %s" % (tarfn, '.'))
 		if ret != 0:
 			bb.error("Creation of tar %s failed." % tarfn)
+
+		file(bb.data.expand('${STAGING_DIR}/pkgdata/runtime/%s.packaged' % pkg, d), 'w').close()
+
 # end stuff
 		del localdata
 }






More information about the Openembedded-commits mailing list