Revert "Sandbox soong_build by changing to root directory"
This reverts commit 05c25ccb4adb5329add700b533416c226cdbfa96.
Reason for revert: broke absolute OUT_DIR
Bug: 146437378
Change-Id: I523ed79d40e1c1ef040212ba794a7a084abea75d
diff --git a/cc/cmakelists.go b/cc/cmakelists.go
index f7d9081..97d21f4 100644
--- a/cc/cmakelists.go
+++ b/cc/cmakelists.go
@@ -76,7 +76,7 @@
// Link all handmade CMakeLists.txt aggregate from
// BASE/development/ide/clion to
// BASE/out/development/ide/clion.
- dir := filepath.Join(android.AbsSrcDirForExistingUseCases(), cLionAggregateProjectsDirectory)
+ dir := filepath.Join(getAndroidSrcRootDirectory(ctx), cLionAggregateProjectsDirectory)
filepath.Walk(dir, linkAggregateCMakeListsFiles)
return
@@ -147,7 +147,7 @@
f.WriteString("# Tools > CMake > Change Project Root \n\n")
f.WriteString(fmt.Sprintf("cmake_minimum_required(VERSION %s)\n", minimumCMakeVersionSupported))
f.WriteString(fmt.Sprintf("project(%s)\n", ccModule.ModuleBase.Name()))
- f.WriteString(fmt.Sprintf("set(ANDROID_ROOT %s)\n\n", android.AbsSrcDirForExistingUseCases()))
+ f.WriteString(fmt.Sprintf("set(ANDROID_ROOT %s)\n\n", getAndroidSrcRootDirectory(ctx)))
pathToCC, _ := evalVariable(ctx, "${config.ClangBin}/")
f.WriteString(fmt.Sprintf("set(CMAKE_C_COMPILER \"%s%s\")\n", buildCMakePath(pathToCC), "clang"))
@@ -465,7 +465,7 @@
}
func getCMakeListsForModule(module *Module, ctx android.SingletonContext) string {
- return filepath.Join(android.AbsSrcDirForExistingUseCases(),
+ return filepath.Join(getAndroidSrcRootDirectory(ctx),
cLionOutputProjectsDirectory,
path.Dir(ctx.BlueprintFile(module)),
module.ModuleBase.Name()+"-"+
@@ -473,3 +473,8 @@
module.ModuleBase.Os().Name,
cMakeListsFilename)
}
+
+func getAndroidSrcRootDirectory(ctx android.SingletonContext) string {
+ srcPath, _ := filepath.Abs(android.PathForSource(ctx).String())
+ return srcPath
+}
diff --git a/cc/compdb.go b/cc/compdb.go
index ea12443..dff14db 100644
--- a/cc/compdb.go
+++ b/cc/compdb.go
@@ -79,9 +79,9 @@
// Create the output file.
dir := android.PathForOutput(ctx, compdbOutputProjectsDirectory)
- os.MkdirAll(filepath.Join(android.AbsSrcDirForExistingUseCases(), dir.String()), 0777)
+ os.MkdirAll(dir.String(), 0777)
compDBFile := dir.Join(ctx, compdbFilename)
- f, err := os.Create(filepath.Join(android.AbsSrcDirForExistingUseCases(), compDBFile.String()))
+ f, err := os.Create(compDBFile.String())
if err != nil {
log.Fatalf("Could not create file %s: %s", compDBFile, err)
}
@@ -103,8 +103,8 @@
}
f.Write(dat)
- if finalLinkDir := ctx.Config().Getenv(envVariableCompdbLink); finalLinkDir != "" {
- finalLinkPath := filepath.Join(finalLinkDir, compdbFilename)
+ finalLinkPath := filepath.Join(ctx.Config().Getenv(envVariableCompdbLink), compdbFilename)
+ if finalLinkPath != "" {
os.Remove(finalLinkPath)
if err := os.Symlink(compDBFile.String(), finalLinkPath); err != nil {
log.Fatalf("Unable to symlink %s to %s: %s", compDBFile, finalLinkPath, err)
@@ -174,17 +174,18 @@
return
}
- pathToCC, err := ctx.Eval(pctx, "${config.ClangBin}")
+ rootDir := getCompdbAndroidSrcRootDirectory(ctx)
+ pathToCC, err := ctx.Eval(pctx, rootDir+"/${config.ClangBin}/")
ccPath := "/bin/false"
cxxPath := "/bin/false"
if err == nil {
- ccPath = filepath.Join(pathToCC, "clang")
- cxxPath = filepath.Join(pathToCC, "clang++")
+ ccPath = pathToCC + "clang"
+ cxxPath = pathToCC + "clang++"
}
for _, src := range srcs {
if _, ok := builds[src.String()]; !ok {
builds[src.String()] = compDbEntry{
- Directory: android.AbsSrcDirForExistingUseCases(),
+ Directory: rootDir,
Arguments: getArguments(src, ctx, ccModule, ccPath, cxxPath),
File: src.String(),
}
@@ -199,3 +200,8 @@
}
return []string{""}, err
}
+
+func getCompdbAndroidSrcRootDirectory(ctx android.SingletonContext) string {
+ srcPath, _ := filepath.Abs(android.PathForSource(ctx).String())
+ return srcPath
+}
diff --git a/cc/ndk_headers.go b/cc/ndk_headers.go
index 5744bb2..b8423be 100644
--- a/cc/ndk_headers.go
+++ b/cc/ndk_headers.go
@@ -16,6 +16,7 @@
import (
"fmt"
+ "os"
"path/filepath"
"strings"
@@ -254,8 +255,16 @@
depsPath := android.PathForSource(ctx, "bionic/libc/versioner-dependencies")
depsGlob := ctx.Glob(filepath.Join(depsPath.String(), "**/*"), nil)
for i, path := range depsGlob {
- if ctx.IsSymlink(path) {
- dest := ctx.Readlink(path)
+ fileInfo, err := os.Lstat(path.String())
+ if err != nil {
+ ctx.ModuleErrorf("os.Lstat(%q) failed: %s", path.String, err)
+ }
+ if fileInfo.Mode()&os.ModeSymlink == os.ModeSymlink {
+ dest, err := os.Readlink(path.String())
+ if err != nil {
+ ctx.ModuleErrorf("os.Readlink(%q) failed: %s",
+ path.String, err)
+ }
// Additional .. to account for the symlink itself.
depsGlob[i] = android.PathForSource(
ctx, filepath.Clean(filepath.Join(path.String(), "..", dest)))