def build_package(self, op_id, platform, arch, branding_variables, package_type, destination, status_channel, routing_key):

        platform_or_none = base.get_supported_platform_by_name(platform)

        if platform_or_none == None:
            raise BuildError('invalid platform')

        if not arch in platform_or_none.archs:
            raise BuildError('invalid arch')
        if not package_type in platform_or_none.package_types:
            raise BuildError('invalid package_type')

        pwd = os.getcwd()
        dir_name = 'build_{0}_for_{1}'.format(platform, op_id)
        if os.path.exists(dir_name):
            shutil.rmtree(dir_name)

        os.mkdir(dir_name)
        os.chdir(dir_name)

        arch_args = '-DOS_ARCH={0}'.format(arch)
        generator_args = '-DCPACK_GENERATOR={0}'.format(package_type)
        branding_variables_list = shlex.split(branding_variables)
        cmake_line = ['cmake', '../../', '-GUnix Makefiles', '-DCMAKE_BUILD_TYPE=RELEASE', generator_args, arch_args]
        cmake_line.extend(branding_variables_list)
        try:
            run_command(cmake_line)
        except subprocess.CalledProcessError as ex:
            os.chdir(pwd)
            raise ex
            
        self.send_status(status_channel, routing_key, op_id, 20, 'Building package')
                         
        make_line = ['make', 'package', '-j2']
        try:
            run_command(make_line)
        except subprocess.CalledProcessError as ex:
            os.chdir(pwd)
            raise ex

        self.send_status(status_channel, routing_key, op_id, 70, 'Stable package')
        
        in_file = open('CPackConfig.cmake', 'r')
        for line in in_file.readlines():
            res = re.search(r'SET\(CPACK_SOURCE_PACKAGE_FILE_NAME "(.+)"\)', line)
            if res != None:
                filename = res.group(1) + '.' + base.get_extension_by_package(package_type)
        in_file.close()

        try:
            self.send_status(status_channel, routing_key, op_id, 80, 'Loading package to server')
            result = config.post_install_step(filename, destination)
        except Exception as ex:
            os.chdir(pwd)
            raise ex

        os.chdir(pwd)
        return result
Beispiel #2
0
    argc = len(sys.argv)

    if argc > 1:
        op_id = sys.argv[1]
    else:
        print("Operation id not passed!")
        print_usage()
        quit()

    if argc > 2:
        platform_str = sys.argv[2]
    else:
        platform_str = base.get_os()

    platform_or_none = base.get_supported_platform_by_name(platform_str)
    if platform_or_none == None:
        print("Not supported platform: %s" % platform_str)
        print_usage()
        quit()

    if argc > 3:
        arch_str = sys.argv[3]
    else:
        arch_str = base.get_arch()

    if argc > 4:
        args = sys.argv[4]
    else:
        args = ''
Beispiel #3
0
    def build_package(self, op_id, platform, arch, branding_variables,
                      package_type, destination, status_channel, routing_key):

        platform_or_none = base.get_supported_platform_by_name(platform)

        if platform_or_none == None:
            raise BuildError('invalid platform')

        if not arch in platform_or_none.archs:
            raise BuildError('invalid arch')
        if not package_type in platform_or_none.package_types:
            raise BuildError('invalid package_type')

        pwd = os.getcwd()
        dir_name = 'build_{0}_for_{1}'.format(platform, op_id)
        if os.path.exists(dir_name):
            shutil.rmtree(dir_name)

        os.mkdir(dir_name)
        os.chdir(dir_name)

        arch_args = '-DOS_ARCH={0}'.format(arch)
        generator_args = '-DCPACK_GENERATOR={0}'.format(package_type)
        branding_variables_list = shlex.split(branding_variables)
        cmake_line = [
            'cmake', '../../', '-GUnix Makefiles',
            '-DCMAKE_BUILD_TYPE=RELEASE', generator_args, arch_args
        ]
        cmake_line.extend(branding_variables_list)
        try:
            run_command(cmake_line)
        except subprocess.CalledProcessError as ex:
            os.chdir(pwd)
            raise ex

        self.send_status(status_channel, routing_key, op_id, 20,
                         'Building package')

        make_line = ['make', 'package', '-j2']
        try:
            run_command(make_line)
        except subprocess.CalledProcessError as ex:
            os.chdir(pwd)
            raise ex

        self.send_status(status_channel, routing_key, op_id, 70,
                         'Stable package')

        in_file = open('CPackConfig.cmake', 'r')
        for line in in_file.readlines():
            res = re.search(r'SET\(CPACK_SOURCE_PACKAGE_FILE_NAME "(.+)"\)',
                            line)
            if res != None:
                filename = res.group(1) + '.' + base.get_extension_by_package(
                    package_type)
        in_file.close()

        try:
            self.send_status(status_channel, routing_key, op_id, 80,
                             'Loading package to server')
            result = config.post_install_step(filename, destination)
        except Exception as ex:
            os.chdir(pwd)
            raise ex

        os.chdir(pwd)
        return result
    argc = len(sys.argv)

    if argc > 1:
        op_id = sys.argv[1]
    else:
        print("Operation id not passed!")
        print_usage()
        quit()

    if argc > 2:
        platform_str = sys.argv[2]
    else:
        platform_str = base.get_os()

    platform_or_none = base.get_supported_platform_by_name(platform_str)
    if platform_or_none == None:
        print("Not supported platform: %s" % platform_str)
        print_usage()
        quit()

    if argc > 3:
        arch_str = sys.argv[3]
    else:
        arch_str = base.get_arch()

    if argc > 4:
        args = sys.argv[4]
    else:
        args = ''