def _setup_sources(self): super(GitAnnexBuilder, self)._setup_sources() old_cwd = os.getcwd() os.chdir(os.path.join(old_cwd, self.relative_project_dir)) # NOTE: 'which' may not be installed... (docker containers) (status, output) = getstatusoutput("which git-annex") if status != 0: msg = "Please run '%s install git-annex' as root." % package_manager() error_out('%s' % msg) run_command("git-annex lock") annexed_files = run_command("git-annex find --include='*'").splitlines() run_command("git-annex get") run_command("git-annex unlock") debug(" Annex files: %s" % annexed_files) for annex in annexed_files: debug("Copying unlocked file %s" % annex) os.remove(os.path.join(self.rpmbuild_gitcopy, annex)) shutil.copy(annex, self.rpmbuild_gitcopy) self._lock() os.chdir(old_cwd)
def rpm(self): """ Build an RPM. """ self._create_build_dirs() if not self.ran_tgz: self.tgz() define_dist = "" if self.dist: define_dist = "--define 'dist %s'" % self.dist rpmbuild_options = self.rpmbuild_options + self._scl_to_rpmbuild_option() cmd = ('rpmbuild --define "_source_filedigest_algorithm md5" ' '--define "_binary_filedigest_algorithm md5" %s %s %s --clean ' '-ba %s' % (rpmbuild_options, self._get_rpmbuild_dir_options(), define_dist, self.spec_file)) debug(cmd) try: output = run_command_print(cmd) except (KeyboardInterrupt, SystemExit): print("") exit(1) except RunCommandException: err = sys.exc_info()[1] msg = str(err) if re.search('Failed build dependencies', err.output): cmd = "dnf builddep %s" if package_manager() == "dnf" else "yum-builddep %s" msg = "Please run '%s' as root." % \ cmd % find_spec_file(self.relative_project_dir) error_out('%s' % msg) except Exception: err = sys.exc_info()[1] error_out('%s' % str(err)) files_written = find_wrote_in_rpmbuild_output(output) if len(files_written) < 2: error_out("Error parsing rpmbuild output") self.srpm_location = files_written[0] self.artifacts.extend(files_written) print info_out("Successfully built: %s" % ' '.join(files_written))