This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: bundlebuilder standalone app doesn't fully quit
Type: Stage:
Components: macOS Versions: Python 2.3
process
Status: closed Resolution: wont fix
Dependencies: Superseder:
Assigned To: jackjansen Nosy List: bob.ippolito, jackjansen, reowen
Priority: normal Keywords:

Created on 2004-02-02 18:08 by reowen, last changed 2022-04-11 14:56 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
buildscripts.zip reowen, 2004-02-02 18:08 buildtui.sh and BuildMacTUI.py; the former calls the latter to build the app
Messages (11)
msg19885 - (view) Author: Russell Owen (reowen) Date: 2004-02-02 18:08
I used bundlebuilder to create a fully standalone app (well, it fails on Jaguar, alas, but the python framework is inside the app). It works fine, but when I quit the app and try to delete it I get the following message from Finder and the item "python" in the .app is not deleted:

The operation cannot be completed because the item "Python" is in use.

The only way I've found to delete the app is to REBOOT. Simply logging out and in again does not do the job (which I find quite startling).

I worked around the problem by making the app semi_standalone, but would rather have it fully self-contained 

It's a huge app; I've not tried to break it down, but some things to consider:
- it uses networking (though I need not make a connection to cause this problem)
- it uses Tkinter (and yes the Tcl and Tk frameworks were installed in the app along with the Python framework)
- it uses a few threads for networking (again, though, the problem occurs even if no connection is ever made, suggesting that no threads have to be started to cause the problem)


-- Russell

I have attached the two code files I use to build the application (combined in one zip archive).
msg19886 - (view) Author: Russell Owen (reowen) Date: 2004-02-02 18:10
Logged In: YES 
user_id=431773

Note: the included BuildMacTUI.py uses semi_standalone = True, but the problem only occurs if I use standalone = True instead. Sorry for the potential confusion.
msg19887 - (view) Author: Jack Jansen (jackjansen) * (Python committer) Date: 2004-02-06 23:17
Logged In: YES 
user_id=45365

Russell,
could you try using "ps" (probably "ps -x", both before running the .app 
and after running it) to check that the application has indeed fully exited? 
The fact that you mention there are multiple threads somehow suggests 
that there is something still using that Python...
msg19888 - (view) Author: Bob Ippolito (bob.ippolito) * (Python committer) Date: 2004-02-13 04:55
Logged In: YES 
user_id=139309

Was the standalone bundle created on Jaguar or Panther?
msg19889 - (view) Author: Russell Owen (reowen) Date: 2004-02-25 19:53
Logged In: YES 
user_id=431773

I build the applications on Panther (10.3.2 with all but the 2004-02-23 security patch installed).

I checked ps -x before running the app and then again after I did all this: ran, quit and trashed the app and (unsuccessfully, as per the bug report) to empty the trash. Unfortunately there was NO change (aside from CPU time) in the ps -x listing from before to after -- same PIDs and names (and of course the same # of processes). I saved the output in case anyone wants a copy. I only checked by eye so I might have missed something very subtle, but I doubt it.

Any other tests you can think of? I'm really puzzled.
msg19890 - (view) Author: Jack Jansen (jackjansen) * (Python committer) Date: 2004-02-25 20:26
Logged In: YES 
user_id=45365

Hmm. Let's first try and find out what else can be meant by "in use". It is 
probably either a filesystem-related thing or a process/framework-
related thing.

First: could you check both the console log file and the system log file 
(both with Utilities->Console) for any clues? Probably best to open both, 
then run the app, then try to delete it, and see whether anything shows 
up.

Next thing to try is good old unix "rm -r" on the app. Does that work or 
not?

If rm -r works then I think I would proceed by "rm -r"ing specific parts of 
the app, and see whether there's any part that, when removed, will 
make empty trash continue. 
msg19891 - (view) Author: Russell Owen (reowen) Date: 2004-02-25 22:33
Logged In: YES 
user_id=431773

First of all, after trying to empty the trash (and saying "Continue" when it complains that Python is in use), all that is left of the application bundle is:
Contents/Frameworks/Python.framework/Versions/2.3/Python

I opened the system.log and console.log and watched while I started and stopped the application and then deleted as much of it as I could. Absolutely nothing showed up in system.log. The console showed: "running sitecustomize.py" as usual on startup and then 0 (the digit zero) on quit. No messages during the partial emptying of trash.

Next I tried rm -R. It did empty the trash. I hope it doesn't cause any problems (nothing so far, but I just did it a minute ago).

Any other ideas? (Trying rm on a specific file seems sort of pointless because I think I already know which single file is tied up.)
msg19892 - (view) Author: Bob Ippolito (bob.ippolito) * (Python committer) Date: 2004-02-25 22:40
Logged In: YES 
user_id=139309

I would like to see the output of "ls -l" and "otool -L" on that file..

This is a Python framework build built by yourself, correct?  If you are 
running --standalone w/ a "/System" Python then you are not really 
doing anything useful (or supported, etc.) in the first place.
msg19893 - (view) Author: Russell Owen (reowen) Date: 2004-02-25 23:02
Logged In: YES 
user_id=431773

% pwd
/Users/rowen/PythonRO/testbuild/TUI 0.84.app/Contents/Frameworks/Python.framework/Versions/2.3
% ls -l Python 
-rwxr-xr-x  1 rowen  staff  1088276 19 Feb 09:21 Python
% otool -L Python
Python:
        /System/Library/Frameworks/Python.framework/Versions/2.3/Python (compatibility version 2.3.0, current version 2.3.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 71.0.0)
        /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 16.0.0)
        /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 496.0.0)

