aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--android/defs.go7
-rw-r--r--android/module.go22
-rw-r--r--cc/installer.go2
-rw-r--r--cc/ndk_headers.go2
-rw-r--r--cc/ndk_library.go2
-rw-r--r--cc/prebuilt.go2
-rw-r--r--java/app.go2
-rw-r--r--java/java.go8
-rw-r--r--python/installer.go3
9 files changed, 32 insertions, 18 deletions
diff --git a/android/defs.go b/android/defs.go
index ec8dcf9c..cd8b4e31 100644
--- a/android/defs.go
+++ b/android/defs.go
@@ -52,6 +52,13 @@ var (
},
"cpFlags")
+ CpExecutable = pctx.AndroidStaticRule("CpExecutable",
+ blueprint.RuleParams{
+ Command: "rm -f $out && cp $cpPreserveSymlinks $cpFlags $in $out && chmod +x $out",
+ Description: "cp $out",
+ },
+ "cpFlags")
+
// A timestamp touch rule.
Touch = pctx.AndroidStaticRule("Touch",
blueprint.RuleParams{
diff --git a/android/module.go b/android/module.go
index 3a3d1735..fb2e7030 100644
--- a/android/module.go
+++ b/android/module.go
@@ -83,8 +83,8 @@ type ModuleContext interface {
ExpandSourcesSubDir(srcFiles, excludes []string, subDir string) Paths
Glob(globPattern string, excludes []string) Paths
- InstallFile(installPath OutputPath, srcPath Path, deps ...Path) OutputPath
- InstallFileName(installPath OutputPath, name string, srcPath Path, deps ...Path) OutputPath
+ InstallExecutable(installPath OutputPath, name string, srcPath Path, deps ...Path) OutputPath
+ InstallFile(installPath OutputPath, name string, srcPath Path, deps ...Path) OutputPath
InstallSymlink(installPath OutputPath, name string, srcPath OutputPath) OutputPath
CheckbuildFile(srcPath Path)
@@ -717,8 +717,18 @@ func (a *androidModuleContext) skipInstall(fullInstallPath OutputPath) bool {
return false
}
-func (a *androidModuleContext) InstallFileName(installPath OutputPath, name string, srcPath Path,
+func (a *androidModuleContext) InstallFile(installPath OutputPath, name string, srcPath Path,
deps ...Path) OutputPath {
+ return a.installFile(installPath, name, srcPath, Cp, deps)
+}
+
+func (a *androidModuleContext) InstallExecutable(installPath OutputPath, name string, srcPath Path,
+ deps ...Path) OutputPath {
+ return a.installFile(installPath, name, srcPath, CpExecutable, deps)
+}
+
+func (a *androidModuleContext) installFile(installPath OutputPath, name string, srcPath Path,
+ rule blueprint.Rule, deps []Path) OutputPath {
fullInstallPath := installPath.Join(a, name)
a.module.base().hooks.runInstallHooks(a, fullInstallPath, false)
@@ -738,7 +748,7 @@ func (a *androidModuleContext) InstallFileName(installPath OutputPath, name stri
}
a.ModuleBuild(pctx, ModuleBuildParams{
- Rule: Cp,
+ Rule: rule,
Description: "install " + fullInstallPath.Base(),
Output: fullInstallPath,
Input: srcPath,
@@ -753,10 +763,6 @@ func (a *androidModuleContext) InstallFileName(installPath OutputPath, name stri
return fullInstallPath
}
-func (a *androidModuleContext) InstallFile(installPath OutputPath, srcPath Path, deps ...Path) OutputPath {
- return a.InstallFileName(installPath, filepath.Base(srcPath.String()), srcPath, deps...)
-}
-
func (a *androidModuleContext) InstallSymlink(installPath OutputPath, name string, srcPath OutputPath) OutputPath {
fullInstallPath := installPath.Join(a, name)
a.module.base().hooks.runInstallHooks(a, fullInstallPath, true)
diff --git a/cc/installer.go b/cc/installer.go
index 7bedc564..027d191b 100644
--- a/cc/installer.go
+++ b/cc/installer.go
@@ -76,7 +76,7 @@ func (installer *baseInstaller) installDir(ctx ModuleContext) android.OutputPath
}
func (installer *baseInstaller) install(ctx ModuleContext, file android.Path) {
- installer.path = ctx.InstallFile(installer.installDir(ctx), file)
+ installer.path = ctx.InstallFile(installer.installDir(ctx), file.Base(), file)
}
func (installer *baseInstaller) inData() bool {
diff --git a/cc/ndk_headers.go b/cc/ndk_headers.go
index 5fa32326..140cc2f6 100644
--- a/cc/ndk_headers.go
+++ b/cc/ndk_headers.go
@@ -122,7 +122,7 @@ func (m *headerModule) GenerateAndroidBuildActions(ctx android.ModuleContext) {
srcFiles := ctx.ExpandSources(m.properties.Srcs, nil)
for _, header := range srcFiles {
installDir := getHeaderInstallDir(ctx, header, m.properties.From, m.properties.To)
- installedPath := ctx.InstallFile(installDir, header)
+ installedPath := ctx.InstallFile(installDir, header.Base(), header)
installPath := installDir.Join(ctx, header.Base())
if installPath != installedPath {
panic(fmt.Sprintf(
diff --git a/cc/ndk_library.go b/cc/ndk_library.go
index fc7cd918..a408fc54 100644
--- a/cc/ndk_library.go
+++ b/cc/ndk_library.go
@@ -341,7 +341,7 @@ func (stub *stubDecorator) install(ctx ModuleContext, path android.Path) {
installDir := getNdkInstallBase(ctx).Join(ctx, fmt.Sprintf(
"platforms/android-%s/arch-%s/usr/%s", apiLevel, arch, libDir))
- stub.installPath = ctx.InstallFile(installDir, path).String()
+ stub.installPath = ctx.InstallFile(installDir, path.Base(), path).String()
}
func newStubLibrary() *Module {
diff --git a/cc/prebuilt.go b/cc/prebuilt.go
index 089ce289..9fca0537 100644
--- a/cc/prebuilt.go
+++ b/cc/prebuilt.go
@@ -125,7 +125,7 @@ func (p *prebuiltBinaryLinker) link(ctx ModuleContext,
outputFile := android.PathForModuleOut(ctx, fileName)
ctx.ModuleBuild(pctx, android.ModuleBuildParams{
- Rule: android.Cp,
+ Rule: android.CpExecutable,
Description: "prebuilt",
Output: outputFile,
Input: p.Prebuilt.SingleSourcePath(ctx),
diff --git a/java/app.go b/java/app.go
index ceb7791f..a0c4912f 100644
--- a/java/app.go
+++ b/java/app.go
@@ -150,7 +150,7 @@ func (a *AndroidApp) GenerateAndroidBuildActions(ctx android.ModuleContext) {
}
a.outputFile = CreateAppPackage(ctx, aaptPackageFlags, a.outputFile, certificates)
- ctx.InstallFileName(android.PathForModuleInstall(ctx, "app"), ctx.ModuleName()+".apk", a.outputFile)
+ ctx.InstallFile(android.PathForModuleInstall(ctx, "app"), ctx.ModuleName()+".apk", a.outputFile)
}
var aaptIgnoreFilenames = []string{
diff --git a/java/java.go b/java/java.go
index e2e15d46..89c20163 100644
--- a/java/java.go
+++ b/java/java.go
@@ -457,7 +457,7 @@ type Library struct {
func (j *Library) GenerateAndroidBuildActions(ctx android.ModuleContext) {
j.compile(ctx)
- j.installFile = ctx.InstallFileName(android.PathForModuleInstall(ctx, "framework"), ctx.ModuleName()+".jar", j.outputFile)
+ j.installFile = ctx.InstallFile(android.PathForModuleInstall(ctx, "framework"), ctx.ModuleName()+".jar", j.outputFile)
}
func (j *Library) DepsMutator(ctx android.BottomUpMutatorContext) {
@@ -510,8 +510,8 @@ func (j *Binary) GenerateAndroidBuildActions(ctx android.ModuleContext) {
// Depend on the installed jar (j.installFile) so that the wrapper doesn't get executed by
// another build rule before the jar has been installed.
j.wrapperFile = android.PathForModuleSrc(ctx, j.binaryProperties.Wrapper)
- j.binaryFile = ctx.InstallFile(android.PathForModuleInstall(ctx, "bin"),
- j.wrapperFile, j.installFile)
+ j.binaryFile = ctx.InstallExecutable(android.PathForModuleInstall(ctx, "bin"),
+ ctx.ModuleName(), j.wrapperFile, j.installFile)
}
func (j *Binary) DepsMutator(ctx android.BottomUpMutatorContext) {
@@ -590,7 +590,7 @@ func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) {
j.combinedClasspathFile = TransformClassesToJar(ctx, j.classJarSpecs, android.OptionalPath{}, nil)
- ctx.InstallFileName(android.PathForModuleInstall(ctx, "framework"),
+ ctx.InstallFile(android.PathForModuleInstall(ctx, "framework"),
ctx.ModuleName()+".jar", j.combinedClasspathFile)
}
diff --git a/python/installer.go b/python/installer.go
index 9c12f5f7..04698c55 100644
--- a/python/installer.go
+++ b/python/installer.go
@@ -35,5 +35,6 @@ func NewPythonInstaller(dir string) *pythonInstaller {
var _ installer = (*pythonInstaller)(nil)
func (installer *pythonInstaller) install(ctx android.ModuleContext, file android.Path) {
- installer.path = ctx.InstallFile(android.PathForModuleInstall(ctx, installer.dir), file)
+ installer.path = ctx.InstallFile(android.PathForModuleInstall(ctx, installer.dir),
+ file.Base(), file)
}