Move the caching/restoring code from soong to blueprint to fully skip build actions.
Bug: 358425833
Test: Manually verified the generated ninja and mk files and CI.
Change-Id: Ieebb822c46f37c0ff55fad08531e9870a76cbd7b
diff --git a/android/packaging.go b/android/packaging.go
index 42009d5..6bc1c74 100644
--- a/android/packaging.go
+++ b/android/packaging.go
@@ -15,6 +15,9 @@
package android
import (
+ "bytes"
+ "encoding/gob"
+ "errors"
"fmt"
"path/filepath"
"sort"
@@ -58,6 +61,36 @@
archType ArchType
}
+func (p *PackagingSpec) GobEncode() ([]byte, error) {
+ w := new(bytes.Buffer)
+ encoder := gob.NewEncoder(w)
+ err := errors.Join(encoder.Encode(p.relPathInPackage), encoder.Encode(p.srcPath),
+ encoder.Encode(p.symlinkTarget), encoder.Encode(p.executable),
+ encoder.Encode(p.effectiveLicenseFiles), encoder.Encode(p.partition),
+ encoder.Encode(p.skipInstall), encoder.Encode(p.aconfigPaths),
+ encoder.Encode(p.archType))
+ if err != nil {
+ return nil, err
+ }
+
+ return w.Bytes(), nil
+}
+
+func (p *PackagingSpec) GobDecode(data []byte) error {
+ r := bytes.NewBuffer(data)
+ decoder := gob.NewDecoder(r)
+ err := errors.Join(decoder.Decode(&p.relPathInPackage), decoder.Decode(&p.srcPath),
+ decoder.Decode(&p.symlinkTarget), decoder.Decode(&p.executable),
+ decoder.Decode(&p.effectiveLicenseFiles), decoder.Decode(&p.partition),
+ decoder.Decode(&p.skipInstall), decoder.Decode(&p.aconfigPaths),
+ decoder.Decode(&p.archType))
+ if err != nil {
+ return err
+ }
+
+ return nil
+}
+
func (p *PackagingSpec) Equals(other *PackagingSpec) bool {
if other == nil {
return false