<pre style='margin:0'>
Umesh Singla (umeshksingla) pushed a commit to branch gsoc17-migrate
in repository macports-base.
</pre>
<p><a href="https://github.com/macports/macports-base/commit/5f3d598d80b0c3d1d6cb7eacf237cbdc38beeda1">https://github.com/macports/macports-base/commit/5f3d598d80b0c3d1d6cb7eacf237cbdc38beeda1</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 5f3d598d80b0c3d1d6cb7eacf237cbdc38beeda1
</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 7fca122..c353019 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;'>@@ -550,6 +550,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;'>@@ -634,24 +682,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>