def apply(obj, repo=None): if repo is None: repo = docs_meta.GIT_REMOTE['upstream'] cmd = [ 'curl', 'https://github.com/{0}/'.format(repo), '|', 'git', 'am', '--signoff --3way' if env.sign else '--3way' ] if obj.startswith('http'): cmd[1] = obj if not obj.endswith('.patch'): cmd[1] += '.patch' local(' '.join(cmd)) elif re.search('[a-zA-Z]+', obj): cmd[1] = cmd[1] + 'commit/' + obj + '.patch' local(' '.join(cmd)) puts('[git]: merged commit {0} for {1} into {2}'.format( obj, repo, docs_meta.get_branch())) else: cmd[1] = cmd[1] + 'pull/' + obj + '.patch' local(' '.join(cmd)) puts('[git]: merged pull request #{0} for {1} into {2}'.format( obj, repo, docs_meta.get_branch()))
def apply(obj, repo=None): if repo is None: repo = docs_meta.GIT_REMOTE["upstream"] cmd = [ "curl", "https://github.com/{0}/".format(repo), "|", "git", "am", "--signoff --3way" if env.sign else "--3way", ] if obj.startswith("http"): cmd[1] = obj if not obj.endswith(".patch"): cmd[1] += ".patch" local(" ".join(cmd)) elif re.search("[a-zA-Z]+", obj): cmd[1] = cmd[1] + "commit/" + obj + ".patch" local(" ".join(cmd)) puts("[git]: merged commit {0} for {1} into {2}".format(obj, repo, docs_meta.get_branch())) else: cmd[1] = cmd[1] + "pull/" + obj + ".patch" local(" ".join(cmd)) puts("[git]: merged pull request #{0} for {1} into {2}".format(obj, repo, docs_meta.get_branch()))
def pdf_makefile(name, tag): name_tagged = '-'.join([name, tag]) name_tagged_pdf = name_tagged + '.pdf' name_tagged_branch_pdf = '-'.join([name, tag, docs_meta.get_branch()]) + '.pdf' generated_latex = '{0}/latex/{1}.tex'.format(paths['branch-output'], name) built_tex = '{0}/latex/{1}.tex'.format(paths['branch-output'], name_tagged) built_pdf = '{0}/latex/{1}'.format(paths['branch-output'], name_tagged_pdf) staged_pdf_branch = '{0}/{1}'.format(paths['branch-staging'], name_tagged_branch_pdf) staged_pdf = '{0}/{1}'.format(paths['branch-staging'], name_tagged_pdf) m.section_break(name) m.target(target=generated_latex, dependency='latex') m.job('sed $(SED_ARGS_FILE) -e $(LATEX_CORRECTION) -e $(LATEX_CORRECTION) -e $(LATEX_LINK_CORRECTION) ' + generated_latex) m.msg('[latex]: fixing $@ TeX from the Sphinx output.') m.target(target=built_tex, dependency=generated_latex) m.job('$(PYTHONBIN) {0}/copy-if-needed.py -i {1} -o {2} -b pdf'.format(paths['tools'], generated_latex, built_tex)) m.msg('[pdf]: updated "' + built_tex + '" for pdf generation.') m.target(target=staged_pdf_branch, dependency=built_pdf) m.job('cp {0} {1}'.format(built_pdf, staged_pdf_branch)) m.msg('[pdf]: migrated ' + staged_pdf) m.target(target=staged_pdf, dependency=staged_pdf_branch) m.job('{0}/create-link {1} {2} {3}'.format(paths['tools'], name_tagged_branch_pdf, name_tagged_pdf, paths['branch-staging'])) m.msg('[pdf]: created link for ' + staged_pdf) m.comment('adding ' + name + '.pdf to the build dependency.') return staged_pdf
def deploy_static(): if get_branch() == MANUAL_BRANCH: cmd = [ build_rsync_cmd(local_path=env.paths['public'] + '/*', remote_string=env.host_string + ':' + env.remote_rsync_location.rsplit('/', 1)[0], recursive=False), build_rsync_cmd(local_path=env.paths['public'] + '/.htaccess', remote_string=env.host_string + ':' + env.remote_rsync_location.rsplit('/', 1)[0], recursive=False) ] for c in cmd: local(' '.join(c))
def static(): if get_branch() == MANUAL_BRANCH: cmd = [ build_rsync_cmd(local_path=env.paths['public'] + '/*', remote_string=env.host_string + ':' + env.remote_rsync_location.rsplit('/', 1)[0], recursive=False), build_rsync_cmd(local_path=env.paths['public'] + '/.htaccess', remote_string=env.host_string + ':' + env.remote_rsync_location.rsplit('/', 1)[0], recursive=False) ] for c in cmd: local(' '.join(c))
def apply(obj,repo=None): if repo is None: repo = docs_meta.GIT_REMOTE['upstream'] cmd = ['curl', 'https://github.com/{0}/'.format(repo), '|', 'git', 'am', '--signoff --3way' if env.sign else '--3way' ] if obj.startswith('http'): cmd[1] = obj if not obj.endswith('.patch'): cmd[1] += '.patch' local(' '.join(cmd)) elif re.search('[a-zA-Z]+', obj): cmd[1] = cmd[1] + 'commit/' + obj + '.patch' local(' '.join(cmd)) puts('[git]: merged commit {0} for {1} into {2}'.format(obj, repo, docs_meta.get_branch())) else: cmd[1] = cmd[1] + 'pull/' + obj + '.patch' local(' '.join(cmd)) puts('[git]: merged pull request #{0} for {1} into {2}'.format(obj, repo, docs_meta.get_branch()))
def generate_meta(): m.section_break('branch/release meta', block='rel') m.var('manual-branch', docs_meta.MANUAL_BRANCH, block='rel') m.var('current-branch', str(docs_meta.get_branch()), block='rel') m.var('last-commit', str(docs_meta.get_commit()), block='rel') m.var('current-if-not-manual', str(docs_meta.get_manual_path()), block='rel') paths = docs_meta.render_paths(True) m.section_break('file system paths', block='paths') m.var('output', paths['output'], block='paths') m.var('public-output', paths['public'], block='paths') m.var('branch-output', paths['branch-output'], block='paths') m.var('rst-include', paths['includes'], block='paths') m.var('branch-source', paths['branch-source'], block='paths') m.var('public-branch-output', paths['branch-staging'], block='paths')
def static(): if get_branch() == MANUAL_BRANCH: cmd = [ build_rsync_cmd( local_path=env.paths["public"] + "/*", remote_string=env.host_string + ":" + env.remote_rsync_location.rsplit("/", 1)[0], recursive=False, ), build_rsync_cmd( local_path=env.paths["public"] + "/.htaccess", remote_string=env.host_string + ":" + env.remote_rsync_location.rsplit("/", 1)[0], recursive=False, ), ] for c in cmd: local(" ".join(c))
def builds(days=14): days = time.time() - 60*60*24 * int(days) path = os.path.abspath(os.path.join(os.path.dirname(__file__), '../build/')) + '/' builds = [ path + o for o in os.listdir(path) if os.path.isdir(path + o)] for build in builds: branch = build.rsplit('/', 1)[1] if branch in docs_meta.get_conf().git.branches.published: continue elif branch == docs_meta.get_branch(): continue elif branch == 'public': continue elif os.stat(build).st_mtime < days: _rm_rf(build) _rm_rf(path + "public/" + branch) print('[clean]: removed stale build artifact: ' + build)
def generate_delegated_interface(builders): branches = mongo_meta.PUBLISHED_BRANCHES current_branch = mongo_meta.get_branch() if current_branch not in branches: branches.append(current_branch) builders.append('publish') builders.append('push') builders.append('stage') targets = [] for branch in branches: m.section_break(branch, block=branch) m.newline(block=branch) for target in builders: for sync in [('foreground', '--wait'), ('background', '')]: build_target = 'delegated-%s-%s-%s' % (branch, target, sync[0]) targets.append(build_target) m.target(target=build_target, block=branch) m.job(job=( '$(PYTHONBIN) bin/delegated-build --branch %s --target %s %s' % (branch, target, sync[1])), block=branch) if sync[0] == 'background': m.job(job=utils.build_platform_notification( 'build complete', ' '.join([branch, target])), ignore=True, block=branch) m.newline(block=branch) m.section_break('meta section', block='meta') m.newline() m.target('.PHONY', ' '.join(targets), block='meta')
def pdf_makefile(name, tag): name_tagged = '-'.join([name, tag]) name_tagged_pdf = name_tagged + '.pdf' name_tagged_branch_pdf = '-'.join([name, tag, docs_meta.get_branch()]) + '.pdf' generated_latex = '{0}/latex/{1}.tex'.format(paths['branch-output'], name) built_tex = '{0}/latex/{1}.tex'.format(paths['branch-output'], name_tagged) built_pdf = '{0}/latex/{1}'.format(paths['branch-output'], name_tagged_pdf) staged_pdf_branch = '{0}/{1}'.format(paths['branch-staging'], name_tagged_branch_pdf) staged_pdf = '{0}/{1}'.format(paths['branch-staging'], name_tagged_pdf) m.section_break(name) m.target(target=generated_latex, dependency='latex') m.job( 'sed $(SED_ARGS_FILE) -e $(LATEX_CORRECTION) -e $(LATEX_CORRECTION) -e $(LATEX_LINK_CORRECTION) ' + generated_latex) m.msg('[latex]: fixing $@ TeX from the Sphinx output.') m.target(target=built_tex, dependency=generated_latex) m.job('$(PYTHONBIN) {0}/copy-if-needed.py -i {1} -o {2} -b pdf'.format( paths['tools'], generated_latex, built_tex)) m.msg('[pdf]: updated "' + built_tex + '" for pdf generation.') m.target(target=staged_pdf_branch, dependency=built_pdf) m.job('cp {0} {1}'.format(built_pdf, staged_pdf_branch)) m.msg('[pdf]: migrated ' + staged_pdf) m.target(target=staged_pdf, dependency=staged_pdf_branch) m.job('{0}/create-link {1} {2} {3}'.format(paths['tools'], name_tagged_branch_pdf, name_tagged_pdf, paths['branch-staging'])) m.msg('[pdf]: created link for ' + staged_pdf) m.comment('adding ' + name + '.pdf to the build dependency.') return staged_pdf
def generate_delegated_interface(builders): branches = mongo_meta.PUBLISHED_BRANCHES current_branch = mongo_meta.get_branch() if current_branch not in branches: branches.append(current_branch) builders.append('publish') builders.append('push') builders.append('stage') targets = [] for branch in branches: m.section_break(branch, block=branch) m.newline(block=branch) for target in builders: for sync in [ ('foreground', '--wait'), ('background', '') ]: build_target = 'delegated-%s-%s-%s' % ( branch, target, sync[0]) targets.append(build_target) m.target(target=build_target, block=branch) m.job(job=('$(PYTHONBIN) bin/delegated-build --branch %s --target %s %s' % ( branch, target, sync[1])), block=branch) if sync[0] == 'background': m.job(job=utils.build_platform_notification('build complete', ' '.join([branch, target])), ignore=True, block=branch) m.newline(block=branch) m.section_break('meta section', block='meta') m.newline() m.target('.PHONY', ' '.join(targets), block='meta')