Merge changes I5fae03f4,Id41ad4ea

* changes:
  Pass --min-sdk-version to dx
  Make binaries executable
This commit is contained in:
Colin Cross 2017-09-01 19:50:39 +00:00 committed by Gerrit Code Review
commit 379877d794
11 changed files with 51 additions and 18 deletions

View File

@ -382,6 +382,14 @@ func (c *config) MinSupportedSdkVersion() int {
return 14
}
func (c *config) DefaultAppTargetSdkInt() int {
if Bool(c.ProductVariables.Platform_sdk_final) {
return c.PlatformSdkVersionInt()
} else {
return 10000
}
}
// Codenames that are active in the current lunch target.
func (c *config) PlatformVersionActiveCodenames() []string {
return c.ProductVariables.Platform_version_active_codenames

View File

@ -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{

View File

@ -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)

View File

@ -108,6 +108,7 @@ type productVariables struct {
Make_suffix *string `json:",omitempty"`
Platform_sdk_version *int `json:",omitempty"`
Platform_sdk_final *bool `json:",omitempty"`
Platform_version_active_codenames []string `json:",omitempty"`
Platform_version_future_codenames []string `json:",omitempty"`

View File

@ -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 {

View File

@ -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(

View File

@ -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 {

View File

@ -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),

View File

@ -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{

View File

@ -407,6 +407,16 @@ func (j *Module) compile(ctx android.ModuleContext) {
"--dump-width=1000")
}
var minSdkVersion string
switch j.deviceProperties.Sdk_version {
case "", "current", "test_current", "system_current":
minSdkVersion = strconv.Itoa(ctx.AConfig().DefaultAppTargetSdkInt())
default:
minSdkVersion = j.deviceProperties.Sdk_version
}
dxFlags = append(dxFlags, "--min-sdk-version="+minSdkVersion)
flags.dxFlags = strings.Join(dxFlags, " ")
// Compile classes.jar into classes.dex
@ -457,7 +467,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 +520,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 +600,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)
}

View File

@ -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)
}