Merge changes from topic "python_entry_point"

am: 990b4b6e7e

Change-Id: I134e9db5cf94e56b0c89244ada34446f5a55beb4
This commit is contained in:
Dan Willemsen
2018-12-03 23:18:02 -08:00
committed by android-build-merger
2 changed files with 32 additions and 19 deletions

View File

@@ -19,6 +19,7 @@ import (
"flag"
"fmt"
"hash/crc32"
"io"
"io/ioutil"
"log"
"os"
@@ -66,6 +67,7 @@ var (
manifest = flag.String("m", "", "manifest file to insert in jar")
pyMain = flag.String("pm", "", "__main__.py file to insert in par")
entrypoint = flag.String("e", "", "par entrypoint file to insert in par")
prefix = flag.String("prefix", "", "A file to prefix to the zip file")
ignoreDuplicates = flag.Bool("ignore-duplicates", false, "take each entry from the first zip it exists in and don't warn")
)
@@ -77,7 +79,7 @@ func init() {
func main() {
flag.Usage = func() {
fmt.Fprintln(os.Stderr, "usage: merge_zips [-jpsD] [-m manifest] [-e entrypoint] [-pm __main__.py] output [inputs...]")
fmt.Fprintln(os.Stderr, "usage: merge_zips [-jpsD] [-m manifest] [--prefix script] [-e entrypoint] [-pm __main__.py] output [inputs...]")
flag.PrintDefaults()
}
@@ -99,6 +101,19 @@ func main() {
log.Fatal(err)
}
defer output.Close()
var offset int64
if *prefix != "" {
prefixFile, err := os.Open(*prefix)
if err != nil {
log.Fatal(err)
}
offset, err = io.Copy(output, prefixFile)
if err != nil {
log.Fatal(err)
}
}
writer := zip.NewWriter(output)
defer func() {
err := writer.Close()
@@ -106,6 +121,7 @@ func main() {
log.Fatal(err)
}
}()
writer.SetOffset(offset)
// make readers
readers := []namedZipReader{}

View File

@@ -45,20 +45,22 @@ var (
hostPar = pctx.AndroidStaticRule("hostPar",
blueprint.RuleParams{
Command: `sed -e 's/%interpreter%/$interp/g' -e 's/%main%/$main/g' $template > $stub && ` +
`$mergeParCmd -p -pm $stub $mergedZip $srcsZips && echo '#!/usr/bin/env python' | cat - $mergedZip > $out && ` +
`chmod +x $out && (rm -f $stub; rm -f $mergedZip)`,
`echo "#!/usr/bin/env python" >${out}.prefix &&` +
`$mergeParCmd -p --prefix ${out}.prefix -pm $stub $out $srcsZips && ` +
`chmod +x $out && (rm -f $stub; rm -f ${out}.prefix)`,
CommandDeps: []string{"$mergeParCmd"},
},
"interp", "main", "template", "stub", "mergedZip", "srcsZips")
"interp", "main", "template", "stub", "srcsZips")
embeddedPar = pctx.AndroidStaticRule("embeddedPar",
blueprint.RuleParams{
Command: `echo '$main' > $entryPoint &&` +
`$mergeParCmd -p -e $entryPoint $mergedZip $srcsZips && cat $launcher | cat - $mergedZip > $out && ` +
`chmod +x $out && (rm -f $entryPoint; rm -f $mergedZip)`,
// `echo -n` to trim the newline, since the python code just wants the name
Command: `echo -n '$main' > $entryPoint &&` +
`$mergeParCmd -p --prefix $launcher -e $entryPoint $out $srcsZips && ` +
`chmod +x $out && (rm -f $entryPoint)`,
CommandDeps: []string{"$mergeParCmd"},
},
"main", "entryPoint", "mergedZip", "srcsZips", "launcher")
"main", "entryPoint", "srcsZips", "launcher")
)
func init() {
@@ -73,9 +75,6 @@ func registerBuildActionForParFile(ctx android.ModuleContext, embeddedLauncher b
launcherPath android.OptionalPath, interpreter, main, binName string,
srcsZips android.Paths) android.Path {
// .intermediate output path for merged zip file.
mergedZip := android.PathForModuleOut(ctx, binName+".mergedzip")
// .intermediate output path for bin executable.
binFile := android.PathForModuleOut(ctx, binName)
@@ -96,12 +95,11 @@ func registerBuildActionForParFile(ctx android.ModuleContext, embeddedLauncher b
Output: binFile,
Implicits: implicits,
Args: map[string]string{
"interp": strings.Replace(interpreter, "/", `\/`, -1),
"main": strings.Replace(main, "/", `\/`, -1),
"template": template.String(),
"stub": stub,
"mergedZip": mergedZip.String(),
"srcsZips": strings.Join(srcsZips.Strings(), " "),
"interp": strings.Replace(interpreter, "/", `\/`, -1),
"main": strings.Replace(main, "/", `\/`, -1),
"template": template.String(),
"stub": stub,
"srcsZips": strings.Join(srcsZips.Strings(), " "),
},
})
} else if launcherPath.Valid() {
@@ -117,9 +115,8 @@ func registerBuildActionForParFile(ctx android.ModuleContext, embeddedLauncher b
Output: binFile,
Implicits: implicits,
Args: map[string]string{
"main": main,
"main": strings.Replace(strings.TrimSuffix(main, pyExt), "/", ".", -1),
"entryPoint": entryPoint,
"mergedZip": mergedZip.String(),
"srcsZips": strings.Join(srcsZips.Strings(), " "),
"launcher": launcherPath.String(),
},