m/pkgs/localregistry: make even more runfile aware
Change-Id: I67b4ee5d6bc6a21a91932885ccc67fbf107bf995
Reviewed-on: https://review.monogon.dev/c/monogon/+/3053
Tested-by: Jenkins CI
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
diff --git a/metropolis/pkg/localregistry/localregistry.go b/metropolis/pkg/localregistry/localregistry.go
index aaf0d99..dc0fdde 100644
--- a/metropolis/pkg/localregistry/localregistry.go
+++ b/metropolis/pkg/localregistry/localregistry.go
@@ -82,9 +82,13 @@
return imageManifest, nil
}
-func addBazelBlobFromDescriptor(s *Server, image *spec.Image, dd distribution.Descriptor) {
- path := filepath.Join(image.Path, "blobs", dd.Digest.Algorithm().String(), dd.Digest.Hex())
+func addBazelBlobFromDescriptor(s *Server, image *spec.Image, dd distribution.Descriptor) error {
+ path, err := runfiles.Rlocation(filepath.Join("_main", image.Path, "blobs", dd.Digest.Algorithm().String(), dd.Digest.Hex()))
+ if err != nil {
+ return fmt.Errorf("while locating blob: %w", err)
+ }
s.blobs[dd.Digest] = blobMeta{filePath: path, mediaType: dd.MediaType, contentLength: dd.Size}
+ return nil
}
func FromBazelManifest(mb []byte) (*Server, error) {
@@ -102,16 +106,22 @@
return nil, err
}
- addBazelBlobFromDescriptor(&s, i, md.Descriptor)
+ if err := addBazelBlobFromDescriptor(&s, i, md.Descriptor); err != nil {
+ return nil, err
+ }
m, err := manifestFromBazel(&s, i, md)
if err != nil {
return nil, err
}
- addBazelBlobFromDescriptor(&s, i, m.Config)
+ if err := addBazelBlobFromDescriptor(&s, i, m.Config); err != nil {
+ return nil, err
+ }
for _, l := range m.Layers {
- addBazelBlobFromDescriptor(&s, i, l)
+ if err := addBazelBlobFromDescriptor(&s, i, l); err != nil {
+ return nil, err
+ }
}
}
return &s, nil