[lxc-devel] [distrobuilder/master] sources: Support CentOS Stream

monstermunchkin on Github lxc-bot at linuxcontainers.org
Tue Jan 14 20:55:13 UTC 2020


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 404 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20200114/e76a511e/attachment.bin>
-------------- next part --------------
From 2d74c936f0c6488d887272c5c6642545490b91e6 Mon Sep 17 00:00:00 2001
From: Thomas Hipp <thomas.hipp at canonical.com>
Date: Tue, 14 Jan 2020 21:44:25 +0100
Subject: [PATCH] sources: Support CentOS Stream

This adds support for CentOS Stream.

Signed-off-by: Thomas Hipp <thomas.hipp at canonical.com>
---
 sources/centos-http.go | 38 ++++++++++++++++++++++++++++----------
 1 file changed, 28 insertions(+), 10 deletions(-)

diff --git a/sources/centos-http.go b/sources/centos-http.go
index ea533b7..0e7cab9 100644
--- a/sources/centos-http.go
+++ b/sources/centos-http.go
@@ -34,7 +34,11 @@ func NewCentOSHTTP() *CentOSHTTP {
 
 // Run downloads the tarball and unpacks it.
 func (s *CentOSHTTP) Run(definition shared.Definition, rootfsDir string) error {
-	s.majorVersion = strings.Split(definition.Image.Release, ".")[0]
+	if strings.HasSuffix(definition.Image.Release, "-Stream") {
+		s.majorVersion = strings.ToLower(definition.Image.Release)
+	} else {
+		s.majorVersion = strings.Split(definition.Image.Release, ".")[0]
+	}
 
 	baseURL := fmt.Sprintf("%s/%s/isos/%s/", definition.Source.URL,
 		s.majorVersion,
@@ -76,7 +80,11 @@ func (s *CentOSHTTP) Run(definition shared.Definition, rootfsDir string) error {
 				checksumFile = "sha256sum.txt"
 			} else {
 				if strings.HasPrefix(definition.Image.Release, "8") {
-					checksumFile = "CHECKSUM.asc"
+					if strings.HasSuffix(definition.Image.Release, "-Stream") {
+						checksumFile = "CHECKSUM"
+					} else {
+						checksumFile = "CHECKSUM.asc"
+					}
 				} else {
 					checksumFile = "sha256sum.txt.asc"
 				}
@@ -87,13 +95,16 @@ func (s *CentOSHTTP) Run(definition shared.Definition, rootfsDir string) error {
 				return err
 			}
 
-			valid, err := shared.VerifyFile(filepath.Join(fpath, checksumFile), "",
-				definition.Source.Keys, definition.Source.Keyserver)
-			if err != nil {
-				return err
-			}
-			if !valid {
-				return errors.New("Failed to verify tarball")
+			// Only verify file if possible.
+			if strings.HasSuffix(checksumFile, ".asc") {
+				valid, err := shared.VerifyFile(filepath.Join(fpath, checksumFile), "",
+					definition.Source.Keys, definition.Source.Keyserver)
+				if err != nil {
+					return err
+				}
+				if !valid {
+					return errors.New("Failed to verify tarball")
+				}
 			}
 		}
 	}
@@ -356,7 +367,8 @@ rm -rf /rootfs/var/cache/yum
 
 func (s CentOSHTTP) getRelease(URL, release, variant, arch string) string {
 	releaseFields := strings.Split(release, ".")
-	resp, err := http.Get(URL + path.Join("/", releaseFields[0], "isos", arch))
+
+	resp, err := http.Get(URL + path.Join("/", strings.ToLower(releaseFields[0]), "isos", arch))
 	if err != nil {
 		fmt.Fprintln(os.Stderr, err)
 		return ""
@@ -369,6 +381,12 @@ func (s CentOSHTTP) getRelease(URL, release, variant, arch string) string {
 		return ""
 	}
 
+	if strings.HasSuffix(releaseFields[0], "-Stream") {
+		fields := strings.Split(releaseFields[0], "-")
+		// Convert <version>-Stream to Stream-<version>
+		releaseFields[0] = fmt.Sprintf("%s-%s", fields[1], fields[0])
+	}
+
 	var re []string
 	if len(releaseFields) > 1 {
 		if arch == "armhfp" {


More information about the lxc-devel mailing list