This data was taken on a fresh build that has not yet been run. If that makes any difference I can run the app and trash it, so only this file is left. But I'd rather not generate undeletable files unnecessarily. Anyway, I hope it helps.

This is NOT a Python built by myself. I'm using the standard Python framework that comes with Panther (in /System).

Yes it's not stunningly useful to build a fully standalone app with Panther. I originally did it because I naively thought it would run under Jaguar. I stumbled across the bug at that time and reported it.

I can still imagine uses for doing a full standalone build (if they'll be compatible with later versions of MacOS X). Mainly Python has not been 100% backwards compatible (it's been good but not perfect). I had a few changes to make before my app would run under Python 2.3. A fully standalone build would eliminate this issue.

Meanwhile, I use semi_standlone for my real releases. Partly because of this bug and partly because I'm not sure it's worth the extra app size to guard against future problems. At least for now the app is fully maintained. At some future date it could well become an issue.
msg19894 - (view) Author: Bob Ippolito (bob.ippolito) * (Python committer) Date: 2004-02-25 23:31
Logged In: YES 
user_id=139309

The version of Python that comes with OS X 10.3 is **NOT** future or 
backwards compatible (even with --semi-standalone!).  There are a lot of 
reasons for this, but I do not wish to explain them.

10.4's /System Python will probably be **future** compatible (assuming 
10.5 includes the same major python version), but with --semi-
standalone and not --standalone.

If you want future compatibility right now you **must** use a non-Apple 
compiled Python with --standalone.

If you want backwards compatibility, you can't have it (by default).  

Technically, you can (in theory) set up an elaborate environment such 
that you can compile Python and any extensions you need from 10.3 that 
would work on 10.2, but this is *not the default* and to my knowledge 
*nobody has tried it*.  Currently, the best solution is to have access to a 
10.2 machine for compiling and bundling Python and its extensions.  I 
don't consider this backwards compatibility though, because in either 
case you area compiling/building against OS X 10.2, whether or not you 
happen to be running it at the time.

Surely this is not what you want to hear, but it is what it is.  Sometime in 
the future, hopefully I or someone else will get this elaborate cross-
compiling environment going and write up a tutorial.  As for me, I'm FAR 
more interested in fixing current and future problems than spinning my 
wheels catering to people who can't/won't upgrade.
msg19895 - (view) Author: Jack Jansen (jackjansen) * (Python committer) Date: 2004-06-03 21:11
Logged In: YES 
user_id=45365

I'm going to close this bug: (a) no progress was made for 4 months, (b) 
it's pretty esoteric and (c) doing standalone buildapplication on Panther is 
useless anyway.

Feel free to reopen if you don't agree, though...
History
Date User Action Args
2022-04-11 14:56:02adminsetgithub: 39893
2004-02-02 18:08:47reowencreate