Exemple #1
0
    def register_package_header (self, package_hdr, branch_dict):
        if self.verbose:
            logging.info ('reading package header: %s\n'
                          % package_hdr.__repr__ ())

        str = open (package_hdr).read ()
        header_name = os.path.basename (package_hdr)
        d = dict (pickle.loads (str))
        name = d['basename']
        vc_branch = d.get ('vc_branch', '')

        if name in branch_dict:
            branch = branch_dict[name]
            if ':' in branch:
                (remote_branch, branch) = tuple (branch.split (':'))
            if branch != vc_branch:
                logging.error ('package of branch: %(vc_branch)s, expecting: %(branch)s\n' % locals ())
                logging.error ('ignoring header: %(header_name)s\n' % locals ())
                return
        elif d['vc_branch']:
            logging.error ('no branch for package: %(name)s\n' % locals ())
            logging.error ('ignoring header: %(header_name)s\n' % locals ())
            logging.error ('available branch: %(vc_branch)s\n' % locals ())
            return
        
        name = d['split_name']
        if 0:
          ## FIXME ?
          if name in self._package_dict_db:
              if str != self._package_dict_db[name]:
                  logging.info ("package header changed for %s\n" % name)

              return

        self.register_package_dict (d)
Exemple #2
0
    def register_package_dict (self, d):
        nm = d['name']
        if 'split_name' in d:
            nm = d['split_name']
        if 0 and (nm in self._packages):
            if self._packages[nm]['spec_checksum'] != d['spec_checksum']:
                logging.info ('******** checksum of %s changed!\n\n' % nm)

            if self._packages[nm]['cross_checksum'] != d['cross_checksum']:
                logging.info ('******** checksum of cross changed for %s\n' % nm)
            return
        self._packages[nm] = d
Exemple #3
0
    def register_package_dict(self, d):
        nm = d['name']
        if 'split_name' in d:
            nm = d['split_name']
        if 0 and (nm in self._packages):
            if self._packages[nm]['spec_checksum'] != d['spec_checksum']:
                logging.info('******** checksum of %s changed!\n\n' % nm)

            if self._packages[nm]['cross_checksum'] != d['cross_checksum']:
                logging.info('******** checksum of cross changed for %s\n' %
                             nm)
            return
        self._packages[nm] = d
Exemple #4
0
def get_cross_module (settings):
    platform = settings.platform
    if platform in cross_module_cache:
        return cross_module_cache[platform]

    base = re.sub ('[-0-9].*', '', platform)
    gubdir = settings.gubdir
    for name in platform, base:
        file_name = '%(gubdir)s/gub/%(name)s.py' % locals ()
        if os.path.exists (file_name):
            break

    logging.info ('module name: ' + name + '\n')
    module = misc.load_module (file_name, base)

    cross_module_checksums[platform] = md5.md5 (open (file_name).read ()).hexdigest ()
    cross_module_cache[platform] = module
    return module
Exemple #5
0
def get_cross_module(settings):
    platform = settings.platform
    if platform in cross_module_cache:
        return cross_module_cache[platform]

    base = re.sub('[-0-9].*', '', platform)
    gubdir = settings.gubdir
    for name in platform, base:
        file_name = '%(gubdir)s/gub/%(name)s.py' % locals()
        if os.path.exists(file_name):
            break

    logging.info('module name: ' + name + '\n')
    module = misc.load_module(file_name, base)

    cross_module_checksums[platform] = md5.md5(
        open(file_name).read()).hexdigest()
    cross_module_cache[platform] = module
    return module
Exemple #6
0
    def register_package_header(self, package_hdr, branch_dict):
        if self.verbose:
            logging.info('reading package header: %s\n' %
                         package_hdr.__repr__())

        str = open(package_hdr).read()
        header_name = os.path.basename(package_hdr)
        d = dict(pickle.loads(str))
        name = d['basename']
        vc_branch = d.get('vc_branch', '')

        if name in branch_dict:
            branch = branch_dict[name]
            if ':' in branch:
                (remote_branch, branch) = tuple(branch.split(':'))
            if branch != vc_branch:
                logging.error(
                    'package of branch: %(vc_branch)s, expecting: %(branch)s\n'
                    % locals())
                logging.error('ignoring header: %(header_name)s\n' % locals())
                return
        elif d['vc_branch']:
            logging.error('no branch for package: %(name)s\n' % locals())
            logging.error('ignoring header: %(header_name)s\n' % locals())
            logging.error('available branch: %(vc_branch)s\n' % locals())
            return

        name = d['split_name']
        if 0:
            ## FIXME ?
            if name in self._package_dict_db:
                if str != self._package_dict_db[name]:
                    logging.info("package header changed for %s\n" % name)

                return

        self.register_package_dict(d)
