<pre style='margin:0'>
Clemens Lang (neverpanic) pushed a commit to branch gsoc17-migrate
in repository macports-base.

</pre>
<p><a href="https://github.com/macports/macports-base/commit/9811edc8b815f9f983892dce85e890a0a346db73">https://github.com/macports/macports-base/commit/9811edc8b815f9f983892dce85e890a0a346db73</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 9811edc8b815f9f983892dce85e890a0a346db73
</span>Author: Clemens Lang <cal@macports.org>
AuthorDate: Sun Jan 7 15:20:35 2018 +0100

<span style='display:block; white-space:pre;color:#404040;'>    macports: Refactor obtaining os_* variables
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    This helps clean up mportinit a bit and possibly makes this
</span><span style='display:block; white-space:pre;color:#404040;'>    functionality re-usable.
</span>---
 src/macports1.0/macports.tcl | 74 +++++++++++++++++++++++++++++++++-----------
 1 file changed, 56 insertions(+), 18 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/macports1.0/macports.tcl b/src/macports1.0/macports.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index e36394a..d1dc774 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/macports1.0/macports.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/macports1.0/macports.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -548,6 +548,54 @@ proc macports::_is_valid_developer_dir {dir} {
</span>     return 1
 }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+##
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Obtain variables describing the current OS version and return them in a list
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# suitable for lassign(n).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# A typical use-case for this function is lassign(n)ing its result as follows:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#   lassign [macports::_get_os_version] \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#       os_arch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#       os_version \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#       os_major \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#       os_minor \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#       os_platform \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#       os_endian \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#       macosx_version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# @return A list containing the OS architecture, complete OS version, OS major
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#         and minor versions, the OS platform, the OS endianess, and the macOS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#         version (empty on non-macOS systems)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc macports::_get_os_version {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # set up platform info variables
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set os_arch $tcl_platform(machine)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {$os_arch eq "Power Macintosh"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set os_arch "powerpc"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {$os_arch in {"i586" "i686" "x86_64"}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set os_arch "i386"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set os_version $tcl_platform(osVersion)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set os_major [lindex [split $os_version .] 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set os_minor [lindex [split $os_version .] 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set os_platform [string tolower $tcl_platform(os)]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Remove trailing "Endian"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set os_endian [string range $tcl_platform(byteOrder) 0 end-6]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set macosx_version {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {$os_platform eq "darwin" && [file executable /usr/bin/sw_vers]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        try -pass_signal {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set macosx_version [join [lrange [split [exec /usr/bin/sw_vers -productVersion] .] 0 1] .]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        } catch {* ec result} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ui_debug "sw_vers exists but running it failed: $result"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return [list $os_arch $os_version $os_major $os_minor $os_platform $os_endian $macosx_version]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> 
 proc mportinit {{up_ui_options {}} {up_options {}} {up_variations {}}} {
     if {$up_ui_options eq {}} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -632,24 +680,14 @@ proc mportinit {{up_ui_options {}} {up_options {}} {up_variations {}}} {
</span>     set_max_open_files
 
     # set up platform info variables
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    set os_arch $tcl_platform(machine)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {$os_arch eq "Power Macintosh"} {set os_arch "powerpc"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {$os_arch eq "i586" || $os_arch eq "i686" || $os_arch eq "x86_64"} {set os_arch "i386"}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set os_version $tcl_platform(osVersion)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set os_major [lindex [split $os_version .] 0]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set os_minor [lindex [split $os_version .] 1]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set os_platform [string tolower $tcl_platform(os)]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # Remove trailing "Endian"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set os_endian [string range $tcl_platform(byteOrder) 0 end-6]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set macosx_version {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {$os_platform eq "darwin" && [file executable /usr/bin/sw_vers]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        try -pass_signal {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set macosx_version [exec /usr/bin/sw_vers -productVersion | cut -f1,2 -d.]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        } catch {* ec result} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            ui_debug "sw_vers exists but running it failed: $result"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    lassign [macports::_get_os_version] \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        os_arch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        os_version \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        os_major \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        os_minor \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        os_platform \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        os_endian \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        macosx_version
</span> 
     # Check that the current platform is the one we were configured for, otherwise need to do migration
     if {($os_platform ne $macports::autoconf::os_platform) || ($os_major != $macports::autoconf::os_major)} {
</pre><pre style='margin:0'>

</pre>