bin/deps-and-gyp: gclient-free solution
Review URL: https://codereview.chromium.org/1426103004
diff --git a/bin/deps-and-gyp b/bin/deps-and-gyp
new file mode 100644
index 0000000..f39fc69
--- /dev/null
+++ b/bin/deps-and-gyp
@@ -0,0 +1,61 @@
+#!/bin/sh
+
+# Copyright 2015 Google Inc.
+#
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# This script will update Skia's dependenciess as necessary and run
+# gyp if needed.
+
+# Depends on: Posix-compliant shell, Python, and Git.
+#
+# Example usage:
+#
+# git clone https://skia.googlesource.com/skia
+# cd skia
+# bin/deps-and-gyp
+# ninja -C out/Debug && out/Debug/dm
+#
+# Once changes are made to DEPS or gyp/ or the source, call:
+#
+# bin/deps-and-gyp
+
+if [ "$SKIA_OUT" ]; then
+ mkdir -p "$SKIA_OUT" || exit
+ # get non-relative path of $SKIA_OUT before changing directory.
+ SKIA_OUT="$(cd "$SKIA_OUT"; pwd)"
+fi
+
+cd "$(dirname "$0")/.."
+
+if ! [ -f DEPS ]; then
+ echo DEPS file missing >&2
+ exit 1
+fi
+
+if [ "$(git hash-object DEPS)" != "$(git config sync-deps.last)" ] ; then
+ GIT_SYNC_DEPS_QUIET=1 python tools/git-sync-deps || exit
+ git config sync-deps.last "$(git hash-object DEPS)"
+fi
+
+catifexists() { if [ -f "$1" ]; then cat "$1"; fi; }
+
+gyp_hasher() {
+ {
+ echo "$CC"
+ echo "$CXX"
+ echo "$GYP_GENERATORS"
+ echo "$GYP_DEFINES"
+ find gyp -type f -print -exec git hash-object {} \;
+ find bench gm tests -name '*.c*' | LANG= sort
+ } | git hash-object --stdin
+}
+
+: ${SKIA_OUT:=out}
+GYP_HASH=$(gyp_hasher)
+HASH_PATH="${SKIA_OUT}/gyp_hash"
+if [ "$GYP_HASH" != "$(catifexists "$HASH_PATH")" ]; then
+ python ./gyp_skia || exit
+ echo "$GYP_HASH" > "$HASH_PATH"
+fi