← Back to team overview

kicad-developers team mailing list archive

Re: OSX path wrangling

 

My KiCad directory is 4.3G

du -h KiCad -> 4.3G

Admittedly, much of that could be blown away (build..)

Bob G

On 01/12/2015 08:44 AM, Adam Wolf wrote:

If you were a user, and not building, I would expect an online footprint install to be under 700 megs, and closer to 1300 megs if you downloaded all the official footprints for offline use.

It is important not to recreate the search path issues from a few years ago.

Adam Wolf

On Jan 12, 2015 8:28 AM, "Bob Gustafson" <bobgus@xxxxxxx <mailto:bobgus@xxxxxxx>> wrote:

    It would be good to allow storage on a USB stick too. My KiCad
    files are getting to be a noticeable percentage of the disk space
    on my Mac Air. A 32G stick would be useful to off-load most of
    those files.

    Bob G

    On 01/12/2015 01:15 AM, Adam Wolf wrote:
    I think this idea has merit.

    If we are discussing large changes to the OS X paths, can I ask
    for another?  Let's move packages3d/ outside of modules/, so I
    can have users who download kicad-extras drag and drop a modules
    directory full of checked out github footprints into their
    ~/Documents/kicad/ (or whatever...) directory, without having to
    include packages3d/ in both the kicad and kicad-extras dmg.

    Adam Wolf
    Cofounder and Engineer
    W&L

    On Mon, Jan 12, 2015 at 12:56 AM, Collin Anderson
    <metacollin@xxxxxxxxxxxx <mailto:metacollin@xxxxxxxxxxxx>> wrote:

        Hi, I wanted to give some thoughts on the paths KiCad uses
        under OS X, and some options to wrangle them all into
        something more unified and easier to deal with in a
        non-breaking way.

        I'll get right to it:

        1. KiCad should never store, nor require, anything in
        /Library.  This is a root-owned, non-user writable directory,
        including /Library/Application Support, and is only used if
        absolutely necessary.  It requires sudo or administrator
        privileges to create and write to a kicad folder in
        /Library/Application Support.  /Library/Application Support
        is strictly for files that are to remain invisible and are
        managed entirely automatically by a .app bundle, and need to
        be shared between users on the system, but for whatever
        reason cannot be stored in the .app bundle.  The Apple
        developer documentation makes it clear that /Library and
        ~/Llibrary must never contain files the user might need to
        interact with directly, and these directories are
        intentionally hidden and OS X actively discourages manual use
        of these directories, to the point that they are completely
invisible even if the Finder is set to show invisible files. KiCad should still look here, but the only reason to create
        anything in /Library/Application Support is if an
        administrator wants everyone to have certain custom assets,
        and manually install them here. They cannot be modified after
        that, and should not be part of the normal KiCad
        install/usage mode. But files the user will ever interact
        with must not be kept in either /Library or ~/Library

        Source:
        https://developer.apple.com/library/mac/documentation/General/Conceptual/MOSXAppProgrammingGuide/AppRuntime/AppRuntime.html#//apple_ref/doc/uid/TP40010543-CH2-SW9
        (requires a free apple developer account sadly)

        2.  It's ok, and in fact, preferred, to store per-user copies
        of updatable assets like a lot of what is in the
        kicad-library folder.  This correctly integrates with
