[oe-commits] org.oe.dev package_ipk.bbclass/package_deb.bbclass: Use bitbake locking functions

rpurdie commit openembedded-commits at lists.openembedded.org
Tue Feb 19 13:10:03 UTC 2008


package_ipk.bbclass/package_deb.bbclass: Use bitbake locking functions

Author: rpurdie at openembedded.org
Branch: org.openembedded.dev
Revision: 095cd59fa38e0667634264d5a9eed475a4a5c19a
ViewMTN: http://monotone.openembedded.org/revision/info/095cd59fa38e0667634264d5a9eed475a4a5c19a
Files:
1
classes/package_deb.bbclass
classes/package_ipk.bbclass
Diffs:

#
# mt diff -r7238f326f4b82fdc19fe146255790b3023f5af9b -r095cd59fa38e0667634264d5a9eed475a4a5c19a
#
# 
# 
# patch "classes/package_deb.bbclass"
#  from [a66d4de9c722f1036751451a493943d826067859]
#    to [6692f0e4d021d1a8fe65a65b2185415b80dc4237]
# 
# patch "classes/package_ipk.bbclass"
#  from [026a54435a436ef29405fa6b02afea519cc76ce7]
#    to [1094aec718c676ccf9d8083a10b5fedde8494c1e]
# 
============================================================
--- classes/package_deb.bbclass	a66d4de9c722f1036751451a493943d826067859
+++ classes/package_deb.bbclass	6692f0e4d021d1a8fe65a65b2185415b80dc4237
@@ -69,7 +69,7 @@ python do_package_deb () {
 }
 
 python do_package_deb () {
-    import sys, re, fcntl, copy
+    import sys, re, copy
 
     workdir = bb.data.getVar('WORKDIR', d, 1)
     if not workdir:
@@ -102,20 +102,11 @@ python do_package_deb () {
         bb.debug(1, "No packages; nothing to do")
         return
 
-    def lockfile(name):
-        lf = open(name, "a+")
-        fcntl.flock(lf.fileno(), fcntl.LOCK_EX)
-        return lf
-
-    def unlockfile(lf):
-        fcntl.flock(lf.fileno(), fcntl.LOCK_UN)
-        lf.close
-
     for pkg in packages.split():
         localdata = bb.data.createCopy(d)
         root = "%s/install/%s" % (workdir, pkg)
 
-        lf = lockfile(root + ".lock")
+        lf = bb.utils.lockfile(root + ".lock")
 
         bb.data.setVar('ROOT', '', localdata)
         bb.data.setVar('ROOT_%s' % pkg, root, localdata)
@@ -147,7 +138,7 @@ python do_package_deb () {
         if not g and bb.data.getVar('ALLOW_EMPTY', localdata) != "1":
             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)))
-            unlockfile(lf)
+            bb.utils.unlockfile(lf)
             continue
 
         controldir = os.path.join(root, 'DEBIAN')
