From 535d9351df50c446d68d2a5b243b4cbbfb5aa666 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Mon, 25 Aug 2025 08:51:05 +0000 Subject: Fix handling of i386-x86_64 in platform extension. Add testcases for this (and other) situation --- library/platform/platform.tcl | 10 ++++++---- tests/platform.test | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/library/platform/platform.tcl b/library/platform/platform.tcl index 3bf1ff6..e93e2df 100644 --- a/library/platform/platform.tcl +++ b/library/platform/platform.tcl @@ -347,13 +347,14 @@ proc ::platform::patterns {id} { # 10.5+,11.0+ if {[regexp {macosx([^-]*)-(.*)} $id -> v cpu]} { + foreach {major minor} [split $v.15 .] break switch -exact -- $cpu { ix86 { lappend alt i386-x86_64 lappend alt universal } x86_64 { - if {[lindex [split $::tcl_platform(osVersion) .] 0] < 19} { + if {$major < 11 && $minor < 15} { set alt i386-x86_64 } else { set alt {} @@ -366,8 +367,6 @@ proc ::platform::patterns {id} { } if {$v ne ""} { - foreach {major minor} [split $v .] break - set res {} if {$major > 26} { # Add x.0 to x.minor to patterns. @@ -451,6 +450,9 @@ proc ::platform::patterns {id} { if {$cpu ne "arm"} { lappend res macosx${major}.${j}-${cpu} } + if {($cpu eq "x86_64") && ($j == 14)} { + set alt i386-x86_64 + } foreach a $alt { lappend res macosx${major}.${j}-$a } @@ -465,7 +467,7 @@ proc ::platform::patterns {id} { lappend res macosx${major}.${j}-$a } } - # Add unversioned patterns for 10.3/10.4 builds. + # Add unversioned patterns for 10.3/10.4 builds. lappend res macosx-${cpu} foreach a $alt { lappend res macosx-$a diff --git a/tests/platform.test b/tests/platform.test index faab6d9..9ef0b9c 100644 --- a/tests/platform.test +++ b/tests/platform.test @@ -4,7 +4,7 @@ # built-in commands. Sourcing this file into Tcl runs the tests and # generates output for errors. No output means no errors were found. # -# Copyright (c) 1999 by Scriptics Corporation +# Copyright (c) 1999 Scriptics Corporation # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. @@ -78,6 +78,38 @@ test platform-4.2 {format of platform::generic result} -match regexp -body { platform::generic } -result {^([^-]+-)+[^-]+$} +test platform-5.0 {format of platform::generic result} -setup { + set old_machine $::tcl_platform(machine) + set old_os $::tcl_platform(os) + set old_wordsize $::tcl_platform(wordSize) + set old_version $tcl_platform(osVersion) + set ::tcl_platform(machine) arm + set ::tcl_platform(os) Darwin + set ::tcl_platform(wordSize) 8 + set ::tcl_platform(osVersion) 20.1 +} -body { + set res {} + set l {macosx10.15-x86_64 macosx10.14-x86_64 macosx10.13-x86_64 macosx10.12-x86_64 macosx10.11-x86_64 macosx10.10-x86_64 macosx10.9-x86_64 tcl} + set id [platform::identify] + set l [linsert $l 0 [string range $id 0 end-3]-x86_64] + set l [linsert $l 0 $id] + lappend res $id + lappend res [platform::patterns $id] + set res +} -cleanup { + set ::tcl_platform(machine) $old_machine + set ::tcl_platform(os) $old_os + set ::tcl_platform(wordSize) $old_wordsize + set ::tcl_platform(osVersion) $old_version + unset res l old_machine old_os old_wordsize old_version +} -result {macosx11.0-arm {macosx11.0-arm macosx11.0-x86_64 macosx10.15-x86_64 macosx10.14-x86_64 macosx10.13-x86_64 macosx10.12-x86_64 macosx10.11-x86_64 macosx10.10-x86_64 macosx10.9-x86_64 macosx10.8-x86_64 macosx10.7-x86_64 macosx10.6-x86_64 macosx10.5-x86_64 macosx-arm macosx-x86_64 tcl}} +test platform-5.1 {format of platform::patterns macosx11.0-x86_64} -body { + platform::patterns macosx11.0-x86_64 +} -result {macosx11.0-x86_64 macosx10.15-x86_64 macosx10.14-x86_64 macosx10.14-i386-x86_64 macosx10.13-x86_64 macosx10.13-i386-x86_64 macosx10.12-x86_64 macosx10.12-i386-x86_64 macosx10.11-x86_64 macosx10.11-i386-x86_64 macosx10.10-x86_64 macosx10.10-i386-x86_64 macosx10.9-x86_64 macosx10.9-i386-x86_64 macosx10.8-x86_64 macosx10.8-i386-x86_64 macosx10.7-x86_64 macosx10.7-i386-x86_64 macosx10.6-x86_64 macosx10.6-i386-x86_64 macosx10.5-x86_64 macosx10.5-i386-x86_64 macosx-x86_64 macosx-i386-x86_64 tcl} +test platform-5.2 {format of platform::patterns macosx11.0-arm} -body { + platform::patterns macosx11.0-arm +} -result {macosx11.0-arm macosx11.0-x86_64 macosx10.15-x86_64 macosx10.14-x86_64 macosx10.13-x86_64 macosx10.12-x86_64 macosx10.11-x86_64 macosx10.10-x86_64 macosx10.9-x86_64 macosx10.8-x86_64 macosx10.7-x86_64 macosx10.6-x86_64 macosx10.5-x86_64 macosx-arm macosx-x86_64 tcl} + # cleanup cleanupTests -- cgit v0.12