Skip to content
Permalink
Browse files

Add clobber mechanism

  • Loading branch information
UK992 committed May 8, 2017
1 parent a5fe464 commit d03e52d2405a1b9149e9fc6c86f056525cd7c18d
Showing with 42 additions and 4 deletions.
  1. +8 −0 CLOBBER
  2. +7 −4 python/servo/build_commands.py
  3. +27 −0 python/servo/command_base.py
@@ -0,0 +1,8 @@
# To trigger a clobber replace ALL of the textual description below,
# giving a pull request number and a one line description of why a clobber is
# required.
#
# Modifying this file will now automatically clobber the buildbot machines \o/
#

Pull 16722 - Added CLOBBER file
@@ -24,7 +24,7 @@
Command,
)

from servo.command_base import CommandBase, cd, call, BIN_SUFFIX
from servo.command_base import CommandBase, cd, call, check_call, BIN_SUFFIX
from servo.util import host_triple


@@ -228,6 +228,7 @@ def build(self, target=None, release=False, dev=False, jobs=None,
opts += ["--target", target]

self.ensure_bootstrapped(target=target)
self.ensure_clobbered()

if debug_mozjs:
features += ["debugmozjs"]
@@ -360,6 +361,7 @@ def build(self, target=None, release=False, dev=False, jobs=None,
def build_cef(self, jobs=None, verbose=False, release=False,
with_debug_assertions=False):
self.ensure_bootstrapped()
self.ensure_clobbered()

ret = None
opts = []
@@ -411,6 +413,7 @@ def build_cef(self, jobs=None, verbose=False, release=False,
def build_geckolib(self, with_gecko=None, jobs=None, verbose=False, release=False):
self.set_use_stable_rust()
self.ensure_bootstrapped()
self.ensure_clobbered()

env = self.build_env(is_build=True, geckolib=True)

@@ -455,7 +458,7 @@ def build_geckolib(self, with_gecko=None, jobs=None, verbose=False, release=Fals
help='Print verbose output')
@CommandArgument('params', nargs='...',
help="Command-line arguments to be passed through to Cargo")
def clean(self, manifest_path, params, verbose=False):
def clean(self, manifest_path=None, params=[], verbose=False):
self.ensure_bootstrapped()

opts = []
@@ -464,5 +467,5 @@ def clean(self, manifest_path, params, verbose=False):
if verbose:
opts += ["-v"]
opts += params
return call(["cargo", "clean"] + opts,
env=self.build_env(), cwd=self.servo_crate(), verbose=verbose)
return check_call(["cargo", "clean"] + opts,
env=self.build_env(), cwd=self.servo_crate(), verbose=verbose)
@@ -574,3 +574,30 @@ def ensure_bootstrapped(self, target=None):
Registrar.dispatch("bootstrap-cargo", context=self.context)

self.context.bootstrapped = True

def ensure_clobbered(self, target_dir=None):
if target_dir is None:
target_dir = self.get_target_dir()
auto = True if os.environ.get('AUTOCLOBBER', False) else False
src_clobber = os.path.join(self.context.topdir, 'CLOBBER')
target_clobber = os.path.join(target_dir, 'CLOBBER')

if not os.path.exists(target_dir):
os.makedirs(target_dir)

if not os.path.exists(target_clobber):
# Simply touch the file.
with open(target_clobber, 'a'):
pass

if auto:
if os.path.getmtime(src_clobber) > os.path.getmtime(target_clobber):
print('Automatically clobbering target directory: {}'.format(target_dir))

try:
Registrar.dispatch("clean", context=self.context, verbose=True)
print('Successfully completed auto clobber.')
except subprocess.CalledProcessError as error:
sys.exit(error)
else:
print("Clobber not needed.")

0 comments on commit d03e52d

Please sign in to comment.
You can’t perform that action at this time.