[oe-commits] org.oe.dev package.bbclass: Fix .packaged pkgmaps data creation to fix depchains. Clean up/optimise PACKAGES checks a bit

rpurdie commit openembedded-commits at lists.openembedded.org
Sat Sep 29 11:04:14 UTC 2007


package.bbclass: Fix .packaged pkgmaps data creation to fix depchains. Clean up/optimise PACKAGES checks a bit

Author: rpurdie at openembedded.org
Branch: org.openembedded.dev
Revision: 75c6a806470b2ec834f5414f6369c599b05c163f
ViewMTN: http://monotone.openembedded.org/revision/info/75c6a806470b2ec834f5414f6369c599b05c163f
Files:
1
classes/package.bbclass
Diffs:

#
# mt diff -r63b088d837f910b4550402bee8754871cfa8b093 -r75c6a806470b2ec834f5414f6369c599b05c163f
#
# 
# 
# patch "classes/package.bbclass"
#  from [133959252573ef8846b3b217a8fc0a1245d0233f]
#    to [f055d1bce4ae74cd8130f0a0cd9c819aabc46c99]
# 
============================================================
--- classes/package.bbclass	133959252573ef8846b3b217a8fc0a1245d0233f
+++ classes/package.bbclass	f055d1bce4ae74cd8130f0a0cd9c819aabc46c99
@@ -128,11 +128,12 @@ python () {
             deps += " %s:do_populate_staging" % dep
         bb.data.setVarFlag('do_package', 'depends', deps, d)
 
+        deps = (bb.data.getVarFlag('do_package', 'deptask', d) or "").split()
         # shlibs requires any DEPENDS to have already packaged for the *.list files
-        bb.data.setVarFlag('do_package', 'deptask', 'do_package', d)
+        deps.append("do_package")
+        bb.data.setVarFlag('do_package', 'deptask', " ".join(deps), d)
 }
 
-
 def runstrip(file, d):
     # Function to strip a single file, called from populate_packages below
     # A working 'file' (one which works on the target architecture)
@@ -481,6 +482,8 @@ python emit_pkgdata() {
 populate_packages[dirs] = "${D}"
 
 python emit_pkgdata() {
+	from glob import glob
+
 	def write_if_exists(f, pkg, var):
 		def encode(str):
 			import codecs
@@ -492,14 +495,14 @@ python emit_pkgdata() {
 			f.write('%s_%s: %s\n' % (var, pkg, encode(val)))
 
 	packages = bb.data.getVar('PACKAGES', d, 1)
-	if not packages:
-		return
 
 	data_file = bb.data.expand("${PKGDATA_DIR}/${PN}", d)
 	f = open(data_file, 'w')
 	f.write("PACKAGES: %s\n" % packages)
 	f.close()
 
+	workdir = bb.data.getVar('WORKDIR', d, 1)
+
 	for pkg in packages.split():
 		subdata_file = bb.data.expand("${PKGDATA_DIR}/runtime/%s" % pkg, d)
 		sf = open(subdata_file, 'w')
@@ -519,6 +522,13 @@ python emit_pkgdata() {
 		write_if_exists(sf, pkg, 'pkg_preinst')
 		write_if_exists(sf, pkg, 'pkg_prerm')
 		sf.close()
+
+		allow_empty = bb.data.getVar('ALLOW_EMPTY_%s' % pkg, d, 1)
+		root = "%s/install/%s" % (workdir, pkg)
+		os.chdir(root)
+		g = glob('*')
+		if g or allow_empty == "1":
+			file(bb.data.expand('${PKGDATA_DIR}/runtime/%s.packaged' % pkg, d), 'w').close()
 }
 emit_pkgdata[dirs] = "${PKGDATA_DIR}/runtime"
 
@@ -540,9 +550,6 @@ python package_do_shlibs() {
 	libdir_re = re.compile(".*/lib$")
 
 	packages = bb.data.getVar('PACKAGES', d, 1)
-	if not packages:
-		bb.debug(1, "no packages to build; not calculating shlibs")
-		return
 
 	workdir = bb.data.getVar('WORKDIR', d, 1)
 	if not workdir:
@@ -678,9 +685,6 @@ python package_do_pkgconfig () {
 	import re, os
 
 	packages = bb.data.getVar('PACKAGES', d, 1)
-	if not packages:
-		bb.debug(1, "no packages to build; not calculating pkgconfig dependencies")
-		return
 
 	workdir = bb.data.getVar('WORKDIR', d, 1)
 	if not workdir:
@@ -786,7 +790,7 @@ python read_shlibdeps () {
 }
 
 python read_shlibdeps () {
-	packages = (bb.data.getVar('PACKAGES', d, 1) or "").split()
+	packages = bb.data.getVar('PACKAGES', d, 1).split()
 	for pkg in packages:
 		rdepends = explode_deps(bb.data.getVar('RDEPENDS_' + pkg, d, 0) or bb.data.getVar('RDEPENDS', d, 0) or "")
 		shlibsfile = bb.data.expand("${PKGDEST}/" + pkg + ".shlibdeps", d)
@@ -896,6 +900,11 @@ python package_do_package () {
 		emit_pkgdata"
 
 python package_do_package () {
+	packages = (bb.data.getVar('PACKAGES', d, 1) or "").split()
+	if len(packages) < 1:
+		bb.debug(1, "No packages to build, skipping do_package")
+		return
+
 	for f in (bb.data.getVar('PACKAGEFUNCS', d, 1) or '').split():
 		bb.build.exec_func(f, d)
 }






More information about the Openembedded-commits mailing list