# Fedora Developer Shell # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # Authors: Yaakov M. Nemoy # from __future__ import with_statement from base.base import log from base.exceptions import ExecutionException from base.util import pwd, copy from base.profiles import ver_rel from modules.directory import Directory class Package(Directory): _type = 'package' def load_dir(self, dir): super(Package, self).load_dir(dir) # this is a hack for some refactoring backwards compatibility #TODO: replace code_dir with just dir self.code_dir = self.cfg['dir'] def make_dir(self, dir): super(Package, self).make_dir(dir) self.code_dir = dir def add_spec(self, spec_file): log.debug('spec_file is %s' % spec_file) log.debug('spec_file_name is %s' % self.name + '.spec') with pwd(self.code_dir): try: copy(spec_file, self.name) except IOError, e: log.error(str(e)) raise ExecutionException(e, 'spec-file could not be added') @property def spec_file(self): return self.name + '.spec' def get_srpm_name(self, profile): with pwd(self.code_dir): ver, rel = ver_rel(self.spec_file, profile.dist_defines()) return '%s-%s-%s.src.rpm' % (self.name, ver, rel) def source_dir(self, *args): raise NotImplementedError __all__ = ['Package']