Skip to content

Commit d03e52d

Browse files
committed
Add clobber mechanism
1 parent a5fe464 commit d03e52d

File tree

3 files changed

+42
-4
lines changed

3 files changed

+42
-4
lines changed

CLOBBER

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# To trigger a clobber replace ALL of the textual description below,
2+
# giving a pull request number and a one line description of why a clobber is
3+
# required.
4+
#
5+
# Modifying this file will now automatically clobber the buildbot machines \o/
6+
#
7+
8+
Pull 16722 - Added CLOBBER file

python/servo/build_commands.py

+7-4
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
Command,
2525
)
2626

27-
from servo.command_base import CommandBase, cd, call, BIN_SUFFIX
27+
from servo.command_base import CommandBase, cd, call, check_call, BIN_SUFFIX
2828
from servo.util import host_triple
2929

3030

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

230230
self.ensure_bootstrapped(target=target)
231+
self.ensure_clobbered()
231232

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

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

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

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

461464
opts = []
@@ -464,5 +467,5 @@ def clean(self, manifest_path, params, verbose=False):
464467
if verbose:
465468
opts += ["-v"]
466469
opts += params
467-
return call(["cargo", "clean"] + opts,
468-
env=self.build_env(), cwd=self.servo_crate(), verbose=verbose)
470+
return check_call(["cargo", "clean"] + opts,
471+
env=self.build_env(), cwd=self.servo_crate(), verbose=verbose)

python/servo/command_base.py

+27
Original file line numberDiff line numberDiff line change
@@ -574,3 +574,30 @@ def ensure_bootstrapped(self, target=None):
574574
Registrar.dispatch("bootstrap-cargo", context=self.context)
575575

576576
self.context.bootstrapped = True
577+
578+
def ensure_clobbered(self, target_dir=None):
579+
if target_dir is None:
580+
target_dir = self.get_target_dir()
581+
auto = True if os.environ.get('AUTOCLOBBER', False) else False
582+
src_clobber = os.path.join(self.context.topdir, 'CLOBBER')
583+
target_clobber = os.path.join(target_dir, 'CLOBBER')
584+
585+
if not os.path.exists(target_dir):
586+
os.makedirs(target_dir)
587+
588+
if not os.path.exists(target_clobber):
589+
# Simply touch the file.
590+
with open(target_clobber, 'a'):
591+
pass
592+
593+
if auto:
594+
if os.path.getmtime(src_clobber) > os.path.getmtime(target_clobber):
595+
print('Automatically clobbering target directory: {}'.format(target_dir))
596+
597+
try:
598+
Registrar.dispatch("clean", context=self.context, verbose=True)
599+
print('Successfully completed auto clobber.')
600+
except subprocess.CalledProcessError as error:
601+
sys.exit(error)
602+
else:
603+
print("Clobber not needed.")

0 commit comments

Comments
 (0)