[Pythonmac-SIG] bdist_mpkg Package Names

Nick Matsakis matsakis at mit.edu
Mon Jun 6 22:10:40 CEST 2005


In building packages, bdist_mpkg must pick a name and bundle identifier
for the package, e.g. building appscript results in:

name: appscript-purelib-0.12.0-py2.3-macosx10.3
bundleIdentifier: org.pythonmac.appscript-purelib-py2.3-macosx10.3

These are used by the installer to determine whether to do an upgrade or
clean installation. As I understand it, by putting all those version
numbers in the name, it becomes difficult to force an "update" rather than
a clean install.  As I understand it, 10.3 uses the package name to
determine whether to install or update, while 10.4 uses some combination
of the name and bundle identifier. See list post referenced at the end for
more details.

Suppose you have a package "package" of a certain version number and you
install it on your system with bdist.  Then, suppose you have a new
version "package upgrade" which may or may not have been built on the same
OS version as your original package.  Then I see the following
possibilities:

10.3 -> package -> package upgrade (built on same OS as before)
   won't update, because name contains package version number

10.3 -> package -> package upgrade (built on different OS as before)
   won't update, because name contains package version number

10.3 -> package -> 10.4 upgrade -> package upgrade (same OS as before)
   won't update, because identifier contains OS version number

10.3 -> package -> 10.4 upgrade -> package upgrade (different OS as before)
   won't update, because identifier contains OS version number

10.4 -> package -> package upgrade (built on same OS as before)
   *will* update, because identifier _doesn't_ contain package version number

10.4 -> package -> package upgrade (built on different OS)
   won't update, because identifier contains OS version number

In general, not doing an update isn't so bad.  It will still install the
files.  However, it could cause problems if files move around or the
presence of files will cause different behaviors.

It seems to me that bdist_mkpkg should just include the python version
number and that's it (no version number for the additions or OS).

Nick Matsakis

For further reference on how 10.4's installer works, see:

http://lists.apple.com/archives/installer-dev/2005/May/msg00013.html


More information about the Pythonmac-SIG mailing list