@@ -158,6 +149,7 @@ python do_package_deb () {
             # import codecs
             # ctrlfile = codecs.open("someFile", "w", "utf-8")
         except OSError:
+            bb.utils.unlockfile(lf)
             raise bb.build.FuncFailed("unable to open control file for writing.")
 
         fields = []
@@ -196,6 +188,7 @@ python do_package_deb () {
                 ctrlfile.write(unicode(c % tuple(pullData(fs, localdata))))
         except KeyError:
             (type, value, traceback) = sys.exc_info()
+            bb.utils.unlockfile(lf)
             ctrlfile.close()
             raise bb.build.FuncFailed("Missing field for deb generation: %s" % value)
         # more fields
@@ -231,6 +224,7 @@ python do_package_deb () {
             try:
                 scriptfile = file(os.path.join(controldir, script), 'w')
             except OSError:
+                bb.utils.unlockfile(lf)
                 raise bb.build.FuncFailed("unable to open %s script file for writing." % script)
             scriptfile.write("#!/bin/sh\n")
             scriptfile.write(scriptvar)
@@ -242,6 +236,7 @@ python do_package_deb () {
             try:
                 conffiles = file(os.path.join(controldir, 'conffiles'), 'w')
             except OSError:
+                bb.utils.unlockfile(lf)
                 raise bb.build.FuncFailed("unable to open conffiles for writing.")
             for f in conffiles_str.split():
                 conffiles.write('%s\n' % f)
@@ -250,6 +245,7 @@ python do_package_deb () {
         os.chdir(basedir)
         ret = os.system("PATH=\"%s\" fakeroot dpkg-deb -b %s %s" % (bb.data.getVar("PATH", localdata, 1), root, pkgoutdir))
         if ret != 0:
+            bb.utils.unlockfile(lf)
             raise bb.build.FuncFailed("dpkg-deb execution failed")
 
         for script in ["preinst", "postinst", "prerm", "postrm", "control" ]:
@@ -263,7 +259,7 @@ python do_package_deb () {
         except OSError:
             pass
 
-        unlockfile(lf)
+        bb.utils.unlockfile(lf)
 }
 
 python () {
============================================================
--- classes/package_ipk.bbclass	026a54435a436ef29405fa6b02afea519cc76ce7
+++ classes/package_ipk.bbclass	1094aec718c676ccf9d8083a10b5fedde8494c1e
@@ -114,7 +114,7 @@ python do_package_ipk () {
 }
 
 python do_package_ipk () {
-	import sys, re, copy, fcntl
+	import sys, re, copy
 
 	workdir = bb.data.getVar('WORKDIR', d, 1)
 	if not workdir:
@@ -147,22 +147,12 @@ python do_package_ipk () {
 		bb.debug(1, "No packages; nothing to do")
 		return
 
-	def lockfile(name):
-		lf = open(name, "a+")
-		fcntl.flock(lf.fileno(), fcntl.LOCK_EX)
-		return lf
-
-	def unlockfile(lf):
-		fcntl.flock(lf.fileno(), fcntl.LOCK_UN)
-		lf.close
-
-
 	for pkg in packages.split():
 		localdata = bb.data.createCopy(d)
 		pkgdest = bb.data.getVar('PKGDEST', d, 1)
 		root = "%s/%s" % (pkgdest, pkg)
 
-		lf = lockfile(root + ".lock")
+		lf = bb.utils.lockfile(root + ".lock")
 
 		bb.data.setVar('ROOT', '', localdata)
 		bb.data.setVar('ROOT_%s' % pkg, root, localdata)
@@ -193,7 +183,7 @@ python do_package_ipk () {
 		if not g and bb.data.getVar('ALLOW_EMPTY', localdata) != "1":
 			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)))
-			unlockfile(lf)
+			bb.utils.unlockfile(lf)
 			continue
 
 		controldir = os.path.join(root, 'CONTROL')
@@ -201,7 +191,7 @@ python do_package_ipk () {
 		try:
 			ctrlfile = file(os.path.join(controldir, 'control'), 'w')
 		except OSError:
-			unlockfile(lf)
+			bb.utils.unlockfile(lf)
 			raise bb.build.FuncFailed("unable to open control file for writing.")
 
 		fields = []
@@ -235,7 +225,7 @@ python do_package_ipk () {
 		except KeyError:
 			(type, value, traceback) = sys.exc_info()
 			ctrlfile.close()
-			unlockfile(lf)
+			bb.utils.unlockfile(lf)
 			raise bb.build.FuncFailed("Missing field for ipk generation: %s" % value)
 		# more fields
 
@@ -272,7 +262,7 @@ python do_package_ipk () {
 			try:
 				scriptfile = file(os.path.join(controldir, script), 'w')
 			except OSError:
-				unlockfile(lf)
+				bb.utils.unlockfile(lf)
 				raise bb.build.FuncFailed("unable to open %s script file for writing." % script)
 			scriptfile.write(scriptvar)
 			scriptfile.close()
@@ -283,7 +273,7 @@ python do_package_ipk () {
 			try:
 				conffiles = file(os.path.join(controldir, 'conffiles'), 'w')
 			except OSError:
-				unlockfile(lf)
+				bb.utils.unlockfile(lf)
 				raise bb.build.FuncFailed("unable to open conffiles for writing.")
 			for f in conffiles_str.split():
 				conffiles.write('%s\n' % f)
@@ -293,7 +283,7 @@ python do_package_ipk () {
 		ret = os.system("PATH=\"%s\" %s %s %s" % (bb.data.getVar("PATH", localdata, 1), 
                                                           bb.data.getVar("IPKGBUILDCMD",d,1), pkg, pkgoutdir))
 		if ret != 0:
-			unlockfile(lf)
+			bb.utils.unlockfile(lf)
 			raise bb.build.FuncFailed("ipkg-build execution failed")
 
 		for script in ["preinst", "postinst", "prerm", "postrm", "control" ]:
@@ -306,7 +296,7 @@ python do_package_ipk () {
 			os.rmdir(controldir)
 		except OSError:
 			pass
-		unlockfile(lf)
+		bb.utils.unlockfile(lf)
 }
 
 python () {






More information about the Openembedded-commits mailing list