import re
from common.tempbuildpkg import ProjectBuildService, ProjectRepository
-from common.tempbuildpkg import BuildData, RepoConf
+from common.tempbuildpkg import RepoConf
from common.buildtrigger import trigger_info, trigger_next
from testprojects.prerelease import PreRelease2
from testprojects.prerelease import get_prerelease_project_name
from common.buildservice import BuildService
+from gitbuildsys import BuildData, BuildDataError
+
+class LocalError(Exception):
+ """Local error exception."""
+ pass
+
+def get_latest_snapshot(product='tizen-2.1'):
+ """Gets latest snapshot id from Redis."""
+ # to be implemented
+ return '%s_20130320.11' % product
+
+def gen_builddata(build, project, repo='standard'):
+ """Generate build.xml with repository data."""
+
+ build_id = '%s.pre-release.%s' % (get_latest_snapshot(),
+ project.split(':')[-1])
+ try:
+ bdata = BuildData(build_id)
+ # get target data from OBS
+ target = {}
+ # Create or update build.xml
+ outf = os.path.join('/srv/obs/repos/', project.replace(':', ':/'),
+ 'build.xml')
+ if os.path.exists(outf):
+ bdata.load(open(outf))
+
+ bdata.add_target(target)
+ bdata.save(outf)
+ except BuildDataError, err:
+ raise LocalError("Unable to generate build.xml: %s" % err)
def create_images(prerelease):
"""Create images using live prerelease repository."""
linked, depended = prerelease.get_parent_project()
- builddata = BuildData()
-
# TODO, update when boss-repomaker updated
repo_config = RepoConf('/etc/repos/repos.yaml')
repo = ProjectRepository(prerelease.obs_project, repo_conf = repo_config,
server_conf = server_conf)
- # Fill build data
- builddata.git_tag = prerelease.git_tag
- builddata.git_project = prerelease.git_project
- builddata.obs_target_prj = prerelease.target_project
- builddata.obs_prj = prerelease.obs_project
- builddata.archs.extend(prerelease.get_available_archs())
- builddata.images_path = os.path.join(repo.get_live_repo_path(),
- "images")
-
- repo.save_builddata(builddata, repo.get_live_repo_path())
-
for link_prj in linked:
# TODO: get_url from repo.yaml configuration
link_prj_path = repo.get_latest_repo_path(link_prj)
git_tag = content.get("GIT_TAG")
project = get_prerelease_project_name(obs_target_prj, obs_user, git_tag)
+ build = BuildService(obs_api, obs_user, obs_passwd)
if action == 'create_images':
+ gen_builddata(build, project)
projectbuild = ProjectBuildService(project, obs_api, obs_user, obs_passwd)
prerelease = PreRelease2(project, projectbuild)
create_images(prerelease)
elif action == 'cleanup':
- build = BuildService(obs_api, obs_user, obs_passwd)
build.cleanup(project, "Cleaned up by %s" % name)
else:
print "Not supported method of Pre-release jobs:", action
if __name__ == '__main__':
- sys.exit(main(os.path.basename(sys.argv[0]), sys.argv[1]))
+ try:
+ sys.exit(main(os.path.basename(sys.argv[0]), sys.argv[1]))
+ except LocalError, err:
+ print err
+ sys.exit(1)