|
|
|
@ -131,6 +131,7 @@ class ProjectsActions
|
|
|
|
|
config_opts['plugin_conf']['root_cache_enable'] = True
|
|
|
|
|
config_opts['plugin_conf']['showrc_enable'] = True
|
|
|
|
|
config_opts['plugin_conf']['yum_cache_enable'] = True
|
|
|
|
|
config_opts['chroot_setup_cmd'] += " procenv gcc gcc-c++ make"
|
|
|
|
|
PRJ_CFG
|
|
|
|
|
File.open(proj_conf_path, "w") { |f| f << proj_config }
|
|
|
|
|
generate_linked_repos(id, proj_path, proj_name, prj_incl_path)
|
|
|
|
@ -241,6 +242,38 @@ class ProjectsActions
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def build_projects_git(prj_id, git_id)
|
|
|
|
|
def build_projects_git(prj_id, git_id, counter_file)
|
|
|
|
|
build_ok = true
|
|
|
|
|
proj_path = get_project_path(prj_id)
|
|
|
|
|
git_name = @db.get_repo_info_by_id(git_id)
|
|
|
|
|
prep_script = @db.get_git_recips(git_id)
|
|
|
|
|
prepare_path = File.join(proj_path, PROJECTS_STRUCTURE[:SRCPRP], git_name[:reponame])
|
|
|
|
|
if File.exist?(prepare_path)
|
|
|
|
|
lockf_path = File.join(prepare_path, "lock")
|
|
|
|
|
File.open(lockf_path, File::RDWR | File::CREAT) do |f|
|
|
|
|
|
result = f.flock(File::LOCK_EX | File::LOCK_NB)
|
|
|
|
|
unless result
|
|
|
|
|
#Файл заблокирован считать id и вывести сведения о сборке
|
|
|
|
|
build_ok = false
|
|
|
|
|
else
|
|
|
|
|
#Сборка завершилась, но каталог не подчистился
|
|
|
|
|
FileUtils.rm_rf(prepare_path)
|
|
|
|
|
f.flock(File::LOCK_UN)
|
|
|
|
|
build_ok = true
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
#Верная ситуация
|
|
|
|
|
if build_ok
|
|
|
|
|
Dir.mkdir(prepare_path)
|
|
|
|
|
lockf_path = File.join(prepare_path, "lock")
|
|
|
|
|
File.open(lockf_path, File::RDWR | File::CREAT) do |f|
|
|
|
|
|
f.flock(File::LOCK_EX)
|
|
|
|
|
#Начинаем сборку
|
|
|
|
|
mock = MockManager.new(prepare_path, get_project_config(prj_id), counter_file, @db)
|
|
|
|
|
FileUtils.rm_rf(prepare_path)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|