<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-base.
</pre>
<p><a href="https://github.com/macports/macports-base/commit/e0c122648d02f89afd4c7fac2eef06e0b83f669d">https://github.com/macports/macports-base/commit/e0c122648d02f89afd4c7fac2eef06e0b83f669d</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new e0c122648 Don't treat filenames in depspecs as regexes
</span>e0c122648 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit e0c122648d02f89afd4c7fac2eef06e0b83f669d
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Fri Jun 14 22:03:35 2024 +1000
<span style='display:block; white-space:pre;color:#404040;'> Don't treat filenames in depspecs as regexes
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Closes: https://github.com/macports/macports-base/pull/337
</span><span style='display:block; white-space:pre;color:#404040;'> Closes: https://trac.macports.org/ticket/69585
</span>---
src/macports1.0/macports.tcl | 29 ++++++++++-------------------
src/port1.0/portutil.tcl | 32 ++++++++++++--------------------
2 files changed, 22 insertions(+), 39 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 ebc45f69f..7d378de5a 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;'>@@ -2462,37 +2462,28 @@ proc mporttraverse {func {root .}} {
</span>
### _mportsearchpath is private; subject to change without notice
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# depregex -> regex on the filename to find.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# depfilename -> the filename to find.
</span> # search_path -> directories to search
# executable -> whether we want to check that the file is executable by current
# user or not.
<span style='display:block; white-space:pre;background:#ffe0e0;'>-proc _mportsearchpath {depregex search_path {executable 0} {return_match 0}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc _mportsearchpath {depfilename search_path {executable 0} {return_match 0}} {
</span> set found 0
foreach path $search_path {
if {![file isdirectory $path]} {
continue
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[catch {set filelist [readdir $path]} result]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return -code error "$result ($path)"
</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:#ffe0e0;'>- foreach filename $filelist {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[regexp $depregex $filename] &&
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- (($executable == 0) || [file executable [file join $path $filename]])} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_debug "Found Dependency: path: $path filename: $filename regex: $depregex"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set found 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- break
</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:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {$found} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set fullpath [file join $path $depfilename]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![catch {file type $fullpath}] &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (($executable == 0) || [file executable $fullpath])} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_debug "Found Dependency: path: $path filename: $depfilename"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set found 1
</span> break
}
}
if {$return_match} {
if {$found} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- return [file join $path $filename]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return $fullpath
</span> } else {
return {}
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2553,8 +2544,8 @@ proc _mportispresent {mport depspec} {
</span> ui_debug "Found Dependency: receipt exists for $portname"
return 1
} else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # The receipt test failed, use one of the depspec regex mechanisms
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_debug "Didn't find receipt, going to depspec regex for: $portname"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # The receipt test failed, use one of the depspec file mechanisms
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_debug "Didn't find receipt, going to depspec file for: $portname"
</span> set workername [ditem_key $mport workername]
set type [lindex [split $depspec :] 0]
switch -- $type {
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portutil.tcl b/src/port1.0/portutil.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 1dffb883e..6e3f1a21e 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portutil.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portutil.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3186,48 +3186,40 @@ proc _libtest {depspec {return_match 0}} {
</span> if {$i < 0} {set i [string length $depline]}
set depname [string range $depline 0 $i-1]
set depversion [string range $depline $i end]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- regsub {\.} $depversion {\.} depversion
</span> if {${os.platform} eq "darwin"} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set depregex \^${depname}${depversion}\\.dylib\$
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set depfilename ${depname}${depversion}.dylib
</span> } else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set depregex \^${depname}\\.so${depversion}\$
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set depfilename ${depname}.so${depversion}
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>- return [_mportsearchpath $depregex $search_path 0 $return_match]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return [_mportsearchpath $depfilename $search_path 0 $return_match]
</span> }
### _bintest is private; subject to change without notice
proc _bintest {depspec {return_match 0}} {
global env
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set depregex [lindex [split $depspec :] 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set depfilename [lindex [split $depspec :] 1]
</span>
set search_path [split $env(PATH) :]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set depregex \^$depregex\$
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return [_mportsearchpath $depregex $search_path 1 $return_match]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return [_mportsearchpath $depfilename $search_path 1 $return_match]
</span> }
### _pathtest is private; subject to change without notice
proc _pathtest {depspec {return_match 0}} {
global prefix
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set depregex [lindex [split $depspec :] 1]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # separate directory from regex
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set fullname $depregex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set dep_path [lindex [split $depspec :] 1]
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- regexp {^(.*)/(.*?)$} "$fullname" match search_path depregex
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[string index $search_path 0] ne "/"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Prepend prefix if not an absolute path
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set search_path "${prefix}/${search_path}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Prepend prefix if not an absolute path
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set dep_path [file join $prefix $dep_path]
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set depregex \^$depregex\$
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # separate directory from filename
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set search_path [file dirname $dep_path]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set depfilename [file tail $dep_path]
</span>
<span style='display:block; white-space:pre;background:#ffe0e0;'>- return [_mportsearchpath $depregex $search_path 0 $return_match]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return [_mportsearchpath $depfilename $search_path 0 $return_match]
</span> }
# returns the name of the port that will actually be satisfying $depspec
</pre><pre style='margin:0'>
</pre>