← Back to team overview

kicad-developers team mailing list archive

Re: A few issues with new OS X bundles

 

Hi,

yes, could be easy to do this way.
Let’s see what Wayne thinks about different execution of pcbnew/eeschema vs. the other applications, then we will see how to proceed.

I’m almost done with adapting scripting stuff in CMake and also found a way without explicit usage of install_name_tool to put dylibs into Framework.


Regards,
Bernhard

On 04.10.2014, at 20:31, Garth Corral <gcorral@xxxxxxxxx> wrote:

> Hi, Bernhard
> 
> I think that the direction you are heading with the single application bundle is the right one.  I think a single draggable application install will be a huge win for OS X users compared to the way it was before.  It seems like you are almost there, but just a couple somewhat minor issues that might be confusing to Mac users.
> 
> If what Wayne says it true, and these are not supposed to launch the way they do, then perhaps this can be dealt with outside of bundling and you’re done.  As for whether users want to be able to launch the other applications separately, I can’t really say.  I used to, but eventually just got into the habit of using the launcher; a bit more convenient.
> 
> What about a hybrid of 1 and 2b?
> 
> For each bundle that launches a separate process (and only those), create a bundle for that application and set up the main kicad bundle something like this:
> 
> /kicad.app
>     Contents
>         Applications
>             gerbview.app
>             pcb_calculator.app
>             etc.
>         MacOS
>             kicad
>             pcbnew
>             eeschema
>             *.kiface
>         Frameworks
>         etc.
> 
> Then put just a single set of libraries in the Frameworks directory of the top-level bundle and use install_name_tool to fix up the binaries to point to those as you allude to in 2b.  That would mean the the kicad.app application bundle would be relocatable to anywhere, but the sub applications would not be relocatable outside the main bundle.  Of course this would not solve the *.kiface issue that you mentioned.  The symlink thing sort of offends me, too, but hopefully it would just be temporary, and the sub-applications wouldn’t be relocatable outside the bundle anyway.  Then as each application is ‘fixed’, it’s bundle could be removed and it gets migrated to MacOS as now.
> 
> As a side effect, these sub-applications would not be visible to to users unless they went out of their way to find them.  This could be good or bad depending on your perspective.  To me it’s good.  It signals the intention that they will not be separate applications in the future, but allows them to behave correctly from within the main app.  It also eliminates the common folder in the dock.
> 
> This sort of thing is not unprecedented.  Apple does it with some of their own applications.  For instance:
> 
> $ ls -1 /Applications/Server.app/Contents
> Applications                                                      <----
> Frameworks
> Info.plist
> Library
> MacOS
> PkgInfo
> PlugIns
> Resources
> 
> 
> They also do this in Xcode, but that’s probably not an example you’d want to show anyone.  :-)
> 
> 
> I currently have a bundle that I built using your new build changes, but I repackaged it to put the libraries in a Frameworks directory within the bundle and also compiled with scripting support on and put the python site-packages in there as well (don’t really know where these belong).  I also moved the command line utilities out to SharedSupport/bin.  It all works fairly well but still has the issues I mentioned in my original message on the topic.
> 
> 
> On Oct 4, 2014, at 6:56 AM, Bernhard Stegmaier <stegmaier@xxxxxxxxxxxxx> wrote:
> 
>> There are 2 possibilities as far as I can see:
>> 
>> (1) One single application bundle - like it is now.
>> There are probably still some cosmetic issues as Garth told, but I think these are just minor inconsistencies that could be sorted out.
>> From an efficiency point of view it is no difference… 2 clicks this way to start e.g. pcbnew (first click opens kicad launcher, second pcbnew), the same for the “old” approach (one click to open KiCad folder, second to start pcbnew).
>> Positive: No space wasted
>> Positive: No dependency problems, it just is self-contained and completely relocatable
>> Negative: May break with users habits (Apple does this all the time, so nothing new for OSX users… :) )
>> 
>> (2) A KiCad-fodler with one application bundle per “executable” - from a users point of view how it was before.
>> Again, two options:
>> (2a) Self-contained bundles 
>> You have to pull every dependency into every bundle. 
>> Especially, you also have to duplicate all the *.kifaces into the kicad bundle for the launcher (and maybe also into other bundles e.g. if you want/could launch pcbnew from eeschema - don’t know if that is possible).
>> If you don’t do it like that (as it was before using symlinks between bundles), it looks like it is a normal OSX application you can move around where you want, but actually you can’t because you break inter-bundle dependencies.
>> Maybe it is not a regular use-case to pull e.g. pcbnew out of the KiCad folder, but nobody forbids that… so maybe someone likes to drag pcbnew to his desktop because then it’s only one click to start...
>> Positive: Everything is individually self-contained
>> Negative: Space wasted for duplicating things - especially pcbnew with scripting pulls in all the wxPython stuff that will be contained at least twice then...
>> (2b) App-Folder + Individual Bundles + Common-Folder
>> All the dependencies and the *.kifaces are put into the common folder, the bundles itself are linked in a way to use things from the common folder. 
>> Positive: No space wasted
>> Negative: Inter-Bundle dependencies as explained in (2a).
>> Negative: Just a cosmetic issue, but you always see that common folder in the dock launcher
>> 
>> One thing to note is that even in (1) you could start, e.g., pcbnew from command line as “standalone” binary.
>> 
>> I must confess, I am not an OSX bundle guru. 
>> If anybody has a nice other solution, I’ll be glad to hear.
>> 
>> 
>> Regards,
>> Bernhard
>> 
>> On 04.10.2014, at 15:17, Wayne Stambaugh <stambaughw@xxxxxxxxxxx> wrote:
>> 
>>> On 10/4/2014 4:26 AM, Bernhard Stegmaier wrote:
>>>> Hi,
>>>> 
>>>> most of your observations are as far as I can see not a problem of the bundles itself, but of the KiCad modular concept (kiface).
>>>> When you launch pcbnew et al. from KiCad launcher the correct “application” is only loaded as a module, so the main application is still kicad launcher and I guess that’s why you for example see the same name, they do not have their own icon, etc.
>>> 
>>> KiCad no longer launches executables that run in a separate process.
>>> Since the kiway work was completed, Eeschema, Pcbnew, etc. are actually
>>> child windows of the KiCad application.  Eeschema, Pcbnew, etc. are also
>>> a stand alone programs but they don't get called from KiCad any longer.
>>> Some users prefer to run the individual applications this way so it
>>> would be nice if we could provide a separate icon and shortcut (or
>>> whatever it's called on OSX) so that the stand alone applications could
>>> be launched.
>>> 
>>>> 
>>>> For the “dock roulette” there is possibly a way to set the application icon of window dynamically using wxWidgets.
>>>> Something to try… I guess behavior is the same on Linux/Windows, so the might als benefit.
>>>> 
>>>> 
>>>> Regards,
>>>> Bernhard
>>>> 
>>>> On 04.10.2014, at 09:30, Garth Corral <gcorral@xxxxxxxxx> wrote:
>>>> 
>>>>> 
>>>>> Hi all,
>>>>> 
>>>>> I finally had a chance to build and try out the new all-inclusive OS X application bundles and I’ve encountered a couple of issues that tend to reduce the usability a bit for me.
>>>>> 
>>>>> First, an observation unrelated to the new bundles.  I noticed with mainline builds on OS X, some of the subsidiary applications, specifically eeshcema and pcbnew, no longer have their own name in the application menu.  Instead they have the name of the main application, KiCad.
>>>>> 
>>>>> This is fine and I assumed it’s part of an effort to improve integration between the applications.  On OS X, though, it’s a bit weird because the application menu still has an entry to “Quit pcbnew” and selecting that or Cmd-Q will indeed quit the sub-application, leaving you with a KiCad application menu as it switched back the the main app.  Not really a huge issue but is can be confusing and if you’re not paying attention you can accidentally quit your main app.  Not cool.
>>>>> 
>>>>> The additional things I’m seeing with the new bundling is that now the applications the previously did launch as separate applications, even when launched from the main app, now have no icon of their own. They get the icon of the main kicad.app.  So if I launch, say, gerbview and pcb_calculator, I’ve now got three KiCad icons in my dock with no idea which one belongs to which application.  I have to play icon roulette to find out.  With the new CMakeLists.txt changes for these applications it seems there’s no way to go back to building individual application bundles for them without hacking and slashing.
>>>>> 
>>>>> Any chance we can get back the ability to make bundles for these?  I’d go so far as to recommend that the bundles be included wholesale in an Applications directory int the main bundle, but I’d at least like the option of building them as bundles separately.
>>>>> 
>>>>> 
>>>>> Thanks in advance,
>>>>> 
>>>>> Garth_______________________________________________
>>>>> Mailing list: https://launchpad.net/~kicad-developers
>>>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>>>> More help   : https://help.launchpad.net/ListHelp
>>>> 
>>>> 
>>>> _______________________________________________
>>>> Mailing list: https://launchpad.net/~kicad-developers
>>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>>> More help   : https://help.launchpad.net/ListHelp
>>>> 
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~kicad-developers
>>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>> More help   : https://help.launchpad.net/ListHelp
>> 
>> _______________________________________________
>> Mailing list: https://launchpad.net/~kicad-developers
>> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~kicad-developers
>> More help   : https://help.launchpad.net/ListHelp
> 


Follow ups

References