#  
#  To use this DEPS file to re-create a Chromium release you
#  need the tools from http://dev.chromium.org installed.
#  
#  This DEPS file corresponds to Chromium 4.0.258.0
#  
#  
#  
deps_os = {
   'win': {
      'src/third_party/xulrunner-sdk':
         '/trunk/deps/third_party/xulrunner-sdk@17887',
      'src/chrome_frame/tools/test/reference_build/chrome':
         '/trunk/deps/reference_builds/chrome_frame@27181',
      'src/third_party/cygwin':
         '/trunk/deps/third_party/cygwin@11984',
      'src/third_party/python_24':
         '/trunk/deps/third_party/python_24@22967',
      'src/third_party/ffmpeg/binaries/chromium/win/ia32':
         '/trunk/deps/third_party/ffmpeg/binaries/win@30374',
      'src/third_party/pefile':
         'http://pefile.googlecode.com/svn/trunk@63',
   },
   'mac': {
      'src/third_party/GTM':
         'http://google-toolbox-for-mac.googlecode.com/svn/trunk@259',
      'src/third_party/pdfsqueeze':
         'http://pdfsqueeze.googlecode.com/svn/trunk@2',
      'src/third_party/WebKit/WebKit/mac':
         'http://svn.webkit.org/repository/webkit/trunk/WebKit/mac@51395',
      'src/third_party/ffmpeg/source/patched-ffmpeg-mt':
         '/trunk/deps/third_party/ffmpeg/patched-ffmpeg-mt@30374',
      'src/third_party/yasm/source/patched-yasm':
         '/trunk/deps/third_party/yasm/patched-yasm@29937',
      'src/third_party/WebKit/WebKitLibraries':
         'http://svn.webkit.org/repository/webkit/trunk/WebKitLibraries@51395',
      'src/third_party/ffmpeg/binaries/chromium/mac/ia32_dbg':
         '/trunk/deps/third_party/ffmpeg/binaries/mac_dbg@30374',
      'src/third_party/ffmpeg/binaries/chromium/mac/ia32':
         '/trunk/deps/third_party/ffmpeg/binaries/mac@30374',
   },
   'chromeos': {
      'src/third_party/cros':
         'http://src.chromium.org/git/cros.git@c4c0d4bc',
      'src/third_party/chromeos_login_manager':
         'http://src.chromium.org/git/login_manager.git@4659678c',
      'src/third_party/chromeos_login_manager/include':
         'http://src.chromium.org/git/pam-dev.git@3971bd3f',
   },
   'unix': {
      'src/chrome/installer/linux':
         '/installer/linux@3929',
      'src/third_party/xdg-utils':
         '/trunk/deps/third_party/xdg-utils@29103',
      'src/third_party/ffmpeg/binaries/chromium/linux/x64_dbg':
         '/trunk/deps/third_party/ffmpeg/binaries/linux_64_dbg@30374',
      'src/third_party/yasm/source/patched-yasm':
         '/trunk/deps/third_party/yasm/patched-yasm@29937',
      'src/third_party/ffmpeg/binaries/chromium/linux/ia32':
         '/trunk/deps/third_party/ffmpeg/binaries/linux@30374',
      'src/third_party/ffmpeg/source/patched-ffmpeg-mt':
         '/trunk/deps/third_party/ffmpeg/patched-ffmpeg-mt@30374',
      'src/third_party/ffmpeg/binaries/chromium/linux/ia32_dbg':
         '/trunk/deps/third_party/ffmpeg/binaries/linux_dbg@30374',
      'src/third_party/ffmpeg/binaries/chromium/linux/x64':
         '/trunk/deps/third_party/ffmpeg/binaries/linux_64@30374',
   },
}

