Can somebody review the following patch which adds support to svn fetches to use the proxy settings in macports.conf. This is my first serious Tcl coding, so there may be things done in a non-optimum or standard manner. This patch works with the netpbm port.

My intention is that portfetch::svn_proxy_args can also be used in ports, e.g. clang-3.1, when a port needs to do an svn checkout with custom code.

If the patch looks good, I'll commit it.

Thanks,
Blair

--- portfetch.tcl.FCS   2012-08-08 15:37:53.000000000 -0700
+++ portfetch.tcl       2012-09-23 00:18:49.000000000 -0700
@@ -330,32 +330,58 @@
     if {[catch {command_exec cvs "" "2>&1"} result]} {
         return -code error [msgcat::mc "CVS check out failed"]
     }

     if {[info exists patchfiles]} {
         return [portfetch::fetchfiles]
     }
     return 0
 }

+# Given a URL that should be exported or checked out using the svn
+# command line client, return any command line arguments that should
+# be passed to svn for it to use as an HTTP or HTTPS proxy.
+proc portfetch::svn_proxy_args {url} {
+    global env
+
+    if {   [string compare -length 7 {http://} ${url}] == 0
+        && [info exists env(http_proxy)]} {
+        set proxy_parts [split $env(http_proxy) :]
+        set proxy_host [lindex $proxy_parts 0]
+        set proxy_port [lindex $proxy_parts 1]
+ return "--config-option servers:global:http-proxy-host=${proxy_host} --config-option servers:global:http-proxy-port=${proxy_port}"
+    } elseif {   [string compare -length 8 {https://} ${url}] == 0
+              && [info exists env(HTTPS_PROXY)]} {
+        set proxy_parts [split $env(HTTPS_PROXY) :]
+        set proxy_host [lindex $proxy_parts 0]
+        set proxy_port [lindex $proxy_parts 1]
+ return "--config-option servers:global:http-proxy-host=${proxy_host} --config-option servers:global:http-proxy-port=${proxy_port}"
+    } else {
+        return ""
+    }
+}
+
 # Perform an svn fetch
 proc portfetch::svnfetch {args} {
     global svn.args svn.method svn.revision svn.url patchfiles

     if {[regexp {\s} ${svn.url}]} {
return -code error [msgcat::mc "Subversion URL cannot contain whitespace"]
     }

     if {[string length ${svn.revision}]} {
         append svn.url "@${svn.revision}"
     }
-    set svn.args "${svn.method} ${svn.args} ${svn.url}"
+
+    set proxy_args [svn_proxy_args ${svn.url}]
+
+    set svn.args "${svn.method} ${svn.args} ${proxy_args} ${svn.url}"

     if {[catch {command_exec svn "" "2>&1"} result]} {
         return -code error [msgcat::mc "Subversion check out failed"]
     }

     if {[info exists patchfiles]} {
         return [portfetch::fetchfiles]
     }

     return 0
_______________________________________________
macports-dev mailing list
[email protected]
http://lists.macosforge.org/mailman/listinfo/macports-dev

Reply via email to