From d118ab03c309a950f495ba3d141aa391a19db382 Mon Sep 17 00:00:00 2001 From: Mikhail Klementev Date: Mon, 15 May 2023 13:07:56 +0000 Subject: [PATCH] feat: check for mirrored packages --- cache/cache.go | 26 ++++++++++++++++++++++++++ kernel/kernel.go | 9 +++++++++ 2 files changed, 35 insertions(+) diff --git a/cache/cache.go b/cache/cache.go index 1f0e005..3c5d1ff 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -6,6 +6,7 @@ package cache import ( "fmt" + "net/http" "net/url" "os" "os/exec" @@ -14,6 +15,7 @@ import ( "github.com/cavaliergopher/grab/v3" "github.com/rs/zerolog/log" + "code.dumpstack.io/tools/out-of-tree/config" "code.dumpstack.io/tools/out-of-tree/fs" ) @@ -88,3 +90,27 @@ func DownloadDebianCache(cachePath string) (err error) { return os.Rename(resp.Filename, cachePath) } + +func PackageURL(dt config.DistroType, orig string) (found bool, fileurl string) { + if dt != config.Debian { + return + } + + filename := filepath.Base(orig) + + fileurl, err := url.JoinPath(URL, "packages/debian", filename) + if err != nil { + return + } + + resp, err := http.Head(fileurl) + if err != nil { + return + } + if resp.StatusCode != http.StatusOK { + return + } + + found = true + return +} diff --git a/kernel/kernel.go b/kernel/kernel.go index b90d9e6..09fc8fe 100644 --- a/kernel/kernel.go +++ b/kernel/kernel.go @@ -421,6 +421,15 @@ func installKernel(sk config.KernelMask, pkgname string, force, headers bool) (e } for _, pkg := range pkgs { + found, newurl := cache.PackageURL( + sk.DistroType, + pkg.Deb.URL, + ) + if found { + log.Debug().Msgf("cached deb found %s", newurl) + pkg.Deb.URL = newurl + } + cmd += fmt.Sprintf(" && wget --no-check-certificate %s", strings.Replace(pkg.Deb.URL, "https", "http", -1)) }