]> code.ossystems Code Review - openembedded-core.git/commitdiff
package_rpm: Ensure we take the sstate shared lockfile in the place we write files
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 29 Mar 2011 10:58:01 +0000 (11:58 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 29 Mar 2011 13:01:11 +0000 (14:01 +0100)
The point we need to take the lock is when the rpm files are written into the
deploy rpm directory. Since sstate makes the actual installation of the files,
that is the point we need to take the lock. This also stops the deploy/rpm
directory being accessed for a lock before it exists.

[YOCTO #797]
[YOCTO #925]

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes/package_rpm.bbclass

index 4647116eed51ef4c761b2d9f803a8da01aec6a6e..70170d19ef3feca7951182579da635c944f2e402 100644 (file)
@@ -777,16 +777,10 @@ python do_package_rpm () {
        cmd = cmd + " --define 'debug_package %{nil}'"
        cmd = cmd + " -bb " + outspecfile
 
-       # Take a shared lock, we can write multiple packages at the same time...
-       # but we need to stop the rootfs/solver from running while we do...
-       lf = bb.utils.lockfile(bb.data.expand("${DEPLOY_DIR_RPM}/rpm.lock", d), True)
-
        # Build the rpm package!
        bb.data.setVar('BUILDSPEC', cmd + "\n", d)
        bb.data.setVarFlag('BUILDSPEC', 'func', '1', d)
        bb.build.exec_func('BUILDSPEC', d)
-
-       bb.utils.unlockfile(lf)
 }
 
 python () {
@@ -803,6 +797,9 @@ SSTATETASKS += "do_package_write_rpm"
 do_package_write_rpm[sstate-name] = "deploy-rpm"
 do_package_write_rpm[sstate-inputdirs] = "${PKGWRITEDIRRPM}"
 do_package_write_rpm[sstate-outputdirs] = "${DEPLOY_DIR_RPM}"
+# Take a shared lock, we can write multiple packages at the same time...
+# but we need to stop the rootfs/solver from running while we do...
+do_package_write_rpm[sstate-lockfile-shared] += "${DEPLOY_DIR_RPM}/rpm.lock"
 
 python do_package_write_rpm_setscene () {
        sstate_setscene(d)