def _make_build_extra(extra, rule_build, deps): rule = foreman.define_rule('%s/%s' % (rule_build, extra)) rule = rule.depend(rule_build) for dep in deps: rule = rule.depend(dep) return rule
"""Set up the base environment for pod release processes.""" import foreman # `build` is a do-nothing rule at the moment. foreman.define_rule('build').depend('//releases:build')
) @foreman.rule def build(parameters): ASSERT.is_(parameters['inside-builder-pod'], True) ASSERT.all(parameters['roots'], _is_root_dir) with scripts.using_sudo(): # We should run `apt-get update` even when we are not upgrading # the full system because some packages may be removed from the # distro repo while our local package index still has it. scripts.apt_get_update() scripts.mkdir(parameters['drydock']) @foreman.rule def cleanup(parameters): ASSERT.is_(parameters['inside-builder-pod'], True) ASSERT.all(parameters['roots'], _is_root_dir) with scripts.using_sudo(): scripts.apt_get_clean() def _is_root_dir(path): return (path / '.git').is_dir() # A dummy rule for rules that want to import base parameters but don't # want to depend on //bases:build. foreman.define_rule('dummy')
"""Install OpenJDK.""" import foreman import shipyard2.rules.bases shipyard2.rules.bases.define_distro_packages(['openjdk-17-jdk-headless']) # Nothing to do since we use OpenJDK from the distro. foreman.define_rule('build').depend('//bases:build').depend('install')
from foreman import define_parameter, define_rule, get_relpath if __name__ != 'pkg1.pkg2': raise AssertionError('incorrect __name__: %s' % __name__) if not __file__.endswith('tests/testdata/path1/pkg1/pkg2/build.py'): raise AssertionError('incorrect __file__: %s' % __file__) if str(get_relpath()) != 'pkg1/pkg2': raise AssertionError('incorrect relpath: %s' % get_relpath()) COUNT = 0 if COUNT > 0: raise AssertionError('load more than once') COUNT += 1 define_parameter('par_x') define_rule('rule_x').depend('//pkg1:pkg1')
from foreman import define_rule COUNT = 0 if COUNT > 0: raise AssertionError('load more than once') COUNT += 1 (define_rule('joint-rule-1').depend('build-rule-1')) # If you resolve only joint-rule-2, build-rule-1 should not be added # through reverse dependency. define_rule('joint-rule-2') (define_rule('build-rule-1').reverse_depend('joint-rule-1').reverse_depend( 'joint-rule-2'))
from foreman import define_rule COUNT = 0 if COUNT > 0: raise AssertionError('load more than once') COUNT += 1 define_rule('pkg4')
(foreman.define_rule('all').with_doc('build everything')\ .depend('//python/g1/apps:build') .depend('//python/g1/asyncs/agents:build') .depend('//python/g1/asyncs/bases:build') .depend('//python/g1/asyncs/kernels:build') .depend('//python/g1/backgrounds:build') .depend('//python/g1/bases:build') .depend('//python/g1/containers:build') .depend('//python/g1/databases:build') .depend('//python/g1/devtools/buildtools:build') .depend('//python/g1/files:build') .depend('//python/g1/http/clients:build') .depend('//python/g1/http/servers:build') .depend('//python/g1/messaging:build') .depend('//python/g1/networks/servers:build') .depend('//python/g1/operations/cores:build') .depend('//python/g1/operations/databases/bases:build') .depend('//python/g1/operations/databases/clients:build') .depend('//python/g1/operations/databases/servers:build') .depend('//python/g1/operations/databases/subscribers:build') .depend('//python/g1/scripts:build') .depend('//python/g1/texts:build') .depend('//python/g1/third-party/capnp:build') .depend('//python/g1/third-party/nng:build') .depend('//python/g1/third-party/v8:build') .depend('//python/g1/threads:build') .depend('//python/g1/webs:build') .depend('//python/startup:build') .depend('third-party') )
from foreman import define_rule COUNT = 0 if COUNT > 0: raise AssertionError('load more than once') COUNT += 1 # This creates a circular dependency! define_rule('rule_y').depend('//pkg1/pkg2:rule_x')
from foreman import define_rule COUNT = 0 if COUNT > 0: raise AssertionError('load more than once') COUNT += 1 (define_rule('pkg1') .depend('//pkg3:rule_y') .reverse_depend('pkg2') .reverse_depend('//pkg4:pkg4') ) define_rule('pkg2') define_rule('pkg3').depend('pkg2')
from foreman import REMOVE, define_parameter, define_rule COUNT = 0 if COUNT > 0: raise AssertionError('load more than once') COUNT += 1 define_parameter('x').with_default(0) define_parameter('executed_rules').with_default([]) (define_rule('rule-A').depend('rule-B', parameters={ 'x': 1 }).depend('rule-C', parameters={ 'x': 2 }).with_build(lambda ps: ps['executed_rules'].append(('rule-A', ps)))) (define_rule('rule-B').depend('rule-D').depend('rule-E').with_build( lambda ps: ps['executed_rules'].append(('rule-B', ps)))) (define_rule('rule-C').depend('rule-D').depend('rule-F').depend( 'rule-G', parameters=REMOVE).with_build( lambda ps: ps['executed_rules'].append(('rule-C', ps)))) (define_rule('rule-D').with_build(lambda ps: ps['executed_rules'].append( ('rule-D', ps)))) (define_rule('rule-E').with_build(lambda ps: ps['executed_rules'].append( ('rule-E', ps)))) (define_rule('rule-F').with_build(lambda ps: ps['executed_rules'].append( ('rule-F', ps)))) (define_rule('rule-G').with_build(lambda ps: ps['executed_rules'].append(