Exemple #7
0
def main():
    (options, args) = parse_options()
    # FIXME: local/system; wow that's from two layout changes ago!
    #    os.environ['PATH']= os.getcwd () + '/target/local/system/usr/bin:' + os.environ['PATH']
    #    printf (os.environ['PATH'])

    os.system("mkdir -p log")
    if options.dry_run:
        options.verbosity = logging.get_numeric_loglevel("command")

    logging.set_default_log("log/cron-builder.log", options.verbosity)
    logger = logging.default_logger

    logging.info(" *** Starting cron-builder:\n  %s " % "\n  ".join(args))

    if options.clean:
        # FIXME: what if user changes ~/.gubrc?  should use gubb.Settings!
        loggedos.system(logger, "rm -rf log/ target/ uploads/ buildnumber-* downloads/lilypond-*")

    make_cmd = "make -f lilypond.make %s " % options.make_options
    python_cmd = sys.executable + " "

    branch = options.branch
    local_branch = options.local_branch
    branch_sep = ":"

    # FIXME: what happened to branch juggling?
    if 1:
        local_branch = ""
        branch_sep = ""

    if 0:  # FIXME: use if 1: when --stage download is fixed
        # cannot do this now, --stage=dowload of fontconfig depends on
        # tools freetype-config
        # must build bootstrap first

        # FIXME: use gub-tester's download facility
        # can't have these in gub-tester, since these
        # will always usually result in "release already tested"
        for platform in args:
            loggedos.system(
                logger,
                python_cmd
                + "bin/gub --branch=lilypond=%(local_branch)s%(branch_sep)s:%(branch)s --platform=%(platform)s --stage=download lilypond"
                % locals(),
            )
            loggedos.system(logger, "rm -f target/%(platform)s/status/lilypond-%(branch)s*" % locals())
    else:
        loggedos.system(logger, make_cmd + "bootstrap")

    test_cmds = []
    if 1:
        test_cmds.append(make_cmd + "bootstrap")
    if options.build_package:
        test_cmds += [
            python_cmd
            + "bin/gub --branch=lilypond=%(branch)s%(branch_sep)s%(local_branch)s --skip-if-locked --platform=%(platform)s lilypond"
            % locals()
            for platform in args
        ]

    if options.build_installer:
        version_options = ""

        # installer-builder does not need remote-branch
        test_cmds += [
            python_cmd
            + "bin/gib --skip-if-locked %(version_options)s --branch=lilypond=%(branch)s%(branch_sep)s%(local_branch)s --platform=%(platform)s build-all lilypond"
            % locals()
            for platform in args
        ]

    if options.build_docs:
        test_cmds += [make_cmd + "doc-build", make_cmd + "doc-export"]
        options.test_options += " --dependent"

    if options.build_tarball:
        test_cmds += [make_cmd + "dist-check"]

    loggedos.system(
        logger, python_cmd + "bin/gub-tester %s %s" % (options.test_options, " ".join(["'%s'" % c for c in test_cmds]))
    )
Exemple #8
0
def main():
    (options, args) = parse_options()
    # FIXME: local/system; wow that's from two layout changes ago!
    #    os.environ['PATH']= os.getcwd () + '/target/local/system/usr/bin:' + os.environ['PATH']
    #    printf (os.environ['PATH'])

    os.system('mkdir -p log')
    if options.dry_run:
        options.verbosity = logging.get_numeric_loglevel('command')

    logging.set_default_log('log/cron-builder.log', options.verbosity)
    logger = logging.default_logger

    logging.info(' *** Starting cron-builder:\n  %s ' % '\n  '.join(args))

    if options.clean:
        # FIXME: what if user changes ~/.gubrc?  should use gubb.Settings!
        loggedos.system(
            logger,
            'rm -rf log/ target/ uploads/ buildnumber-* downloads/lilypond-*')

    make_cmd = 'make -f lilypond.make %s ' % options.make_options
    python_cmd = sys.executable + ' '

    branch = options.branch
    local_branch = options.local_branch
    branch_sep = ':'

    # FIXME: what happened to branch juggling?
    if 1:
        local_branch = ''
        branch_sep = ''

    if 0:  #FIXME: use if 1: when --stage download is fixed
        # cannot do this now, --stage=dowload of fontconfig depends on
        # tools freetype-config
        # must build bootstrap first

        # FIXME: use gub-tester's download facility
        # can't have these in gub-tester, since these
        # will always usually result in "release already tested"
        for platform in args:
            loggedos.system(
                logger, python_cmd +
                'bin/gub --branch=lilypond=%(local_branch)s%(branch_sep)s:%(branch)s --platform=%(platform)s --stage=download lilypond'
                % locals())
            loggedos.system(
                logger,
                'rm -f target/%(platform)s/status/lilypond-%(branch)s*' %
                locals())
    else:
        loggedos.system(logger, make_cmd + 'bootstrap')

    test_cmds = []
    if 1:
        test_cmds.append(make_cmd + 'bootstrap')
    if options.build_package:
        test_cmds += [
            python_cmd +
            'bin/gub --branch=lilypond=%(branch)s%(branch_sep)s%(local_branch)s --skip-if-locked --platform=%(platform)s lilypond'
            % locals() for platform in args
        ]

    if options.build_installer:
        version_options = ''

        # installer-builder does not need remote-branch
        test_cmds += [
            python_cmd +
            'bin/gib --skip-if-locked %(version_options)s --branch=lilypond=%(branch)s%(branch_sep)s%(local_branch)s --platform=%(platform)s build-all lilypond'
            % locals() for platform in args
        ]

    if options.build_docs:
        test_cmds += [make_cmd + 'doc-build', make_cmd + 'doc-export']
        options.test_options += ' --dependent'

    if options.build_tarball:
        test_cmds += [make_cmd + 'dist-check']

    loggedos.system(
        logger, python_cmd + 'bin/gub-tester %s %s' %
        (options.test_options, ' '.join(["'%s'" % c for c in test_cmds])))