py2app 0.4.0 ------------ py2app 0.4.0 is a minor feature enhancements release. Functional changes: - Support for CoreData mapping models (introduced in Mac OS X 10.5) - Support for python packages that are stored in zipfiles (such as zip_safe python eggs). Bug fixes: - Fix incorrect symlink target creation with an alias bundle that has included frameworks. py2app 0.3.6 ------------ py2app 0.3.6 is a minor bugfix release. Bug fixes: - Ensure that custom icons are copied into the output bundle - Solve compatibility problem with some haxies and inputmanager plugins py2app 0.3.5 ------------ py2app 0.3.5 is a minor bugfix release. Bug fixes: - Resolve disable_linecache issue - Fix Info.plist and Python path for plugins py2app 0.3.4 ------------ py2app 0.3.4 is a minor bugfix release. Bug fixes: - Fixed a typo in the py2applet script - Removed some, but not all, compiler warnings from the bundle template (which is still probably broken anyway) py2app 0.3.3 ------------ py2app 0.3.3 is a minor bugfix release. Bug Fixes: - Fixed a typo in the argv emulation code - Removed the unnecessary py2app.install hack (setuptools does that already) py2app 0.3.2 ------------ py2app 0.3.2 is a major bugfix release. Functional changes: - Massively updated documentation - New prefer-ppc option - New recipes: numpy, scipy, matplotlib - Updated py2applet script to take options, provide --make-setup Bug Fixes: - No longer defaults to LSPrefersPPC - Replaced stdlib usage of argvemulator to inline version for i386 compatibility py2app 0.3.1 ------------ py2app 0.3.1 is a minor bugfix release. Functional changes: - New EggInstaller example Bug Fixes: - Now ensures that the executable is +x (when installed from egg this may not be the case) py2app 0.3.0 ------------ py2app 0.3.0 is a major feature enhancements release. Functional changes: - New --xref (-x) option similar to py2exe's that produces a list of modules and their interdependencies as a HTML file - sys.executable now points to a regular Python interpreter alongside the regular executable, so spawning sub-interpreters should work much more reliably - Application bootstrap now detects paths containing ":" and will provide a "friendly" error message instead of just crashing . - Application bootstrap now sets PYTHONHOME instead of a large PYTHONPATH - Application bootstrap rewritten in C that links to CoreFoundation and Cocoa dynamically as needed, so it doesn't imply any particular version of the runtime. - Documentation and examples changed to use setuptools instead of distutils.core, which removes the need for the py2app import - Refactored to use setuptools, distributed as an egg. - macholib, bdist_mpkg, modulegraph, and altgraph are now separately maintained packages available on PyPI as eggs - macholib now supports little endian architectures, 64-bit Mach-O headers, and reading/writing of multiple headers per file (fat / universal binaries) py2app 0.2.1 ------------ py2app 0.2.1 is a minor bug fix release. Bug Fixes: - macholib.util.in_system_path understands SDKs now - DYLD_LIBRARY_PATH searching is fixed - Frameworks and excludes options should work again. py2app 0.2.0 ------------ py2app 0.2.0 is a minor bug fix release. Functional changes: - New datamodels option to support CoreData. Compiles .xcdatamodel files and places them in the Resources dir (as .mom). - New use-pythonpath option. The py2app application bootstrap will no longer use entries from PYTHONPATH unless this option is used. - py2app now persists information about the build environment (python version, executable, build style, etc.) in the Info.plist and will clean the executable before rebuilding if anything at all has changed. - bdist_mpkg now builds packages with the full platform info, so that installing a package for one platform combination will not look like an upgrade to another platform combination. Bug Fixes: - Fixed a bug in standalone building, where a rebuild could cause an unlaunchable executable. - Plugin bootstrap should compile/link correctly with gcc 4. - Plugin bootstrap no longer sets PYTHONHOME and will restore PYTHONPATH after initialization. - Plugin bootstrap swaps out thread state upon plug-in load if it is the first to initialize Python. This fixes threading issues. py2app 0.1.9 ------------ py2app 0.1.9 is a minor bug fix release. Bugs fixed: - bdist_mpkg now builds zip files that are correctly unzipped by all known tools. - The behavior of the bootstrap has changed slightly such that ``__file__`` should now point to your main script, rather than the bootstrap. The main script has also moved to ``Resources``, from ``Resources/Python``, so that ``__file__`` relative resource paths should still work. py2app 0.1.8 ------------ py2app 0.1.8 is a major enhancements release: Bugs fixed: - Symlinks in included frameworks should be preserved correctly (fixes Tcl/Tk) - Fixes some minor issues with alias bundles - Removed implicit SpiderImagePlugin -> ImageTk reference in PIL recipe - The ``--optimize`` option should work now - ``weakref`` is now included by default - ``anydbm``'s dynamic dependencies are now in the standard implies list - Errors on app launch are brought to the front so the user does not miss them - bdist_mpkg now compatible with pychecker (data_files had issues) Options changed: - deprecated ``--strip``, it is now on by default - new ``--no-strip`` option to turn off stripping of executables New features: - Looks for a hacked version of the PyOpenGL __init__.py so that it doesn't have to include the whole package in order to get at the stupid version file. - New ``loader_files`` key that a recipe can return in order to ensure that non-code ends up in the .zip (the pygame recipe uses this) - Now scans all files in the bundle and normalizes Mach-O load commands, not just extensions. This helps out when using the ``--package`` option, when including frameworks that have plugins, etc. - An embedded Python interpreter is now included in the executable bundle (``sys.executable`` points to it), this currently only works for framework builds of Python - New ``macho_standalone`` tool - New ``macho_find`` tool - Major enhancements to the way plugins are built - bdist_mpkg now has a ``--zipdist`` option to build zip files from the built package - The bdist_mpkg "Installed to:" description is now based on the package install root, rather than the build root py2app 0.1.7 ------------ `py2app`_ 0.1.7 is a bug fix release: - The ``bdist_mpkg`` script will now set up sys.path properly, for setup scripts that require local imports. - ``bdist_mpkg`` will now correctly accept ``ReadMe``, ``License``, ``Welcome``, and ``background`` files by parameter. - ``bdist_mpkg`` can now display a custom background again (0.1.6 broke this). - ``bdist_mpkg`` now accepts a ``build-base=`` argument, to put build files in an alternate location. - ``py2app`` will now accept main scripts with a ``.pyw`` extension. - ``py2app``'s not_stdlib_filter will now ignore a ``site-python`` directory as well as ``site-packages``. - ``py2app``'s plugin bundle template no longer displays GUI dialogs by default, but still links to ``AppKit``. - ``py2app`` now ensures that the directory of the main script is now added to ``sys.path`` when scanning modules. - The ``py2app`` build command has been refactored such that it would be easier to change its behavior by subclassing. - ``py2app`` alias bundles can now cope with editors that do atomic saves (write new file, swap names with existing file). - ``macholib`` now has minimal support for fat binaries. It still assumes big endian and will not make any changes to a little endian header. - Add a warning message when using the ``install`` command rather than installing from a package. - New ``simple/structured`` example that shows how you could package an application that is organized into several folders. - New ``PyObjC/pbplugin`` Xcode Plug-In example. py2app 0.1.6 ------------ Since I have been slacking and the last announcement was for 0.1.4, here are the changes for the soft-launched releases 0.1.5 and 0.1.6: `py2app`_ 0.1.6 was a major feature enhancements release: - ``py2applet`` and ``bdist_mpkg`` scripts have been moved to Python modules so that the functionality can be shared with the tools. - Generic graph-related functionality from ``py2app`` was moved to ``altgraph.ObjectGraph`` and ``altgraph.GraphUtil``. - ``bdist_mpkg`` now outputs more specific plist requirements (for future compatibility). - ``py2app`` can now create plugin bundles (MH_BUNDLE) as well as executables. New recipe for supporting extensions built with `sip`_, such as `PyQt`_. Note that due to the way that `sip`_ works, when one sip-based extension is used, *all* sip-based extensions are included in your application. In practice, this means anything provided by `Riverbank`_, I don't think anyone else uses `sip`_ (publicly). - New recipe for `PyOpenGL`_. This is very naive and simply includes the whole thing, rather than trying to monkeypatch their brain-dead version acquisition routine in ``__init__``. - Bootstrap now sets ``ARGVZERO`` and ``EXECUTABLEPATH`` environment variables, corresponding to the ``argv[0]`` and the ``_NSGetExecutablePath(...)`` that the bundle saw. This is only really useful if you need to relaunch your own application. - More correct ``dyld`` search behavior. - Refactored ``macholib`` to use ``altgraph``, can now generate `GraphViz`_ graphs and more complex analysis of dependencies can be done. - ``macholib`` was refactored to be easier to maintain, and the structure handling has been optimized a bit. - The few tests that there are were refactored in `py.test`_ style. - New `PyQt`_ example. - New `PyOpenGL`_ example. See also: - http://mail.python.org/pipermail/pythonmac-sig/2004-December/012272.html .. _`py.test`: http://codespeak.net/py/current/doc/test.html .. _`PyOpenGL`: http://pyopengl.sourceforge.net/ .. _`Riverbank`: http://www.riverbankcomputing.co.uk/ .. _`sip`: http://www.riverbankcomputing.co.uk/sip/index.php .. _`PyQt`: http://www.riverbankcomputing.co.uk/pyqt/index.php .. _`docutils`: http://docutils.sf.net/ .. _`setuptools`: http://cvs.eby-sarna.com/PEAK/setuptools/ py2app 0.1.5 ------------ `py2app`_ 0.1.5 is a major feature enhancements release: - Added a ``bdist_mpkg`` distutils extension, for creating Installer an metapackage from any distutils script. - Includes PackageInstaller tool - bdist_mpkg script - setup.py enhancements to support bdist_mpkg functionality - Added a ``PackageInstaller`` tool, a droplet that performs the same function as the ``bdist_mpkg`` script. - Create a custom ``bdist_mpkg`` subclass for `py2app`_'s setup script. - Source package now includes `PJE`_'s `setuptools`_ extension to distutils. - Added lots of metadata to the setup script. - ``py2app.modulegraph`` is now a top-level package, ``modulegraph``. - ``py2app.find_modules`` is now ``modulegraph.find_modules``. - Should now correctly handle paths (and application names) with unicode characters in them. - New ``--strip`` option for ``py2app`` build command, strips all Mach-O files in output application bundle. - New ``--bdist-base=`` option for ``py2app`` build command, allows an alternate build directory to be specified. - New `docutils`_ recipe. Support for non-framework Python, such as the one provided by `DarwinPorts`_. See also: - http://mail.python.org/pipermail/pythonmac-sig/2004-October/011933.html .. _`py.test`: http://codespeak.net/py/current/doc/test.html .. _`GraphViz`: http://www.pixelglow.com/graphviz/ .. _`PyOpenGL`: http://pyopengl.sourceforge.net/ .. _`Riverbank`: http://www.riverbankcomputing.co.uk/ .. _`sip`: http://www.riverbankcomputing.co.uk/sip/index.php .. _`PyQt`: http://www.riverbankcomputing.co.uk/pyqt/index.php .. _`DarwinPorts`: http://darwinports.opendarwin.org/ .. _`docutils`: http://docutils.sourceforge.net/ .. _`setuptools`: http://cvs.eby-sarna.com/PEAK/setuptools/ .. _`PJE`: http://dirtSimple.org/ .. _`PyObjC`: http://pyobjc.sourceforge.net/ py2app 0.1.4 ------------ `py2app`_ 0.1.4 is a minor bugfix release: - The ``altgraph`` from 0.1.3 had a pretty nasty bug in it that prevented filtering from working properly, so I fixed it and bumped to 0.1.4. py2app 0.1.3 ------------ `py2app`_ 0.1.3 is a refactoring and new features release: - ``altgraph``, my fork of Istvan Albert's `graphlib`_, is now part of the distribution - ``py2app.modulegraph`` has been refactored to use ``altgraph`` - `py2app`_ can now create `GraphViz`_ DOT graphs with the ``-g`` option (`TinyTinyEdit example`_) - Moved the filter stack into ``py2app.modulegraph`` - Fixed a bug that may have been in 0.1.2 where explicitly included packages would not be scanned by ``macholib`` - ``py2app.apptemplate`` now contains a stripped down ``site`` module as opposed to a ``sitecustomize`` - Alias builds are now the only ones that contain the system and user ``site-packages`` directory in ``sys.path`` - The ``pydoc`` recipe has been beefed up to also exclude ``BaseHTTPServer``, etc. Known issues: - Commands marked with XXX in the help are not implemented - Includes *all* files from packages, it should be smart enough to strip unused .py/.pyc/.pyo files (to save space, depending on which optimization flag is used) - ``macholib`` should be refactored to use ``altgraph`` - ``py2app.build_app`` and ``py2app.modulegraph`` should be refactored to search for dependencies on a per-application basis .. _`graphlib`: http://www.personal.psu.edu/staff/i/u/iua1/python/graphlib/html/ .. _`GraphViz`: http://www.research.att.com/sw/tools/graphviz/ .. _`TinyTinyEdit example`: http://undefined.org/~bob/TinyTinyEdit.pdf py2app 0.1.2 ------------ `py2app`_ 0.2 is primarily a bugfix release: - The encodings package now gets included in the zip file (saves space) - A copy of the Python interpreter is not included anymore in standalone builds (saves space) - The executable bootstrap is now stripped by default (saves a little space) - ``sys.argv`` is set correctly now, it used to point to the executable, now it points to the boot script. This should enhance compatibility with some applications. - Adds an "Alias" feature to modulegraph, so that ``sys.modules`` craziness such as ``wxPython.wx -> wx`` can be accomodated (this particular craziness is also now handled by default) - A ``sys.path`` alternative may be passed to ``find_modules`` now, though this is not used yet - The ``Command`` instance is now passed to recipes instead of the ``Distribution`` instance (though no recipes currently use either) - The post-filtering of modules and extensions is now generalized into a stack and can be modified by recipes - A `wxPython`_ example demonstrating how to package `wxGlade`_ has been added (this is a good example of how to write your own recipe, and how to deal with complex applications that mix code and data files) - ``PyRuntimeLocations`` is now set to (only) the location of the current interpreter's ``Python.framework`` for alias and semi-standalone build modes (enhances compatibility with extensions built with an unpatched Makefile with Mac OS X 10.3's Python 2.3.0) Known issues: - Includes *all* files from packages, it should be smart enough to strip unused .py/.pyc/.pyo files (to save space, depending on which optimization flag is used). .. _`wxGlade`: http://wxglade.sourceforge.net/ py2app 0.1.1 ------------ `py2app`_ 0.1.1 is primarily a bugfix release: - Several problems related to Mac OS X 10.2 compatibility and standalone building have been resolved - Scripts that are not in the same directory as setup.py now work - A new recipe has been added that removes the pydoc -> Tkinter dependency - A recipe has been added for `py2app`_ itself - a `wxPython`_ example (superdoodle) has been added. Demonstrates not only how easy it is (finally!) to bundle `wxPython`_ applications, but also how one setup.py can deal with both `py2exe`_ and `py2app`_. - A new experimental tool, py2applet, has been added. Once you've built it (``python setup.py py2app``, of course), you should be able to build simple applications simply by dragging your main script and optionally any packages, data files, Info.plist and icon it needs. Known issues: - Includes *all* files from packages, it should be smart enough to strip unused .py/.pyc/.pyo files (to save space, depending on which optimization flag is used). - The default ``PyRuntimeLocations`` can cause problems on machines that have a /Library/Frameworks/Python.framework installed. Workaround is to set a plist that has the following key: ``PyRuntimeLocations=['/System/Library/Frameworks/Python.framework/Versions/2.3/Python']`` (this will be resolved soon) py2app 0.1 ---------- (first public release) `py2app`_ is the bundlebuilder replacement we've all been waiting for. It is implemented as a distutils command, similar to `py2exe`_. .. _`wxPython`: http://www.wxpython.org/ .. _`py2app`: http://undefined.org/python/#py2app .. _`py2exe`: http://starship.python.net/crew/theller/py2exe/