Skip to content

Commit

Permalink
Auto merge of #14602 - upsuper:auto-copy-bindgen, r=Wafflespeanut
Browse files Browse the repository at this point in the history
Auto-update in-tree bindings

Automatically update the in-tree bindings after a successful geckolib build with gecko dist specified.

cc @heycam @emilio

This is very similiar to the patch that @emilio provided yesterday, so I'd ask someone else to review.

r? @bholley

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/14602)
<!-- Reviewable:end -->
  • Loading branch information
bors-servo committed Dec 15, 2016
2 parents 04d9ab5 + af487f5 commit 4d165db
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 7 deletions.
14 changes: 12 additions & 2 deletions python/servo/build_commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
Command,
)

from servo.command_base import CommandBase, cd, call, BIN_SUFFIX, host_triple
from servo.command_base import CommandBase, cd, call, BIN_SUFFIX, host_triple, find_dep_path_newest


def format_duration(seconds):
Expand Down Expand Up @@ -401,7 +401,8 @@ def build_geckolib(self, with_gecko=None, jobs=None, verbose=False, release=Fals
self.ensure_bootstrapped()

env = self.build_env(is_build=True)
env["CARGO_TARGET_DIR"] = path.join(self.context.topdir, "target", "geckolib").encode("UTF-8")
geckolib_build_path = path.join(self.context.topdir, "target", "geckolib").encode("UTF-8")
env["CARGO_TARGET_DIR"] = geckolib_build_path

ret = None
opts = []
Expand All @@ -425,6 +426,15 @@ def build_geckolib(self, with_gecko=None, jobs=None, verbose=False, release=Fals

print("GeckoLib build completed in %s" % format_duration(elapsed))

if with_gecko is not None and ret == 0:
print("Copying binding files to style/gecko_bindings...")
build_path = path.join(geckolib_build_path, "release" if release else "debug", "")
target_style_path = find_dep_path_newest("style", build_path)
out_gecko_path = path.join(target_style_path, "out", "gecko")
bindings_path = path.join(self.context.topdir, "components", "style", "gecko_bindings")
for f in ["bindings.rs", "structs_debug.rs", "structs_release.rs"]:
shutil.copy(path.join(out_gecko_path, f), bindings_path)

return ret

@Command('clean',
Expand Down
15 changes: 10 additions & 5 deletions python/servo/command_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,17 @@ def setlocale(name):

def find_dep_path_newest(package, bin_path):
deps_path = path.join(path.split(bin_path)[0], "build")
candidates = []
with cd(deps_path):
candidates = glob(package + '-*')
candidates = (path.join(deps_path, c) for c in candidates)
candidate_times = sorted(((path.getmtime(c), c) for c in candidates), reverse=True)
if len(candidate_times) > 0:
return candidate_times[0][1]
for c in glob(package + '-*'):
candidate_path = path.join(deps_path, c)
candidate_output = path.join(candidate_path, "output")
if path.exists(candidate_output):
candidates.append((path.getmtime(candidate_output), candidate_path))
candidates.sort(reverse=True)
if candidates:
_, candidate_path = candidates[0]
return candidate_path
return None


Expand Down

0 comments on commit 4d165db

Please sign in to comment.