195640e3a20adea634b4df4ccf8c93f411184c438joi@chromium.org#!/usr/bin/env python
295640e3a20adea634b4df4ccf8c93f411184c438joi@chromium.org# Copyright (c) 2012 The Chromium Authors. All rights reserved.
301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org# Use of this source code is governed by a BSD-style license that can be
401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org# found in the LICENSE file.
501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgdef GetConfigurationForBuild(defines):
801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''Returns a configuration dictionary for the given build that contains
901b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  build-specific settings and information.
1001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
1101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  Args:
1201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    defines: Definitions coming from the build system.
1301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
1401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  Raises:
1501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    Exception: If 'defines' contains an unknown build-type.
1601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  '''
1701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  # The prefix of key names in config determines which writer will use their
1801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  # corresponding values:
1901b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  #   win: Both ADM and ADMX.
2001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  #   mac: Only plist.
2101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  #   admx: Only ADMX.
2201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  #   none/other: Used by all the writers.
2301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  if '_chromium' in defines:
2401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    config = {
2501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org      'build': 'chromium',
2601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org      'app_name': 'Chromium',
2701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org      'frame_name': 'Chromium Frame',
2801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org      'os_name': 'Chromium OS',
290bb959423818266efea82162f48ad83e5eb2e8b2joaodasilva@chromium.org      'win_reg_mandatory_key_name': 'Software\\Policies\\Chromium',
300bb959423818266efea82162f48ad83e5eb2e8b2joaodasilva@chromium.org      'win_reg_recommended_key_name':
310bb959423818266efea82162f48ad83e5eb2e8b2joaodasilva@chromium.org          'Software\\Policies\\Chromium\\Recommended',
320bb959423818266efea82162f48ad83e5eb2e8b2joaodasilva@chromium.org      'win_mandatory_category_path': ['chromium'],
330bb959423818266efea82162f48ad83e5eb2e8b2joaodasilva@chromium.org      'win_recommended_category_path': ['chromium_recommended'],
3401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org      'admx_namespace': 'Chromium.Policies.Chromium',
3501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org      'admx_prefix': 'chromium',
36740badd5e3e44434a9a47b5d16749daac1e8ea80joaodasilva@chromium.org      'linux_policy_path': '/etc/chromium/policies/',
3701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    }
3801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  elif '_google_chrome' in defines:
3901b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    config = {
4001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org      'build': 'chrome',
4101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org      'app_name': 'Google Chrome',
4201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org      'frame_name': 'Google Chrome Frame',
4301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org      'os_name': 'Google Chrome OS',
440bb959423818266efea82162f48ad83e5eb2e8b2joaodasilva@chromium.org      'win_reg_mandatory_key_name': 'Software\\Policies\\Google\\Chrome',
450bb959423818266efea82162f48ad83e5eb2e8b2joaodasilva@chromium.org      'win_reg_recommended_key_name':
460bb959423818266efea82162f48ad83e5eb2e8b2joaodasilva@chromium.org          'Software\\Policies\\Google\\Chrome\\Recommended',
470bb959423818266efea82162f48ad83e5eb2e8b2joaodasilva@chromium.org      'win_mandatory_category_path': ['google', 'googlechrome'],
480bb959423818266efea82162f48ad83e5eb2e8b2joaodasilva@chromium.org      'win_recommended_category_path': ['google', 'googlechrome_recommended'],
4901b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org      'admx_namespace': 'Google.Policies.Chrome',
5001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org      'admx_prefix': 'chrome',
51740badd5e3e44434a9a47b5d16749daac1e8ea80joaodasilva@chromium.org      'linux_policy_path': '/etc/opt/chrome/policies/',
5201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    }
5301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  else:
5401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    raise Exception('Unknown build')
5501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  config['win_group_policy_class'] = 'Both'
5601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  config['win_supported_os'] = 'SUPPORTED_WINXPSP2'
5701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  if 'mac_bundle_id' in defines:
5801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    config['mac_bundle_id'] = defines['mac_bundle_id']
5901b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  return config
60