Example #1
0
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
Example #2
0
"""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')
Example #3
0
)


@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')
Example #4
0
"""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')
Example #5
0
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')
Example #6
0
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'))
Example #7
0
from foreman import define_rule


COUNT = 0
if COUNT > 0:
    raise AssertionError('load more than once')
COUNT += 1


define_rule('pkg4')
Example #8
0
(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')
 )
Example #9
0
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')
Example #10
0
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')
Example #11
0
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(