<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>