dont need sudo before gbs build, use sudo as su-wrapper
authorZhang Qiang <qiang.z.zhang@intel.com>
Sun, 3 Jun 2012 01:49:54 +0000 (09:49 +0800)
committerZhang Qiang <qiang.z.zhang@intel.com>
Sun, 3 Jun 2012 01:49:54 +0000 (09:49 +0800)
gitbuildsys/cmd_build.py

index 7df819d0c6e43760edf2ff7e6c7d21c3a9d0e62e..1cb8ac27aa5b0e01054f768060498e0afd6e55af 100644 (file)
@@ -70,9 +70,6 @@ supportedarchs = [
 
 def do(opts, args):
 
-    if os.geteuid() != 0:
-        msger.error('Root permission is required, please use sudo and try again')
-
     workdir = os.getcwd()
     if len(args) > 1:
         msger.error('only one work directory can be specified in args.')
@@ -156,6 +153,14 @@ def do(opts, args):
         cmd += ['--rsync-src=%s' % os.path.abspath(workdir)]
         cmd += ['--rsync-dest=/home/abuild/rpmbuild/BUILD/%s-%s' % (name, version)]
 
+    sucmd = configmgr.get('su-wrapper', 'build').split()
+    if sucmd[0] == 'su':
+        if sucmd[-1] == '-c':
+            sucmd.pop()
+        cmd = sucmd + ['-s', cmd[0], 'root', '--' ] + cmd[1:]
+    else:
+        cmd = sucmd + cmd
+
     # runner.show() can't support interactive mode, so use subprocess insterad.
     try:
         rc = subprocess.call(cmd)
@@ -169,4 +174,5 @@ def do(opts, args):
         subprocess.call(cmd + ["--kill"])
         msger.error('interrrupt from keyboard')
     finally:
-        os.unlink("%s/%s" % (workdir, tarball))
+        if os.path.exists(os.path.join(workdir, tarball)):
+            os.unlink(os.path.join(workdir, tarball))