<pre style='margin:0'>
Clemens Lang (neverpanic) pushed a commit to branch master
in repository macports-base.
</pre>
<p><a href="https://github.com/macports/macports-base/commit/057ce2b2bfe8d08cafe3f98296546f6a060790ab">https://github.com/macports/macports-base/commit/057ce2b2bfe8d08cafe3f98296546f6a060790ab</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 057ce2b2bfe8d08cafe3f98296546f6a060790ab
</span>Author: Satryaji Aulia <satraul@macports.org>
AuthorDate: Thu Jun 13 22:24:38 2019 +0700
<span style='display:block; white-space:pre;color:#404040;'> port1.0: Implement use_xcode option
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> * implement new option use_xcode to indicate Xcode dependency
</span><span style='display:block; white-space:pre;color:#404040;'> * default DEVELOPER_DIR to Command Line Tools unless port needs Xcode
</span><span style='display:block; white-space:pre;color:#404040;'> * hide Xcode files on trace mode unless port needs Xcode
</span><span style='display:block; white-space:pre;color:#404040;'> * fail fetch phase of Xcode-dependent port if Xcode is not installed
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> References https://trac.macports.org/ticket/35045
</span><span style='display:block; white-space:pre;color:#404040;'> References https://trac.macports.org/ticket/58016
</span>---
src/port1.0/portbuild.tcl | 1 +
src/port1.0/portconfigure.tcl | 2 +-
src/port1.0/portdestroot.tcl | 1 +
src/port1.0/portfetch.tcl | 9 +++++++++
src/port1.0/portmain.tcl | 10 +++++++++-
src/port1.0/porttrace.tcl | 23 +++++++++++++++++------
src/port1.0/portutil.tcl | 11 +++++++++++
7 files changed, 49 insertions(+), 8 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portbuild.tcl b/src/port1.0/portbuild.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 38e1f6c..2db76e3 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portbuild.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portbuild.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -48,6 +48,7 @@ options build.asroot \
</span> use_parallel_build
commands build
# defaults
<span style='display:block; white-space:pre;background:#e0ffe0;'>+default build.env {[get_default_env]}
</span> default build.asroot no
default build.dir {${worksrcpath}}
default build.cmd {[portbuild::build_getmaketype]}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portconfigure.tcl b/src/port1.0/portconfigure.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 9628b97..0ab21eb 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portconfigure.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portconfigure.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -138,7 +138,7 @@ default compiler.fortran_fallback {[portconfigure::get_fortran_fallback]}
</span> # define options
commands configure autoreconf automake autoconf xmkmf
# defaults
<span style='display:block; white-space:pre;background:#ffe0e0;'>-default configure.env ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default configure.env {[get_default_env]}
</span> default configure.pre_args {--prefix=${prefix}}
default configure.cmd ./configure
default configure.nice {${buildnicevalue}}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portdestroot.tcl b/src/port1.0/portdestroot.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 35c5f80..f311af1 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portdestroot.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portdestroot.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -52,6 +52,7 @@ commands destroot
</span>
# Set defaults
default destroot.asroot no
<span style='display:block; white-space:pre;background:#e0ffe0;'>+default destroot.env {[get_default_env]}
</span> default destroot.dir {${build.dir}}
default destroot.cmd {${build.cmd}}
default destroot.pre_args {[portdestroot::destroot_getargs]}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portfetch.tcl b/src/port1.0/portfetch.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 91fc517..ac1a0ff 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portfetch.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portfetch.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -607,11 +607,20 @@ proc portfetch::fetch_addfilestomap {filemapname} {
</span> }
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Utility function to error out if Xcode is needed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc portfetch::checkxcode {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global use_xcode developer_dir
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$use_xcode eq "yes" && $xcodeversion eq "none"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -code error "This port requires Xcode, which was not found on your system."
</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> # Initialize fetch target and call checkfiles.
proc portfetch::fetch_init {args} {
variable fetch_urls
portfetch::checkfiles fetch_urls
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ portfetch::checkxcode
</span> }
proc portfetch::fetch_start {args} {
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portmain.tcl b/src/port1.0/portmain.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 2a506d1..a8f3654 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portmain.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portmain.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -56,7 +56,7 @@ options prefix name version revision epoch categories maintainers \
</span> supported_archs depends_skip_archcheck installs_libs \
license_noconflict copy_log_files \
compiler.cpath compiler.library_path \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- add_users
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ add_users use_xcode
</span>
proc portmain::check_option_integer {option action args} {
if {$action eq "set" && ![string is wideinteger -strict $args]} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -154,6 +154,14 @@ set egid [getegid]
</span> default worksymlink {[file normalize [file join $portpath work]]}
default distpath {[file normalize [file join $portdbpath distfiles ${dist_subdir}]]}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+default use_xcode {[portmain::get_default_use_xcode]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc portmain::get_default_use_xcode {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[option build.type] eq "xcode"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> proc portmain::main {args} {
return 0
}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/porttrace.tcl b/src/port1.0/porttrace.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index bd60e3c..1c6cd12 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/porttrace.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/porttrace.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -132,7 +132,7 @@ namespace eval porttrace {
</span> proc trace_start {workpath} {
global \
developer_dir distpath env macportsuser os.platform configure.sdkroot \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- portpath prefix
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ portpath prefix use_xcode
</span>
variable fifo
variable fifo_mktemp_template
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -213,10 +213,11 @@ namespace eval porttrace {
</span> }
# Allow access to some Xcode specifics
<span style='display:block; white-space:pre;background:#ffe0e0;'>- allow trace_sandbox "/var/db/xcode_select_link"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- allow trace_sandbox "/var/db/mds"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- allow trace_sandbox [file normalize ~${macportsuser}/Library/Preferences/com.apple.dt.Xcode.plist]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- allow trace_sandbox "$env(HOME)/Library/Preferences/com.apple.dt.Xcode.plist"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set xcode_paths {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend xcode_paths "/var/db/xcode_select_link"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend xcode_paths "/var/db/mds"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend xcode_paths [file normalize ~${macportsuser}/Library/Preferences/com.apple.dt.Xcode.plist]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend xcode_paths "$env(HOME)/Library/Preferences/com.apple.dt.Xcode.plist"
</span>
# Allow access to developer_dir; however, if it ends with /Contents/Developer, strip
# that. If it doesn't leave that in place to avoid allowing access to "/"!
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -224,7 +225,17 @@ namespace eval porttrace {
</span> if {[llength $ddsplit] > 2 && [lindex $ddsplit end-1] eq "Contents" && [lindex $ddsplit end] eq "Developer"} {
set ddsplit [lrange $ddsplit 0 end-2]
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- allow trace_sandbox [file join {*}$ddsplit]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ lappend xcode_paths [file join {*}$ddsplit]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$use_xcode eq "no"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach xcode_path $xcode_paths {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ deny trace_sandbox $xcode_path
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach xcode_path $xcode_paths {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ allow trace_sandbox $xcode_path
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span>
# Allow launchd.db access to avoid failing on port-load(1)/port-unload(1)/port-reload(1)
allow trace_sandbox "/var/db/launchd.db"
<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 6911c8a..ae6fb1e 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;'>@@ -508,6 +508,17 @@ proc default_check {optionName index op} {
</span> }
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# get_default_env
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Unless port is Xcode dependent, returns env which sets developer_dir to
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Command Line Tools
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc get_default_env {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global use_xcode
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$use_xcode eq "yes"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return "DEVELOPER_DIR=/Library/Developer/CommandLineTools"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> ##
# Filter options which take strings removing indent to ease Portfile writing
proc handle_option_string {option action args} {
</pre><pre style='margin:0'>
</pre>