diff --git a/android/paths.go b/android/paths.go index 3366db140..afde55e02 100644 --- a/android/paths.go +++ b/android/paths.go @@ -712,7 +712,7 @@ func (p OutputPath) ReplaceExtension(ctx PathContext, ext string) OutputPath { reportPathErrorf(ctx, "extension %q cannot contain /", ext) } ret := PathForOutput(ctx, pathtools.ReplaceExtension(p.path, ext)) - ret.rel = p.rel + ret.rel = pathtools.ReplaceExtension(p.rel, ext) return ret } @@ -724,7 +724,7 @@ func (p OutputPath) InSameDir(ctx PathContext, paths ...string) OutputPath { } ret := PathForOutput(ctx, filepath.Dir(p.path), path) - ret.rel = p.rel + ret.rel = filepath.Join(filepath.Dir(p.rel), path) return ret } diff --git a/android/paths_test.go b/android/paths_test.go index 3b6d2ec5d..20a00a0be 100644 --- a/android/paths_test.go +++ b/android/paths_test.go @@ -696,22 +696,26 @@ func ExampleOutputPath_ReplaceExtension() { ctx := &configErrorWrapper{ config: TestConfig("out", nil), } - p := PathForOutput(ctx, "system/framework/boot.art") + p := PathForOutput(ctx, "system/framework").Join(ctx, "boot.art") p2 := p.ReplaceExtension(ctx, "oat") fmt.Println(p, p2) + fmt.Println(p.Rel(), p2.Rel()) // Output: // out/system/framework/boot.art out/system/framework/boot.oat + // boot.art boot.oat } func ExampleOutputPath_FileInSameDir() { ctx := &configErrorWrapper{ config: TestConfig("out", nil), } - p := PathForOutput(ctx, "system/framework/boot.art") + p := PathForOutput(ctx, "system/framework").Join(ctx, "boot.art") p2 := p.InSameDir(ctx, "oat", "arm", "boot.vdex") fmt.Println(p, p2) + fmt.Println(p.Rel(), p2.Rel()) // Output: // out/system/framework/boot.art out/system/framework/oat/arm/boot.vdex + // boot.art oat/arm/boot.vdex } diff --git a/dexpreopt/dexpreopt_test.go b/dexpreopt/dexpreopt_test.go index 2a58ab9c6..6dfa9d266 100644 --- a/dexpreopt/dexpreopt_test.go +++ b/dexpreopt/dexpreopt_test.go @@ -64,7 +64,7 @@ func TestDexPreopt(t *testing.T) { {android.PathForOutput(ctx, "test/oat/arm/package.vdex"), "/system/app/test/oat/arm/test.vdex"}, } - if !reflect.DeepEqual(rule.Installs(), wantInstalls) { + if rule.Installs().String() != wantInstalls.String() { t.Errorf("\nwant installs:\n %v\ngot:\n %v", wantInstalls, rule.Installs()) } } @@ -100,7 +100,7 @@ func TestDexPreoptSystemOther(t *testing.T) { {android.PathForOutput(ctx, "test/oat/arm/package.vdex"), "/system_other/app/test/oat/arm/test.vdex"}, } - if !reflect.DeepEqual(rule.Installs(), wantInstalls) { + if rule.Installs().String() != wantInstalls.String() { t.Errorf("\nwant installs:\n %v\ngot:\n %v", wantInstalls, rule.Installs()) } } @@ -123,7 +123,7 @@ func TestDexPreoptProfile(t *testing.T) { {android.PathForOutput(ctx, "test/oat/arm/package.vdex"), "/system/app/test/oat/arm/test.vdex"}, } - if !reflect.DeepEqual(rule.Installs(), wantInstalls) { + if rule.Installs().String() != wantInstalls.String() { t.Errorf("\nwant installs:\n %v\ngot:\n %v", wantInstalls, rule.Installs()) } } diff --git a/java/dexpreopt_config.go b/java/dexpreopt_config.go index 280b6011d..409b4b1fc 100644 --- a/java/dexpreopt_config.go +++ b/java/dexpreopt_config.go @@ -114,7 +114,7 @@ func defaultBootImageConfig(ctx android.PathContext) bootImageConfig { for _, target := range ctx.Config().Targets[android.Android] { images[target.Arch.ArchType] = dir.Join(ctx, - "system/framework", target.Arch.ArchType.String(), "boot.art") + "system/framework", target.Arch.ArchType.String()).Join(ctx, "boot.art") } return bootImageConfig{