From d64c4276e28a98ec386baf46f3d034ffb1359a9a Mon Sep 17 00:00:00 2001 From: Robert LeBlanc Date: Sat, 5 Feb 2022 02:41:35 +0000 Subject: [PATCH] Fix the installer path for Ubuntu Focal Ubuntu has started depreciating the Debian installer in focal and moved the installer images to a different path. In versions after focal, they are completly removed. This basically gives us more time to figure out how to use the new system. --- deb/index_files.go | 8 ++++++-- deb/package.go | 7 ++++++- deb/publish.go | 12 ++++++++---- deb/remote.go | 6 +++++- 4 files changed, 25 insertions(+), 8 deletions(-) diff --git a/deb/index_files.go b/deb/index_files.go index 03648f4b36..16c191140e 100644 --- a/deb/index_files.go +++ b/deb/index_files.go @@ -249,7 +249,7 @@ func newIndexFiles(publishedStorage aptly.PublishedStorage, basePath, tempDir, s } } -func (files *indexFiles) PackageIndex(component, arch string, udeb, installer bool) *indexFile { +func (files *indexFiles) PackageIndex(component, arch string, udeb bool, installer bool, distribution string) *indexFile { if arch == ArchitectureSource { udeb = false } @@ -264,7 +264,11 @@ func (files *indexFiles) PackageIndex(component, arch string, udeb, installer bo if udeb { relativePath = filepath.Join(component, "debian-installer", fmt.Sprintf("binary-%s", arch), "Packages") } else if installer { - relativePath = filepath.Join(component, fmt.Sprintf("installer-%s", arch), "current", "images", "SHA256SUMS") + if distribution == "focal" { + relativePath = filepath.Join(component, fmt.Sprintf("installer-%s", arch), "current", "legacy-images", "SHA256SUMS") + } else { + relativePath = filepath.Join(component, fmt.Sprintf("installer-%s", arch), "current", "images", "SHA256SUMS") + } } else { relativePath = filepath.Join(component, fmt.Sprintf("binary-%s", arch), "Packages") } diff --git a/deb/package.go b/deb/package.go index 5d372b2bc4..c93d4d9dee 100644 --- a/deb/package.go +++ b/deb/package.go @@ -189,7 +189,12 @@ func NewInstallerPackageFromControlFile(input Stanza, repo *RemoteRepo, componen return nil, err } - relPath := filepath.Join("dists", repo.Distribution, component, fmt.Sprintf("%s-%s", p.Name, architecture), "current", "images") + var relPath string + if repo.Distribution == "focal" { + relPath = filepath.Join("dists", repo.Distribution, component, fmt.Sprintf("%s-%s", p.Name, architecture), "current", "legacy-images") + } else { + relPath = filepath.Join("dists", repo.Distribution, component, fmt.Sprintf("%s-%s", p.Name, architecture), "current", "images") + } for i := range files { files[i].downloadPath = relPath diff --git a/deb/publish.go b/deb/publish.go index 1fbb0739de..f93f86c230 100644 --- a/deb/publish.go +++ b/deb/publish.go @@ -641,7 +641,7 @@ func (p *PublishedRepo) Publish(packagePool aptly.PackagePool, publishedStorageP // For all architectures, pregenerate packages/sources files for _, arch := range p.Architectures { - indexes.PackageIndex(component, arch, false, false) + indexes.PackageIndex(component, arch, false, false, p.Distribution) } list.PrepareIndex() @@ -665,7 +665,11 @@ func (p *PublishedRepo) Publish(packagePool aptly.PackagePool, publishedStorageP } relPath = filepath.Join("pool", component, poolDir) } else { - relPath = filepath.Join("dists", p.Distribution, component, fmt.Sprintf("%s-%s", pkg.Name, arch), "current", "images") + if p.Distribution == "focal" { + relPath = filepath.Join("dists", p.Distribution, component, fmt.Sprintf("%s-%s", pkg.Name, arch), "current", "legacy-images") + } else { + relPath = filepath.Join("dists", p.Distribution, component, fmt.Sprintf("%s-%s", pkg.Name, arch), "current", "images") + } } err = pkg.LinkFromPool(publishedStorage, packagePool, p.Prefix, relPath, forceOverwrite) @@ -703,7 +707,7 @@ func (p *PublishedRepo) Publish(packagePool aptly.PackagePool, publishedStorageP } } - bufWriter, err = indexes.PackageIndex(component, arch, pkg.IsUdeb, pkg.IsInstaller).BufWriter() + bufWriter, err = indexes.PackageIndex(component, arch, pkg.IsUdeb, pkg.IsInstaller, p.Distribution).BufWriter() if err != nil { return err } @@ -757,7 +761,7 @@ func (p *PublishedRepo) Publish(packagePool aptly.PackagePool, publishedStorageP // For all architectures, pregenerate .udeb indexes for _, arch := range p.Architectures { - indexes.PackageIndex(component, arch, true, false) + indexes.PackageIndex(component, arch, true, false, p.Distribution) } } diff --git a/deb/remote.go b/deb/remote.go index 7b0e4427d0..01550022f7 100644 --- a/deb/remote.go +++ b/deb/remote.go @@ -259,7 +259,11 @@ func (repo *RemoteRepo) UdebPath(component string, architecture string) string { // InstallerPath returns path of Packages files for given component and // architecture func (repo *RemoteRepo) InstallerPath(component string, architecture string) string { - return fmt.Sprintf("%s/installer-%s/current/images/SHA256SUMS", component, architecture) + if repo.Distribution == "focal" { + return fmt.Sprintf("%s/installer-%s/current/legacy-images/SHA256SUMS", component, architecture) + } else { + return fmt.Sprintf("%s/installer-%s/current/images/SHA256SUMS", component, architecture) + } } // PackageURL returns URL of package file relative to repository root