# Only guess spec filename here, parse later when we have the correct
# spec file at hand
specfile = utils.guess_spec(workdir, opts.spec)
- packaging_dir = os.path.join(workdir, 'packaging/', 'build_')
- tmpd = utils.Temp(prefix=packaging_dir, directory=True)
+ tmpd = utils.Temp(prefix=os.path.join(tmpdir, '.gbs_build'), directory=True)
export_dir = tmpd.path
with utils.Workdir(workdir):
if opts.commit:
import runner
import utils
import errors
+from conf import configmgr
from gbp.scripts.buildpackage_rpm import main as gbp_build
from gbp.rpm.git import GitRepositoryError, RpmGitRepository
outdir = opts.outdir
mkdir_p(outdir)
outdir = os.path.abspath(outdir)
- tempd = utils.Temp(prefix='gbs_export_', dirn=outdir, directory=True)
+ tmpdir = configmgr.get('tmpdir', 'general')
+ tempd = utils.Temp(prefix=os.path.join(tmpdir, '.gbs_export_'), \
+ directory=True)
export_dir = tempd.path
with utils.Workdir(workdir):
utils.gitStatusChecker(repo, opts)
workdir = repo.path
- tmpdir = os.path.join(workdir, 'packaging', '.export')
- if not os.path.exists(tmpdir):
- os.makedirs(tmpdir)
-
- if not os.access(tmpdir, os.W_OK|os.R_OK|os.X_OK):
- msger.error('No access permission to %s, please check' % tmpdir)
-
# TODO: check ./packaging dir at first
specs = glob.glob('%s/packaging/*.spec' % workdir)
if not specs:
"passwdx": PASSWDX,
}
- tmpf = utils.Temp(dirn=tmpdir, prefix='.oscrc', content=oscrc)
+ tmpdir = configmgr.get('tmpdir', 'general')
+ tmpd = utils.Temp(prefix=os.path.join(tmpdir, '.gbs_remotebuild_'), directory=True)
+ exportdir = tmpd.path
+ tmpf = utils.Temp(dirn=exportdir, prefix='.oscrc', content=oscrc)
oscrcpath = tmpf.path
api = OSC(APISERVER, oscrc=oscrcpath)
"--git-ignore-new", "--git-builder=osc",
"--git-no-auto-patch-gen",
"--git-upstream-tree=%s" % commit,
- "--git-export-dir=%s" % tmpdir,
+ "--git-export-dir=%s" % exportdir,
"--git-packaging-dir=packaging",
"--git-specfile=%s" % relative_spec,
"--git-export=%s" % commit]):
msger.info('commit packaging files to build server ...')
try:
api.commit_files(target_prj, package,
- glob.glob("%s/*" % tmpdir), commit_msg)
+ glob.glob("%s/*" % exportdir), commit_msg)
except errors.ObsError, exc:
msger.error('commit packages fail: %s, please check the permission '\
'of target project:%s' % (exc, target_prj))
- shutil.rmtree(tmpdir)
msger.info('local changes submitted to build server successfully')
msger.info('follow the link to monitor the build progress:\n'
class UrlError(CmdError):
keyword = '<url>'
+
+class GbsError(CmdError):
+ keyword = '<gbs>'
"""
self.directory = directory
+ self.path = None
- if directory:
- path = tempfile.mkdtemp(suffix, prefix, dirn)
- else:
- (fds, path) = tempfile.mkstemp(suffix, prefix, dirn)
- os.close(fds)
- if content:
- with file(path, 'w+') as fobj:
- fobj.write(content)
+ try:
+ if dirn:
+ target_dir = os.path.abspath(os.path.join(dirn, prefix))
+ else:
+ target_dir = os.path.abspath(prefix)
+ target_dir = os.path.dirname(target_dir)
+ if not os.path.exists(target_dir):
+ os.makedirs(target_dir)
+
+ if directory:
+ path = tempfile.mkdtemp(suffix, prefix, dirn)
+ else:
+ (fds, path) = tempfile.mkstemp(suffix, prefix, dirn)
+ os.close(fds)
+ if content:
+ with file(path, 'w+') as fobj:
+ fobj.write(content)
+ except OSError, (e, msg):
+ raise errors.GbsError("Failed to create dir or file on %s: %s" % \
+ (target_dir, msg))
self.path = path
def __del__(self):
"""Remove it when object is destroyed."""
- if os.path.exists(self.path):
+ if self.path and os.path.exists(self.path):
if self.directory:
shutil.rmtree(self.path, True)
else: