Check write permission of output dir to avoid traceback, #617
authorZhang Qiang <qiang.z.zhang@intel.com>
Wed, 9 Jan 2013 12:07:49 +0000 (20:07 +0800)
committerZhang Qiang <qiang.z.zhang@intel.com>
Thu, 10 Jan 2013 08:26:46 +0000 (16:26 +0800)
Change-Id: I8c343279b1d7791016c12aff2310e4c2d28c5443

gitbuildsys/cmd_export.py

index d377001f771a48ce3f06d81e6bd4ec4901217ea4..b2721b3921e646a4ca163ba0d195d9fa16e38826 100644 (file)
@@ -248,6 +248,9 @@ def main(args):
     else:
         outdir = os.path.join(workdir, packaging_dir)
     outdir = os.path.abspath(outdir)
+    if not os.access(outdir, os.W_OK|os.X_OK):
+        raise GbsError('no write permission to outdir: %s' % outdir)
+
     mkdir_p(outdir)
     tmpdir     = configmgr.get('tmpdir', 'general')
     tempd = utils.Temp(prefix=os.path.join(tmpdir, '.gbs_export_'), \
@@ -270,10 +273,14 @@ def main(args):
     else:
         outdir = "%s/%s-%s-%s" % (outdir, spec.name, spec.upstreamversion,
                                   spec.release)
+    if os.path.exists(outdir):
+        if not os.access(outdir, os.W_OK|os.X_OK):
+            raise GbsError('no permission to update outdir: %s' % outdir)
         shutil.rmtree(outdir, ignore_errors=True)
-        shutil.move(export_dir, outdir)
-        if args.source_rpm:
-            log.info('source rpm generated to:\n     %s/%s.src.rpm' % \
-                       (outdir, os.path.basename(outdir)))
+
+    shutil.move(export_dir, outdir)
+    if args.source_rpm:
+        log.info('source rpm generated to:\n     %s/%s.src.rpm' % \
+                   (outdir, os.path.basename(outdir)))
 
     log.info('package files have been exported to:\n     %s' % outdir)