features like Time Machine, File Vault, and User Migration. This may seem like a terrible waste of space, but wasting
        space is how OS X likes to do things.  A lot of design
        decisions have gone towards decoupling a lot of things that
        could be shared by making copies (like all the dylibs and
        frameworks in .app bundles, for example, making OS X apps
balloon to...well, Doc Brown would say 1.21 jiggabytes). Looking in my own ~/Library/Application Support folder, there
        are tons of things that could be shared but aren't. That, and
        if anyone did want to make a change (which presumably is why
        they are stored in ~/Library/Application Support to begin
        with, since if the files don't need to be writeable, they are
        simply stored in the .app bundle), they do not need
        administrator privileges.  Sure, I know the rational is that
        the assets will automagically be updated using git, and
        that's great, and you want to avoid doing this over and over
        on a multiuser system.  BUT, what if something bad happens,
        someone screws up and makes a bad commit that breaks someones
        project? Or a crash our power outage dies and corrupts
        assets, but there is no administrator around to clean up or
        do a git --reset hard on /Library? If those assets are stored
        in the user's library instead, that user can simply use Time
        Machine to return to an earlier snapshot and in either
        scenario, they simply continue working.

        Beyond that, maybe they just didn't want to update anything,
        and someone else does :).  It's silly, but people do strange
        things.

        3. BUT, the ~/Library folder is, just like /Library, never to
        be used for files the user will need to manage or interact
        with. Only files created automatically and managed
automatically by applications are meant to reside here. Given that the user may wish to install or modify things in
        this folder, and at least for now has to manually install
        things to it and can't do this form within the KiCad app,
        there really should not be anything stored in ~/Library
        either.  If an app does not ask the user specifically, the
        perferred location for files a user may need to interact with
        is ~/Documents. This is why, for example, the Arduino IDE
        stores its libraries, and allows custom cores and all sorts
        of things to override its default settings (stored in the
.app) by simply managing the ~/Documents/Arduino folder. It's acceptalbe, familiar, and OS X user friendly to store
        customizable support files in their ~/Documents folder.  It's
        the folder for stuff the user can mess with, not just
        user-created stuff.

        Anyway, I am not advocating the removal of any of the current
        search paths, but rather adding ~/Documents/KiCad (let's use
        proper case and make it look nice - KiCad vs kicad - while
        we're at it :)  ) and give this path the highest precedence -
        the user should be able to override whatever might be
installed elsewhere with whatever they put in this folder. It would also be a nice place to store documentation if it is
        auto updated in the future.

        I have actually already made these changes in my, uh,
        personal version of KiCad, and would be happy to put them in
        a branch, but I didn't want to just shove all this in a merge
        request, since its a pretty big change to, well, policy on OS
        X.  I am a newcommer, and its totally possible I missed
        something and there are very good reasons for how things are
        done now, and beyond that, maybe no one else wants to do any
        of this, has a better idea, or doesn't like this one.  Which
        is fine.  These are just suggestions coming from a long time
        mac user, and if any of this is something the other devs
        would like to look into, I'll put up the branch (it also
        changes comments and documentation to reflect the path
        changes - I did it a while ago then realized how big of a
        change I was doing and sort of put it on the back burner).

        If this is not something anyone is interested in, I
        completely understand and I will not mention or press for it
        again.  Please don't think I am trying to to tell anyone here
        what to do - I defer to the judgement of all the people who
actually wrote those 500,000+ lines of code, of course :). Sorry about the length again. I am very bad at being concise :(.

-- "Violence is the last refuge of the incompetent." - Isaac Asimov


        _______________________________________________
        Mailing list: https://launchpad.net/~kicad-developers
        <https://launchpad.net/%7Ekicad-developers>
        Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
        <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
        Unsubscribe : https://launchpad.net/~kicad-developers
        <https://launchpad.net/%7Ekicad-developers>
        More help   : https://help.launchpad.net/ListHelp




    _______________________________________________
    Mailing list:https://launchpad.net/~kicad-developers  <https://launchpad.net/%7Ekicad-developers>
    Post to     :kicad-developers@xxxxxxxxxxxxxxxxxxx  <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
    Unsubscribe :https://launchpad.net/~kicad-developers  <https://launchpad.net/%7Ekicad-developers>
    More help   :https://help.launchpad.net/ListHelp


    _______________________________________________
    Mailing list: https://launchpad.net/~kicad-developers
    <https://launchpad.net/%7Ekicad-developers>
    Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
    <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
    Unsubscribe : https://launchpad.net/~kicad-developers
    <https://launchpad.net/%7Ekicad-developers>
    More help   : https://help.launchpad.net/ListHelp



References