Experimental code to support build action caching.
Bug: 335718784 Test: build locally Change-Id: Icc1f1fb15f9fe305e95dd51e2e7aff1e9cbf340c
This commit is contained in:
@@ -15,6 +15,9 @@
|
||||
package android
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/gob"
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
@@ -1068,6 +1071,28 @@ type basePath struct {
|
||||
rel string
|
||||
}
|
||||
|
||||
func (p basePath) GobEncode() ([]byte, error) {
|
||||
w := new(bytes.Buffer)
|
||||
encoder := gob.NewEncoder(w)
|
||||
err := errors.Join(encoder.Encode(p.path), encoder.Encode(p.rel))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return w.Bytes(), nil
|
||||
}
|
||||
|
||||
func (p *basePath) GobDecode(data []byte) error {
|
||||
r := bytes.NewBuffer(data)
|
||||
decoder := gob.NewDecoder(r)
|
||||
err := errors.Join(decoder.Decode(&p.path), decoder.Decode(&p.rel))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p basePath) Ext() string {
|
||||
return filepath.Ext(p.path)
|
||||
}
|
||||
@@ -1306,6 +1331,28 @@ type OutputPath struct {
|
||||
fullPath string
|
||||
}
|
||||
|
||||
func (p OutputPath) GobEncode() ([]byte, error) {
|
||||
w := new(bytes.Buffer)
|
||||
encoder := gob.NewEncoder(w)
|
||||
err := errors.Join(encoder.Encode(p.basePath), encoder.Encode(p.soongOutDir), encoder.Encode(p.fullPath))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return w.Bytes(), nil
|
||||
}
|
||||
|
||||
func (p *OutputPath) GobDecode(data []byte) error {
|
||||
r := bytes.NewBuffer(data)
|
||||
decoder := gob.NewDecoder(r)
|
||||
err := errors.Join(decoder.Decode(&p.basePath), decoder.Decode(&p.soongOutDir), decoder.Decode(&p.fullPath))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p OutputPath) withRel(rel string) OutputPath {
|
||||
p.basePath = p.basePath.withRel(rel)
|
||||
p.fullPath = filepath.Join(p.fullPath, rel)
|
||||
|
Reference in New Issue
Block a user