def run(self, runtime): component = self.component environ = self.environ name = component['name'] version = component['version'] self.tgzname = '%s-%s.tar.bz2' % (name, version) prefix = self['prefix'] if prefix: name = '%s-%s' % (prefix.strip('-'), name) if component.get('volatile'): timestamp = self['timestamp'] if timestamp: version = '%s-%s' % (version, timestamp.strftime('%Y%m%d%H%M%S')) self.pkgname = '%s-%s.deb' % (name, version) self.workpath = runtime.curdir / ('build_%s_deb' % name) self.workpath.makedirs_p() controldir = self.workpath / 'DEBIAN' controldir.mkdir_p() dependencies = component.get('dependencies') if dependencies: if prefix: dependencies = [ '%s-%s' % (prefix.strip('-'), d) for d in dependencies ] dependencies = ', '.join(dependencies) template = get_package_data('lattice', 'templates/deb-control-file.tmpl') controlfile = template % { 'component_name': name, 'component_version': version, 'component_maintainer_name': 'SIQ', 'component_maintainer_email': '*****@*****.**', 'component_depends': dependencies or '', 'component_description': 'Package generated by lattice.deb.build' } path('%s/control' % str(controldir)).write_bytes(controlfile) try: build = self.build except TaskError: build = {} for file_token, script_token, script_name in self.SCRIPTS: script = None if file_token in build: scriptpath = path(build[file_token]) if scriptpath.exists(): script = scriptpath.bytes() elif script_token in build: script = build[script_token] if script: script = interpolate_env_vars(script, environ) scriptfile = controldir / script_name scriptfile.write_bytes(script) scriptfile.chmod(0755) curdir = runtime.chdir(self.workpath) self._run_tar(runtime) runtime.chdir(curdir) self._run_dpkg(runtime)
def run(self, runtime): component = self.component environ = self.environ name = component['name'] version = component['version'] self.tgzname = '%s-%s.tar.bz2' % (name, version) prefix = self['prefix'] if prefix: name = '%s-%s' % (prefix.strip('-'), name) if component.get('volatile'): timestamp = self['timestamp'] if timestamp: version = '%s-%s' % (version, timestamp.strftime('%Y%m%d%H%M%S')) self.pkgname = '%s-%s.deb' % (name, version) self.workpath = runtime.curdir / ('build_%s_deb' % name) self.workpath.makedirs_p() controldir = self.workpath / 'DEBIAN' controldir.mkdir_p() dependencies = component.get('dependencies') if dependencies: if prefix: dependencies = ['%s-%s' % (prefix.strip('-'), d) for d in dependencies] dependencies = ', '.join(dependencies) template = get_package_data('lattice', 'templates/deb-control-file.tmpl') controlfile = template % { 'component_name': name, 'component_version': version, 'component_maintainer_name': 'SIQ', 'component_maintainer_email': '*****@*****.**', 'component_depends': dependencies or '', 'component_description': 'Package generated by lattice.deb.build'} path('%s/control' % str(controldir)).write_bytes(controlfile) try: build = self.build except TaskError: build = {} for file_token, script_token, script_name in self.SCRIPTS: script = None if file_token in build: scriptpath = path(build[file_token]) if scriptpath.exists(): script = scriptpath.bytes() elif script_token in build: script = build[script_token] if script: script = interpolate_env_vars(script, environ) scriptfile = controldir / script_name scriptfile.write_bytes(script) scriptfile.chmod(0755) curdir = runtime.chdir(self.workpath) self._run_tar(runtime) runtime.chdir(curdir) self._run_dpkg(runtime)
def run(self, runtime): component = self.component if component.get('ephemeral'): return environ = self.environ self.manifest = self['manifest'] self.assembler = self['assembler'] name = component['name'] if component.get('arch'): self.arch = component.get('arch') else: self.arch = 'x86_64' version = component['version'] self.tgzname = '%s-%s.tar.bz2' % (name, version) prefix = self['prefix'] if prefix: name = '%s-%s' % (prefix.strip('-'), name) # supplement for rpm's release req #self.release = component.get('release') #if self.release: # self.release = int(self.release) + 1 #elif component.get('volatile'): timestamp = self['timestamp'] #if timestamp: self.release = timestamp.strftime('%Y%m%d%H%M%S') #else: # self.release = 1 # supplement for arch value self.pkgname = '%s-%sp%s-1.%s.rpm' % (name, version, self.release, self.arch) self.workpath = runtime.curdir / ('build_%s_rpm' % name) self.workpath.makedirs_p() self.specdir = self.workpath / 'SPECS' self.buildrootdir = self.workpath / 'BUILDROOT' self.builddir = self.workpath / 'BUILD' self.specdir.mkdir_p() self.buildrootdir.mkdir_p() self.builddir.mkdir_p() # use pkg deps if they exist dependencies = component.get('package-dependencies') if not dependencies: dependencies = component.get('dependencies') if dependencies: if prefix: dependencies = ['%s-%s' % (prefix.strip('-'), d) for d in dependencies] dependencies = ', '.join(dependencies) template = get_package_data('lattice', 'templates/rpm-spec-file.tmpl') specfile = template % { 'component_name': name, 'component_version': '%sp%s' % (version, self.release), 'component_release': '1', 'component_maintainer_name': 'IBM', 'component_maintainer_email': '*****@*****.**', 'component_depends': dependencies or 'rpm', 'component_description': 'Package generated by lattice.rpm.build'} self.specpath = path('%s/%s-%s.spec' % (str(self.specdir), name, version)) self.specpath.write_bytes(specfile) if component.get('package-obsoletes'): obsoletes = ', '.join(component.get('package-obsoletes')) speclines = self.specpath.lines() newspeclines = [] for specline in speclines: newspeclines.append(specline) if 'requires' in specline.lower(): newspeclines.append('Obsoletes: %s' % obsoletes) self.specpath.write_lines(newspeclines) if component.get('package-provides'): provides = ', '.join(component.get('package-provides')) speclines = self.specpath.lines() newspeclines = [] for specline in speclines: newspeclines.append(specline) if 'requires' in specline.lower(): newspeclines.append('Provides: %s' % provides) self.specpath.write_lines(newspeclines) try: build = self.build except TaskError: build = {} for file_token, script_token, script_name in self.SCRIPTS: script = None if file_token in build: scriptpath = path(build[file_token]) if scriptpath.exists(): script = scriptpath.bytes() elif script_token in build: script = build[script_token] if script: speccontent = ['\n', '%%%s' % script_name] self.specpath.write_lines(speccontent, append=True) script = interpolate_env_vars(script, environ) self.specpath.write_bytes(script, append=True) runtime.chdir(self.buildrootdir) self._run_tar(runtime) membersfile = self.builddir / 'INSTALLED_FILES' membersfile.write_lines(self.membernames, append=True) runtime.chdir(self.workpath) self._run_rpmbuild(runtime, environ)