deps = {
   'src/chrome/test/data/layout_tests/LayoutTests/fast/events':
      'http://svn.webkit.org/repository/webkit/trunk/LayoutTests/fast/events@51395',
   'src/third_party/WebKit/WebKit/chromium':
      'http://svn.webkit.org/repository/webkit/trunk/WebKit/chromium@51395',
   'src/third_party/pywebsocket':
      'http://pywebsocket.googlecode.com/svn/trunk/src@119',
   'src/third_party/skia/include':
      'http://skia.googlecode.com/svn/trunk/include@435',
   'src/third_party/ots':
      'http://ots.googlecode.com/svn/trunk@19',
   'src/third_party/WebKit/WebCore':
      'http://svn.webkit.org/repository/webkit/trunk/WebCore@51395',
   'src/breakpad/src':
      'http://google-breakpad.googlecode.com/svn/trunk/src@429',
   'src/chrome/test/data/layout_tests/LayoutTests/fast/workers':
      'http://svn.webkit.org/repository/webkit/trunk/LayoutTests/fast/workers@51395',
   'src/third_party/tcmalloc/tcmalloc':
      'http://google-perftools.googlecode.com/svn/trunk@77',
   'src/googleurl':
      'http://google-url.googlecode.com/svn/trunk@121',
   'src/chrome/test/data/layout_tests/LayoutTests/http/tests/xmlhttprequest':
      'http://svn.webkit.org/repository/webkit/trunk/LayoutTests/http/tests/xmlhttprequest@51395',
   'src/third_party/protobuf2/src':
      'http://protobuf.googlecode.com/svn/trunk@219',
   'src/chrome/test/data/layout_tests/LayoutTests/http/tests/workers':
      'http://svn.webkit.org/repository/webkit/trunk/LayoutTests/http/tests/workers@51395',
   'src/tools/gyp':
      'http://gyp.googlecode.com/svn/trunk@762',
   'src/sdch/open-vcdiff':
      'http://open-vcdiff.googlecode.com/svn/trunk@28',
   'src/third_party/WebKit/JavaScriptCore':
      'http://svn.webkit.org/repository/webkit/trunk/JavaScriptCore@51395',
   'src/chrome/test/data/layout_tests/LayoutTests/fast/js/resources':
      'http://svn.webkit.org/repository/webkit/trunk/LayoutTests/fast/js/resources@51395',
   'src/native_client':
      'http://nativeclient.googlecode.com/svn/trunk/src/native_client@1010',
   'src/tools/page_cycler/acid3':
      '/trunk/deps/page_cycler/acid3@19546',
   'src/build/util/support':
      '/trunk/deps/support@33219',
   'src/chrome/test/data/layout_tests/LayoutTests/storage/domstorage':
      'http://svn.webkit.org/repository/webkit/trunk/LayoutTests/storage/domstorage@51395',
   'src/chrome/tools/test/reference_build':
      '/trunk/deps/reference_builds@33150',
   'src/third_party/skia/src':
      'http://skia.googlecode.com/svn/trunk/src@435',
   'src/v8':
      'http://v8.googlecode.com/svn/trunk@3351',
   'src/chrome/test/data/layout_tests/LayoutTests/http/tests/resources':
      'http://svn.webkit.org/repository/webkit/trunk/LayoutTests/http/tests/resources@51395',
   'src/third_party/WebKit/LayoutTests':
      'http://svn.webkit.org/repository/webkit/trunk/LayoutTests@51395',
   'src':
      '/trunk/src@33208',
   'src/third_party/icu':
      '/trunk/deps/third_party/icu42@32651',
   'src/chrome/app/theme/google_chrome':
      '/theme@3849',
   'src/third_party/WebKit':
      '/trunk/deps/third_party/WebKit@27313',
   'src/third_party/hunspell':
      '/trunk/deps/third_party/hunspell128@30191',
   'src/testing/gtest':
      'http://googletest.googlecode.com/svn/trunk@336',
}

skip_child_includes =  ['breakpad', 'chrome_frame', 'gears', 'native_client', 'o3d', 'sdch', 'skia', 'testing', 'third_party', 'v8'] 

hooks =  [{'action': ['python', 'src/build/gyp_chromium'], 'pattern': '.'}, {'action': ['python', 'src/build/win/clobber_generated_headers.py', '$matching_files'], 'pattern': '\\.grd$'}, {'action': ['python', 'src/build/mac/clobber_generated_headers.py'], 'pattern': '.'}] 

include_rules =  ['+base', '+build', '+ipc', '+unicode', '+testing', '+webkit/port/platform/graphics/skia/public']