Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
Файл: rpm.py Проект: siq/lattice
    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)