def build(self): """ this is where all the magic happens """ try: spec = self._spec for project in self._spec.projects: LOG.info("Beginning to build '%s'", project.name) os.makedirs(project.install_path) LOG.info("Fetching source code for '%s'", project.name) repo = OpenstackGitRepo(project.giturl, project.gitref) repo.clone(project.install_path) review = GerritReview(repo.change_id, project.git_path) LOG.info("Creating the virtualenv for '%s'", project.name) execute(project.venv_command, project.install_path) LOG.info("Installing '%s' pip dependencies to the virtualenv", project.name) execute(project.install_command % review.build_pip_dependencies(string=True), project.install_path) LOG.info("Installing '%s' to the virtualenv", project.name) execute(".venv/bin/python setup.py install", project.install_path) if not spec.settings.all_in_one: pkg = Package(project.package_name, project.version, project.install_path, True) pkg.build() except Exception as e: LOG.exception("Oops. Something went wrong. Error was:\n%s", e) sys.exit(-1)
def test_repo_clone(self, testrepo): try: outdir = tempfile.mkdtemp() repo = OpenstackGitRepo(testrepo, project='bobafett') repo.clone(outdir) self.assertTrue(repo.cloned) self.assertTrue(isinstance(repo.head, OpenstackCommit)) self.assertEquals(['HEAD', 'master'], repo.branches) finally: shutil.rmtree(outdir)
def test_repo_clone(self, testrepo): try: outdir = tempfile.mkdtemp() repo = OpenstackGitRepo(testrepo, project='bobafett') repo.clone(outdir) self.assertTrue(repo.cloned) self.assertTrue(isinstance(repo.head, OpenstackCommit)) self.assertEqual(['HEAD', 'master'], repo.branches) finally: shutil.rmtree(outdir)
def _build(self): spec = self._spec self._tempdir = tempfile.mkdtemp(prefix='giftwrap') src_path = os.path.join(self._tempdir, 'src') build_path = os.path.join(self._tempdir, 'build') os.makedirs(build_path) LOG.debug("Temporary working directory: %s", self._tempdir) for project in spec.projects: LOG.info("Beginning to build '%s'", project.name) install_path = os.path.join(build_path, relative_pathify(project.install_path)) LOG.debug("Installing '%s' to '%s'", project.name, install_path) os.makedirs(install_path) # clone the project's source to a temporary directory project_src_path = os.path.join(src_path, project.name) os.makedirs(project_src_path) LOG.info("Fetching source code for '%s'", project.name) repo = OpenstackGitRepo(project.giturl, project.gitref) repo.clone(project_src_path) # tell package users where this came from gitinfo_file = os.path.join(install_path, 'gitinfo') with open(gitinfo_file, 'w') as fh: fh.write("%s %s" % (project.giturl, repo.head.hexsha)) # start building the virtualenv for the project LOG.info("Creating the virtualenv for '%s'", project.name) execute(project.venv_command, install_path) # install into the virtualenv LOG.info("Installing '%s' to the virtualenv", project.name) venv_python_path = os.path.join(install_path, 'bin/python') venv_pip_path = os.path.join(install_path, 'bin/pip') deps = " ".join(project.pip_dependencies) execute("%s install %s" % (venv_pip_path, deps)) if spec.settings.gerrit_dependencies: self._install_gerrit_dependencies(repo, project, install_path) execute("%s setup.py install" % venv_python_path, project_src_path) execute("%s install pbr" % venv_pip_path) # now build the package pkg = Package(project.package_name, project.version, build_path, relative_pathify(project.install_path), spec.settings.force_overwrite, project.system_dependencies) pkg.build()
def _build(self): spec = self._spec tempdir = tempfile.mkdtemp(prefix='giftwrap') src_dir = os.path.join(tempdir, 'src') LOG.debug("Temporary working directory: %s", tempdir) for project in spec.projects: LOG.info("Beginning to build '%s'", project.name) # if anything is in our way, see if we can get rid of it if os.path.exists(project.install_path): if spec.settings.force_overwrite: LOG.info("force_overwrite is set, so removing " "existing path '%s'" % project.install_path) shutil.rmtree(project.install_path) else: raise Exception("Install path '%s' already exists" % project.install_path) os.makedirs(project.install_path) # clone the project's source to a temporary directory project_src_path = os.path.join(src_dir, project.name) os.makedirs(project_src_path) LOG.info("Fetching source code for '%s'", project.name) repo = OpenstackGitRepo(project.giturl, project.gitref) repo.clone(project_src_path) # start building the virtualenv for the project LOG.info("Creating the virtualenv for '%s'", project.name) execute(project.venv_command, project.install_path) # install into the virtualenv LOG.info("Installing '%s' to the virtualenv", project.name) venv_python_path = os.path.join(project.install_path, 'bin/python') venv_pip_path = os.path.join(project.install_path, 'bin/pip') deps = " ".join(project.pip_dependencies) execute("%s install %s" % (venv_pip_path, deps)) if spec.settings.gerrit_dependencies: self._install_gerrit_dependencies(repo, project) execute("%s setup.py install" % venv_python_path, project_src_path) execute("%s install pbr" % venv_pip_path) # now build the package pkg = Package(project.package_name, project.version, project.install_path, spec.settings.force_overwrite, project.system_dependencies) pkg.build()
def test_repo_properties(self, testrepo): repo = OpenstackGitRepo(testrepo, project='baz') self.assertFalse(repo.cloned) self.assertIs(None, repo.head) self.assertEqual('baz', repo.project) try: repo.branches except AttributeError: self.assertTrue(True)
def _build(self): spec = self._spec self._tempdir = tempfile.mkdtemp(prefix='giftwrap') src_path = os.path.join(self._tempdir, 'src') LOG.debug("Temporary working directory: %s", self._tempdir) for project in spec.projects: LOG.info("Beginning to build '%s'", project.name) install_path = project.install_path LOG.debug("Installing '%s' to '%s'", project.name, install_path) # if anything is in our way, see if we can get rid of it if os.path.exists(install_path): if spec.settings.force_overwrite: LOG.info("force_overwrite is set, so removing " "existing path '%s'" % install_path) shutil.rmtree(install_path) else: raise Exception("Install path '%s' already exists" % install_path) os.makedirs(install_path) # clone the project's source to a temporary directory project_src_path = os.path.join(src_path, project.name) os.makedirs(project_src_path) LOG.info("Fetching source code for '%s'", project.name) repo = OpenstackGitRepo(project.giturl, project.name, project.gitref, depth=project.gitdepth) repo.clone(project_src_path) # tell package users where this came from gitinfo_file = os.path.join(install_path, 'gitinfo') with open(gitinfo_file, 'w') as fh: fh.write("%s %s" % (project.giturl, repo.head.hexsha)) # start building the virtualenv for the project LOG.info("Creating the virtualenv for '%s'", project.name) execute(project.venv_command, install_path) # install into the virtualenv LOG.info("Installing '%s' to the virtualenv", project.name) venv_python_path = os.path.join(install_path, 'bin/python') venv_pip_path = os.path.join(install_path, 'bin/pip') deps = " ".join(project.pip_dependencies) execute("%s install %s" % (venv_pip_path, deps)) if spec.settings.include_config: src_config = os.path.join(project_src_path, 'etc') dest_config = os.path.join(install_path, 'etc') if not os.path.exists(src_config): LOG.warning( "Project configuration does not seem to exist " "in source repo '%s'. Skipping.", project.name) else: LOG.debug("Copying config from '%s' to '%s'", src_config, dest_config) distutils.dir_util.copy_tree(src_config, dest_config) if spec.settings.gerrit_dependencies: self._install_gerrit_dependencies(repo, project, install_path) execute("%s setup.py install" % venv_python_path, project_src_path) execute("%s install pbr" % venv_pip_path) # now build the package pkg = Package(project.package_name, project.version, install_path, spec.settings.output_dir, spec.settings.force_overwrite, project.system_dependencies) pkg.build()
def _clone_project(self, giturl, name, gitref, depth, path): LOG.info("Fetching source code for '%s'", name) repo = OpenstackGitRepo(giturl, name, gitref, depth=depth) repo.clone(path) return repo
def _build(self): spec = self._spec self._tempdir = tempfile.mkdtemp(prefix='giftwrap') src_path = os.path.join(self._tempdir, 'src') LOG.debug("Temporary working directory: %s", self._tempdir) for project in spec.projects: LOG.info("Beginning to build '%s'", project.name) install_path = project.install_path LOG.debug("Installing '%s' to '%s'", project.name, install_path) # if anything is in our way, see if we can get rid of it if os.path.exists(install_path): if spec.settings.force_overwrite: LOG.info("force_overwrite is set, so removing " "existing path '%s'" % install_path) shutil.rmtree(install_path) else: raise Exception("Install path '%s' already exists" % install_path) os.makedirs(install_path) # clone the project's source to a temporary directory project_src_path = os.path.join(src_path, project.name) os.makedirs(project_src_path) LOG.info("Fetching source code for '%s'", project.name) repo = OpenstackGitRepo(project.giturl, project.name, project.gitref, depth=project.gitdepth) repo.clone(project_src_path) # tell package users where this came from gitinfo_file = os.path.join(install_path, 'gitinfo') with open(gitinfo_file, 'w') as fh: fh.write("%s %s" % (project.giturl, repo.head.hexsha)) # start building the virtualenv for the project LOG.info("Creating the virtualenv for '%s'", project.name) execute(project.venv_command, install_path) # install into the virtualenv LOG.info("Installing '%s' to the virtualenv", project.name) venv_pip_path = os.path.join(install_path, 'bin/pip') deps = " ".join(project.pip_dependencies) execute("%s install %s" % (venv_pip_path, deps)) if spec.settings.include_config: src_config = os.path.join(project_src_path, 'etc') dest_config = os.path.join(install_path, 'etc') if not os.path.exists(src_config): LOG.warning("Project configuration does not seem to exist " "in source repo '%s'. Skipping.", project.name) else: LOG.debug("Copying config from '%s' to '%s'", src_config, dest_config) distutils.dir_util.copy_tree(src_config, dest_config) if spec.settings.gerrit_dependencies: self._install_gerrit_dependencies(repo, project, install_path) execute("%s install %s" % (venv_pip_path, project_src_path)) # now build the package pkg = Package(project.package_name, project.version, install_path, spec.settings.output_dir, spec.settings.force_overwrite, project.system_dependencies) pkg.build()
def test_repo(self): OpenstackGitRepo(None)