Ordinarily I agree with Jesse's sentiment about not using symlinks but
that is just the reality for .frameworks.

That being said, I don't think we should do anything extra for authors
_but_ instead provide a middle ground that you mentioned "provide
guidance to plugin authors to work around this problem" and even as a
pre-publish (or analysis) step that checks whether this might be a
problem, and warns them.

On Wed, May 6, 2015 at 9:54 AM, Chuck Lantz <cla...@microsoft.com> wrote:
> Yeah, I agree symlinks should be avoided, but what Ally highlighted below is 
> that it is required in this case. ("@Ian Absolutely required. Not just for 
> Facebook, but all .framework files.") Given that statement, it seems that in 
> this case we need to have some sort of solution to remediate the problem does 
> it not?
>
> -Chuck
>
> -----Original Message-----
> From: Jesse [mailto:purplecabb...@gmail.com]
> Sent: Wednesday, May 6, 2015 9:16 AM
> To: dev@cordova.apache.org
> Subject: Re: Cordova Plugins with Symlinks
>
> I think in this case we should be not be using symlinks. All of our output 
> project types support adding a reference to a file or folder, we should 
> leverage this directly.
> Of course, this could possibly lead to forward vs back slash issues, but 
> should be easier than running hook hacks.
> At least I think we should explore this way.
>
>
>> On May 6, 2015, at 7:53 AM, Chuck Lantz <cla...@microsoft.com> wrote:
>>
>> Hey folks,
>>
>> So I’ve started to see some issues come up with certain Cordova plugins 
>> when devs are mixing a Windows and OSX environment together when developing 
>> an app. Digging into it a bit, it looks like root cause is that there are 
>> some situations where iOS plugin implementations with custom frameworks that 
>> require symlinks - as described in the thread below.
>>
>> In addition to the situation mentioned in the thread, there's a second one 
>> worth calling out: installing a plugin with symlinks on Windows on the NTFS 
>> file system results in the symlinks becoming files.
>>
>> The workaround described in this thread (zipping as a tarball) helps when 
>> plugin installs happen on OSX, but it doesn't resolve the problem with NTFS. 
>>  If a development team is split between OSX and Windows machines, the plugin 
>> will appear broken on iOS if it was committed/checked in/copied from 
>> Windows. If, on the other hand, the plugin is added from OSX, it will work - 
>> the end result is the behavior seems "glitchy" and it is not at all obvious 
>> what happened when things go wrong.
>>
>> I came up with a hook that fixes these symlinks since the files that
>> are generated do contain the relative path to the underlying folder
>> – but it is admittedly a bit of a hack since it attempts to handle
>> any arbitrary plugin:
>> https://github.com/Chuxel/taco-tricks/tree/master/ios-plugin-symlink-f
>> ix
>>
>> I think at a minimum, we should call this out in the plugin docs as a 
>> potential issue with a workaround.
>>
>> However, It got me thinking, would the right thing here be to just provide 
>> guidance to plugin authors to work around this problem  Cordova plugin hook 
>> to create the symlinks or should we develop a way for this to happen 
>> automatically?  Ex: A npm pre-publish hook persists symlinks in a file that 
>> are then used before_compile on an OS that supports them. Or frameworks can 
>> be referenced as tar balls in plugin.xml that are then untar'd as a 
>> before_compile step.
>>
>> Thoughts?
>>
>> -Chuck
>>
>> -----Original Message-----
>> From: Ally Ogilvie [mailto:aogil...@wizcorp.jp]
>> Sent: Friday, September 5, 2014 3:31 AM
>> To: dev@cordova.apache.org
>> Subject: Re: Cordova Plugin Registry iOS frameworks
>>
>> Thanks Carlos. I'll take a look Monday. Have a good weekend.
>>
>>
>>> On Fri, Sep 5, 2014 at 4:06 AM, Carlos Santana <csantan...@gmail.com> wrote:
>>>
>>> Source code is here:
>>>
>>> https://github.com/apache/cordova-lib/blob/master/cordova-lib/src/plu
>>> g
>>> man/registry/registry.js#L97
>>>
>>> I think the fix will be to create a tarball in some tmp after
>>> generating pacakgeJson, then calling npm .commands, 'publish', args
>>> with the tarball instead of a folder containing the package.json
>>>
>>> Have fun !, remember to add unit tests :-)
>>>
>>>
>>>
>>>> On Wed, Sep 3, 2014 at 10:37 PM, Ally Ogilvie <aogil...@wizcorp.jp> wrote:
>>>>
>>>> I tried to find plugman source code responsible for npm publish but
>>> failed.
>>>>
>>>> I'm gonna bump this for someone to assign too.. any takers? <3
>>>>
>>>>
>>>>
>>>> On Wed, Aug 20, 2014 at 12:12 PM, Ally Ogilvie <aogil...@wizcorp.jp>
>>>> wrote:
>>>>
>>>>>> Ally, do you know if the symlinks are required for the
>>>>>> FacebookConnect
>>>>> framework?
>>>>>
>>>>> @Ian Absolutely required. Not just for Facebook, but all .framework
>>>> files.
>>>>>
>>>>> MyFramework.framework     // (directory)
>>>>>  info.plist
>>>>>  MyFramework             // (symbolic link to
>>>>> Versions/Current/MyFramework)
>>>>>  Resources               // (symbolic link to
>>>> Versions/Current/Resources)
>>>>>  Headers                 // (symbolic link to
>>> Versions/Current/Headers)
>>>>>  Versions                // (directory)
>>>>>    Current               // (symbolic link to directory "A" below)
>>>>>    A                     // (directory)
>>>>>      Headers             // (directory containing framework headers)
>>>>>      Resources           // (directory holding framework resources)
>>>>>      MyFramework         // (actual compiled library, really a .a
>>> file)
>>>>>
>>>>> As you can see there are 4 symbolic links in .frameworks.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>> On Tue, Aug 19, 2014 at 5:59 AM, Shazron <shaz...@gmail.com> wrote:
>>>>>>
>>>>>> I think the right approach is what Andrew suggested. So the
>>>>>> current workaround is to tarball it first then publish?
>>>>>>
>>>>>> On Mon, Aug 18, 2014 at 12:04 PM, Andrew Grieve
>>>>>> <agri...@chromium.org
>>>>
>>>>>> wrote:
>>>>>>> Tarballs support symlinks.
>>>>>>> npm uses tarballs.
>>>>>>> "npm publish" lets you give a path to a tarball rather than
>>>>>>> having
>>> it
>>>>>> pack
>>>>>>> it for you.
>>>>>>>
>>>>>>> So, I think we probably could fix this in plugman by having it
>>> create
>>>>>> the
>>>>>>> tgz more intelligently.
>>>>>>>
>>>>>>>
>>>>>>> On Mon, Aug 18, 2014 at 2:24 PM, Ian Clelland <
>>> iclell...@chromium.org
>>>>>
>>>>>>> wrote:
>>>>>>>
>>>>>>>>> On Mon, Aug 18, 2014 at 12:40 PM, Brian LeRoux <b...@brian.io> wrote:
>>>>>>>>>
>>>>>>>>> I like the idea of not supporting them until I hear a really
>>> great
>>>>>> reason
>>>>>>>>> to support them. =)
>>>>>>>>
>>>>>>>> Certainly; YAGNI and all that.
>>>>>>>>
>>>>>>>> Ally, do you know if the symlinks are required for the
>>>> FacebookConnect
>>>>>>>> framework? Is it possible to just git mv the files to the
>>>>>>>> location
>>>> that
>>>>>>>> Xcode expects to find them, and not have to worry about this
>>>>>>>> issue
>>> in
>>>>>>>> plugman?
>>>>>>>>
>>>>>>>> Ian
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Mon, Aug 18, 2014 at 9:31 AM, Ian Clelland <
>>>>>> iclell...@chromium.org>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> We could have some sort of preprocessing step on the
>>>>>>>>>> current
>>>>>> directory,
>>>>>>>>>> that would prepare it for publishing.
>>>>>>>>>>
>>>>>>>>>> Maybe we can either annotate the directory with where the
>>>> symlinks
>>>>>>>> should
>>>>>>>>>> go, or else copy the files, if it's okay to do that.
>>>>>>>>>>
>>>>>>>>>> On Monday, August 18, 2014, Mark Koudritsky
>>>>>>>>>> <kam...@google.com
>>>>
>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Plugins are published using "npm publish". As far as I
>>>>>> understood,
>>>>>>>> npm
>>>>>>>>>> does
>>>>>>>>>>> not include symlinks by design [1] when packing a
>>>>>>>>>>> package. So
>>>>>> I'm not
>>>>>>>>>> sure
>>>>>>>>>>> about how we could start including symlinks while still
>>>>>>>>>>> using
>>>> npm
>>>>>>>>>> packages
>>>>>>>>>>> as distribution method.
>>>>>>>>>>> [1] https://github.com/npm/npm/issues/3310
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Mon, Aug 18, 2014 at 9:02 AM, Ian Clelland <
>>>>>>>> iclell...@chromium.org
>>>>>>>>>>> <javascript:;>>
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> I saw this come up on Friday on IRC -- I didn't see
>>>>>>>>>>>> you in
>>>> the
>>>>>>>>> channel,
>>>>>>>>>>>> Ally, or I would have pinged you.
>>>>>>>>>>>>
>>>>>>>>>>>> It's definitely an issue with plugman, either with the
>>>>>> packaging or
>>>>>>>>> the
>>>>>>>>>>>> extraction, when there are symlinks present in the repo.
>>>>>>>>>>>>
>>>>>>>>>>>> I upgraded the severity of the CB-6092 to critical; we
>>>>>>>>>>>> need
>>>> to
>>>>>>>> find a
>>>>>>>>>>>> solution for this.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Mon, Aug 18, 2014 at 3:06 AM, Ally Ogilvie <
>>>>>> aogil...@wizcorp.jp
>>>>>>>>>>> <javascript:;>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> https://issues.apache.org/jira/browse/CB-6092
>>>>>>>>>>>>>
>>>>>>>>>>>>> Symlinks are broken when doing *cordova plugin add*
>>>> <cordova
>>>>>>>> plugin
>>>>>>>>>>>>> registry ID>. For example if a plugin makes use of
>>>>>>>>>>>>> the
>>>> custom
>>>>>>>>>> framework
>>>>>>>>>>>>> tag:
>>>>>>>>>>>>>
>>>>>>>>>>>>> *<framework** src="platforms/ios/FacebookSDK.framework"
>>>>>>>>> custom="true"
>>>>>>>>>>> />*
>>>>>>>>>>>>>
>>>>>>>>>>>>> I think this is because of the way the registry
>>>>>>>>>>>>> plugins
>>> are
>>>>>> being
>>>>>>>>>>> served
>>>>>>>>>>>> to
>>>>>>>>>>>>> plugman.
>>>>>>>>>>>>> I wanted a discussion here as this is *critical* for
>>>> plugins
>>>>>>>> using
>>>>>>>>>>> custom
>>>>>>>>>>>>> framework tags.
>>>>>>>>>>>>>
>>>>>>>>>>>>> *Desperately* need someone from Plugman / Registry
>>>>>>>>>>>>> team
>>> to
>>>>>> give
>>>>>>>>> some
>>>>>>>>>>> info
>>>>>>>>>>>>> on what's going on for the community to patch it.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Here's what the symlinks for .frameworks look like
>>>>>>>>>>>>> after
>>>>>> plugin
>>>>>>>> add
>>>>>>>>>>> from
>>>>>>>>>>>>> CPR
>>>>>>>>>>>>> http://stackoverflow.com/a/25327341
>>>>>>>>>>>>>
>>>>>>>>>>>>> Windows boxes / Git clone and symlinks info:
>>>>>>>>>>>>> http://stackoverflow.com/a/11664406
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> <http://www.wizcorp.jp/>Ally Ogilvie Lead Developer
>>>>>>>>>>>>> - MobDev. | Wizcorp Inc. <
>>>>>> http://www.wizcorp.jp/>
>>>>>>>>>>>>> ------------------------------ TECH . GAMING .
>>>>>>>>>>>>> OPEN-SOURCE WIZARDS+ 81 (0)3-4550-1448 |
>>>>>> Website
>>>>>>>>>>>>> <http://www.wizcorp.jp/> | Twitter <
>>>>>> https://twitter.com/Wizcorp>
>>>>>>>> |
>>>>>>>>>>>>> Facebook
>>>>>>>>>>>>> <http://www.facebook.com/Wizcorp> | LinkedIn
>>>>>>>>>>>>> <http://www.linkedin.com/company/wizcorp>
>>>
>>>
>>>
>>> --
>>> Carlos Santana
>>> <csantan...@gmail.com>
>>
>>
>>
>> --
>> <http://www.wizcorp.jp/>Ally Ogilvie
>> Lead Developer - MobDev. | Wizcorp Inc. <http://www.wizcorp.jp/>
>> ------------------------------
>> TECH . GAMING . OPEN-SOURCE WIZARDS+ 81 (0)3-4550-1448 | Website 
>> <http://www.wizcorp.jp/> | Twitter <https://twitter.com/Wizcorp> | Facebook 
>> <http://www.facebook.com/Wizcorp> | LinkedIn 
>> <http://www.linkedin.com/company/wizcorp>
>>  B‹KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKCB• È 
>> [œÝXœØÜšX™K  K[XZ[
> ˆ  ]‹][œÝXœØÜšX™P ÛÜ™ ݘK˜\ XÚ K›Ü™ÃB‘›Üˆ Y  ] [Û˜[  ÛÛ[X[™ Ë  K[XZ[
> ˆ  ]‹Z [   ÛÜ™ ݘK˜\ XÚ K›Ü™ÃB
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org
> For additional commands, e-mail: dev-h...@cordova.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org
For additional commands, e-mail: dev-h...@cordova.apache.org

Reply via email to