]> granicus.if.org Git - python/commitdiff
Remove all owner resources from template, and if no owner resource contained in
authorJack Jansen <jack.jansen@cwi.nl>
Wed, 17 Mar 1999 22:57:55 +0000 (22:57 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Wed, 17 Mar 1999 22:57:55 +0000 (22:57 +0000)
applet-specific rsrc file we add a "Pyta" owner resource. Owner resources have both id=0 and name="Owner resource" (is this always true?).

Mac/Lib/buildtools.py

index badd8a1f6653413bebe4ad843d16982f8f328167..ba1dd647237a9420f19bc4e6019678ff0a755fc5 100644 (file)
@@ -29,9 +29,12 @@ RESTYPE = 'PYC '
 RESNAME = '__main__'
 
 # A resource with this name sets the "owner" (creator) of the destination
-# XXXX Should look for id=0
+# It should also have ID=0. Either of these alone is not enough.
 OWNERNAME = "owner resource"
 
+# Default applet creator code
+DEFAULT_APPLET_CREATOR="Pyta"
+
 # OpenResFile mode parameters
 READ = 1
 WRITE = 2
@@ -157,27 +160,34 @@ def process_common(template, progress, code, rsrcname, destname, is_update, copy
                Res.CloseResFile(input)
        
        # Check which resource-types we should not copy from the template
-       skiptypes = ['vers']
+       skiptypes = []
+       if 'vers' in typesfound: skiptypes.append('vers')
        if 'SIZE' in typesfound: skiptypes.append('SIZE')
        if 'BNDL' in typesfound: skiptypes = skiptypes + ['BNDL', 'FREF', 'icl4', 
                        'icl8', 'ics4', 'ics8', 'ICN#', 'ics#']
        if not copy_codefragment:
                skiptypes.append('cfrg')
-       skipowner = (ownertype <> None)
+##     skipowner = (ownertype <> None)
        
        # Copy the resources from the template
        
        input = Res.FSpOpenResFile(template_fss, READ)
-       dummy, tmplowner = copyres(input, output, skiptypes, skipowner, progress)
-       if ownertype == None:
-               ownertype = tmplowner
+       dummy, tmplowner = copyres(input, output, skiptypes, 1, progress)
+               
        Res.CloseResFile(input)
-       if ownertype == None:
-               raise BuildError, "No owner resource found in either resource file or template"
-       
+##     if ownertype == None:
+##             raise BuildError, "No owner resource found in either resource file or template"
        # Make sure we're manipulating the output resource file now
        
        Res.UseResFile(output)
+
+       if ownertype == None:
+               # No owner resource in the template. We have skipped the
+               # Python owner resource, so we have to add our own. The relevant
+               # bundle stuff is already included in the interpret/applet template.
+               newres = Res.Resource('\0')
+               newres.AddResource(DEFAULT_APPLET_CREATOR, 0, "Owner resource")
+               ownertype = DEFAULT_APPLET_CREATOR
        
        if code:
                # Delete any existing 'PYC ' resource named __main__
@@ -228,7 +238,7 @@ def process_common(template, progress, code, rsrcname, destname, is_update, copy
 
 
 # Copy resources between two resource file descriptors.
-# skip a resource named '__main__' or (if skipowner is set) 'Owner resource'.
+# skip a resource named '__main__' or (if skipowner is set) with ID zero.
 # Also skip resources with a type listed in skiptypes.
 #
 def copyres(input, output, skiptypes, skipowner, progress=None):
@@ -248,10 +258,8 @@ def copyres(input, output, skiptypes, skipowner, progress=None):
                        res = Res.Get1IndResource(type, ires)
                        id, type, name = res.GetResInfo()
                        lcname = string.lower(name)
-##                     if (type, lcname) == (RESTYPE, RESNAME):
-##                             continue # Don't copy __main__ from template
-                       # XXXX should look for id=0
-                       if lcname == OWNERNAME:
+
+                       if lcname == OWNERNAME and id == 0:
                                if skipowner:
                                        continue # Skip this one
                                else: