Beispiel #1
0
def get_build_from_file (platform, file_name, name):
    gub_name = file_name.replace (os.getcwd () + '/', '')
    logging.verbose ('reading spec: %(gub_name)s\n' % locals ())
    # Ugh, FIXME
    # This loads gub/specs/darwin/python.py in PYTHON. namespace,
    # overwriting the PYTHON. namespace from gub/specs/python.py
    # Current workaround: always/also use __darwin etc. postfixing
    # of class names, also in specs/darwin/ etc.
    warnings.filterwarnings ('ignore', '''Parent module 'python-2' ''')
    module = misc.load_module (file_name, name)
    # cross/gcc.py:Gcc will be called: cross/Gcc.py,
    # to distinguish from specs/gcc.py:Gcc.py
    base = os.path.basename (name)
    class_name = ((base[0].upper () + base[1:])
                  .replace ('-', '_')
                  .replace ('.', '_')
                  .replace ('++', '_xx_')
                  .replace ('+', '_x_')
                  + ('-' + platform).replace ('-', '__'))
    logging.debug ('LOOKING FOR: %(class_name)s\n' % locals ())
    cls = misc.most_significant_in_dict (module.__dict__, class_name, '__')
    if (platform == 'tools32'
        and (not cls or issubclass (cls, target.AutoBuild))):
        cls = misc.most_significant_in_dict (module.__dict__, class_name.replace ('tools32', 'tools'), '__')
    if ((platform == 'tools' or platform == 'tools32')
        and (issubclass (cls, target.AutoBuild)
             and not issubclass (cls, tools.AutoBuild)
             and not issubclass (cls, tools32.AutoBuild))):
        cls = None
    return cls
Beispiel #2
0
def get_build_class (settings, flavour, name):
    cls = get_build_from_module (settings, name)
    if not cls:
        logging.verbose ('making spec:  %(name)s\n' % locals ())
        cls = get_build_without_module (flavour, name)
    if cls:
        cls._created_name = name
    return cls
Beispiel #3
0
    def calculate_checksums(self):
        logging.verbose('calculating checksums\n')
        for spec in list(self.specs.values()):
            name = spec.platform_name()
            logger = logging.NullCommandLogger()

            command_runner = runner.DeferredRunner(logger)
            spec.connect_command_runner(command_runner)
            spec.build(skip=['download'])
            spec.connect_command_runner(None)

            self.checksums[name] = command_runner.checksum()
            reason = self.spec_checksums_fail_reason(spec)
            if reason:
                self.failed_checksums[name] = reason
Beispiel #4
0
    def calculate_checksums (self):
        logging.verbose ('calculating checksums\n')
        for spec in list (self.specs.values ()):
            name = spec.platform_name ()
            logger = logging.NullCommandLogger ()

            command_runner = runner.DeferredRunner (logger)
            spec.connect_command_runner (command_runner)
            spec.build (skip=['download'])
            spec.connect_command_runner (None)

            self.checksums[name] = command_runner.checksum ()
            reason = self.spec_checksums_fail_reason (spec)
            if reason:
                self.failed_checksums[name] = reason
Beispiel #5
0
def get_build_from_file (platform, file_name, name):
    gub_name = file_name.replace (os.getcwd () + '/', '')
    logging.verbose ('reading spec: %(gub_name)s\n' % locals ())
    # Ugh, FIXME
    # This loads gub/specs/darwin/python.py in PYTHON. namespace,
    # overwriting the PYTHON. namespace from gub/specs/python.py
    # Current workaround: always/also use __darwin etc. postfixing
    # of class names, also in specs/darwin/ etc.
    module = misc.load_module (file_name, name)
    # cross/gcc.py:Gcc will be called: cross/Gcc.py,
    # to distinguish from specs/gcc.py:Gcc.py
    base = os.path.basename (name)
    class_name = ((base[0].upper () + base[1:])
                  .replace ('-', '_')
                  .replace ('.', '_')
                  .replace ('++', '_xx_')
                  .replace ('+', '_x_')
                  + ('-' + platform).replace ('-', '__'))
    logging.debug ('LOOKING FOR: %(class_name)s\n' % locals ())
    return misc.most_significant_in_dict (module.__dict__, class_name, '__')
Beispiel #6
0
    def uninstall_package (self, name):
        logging.action ('uninstalling package: %s\n' % name)

        lst = self.package_installed_files (name)

        dirs = []
        files = []
        for i in lst:
            f = os.path.join (self.root, i)
            if os.path.islink (f):
                files.append (f)
            elif (not os.path.exists (f)
               and not self.is_distro):
                printf ('FileManager: uninstall: %s' % name)
                printf ('FileManager: no such file: %s' % f)
            elif os.path.isdir (f):
                dirs.append (f)
            else:
                files.append (f)

        for f in files:
            os.unlink (f)

        for d in reversed (dirs):
            try:
                os.rmdir (d)
            except OSError:
                logging.verbose ('warning: %(d)s not empty\n' % locals ())
        for f in lst:
            ## fixme (?)  -- when is f == ''
            if not f or f.endswith ('/'):
                continue
            try:
                del self._file_package_db[f]
            except:
                printf ('db delete failing for ', f)
        del self._package_file_db[name]
Beispiel #7
0
    def uninstall_package(self, name):
        logging.action('uninstalling package: %s\n' % name)

        lst = self.package_installed_files(name)

        dirs = []
        files = []
        for i in lst:
            f = os.path.join(self.root, i)
            if os.path.islink(f):
                files.append(f)
            elif (not os.path.exists(f) and not self.is_distro):
                printf('FileManager: uninstall: %s' % name)
                printf('FileManager: no such file: %s' % f)
            elif os.path.isdir(f):
                dirs.append(f)
            else:
                files.append(f)

        for f in files:
            os.unlink(f)

        for d in reversed(dirs):
            try:
                os.rmdir(d)
            except OSError:
                logging.verbose('warning: %(d)s not empty\n' % locals())
        for f in lst:
            ## fixme (?)  -- when is f == ''
            if not f or f.endswith('/'):
                continue
            try:
                del self._file_package_db[f]
            except:
                printf('db delete failing for ', f)
        del self._package_file_db[name]