>
> Two additional questions (not related to wx, only to mac):
>>
>> 1) The .app is getting made (it seems to me) in the wrong location: It
>> should be made in the "dist" directory (as it is a distributable);
>> however, it is being made one directory ABOVE the project directory so I
>> do the following after the build:
>> mv ../PROJECT.app dist/PROJECT.app
>>
>
> This is a bug of the BUNDLE() class in Build.py. More generically, all
> classes exported to the .spec usually allow the spec itself to specify the
> full path of the resulting file (or directory, in this case), so BUNDLE()
> should probably be modified to receive the directory name as argument, and
> the spec should then be generated so to use os.path.join("dist",
> "foobar.app").


Ok -- changing the BUNDLE() class was very easy. (attached patch).
If you accept that it would mean (for now) that page
http://www.pyinstaller.org/wiki/MacOsCompatibility should change the code at
the bottom to:

   -

   import sysif sys.platform.startswith("darwin"):
       app = BUNDLE(exe,
                    *name**=*os.path.join('dist', 'NAME.app'),
                    version=version)


 I haven't made any attempt to adapt to previous use of the appname keyword
argument as specified currently on that page.


 2) I'm keen to use the onedir, as that makes some things easier (and
>> onefile brings no benefits that I can see).
>> At present I'm just moving dist/PROJECT/* to
>> dist/PROJECT.app/Contents/MacOS/
>> but it would be better to try to fix the situation for MacOS - shall I
>> have a look and see if I can solve #155 in the source, following your
>> comments?
>>
>
> 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).

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'),
          ...

and platform variability, like:
    if *sys.platform.startswith("darwin")*:
        app = BUNDLE(exe,
        ...

It seems to me it might be better to put as much of the platform variability
into the pyinstaller code itself...

-T

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

Attachment: bundle_name_patch.patch
Description: Binary data

Reply via email to