diff --git a/buck-tools/build.defs b/buck-tools/build.defs
deleted file mode 100644
index 3ea506c..0000000
--- a/buck-tools/build.defs
+++ /dev/null
@@ -1,80 +0,0 @@
-# Copyright (C) 2013 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# These definitions support building a runnable version of Gerrit.
-
-DOCS_HTML = '//Documentation:html'
-DOCS_LIB = '//Documentation:index_lib'
-LIBS = [
-  '//gerrit-war:log4j-config',
-  '//gerrit-war:init',
-  '//lib:postgresql',
-  '//lib/log:impl_log4j',
-]
-PGMLIBS = ['//gerrit-pgm:pgm']
-
-def scan_plugins():
-  import os
-  deps = []
-  for n in os.listdir('plugins'):
-    if os.path.exists(os.path.join('plugins', n, 'BUCK')):
-      deps.append('//plugins/%s:%s__plugin' % (n, n))
-  return deps
-
-def war(
-    name,
-    libs = [],
-    pgmlibs = [],
-    context = [],
-    visibility = [],
-    docs = False
-    ):
-  cmd = ['$(exe //tools:pack_war)', '-o', '$OUT', '--tmp', '$TMP']
-  for l in libs:
-    cmd.extend(['--lib', '$(classpath %s)' % l])
-  for l in pgmlibs:
-    cmd.extend(['--pgmlib', '$(classpath %s)' % l])
-
-  if docs:
-    cmd.append('$(location %s)' % DOCS_HTML)
-    cmd.extend(['--lib', '$(classpath %s)' % DOCS_LIB])
-  if context:
-    for t in context:
-      cmd.append('$(location %s)' % t)
-
-  genrule(
-    name = name,
-    cmd = ' '.join(cmd),
-    out = name + '.war',
-    visibility = visibility,
-  )
-
-def gerrit_war(name, ui = 'ui_optdbg', context = [], docs = False, visibility = []):
-  ui_deps = []
-  if ui:
-    if ui == 'polygerrit' or ui == 'ui_optdbg' or ui == 'ui_optdbg_r':
-      ui_deps.append('//polygerrit-ui/app:polygerrit_ui')
-    if ui != 'polygerrit':
-      ui_deps.append('//gerrit-gwtui:%s' % ui)
-  war(
-    name = name,
-    libs = LIBS + ['//gerrit-war:version'],
-    pgmlibs = PGMLIBS,
-    context = ui_deps + context + [
-      '//gerrit-main:main_bin',
-      '//gerrit-war:webapp_assets',
-    ],
-    docs = docs,
-    visibility = visibility,
-  )
diff --git a/buck-tools/default.defs b/buck-tools/default.defs
index 125fee4..9c72161 100644
--- a/buck-tools/default.defs
+++ b/buck-tools/default.defs
@@ -1,3 +1,4 @@
+include_defs('//onos.defs')
 include_defs('//bucklets/maven_jar.bucklet')
 include_defs('//bucklets/onos.bucklet')
 include_defs('//bucklets/onos_app.bucklet')
@@ -8,4 +9,6 @@
     '//lib:hamcrest-all',
     '//lib:slf4j-api',
     '//lib:guava-testlib',
-]
\ No newline at end of file
+]
+
+
