>
> Thanks. I have applied the (amended) patch in [837]. I have also updated
> the wiki page.


Great!

>    Sure! It really should not be difficult. Have a look at how
>>    COLLECT() copies files around, and do something like that for BUNDLE().
>>
>>
>> Ok... I can see how that works in the code. I'm wondering what the spec
>> file should look like... Won't the BUNDLE call end up looking almost
>> identical to the COLLECT call?
>>
>> Maybe it would be better to pass the result of the COLLECT call to the
>> BUNDLE call? Or perhaps make the BUNDLE function a superset of the
>> COLLECT functionality (but just degrading to COLLECT on other platforms).
>>
>
> Well, from a semantic point of view, BUNDLE() should do more than
> COLLECT(): not only it would create any special file required (.plist, etc.)
> but it would also know the internal structure of the BUNDLE(), so to be able
> to move files into the correct subdirectory.
>
> So, I would go with a totally different class (just like it is now) and
> then maybe you can internally reuse some code between the two.
>
>
>  When I look at the spec file generated for the Mac at present there is
>> some platform specificity, like:
>>     exe = EXE(pyz,
>>           a.scripts,
>>           exclude_binaries=1,
>>           name=os.path.join('build*/pyi.darwin/small_app'*, 'small_app'),
>>           ...
>>
>
> Yes, the platform name should be removed. I think the best solution is to
> have Makespec.py generate something like "pyi.$PLATFORM" and then substitute
> that within EXE().
>
> Also, on Windows, Makespec generates "small_app.exe". That's wrong as well:
> the extension should be appended later. This modification needs to be
> backward compatible with existing spec files, so it should first check if
> there's already an .exe extension just in case.
>
>
>  and platform variability, like:
>>     if *sys.platform.startswith("darwin")*:
>>         app = BUNDLE(exe,
>>         ...
>>
>
> I was planning to have BUNDLE() to be a no-op on the other platforms. I
> would even rename it as MACBUNDLE(), to make it more clear.
>
>
It seems like the BUNDLE/MACBUNDLE is a superset of the functionality of
COLLECT... and will require all the definitions (in the spec file) that
COLLECT does. So, focussing on a cross-platform spec file, we could do one
of the following:

1) pass the result of COLLECT to BUNDLE/MACBUNDLE
2) have an extra parameter to COLLECT which contains the macbundling
information
3) have a single BUNDLE call (which acts as a simple COLLECT on non-mac
platforms) --> this seems weird
4) have two independent calls COLLECT (which is irrelevant on the mac) and
MACBUNDLE (that only works on the mac) <-- this seems wordy and likely to be
duplicating spec declarations in an unhealthy way.

On my own, I'd go probably for the first one, but would like your guidance.

best Tim

-- 
You received this message because you are subscribed to the Google Groups 
"PyInstaller" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/pyinstaller?hl=en.

Reply via email to