github.com/westcoastroms/westcoastroms-build@v0.0.0-20190928114312-2350e5a73030/build/soong/python/installer.go (about) 1 // Copyright 2017 Google Inc. All rights reserved. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package python 16 17 import ( 18 "path/filepath" 19 20 "android/soong/android" 21 ) 22 23 // This file handles installing python executables into their final location 24 25 type installLocation int 26 27 const ( 28 InstallInData installLocation = iota 29 ) 30 31 type pythonInstaller struct { 32 dir string 33 dir64 string 34 relative string 35 36 path android.OutputPath 37 } 38 39 func NewPythonInstaller(dir, dir64 string) *pythonInstaller { 40 return &pythonInstaller{ 41 dir: dir, 42 dir64: dir64, 43 } 44 } 45 46 var _ installer = (*pythonInstaller)(nil) 47 48 func (installer *pythonInstaller) installDir(ctx android.ModuleContext) android.OutputPath { 49 dir := installer.dir 50 if ctx.Arch().ArchType.Multilib == "lib64" && installer.dir64 != "" { 51 dir = installer.dir64 52 } 53 if !ctx.Host() && !ctx.Arch().Native { 54 dir = filepath.Join(dir, ctx.Arch().ArchType.String()) 55 } 56 return android.PathForModuleInstall(ctx, dir, installer.relative) 57 } 58 59 func (installer *pythonInstaller) install(ctx android.ModuleContext, file android.Path) { 60 installer.path = ctx.InstallFile(installer.installDir(ctx), file.Base(), file) 61 }