build.defs 2.22 KB
# 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,
  )