<pre style='margin:0'>
Ken (kencu) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/d5df001c5444d4a7003d6c914dae03429e8df134">https://github.com/macports/macports-ports/commit/d5df001c5444d4a7003d6c914dae03429e8df134</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 d5df001 app PortGroup : add support for x11 applications
</span>d5df001 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit d5df001c5444d4a7003d6c914dae03429e8df134
</span>Author: kencu <ken.cunningham.webuse@gmail.com>
AuthorDate: Wed Mar 14 11:11:43 2018 -0600
<span style='display:block; white-space:pre;color:#404040;'> app PortGroup : add support for x11 applications
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> add a bash launch script option that does not pass
</span><span style='display:block; white-space:pre;color:#404040;'> the -psn parameter, and that also sets PATH
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> add option to hide the dock icon (rather than have it
</span><span style='display:block; white-space:pre;color:#404040;'> bounce continuously)
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> closes: https://trac.macports.org/ticket/40110
</span>---
_resources/port1.0/group/app-1.0.tcl | 59 +++++++++++++++++++++++++++++++++---
1 file changed, 54 insertions(+), 5 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/_resources/port1.0/group/app-1.0.tcl b/_resources/port1.0/group/app-1.0.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 6f1982c..f8244fa 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/_resources/port1.0/group/app-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/_resources/port1.0/group/app-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,6 +1,6 @@
</span> # -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
#
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Copyright (c) 2011-2013, 2015-2016 The MacPorts Project
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Copyright (c) 2011-2013, 2015-2018 The MacPorts Project
</span> # All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -129,6 +129,28 @@ default app.version {${version}}
</span> options app.identifier
default app.identifier {[app.get_default_identifier]}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# app.hide_dock_icon: hide the dock icon
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# x11 apps do not receive a proper indication that application has successfully
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# launched, and so the icon keeps bouncing in the dock. Until this is properly
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# fixed, just hide the the dock icon for now
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+options app.hide_dock_icon
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default app.hide_dock_icon no
</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;'>+# app.use_launch_script: use a bash launch script instead of a symlink to the executable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# the default behaviour is to symlink the executable into the bundle.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# However, this has two issues -- it passes -psn to the executable,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# which some ports can't handle. Also, it doesn't set up the path to ${prefix}/bin. The launch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# script option solves both these issues.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+options app.use_launch_script
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default app.use_launch_script no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> proc app.get_default_identifier {} {
global app.name homepage
set identifier [split [lindex [split ${homepage} "/"] 2] .]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -218,18 +240,26 @@ platform macosx {
</span> return -code error "app.executable ${app.executable} should not start with \${destroot}"
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # If app.executable is in the destroot, link to it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # If app.executable is in the destroot, use it as the target.
</span> if {[file exists ${destroot}[app._resolve_symlink ${executable} ${destroot}]]} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ln -s ${executable} ${destroot}${applications_dir}/${app.name}.app/Contents/MacOS/${app.name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[tbool app.use_launch_script]} then {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ app._write_launch_script ${executable} ${destroot}${applications_dir}/${app.name}.app/Contents/MacOS/${app.name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ln -s ${executable} ${destroot}${applications_dir}/${app.name}.app/Contents/MacOS/${app.name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> } elseif {[file exists ${executable}]} {
# If app.executable starts with ${workpath} or ${filespath}, copy it.
if {[string first ${workpath} ${executable}] == 0 || [string first ${filespath} ${executable}] == 0} {
xinstall ${executable} ${destroot}${applications_dir}/${app.name}.app/Contents/MacOS/${app.name}
# app.executable refers to a file that exists but does not belong to this port.
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # Assume it belongs to a dependency and symlink it.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Assume it belongs to a dependency and use it as the target.
</span> } else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ln -s ${executable} ${destroot}${applications_dir}/${app.name}.app/Contents/MacOS/${app.name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[tbool app.use_launch_script]} then {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ app._write_launch_script ${executable} ${destroot}${applications_dir}/${app.name}.app/Contents/MacOS/${app.name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ln -s ${executable} ${destroot}${applications_dir}/${app.name}.app/Contents/MacOS/${app.name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> }
} else {
return -code error "app.executable ${app.executable} does not exist"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -249,6 +279,10 @@ platform macosx {
</span> puts ${fp} " <key>CFBundleIconFile</key>
<string>${app.name}.icns</string>"
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[tbool app.hide_dock_icon]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts ${fp} " <key>LSUIElement</key>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ <string>1</string>"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> puts ${fp} " <key>CFBundleIdentifier</key>
<string>${app.identifier}</string>
<key>CFBundleInfoDictionaryVersion</key>
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -304,3 +338,18 @@ proc app._resolve_symlink {path destroot} {
</span> # ui_debug "In ${destroot}, ${path} is a symlink to ${resolved_path}"
return [app._resolve_symlink ${resolved_path} ${destroot}]
}
<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;'>+# Write a default launch script for the executable into the bundle,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# setting the default PATH as would be expected by the binary
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc app._write_launch_script {executable app_destination} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global prefix
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set launch_script [open ${app_destination} w]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ puts ${launch_script} "#!/bin/bash
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+export PATH=\"${prefix}/bin:${prefix}/sbin:\$PATH\"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+exec ${executable}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ close ${launch_script}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ file attributes ${app_destination} -permissions 0755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span></pre><pre style='margin:0'>
</pre>