Skip to content

Commit 126a99b

Browse files
FedeDPpoiana
authored andcommitted
fix(pkg/driverbuilder): fix amazonlinux2023 support.
Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
1 parent fea50f4 commit 126a99b

File tree

1 file changed

+79
-80
lines changed

1 file changed

+79
-80
lines changed

pkg/driverbuilder/builder/amazonlinux.go

+79-80
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import (
2424
"fmt"
2525
"github.com/blang/semver"
2626
"io"
27-
"io/ioutil"
2827
"log"
2928
"net/http"
3029
"os"
@@ -165,7 +164,7 @@ func (a *amazonlinux2023) repos() []string {
165164
}
166165

167166
func (a *amazonlinux2023) baseUrl() string {
168-
return "https://cdn.amazonlinux.com/al2023/core/mirrors/"
167+
return "https://cdn.amazonlinux.com/al2023/core/mirrors"
169168
}
170169

171170
func (a *amazonlinux2023) ext() string {
@@ -211,9 +210,7 @@ func buildMirror(a amazonBuilder, r string, kv kernelrelease.KernelRelease) (str
211210
switch a.(type) {
212211
case *amazonlinux:
213212
baseURL = fmt.Sprintf("%s/%s", a.baseUrl(), r)
214-
case *amazonlinux2:
215-
baseURL = fmt.Sprintf("%s/%s/%s", a.baseUrl(), r, kv.Architecture.ToNonDeb())
216-
case *amazonlinux2022:
213+
case *amazonlinux2, *amazonlinux2022, *amazonlinux2023:
217214
baseURL = fmt.Sprintf("%s/%s/%s", a.baseUrl(), r, kv.Architecture.ToNonDeb())
218215
default:
219216
return "", fmt.Errorf("unsupported target")
@@ -240,87 +237,89 @@ func fetchAmazonLinuxPackagesURLs(a amazonBuilder, kv kernelrelease.KernelReleas
240237
visited := make(map[string]struct{})
241238

242239
for _, v := range a.repos() {
243-
mirror, err := buildMirror(a, v, kv)
244-
if err != nil {
245-
return nil, err
246-
}
247-
248-
// Obtain the repo URL by getting mirror URL content
249-
mirrorRes, err := http.Get(mirror)
250-
if err != nil {
251-
return nil, err
252-
}
253-
defer mirrorRes.Body.Close()
240+
err := func() error {
241+
mirror, err := buildMirror(a, v, kv)
242+
if err != nil {
243+
return err
244+
}
254245

255-
var repo string
256-
scanner := bufio.NewScanner(mirrorRes.Body)
257-
if scanner.Scan() {
258-
repo = scanner.Text()
259-
}
260-
if repo == "" {
261-
return nil, fmt.Errorf("repository not found")
262-
}
263-
repo = strings.ReplaceAll(strings.TrimSuffix(repo, "\n"), "$basearch", kv.Architecture.ToNonDeb())
264-
repo = strings.TrimSuffix(repo, "/")
265-
repoDatabaseURL := fmt.Sprintf("%s/repodata/primary.sqlite.%s", repo, a.ext())
266-
if _, ok := visited[repoDatabaseURL]; ok {
267-
continue
268-
}
269-
// Download the repo database
270-
repoRes, err := http.Get(repoDatabaseURL)
271-
if err != nil {
272-
return nil, err
273-
}
274-
defer repoRes.Body.Close()
275-
visited[repoDatabaseURL] = struct{}{}
246+
// Obtain the repo URL by getting mirror URL content
247+
mirrorRes, err := http.Get(mirror)
248+
if err != nil {
249+
return err
250+
}
251+
defer mirrorRes.Body.Close()
276252

277-
unzip, err := unzipFuncFromBuilder(a)
278-
if err != nil {
279-
return nil, err
280-
}
253+
var repo string
254+
scanner := bufio.NewScanner(mirrorRes.Body)
255+
if scanner.Scan() {
256+
repo = scanner.Text()
257+
}
258+
if repo == "" {
259+
return fmt.Errorf("repository not found")
260+
}
261+
repo = strings.ReplaceAll(strings.TrimSuffix(repo, "\n"), "$basearch", kv.Architecture.ToNonDeb())
262+
repo = strings.TrimSuffix(repo, "/")
263+
repoDatabaseURL := fmt.Sprintf("%s/repodata/primary.sqlite.%s", repo, a.ext())
264+
if _, ok := visited[repoDatabaseURL]; ok {
265+
return nil
266+
}
267+
// Download the repo database
268+
repoRes, err := http.Get(repoDatabaseURL)
269+
if err != nil {
270+
return err
271+
}
272+
defer repoRes.Body.Close()
273+
visited[repoDatabaseURL] = struct{}{}
281274

282-
dbBytes, err := unzip(repoRes.Body)
283-
if err != nil {
284-
return nil, err
285-
}
286-
// Create the temporary database file
287-
dbFile, err := ioutil.TempFile(os.TempDir(), fmt.Sprintf("%s-*.sqlite", a.Name()))
288-
if err != nil {
289-
return nil, err
290-
}
291-
defer os.Remove(dbFile.Name())
292-
if _, err := dbFile.Write(dbBytes); err != nil {
293-
return nil, err
294-
}
295-
// Open the database
296-
db, err := sql.Open("sqlite", dbFile.Name())
297-
if err != nil {
298-
return nil, err
299-
}
300-
defer db.Close()
301-
// Query the database
302-
rel := strings.TrimPrefix(strings.TrimSuffix(kv.FullExtraversion, fmt.Sprintf(".%s", kv.Architecture.ToNonDeb())), "-")
303-
q := fmt.Sprintf("SELECT location_href FROM packages WHERE name LIKE 'kernel-devel%%' AND version='%s' AND release='%s'", kv.Fullversion, rel)
304-
stmt, err := db.Prepare(q)
305-
if err != nil {
306-
return nil, err
307-
}
308-
defer stmt.Close()
309-
rows, err := stmt.Query()
310-
if err != nil {
311-
return nil, err
312-
}
313-
defer rows.Close()
314-
for rows.Next() {
315-
var href string
316-
err = rows.Scan(&href)
275+
unzip, err := unzipFuncFromBuilder(a)
317276
if err != nil {
318-
log.Fatal(err)
277+
return err
319278
}
320-
urls = append(urls, fmt.Sprintf("%s/%s", repo, href))
321-
}
322279

323-
if err := dbFile.Close(); err != nil {
280+
dbBytes, err := unzip(repoRes.Body)
281+
if err != nil {
282+
return err
283+
}
284+
// Create the temporary database file
285+
dbFile, err := os.CreateTemp(os.TempDir(), fmt.Sprintf("%s-*.sqlite", a.Name()))
286+
if err != nil {
287+
return err
288+
}
289+
defer os.Remove(dbFile.Name())
290+
if _, err := dbFile.Write(dbBytes); err != nil {
291+
return err
292+
}
293+
// Open the database
294+
db, err := sql.Open("sqlite", dbFile.Name())
295+
if err != nil {
296+
return err
297+
}
298+
defer db.Close()
299+
// Query the database
300+
rel := strings.TrimPrefix(strings.TrimSuffix(kv.FullExtraversion, fmt.Sprintf(".%s", kv.Architecture.ToNonDeb())), "-")
301+
q := fmt.Sprintf("SELECT location_href FROM packages WHERE name LIKE 'kernel-devel%%' AND version='%s' AND release='%s'", kv.Fullversion, rel)
302+
stmt, err := db.Prepare(q)
303+
if err != nil {
304+
return err
305+
}
306+
defer stmt.Close()
307+
rows, err := stmt.Query()
308+
if err != nil {
309+
return err
310+
}
311+
defer rows.Close()
312+
for rows.Next() {
313+
var href string
314+
err = rows.Scan(&href)
315+
if err != nil {
316+
log.Fatal(err)
317+
}
318+
urls = append(urls, fmt.Sprintf("%s/%s", repo, href))
319+
}
320+
return dbFile.Close()
321+
}()
322+
if err != nil {
324323
return nil, err
325324
}
326325

0 commit comments

Comments
 (0)