From d514eeeaec77c8ba3a4993ad7705e7a857c52dec Mon Sep 17 00:00:00 2001 From: Joshua Lock Date: Thu, 30 Oct 2008 17:42:01 +0000 Subject: base.bbclass: Additional git proxy support. Add to the git proxy support so that the proxy configuration can be propogated to the git config (etc/gitconfig in staging). Add support for ignored hosts in the git proxy. Examples in site.conf.sample --- build/conf/site.conf.sample | 5 +++++ meta/classes/base.bbclass | 25 +++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/build/conf/site.conf.sample b/build/conf/site.conf.sample index f14b3d985a..0ed70c6d79 100644 --- a/build/conf/site.conf.sample +++ b/build/conf/site.conf.sample @@ -19,6 +19,11 @@ #GIT_PROXY_PORT = "81" #export GIT_PROXY_COMMAND = "${OEROOT}/scripts/poky-git-proxy-command" +# GIT_PROXY_IGNORE_* lines define hosts which do not require a proxy to access +#GIT_CORE_CONFIG = "Yes" +#GIT_PROXY_IGNORE_1 = "host.server.com" +#GIT_PROXY_IGNORE_2 = "another.server.com" + # If SOCKS is available run the following command to comple a simple transport # gcc scripts/poky-git-proxy-socks.c -o poky-git-proxy-socks # and then share that binary somewhere in PATH, then use the following settings diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass index c6e19c1501..623bd79666 100644 --- a/meta/classes/base.bbclass +++ b/meta/classes/base.bbclass @@ -725,6 +725,28 @@ def base_get_metadata_svn_revision(d): pass return revision +def generate_git_config(e): + from bb import data + + if data.getVar('GIT_CORE_CONFIG', e.data, True): + gitconfig_path = "${STAGING_DIR_HOST}/usr/etc/gitconfig" + proxy_command = "gitproxy = %s" % data.getVar('GIT_PROXY_COMMAND', e.data, True) + + bb.mkdirhier("${STAGING_DIR_HOST}/usr/etc/") + if (os.path.exists(gitconfig_path)): + os.remove(gitconfig_path) + + f = open(gitconfig_path, 'w') + f.write("[core]\n") + f.write(proxy_command) + + ignore_count = 1 + ignore_host = data.getVar('GIT_PROXY_IGNORE_1', e.data, True) + while (ignore_host): + f.write(ignore_host) + ignore_count += 1 + ignore_host = data.getVar('GIT_PROXY_IGNORE_%s' % ignore_count) + METADATA_REVISION ?= "${@base_get_metadata_monotone_revision(d)}" addhandler base_eventhandler @@ -787,6 +809,9 @@ python base_eventhandler() { os.system('rm -f '+ dir) os.system('touch ' + e.stampPrefix[fn] + '.needclean') + if name == "ConfigParsed": + generate_git_config(e) + if not data in e.__dict__: return NotHandled -- cgit 1.2.3-korg