Remove timestamp based filelist file for tracking Python dependencies

Each Python module will generate a zip file containing source & data
files. The Python binary will collect all its dependencies and use
merge_zips to merge each zip file to create a final .par file.

Test: m -j checkbuild && real examples:
Bug: b/70568913

Change-Id: I9ff232d461d33e1c06026e7dcb5b124bf02c3ce5
diff --git a/python/binary.go b/python/binary.go
index 0314edb..4135dfe 100644
--- a/python/binary.go
+++ b/python/binary.go
@@ -18,8 +18,6 @@
 
 import (
 	"fmt"
-	"path/filepath"
-	"strings"
 
 	"android/soong/android"
 )
@@ -80,89 +78,44 @@
 	return []interface{}{&binary.binaryProperties}
 }
 
-func (binary *binaryDecorator) bootstrap(ctx android.ModuleContext, actual_version string,
-	embedded_launcher bool, srcsPathMappings []pathMapping, parSpec parSpec,
-	depsPyRunfiles []string, depsParSpecs []parSpec) android.OptionalPath {
-	// no Python source file for compiling .par file.
-	if len(srcsPathMappings) == 0 {
-		return android.OptionalPath{}
-	}
-
-	// the runfiles packages needs to be populated with "__init__.py".
-	newPyPkgs := []string{}
-	// the set to de-duplicate the new Python packages above.
-	newPyPkgSet := make(map[string]bool)
-	// the runfiles dirs have been treated as packages.
-	existingPyPkgSet := make(map[string]bool)
-
-	wholePyRunfiles := []string{}
-	for _, path := range srcsPathMappings {
-		wholePyRunfiles = append(wholePyRunfiles, path.dest)
-	}
-	wholePyRunfiles = append(wholePyRunfiles, depsPyRunfiles...)
-
-	// find all the runfiles dirs which have been treated as packages.
-	for _, path := range wholePyRunfiles {
-		if filepath.Base(path) != initFileName {
-			continue
-		}
-		existingPyPkg := PathBeforeLastSlash(path)
-		if _, found := existingPyPkgSet[existingPyPkg]; found {
-			panic(fmt.Errorf("found init file path duplicates: %q for module: %q.",
-				path, ctx.ModuleName()))
-		} else {
-			existingPyPkgSet[existingPyPkg] = true
-		}
-		parentPath := PathBeforeLastSlash(existingPyPkg)
-		populateNewPyPkgs(parentPath, existingPyPkgSet, newPyPkgSet, &newPyPkgs)
-	}
-
-	// create new packages under runfiles tree.
-	for _, path := range wholePyRunfiles {
-		if filepath.Base(path) == initFileName {
-			continue
-		}
-		parentPath := PathBeforeLastSlash(path)
-		populateNewPyPkgs(parentPath, existingPyPkgSet, newPyPkgSet, &newPyPkgs)
-	}
+func (binary *binaryDecorator) bootstrap(ctx android.ModuleContext, actualVersion string,
+	embeddedLauncher bool, srcsPathMappings []pathMapping, srcsZip android.Path,
+	depsSrcsZips android.Paths) android.OptionalPath {
 
 	main := binary.getPyMainFile(ctx, srcsPathMappings)
-	if main == "" {
-		return android.OptionalPath{}
-	}
 
-	var launcher_path android.Path
-	if embedded_launcher {
+	var launcherPath android.Path
+	if embeddedLauncher {
 		ctx.VisitDirectDepsWithTag(launcherTag, func(m android.Module) {
 			if provider, ok := m.(IntermPathProvider); ok {
-				if launcher_path != nil {
+				if launcherPath != nil {
 					panic(fmt.Errorf("launcher path was found before: %q",
-						launcher_path))
+						launcherPath))
 				}
-				launcher_path = provider.IntermPathForModuleOut().Path()
+				launcherPath = provider.IntermPathForModuleOut().Path()
 			}
 		})
 	}
 
-	binFile := registerBuildActionForParFile(ctx, embedded_launcher, launcher_path,
-		binary.getHostInterpreterName(ctx, actual_version),
-		main, binary.getStem(ctx), newPyPkgs, append(depsParSpecs, parSpec))
+	binFile := registerBuildActionForParFile(ctx, embeddedLauncher, launcherPath,
+		binary.getHostInterpreterName(ctx, actualVersion),
+		main, binary.getStem(ctx), append(android.Paths{srcsZip}, depsSrcsZips...))
 
 	return android.OptionalPathForPath(binFile)
 }
 
 // get host interpreter name.
 func (binary *binaryDecorator) getHostInterpreterName(ctx android.ModuleContext,
-	actual_version string) string {
+	actualVersion string) string {
 	var interp string
-	switch actual_version {
+	switch actualVersion {
 	case pyVersion2:
 		interp = "python2.7"
 	case pyVersion3:
 		interp = "python3"
 	default:
 		panic(fmt.Errorf("unknown Python actualVersion: %q for module: %q.",
-			actual_version, ctx.ModuleName()))
+			actualVersion, ctx.ModuleName()))
 	}
 
 	return interp
@@ -196,30 +149,3 @@
 
 	return stem + String(binary.binaryProperties.Suffix)
 }
-
-// Sets the given directory and all its ancestor directories as Python packages.
-func populateNewPyPkgs(pkgPath string, existingPyPkgSet,
-	newPyPkgSet map[string]bool, newPyPkgs *[]string) {
-	for pkgPath != "" {
-		if _, found := existingPyPkgSet[pkgPath]; found {
-			break
-		}
-		if _, found := newPyPkgSet[pkgPath]; !found {
-			newPyPkgSet[pkgPath] = true
-			*newPyPkgs = append(*newPyPkgs, pkgPath)
-			// Gets its ancestor directory by trimming last slash.
-			pkgPath = PathBeforeLastSlash(pkgPath)
-		} else {
-			break
-		}
-	}
-}
-
-// filepath.Dir("abc") -> "." and filepath.Dir("/abc") -> "/". However,
-// the PathBeforeLastSlash() will return "" for both cases above.
-func PathBeforeLastSlash(path string) string {
-	if idx := strings.LastIndex(path, "/"); idx != -1 {
-		return path[:idx]
-	}
-	return ""
-}