From 5dd25ae62dc695620ed151da158288f90cffb6ea Mon Sep 17 00:00:00 2001 From: SIGSEGV Date: Wed, 13 Jan 2021 11:05:50 +0800 Subject: [PATCH] Fix the issue that tiup mirror clone not handle any platform correctly (#1060) Close https://github.com/pingcap/tiup/issues/1058 Co-authored-by: Ti Prow Robot <71242396+ti-community-prow-bot@users.noreply.github.com> --- pkg/repository/clone_mirror.go | 49 ++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/pkg/repository/clone_mirror.go b/pkg/repository/clone_mirror.go index 6b06f9623b..fb4a1dd26f 100644 --- a/pkg/repository/clone_mirror.go +++ b/pkg/repository/clone_mirror.go @@ -279,34 +279,37 @@ func cloneComponents(repo *V1Repository, } } + platforms := []string{} for _, goos := range options.OSs { for _, goarch := range options.Archs { - platform := PlatformString(goos, goarch) - versions := manifest.VersionListWithYanked(platform) - if versions == nil { - fmt.Printf("The component '%s' donesn't have %s/%s, skipped\n", name, goos, goarch) - } - for v, versionItem := range versions { - if !options.Full { - newVersions := newManifest.VersionListWithYanked(platform) - if newVersions == nil { - newVersions = map[string]v1manifest.VersionItem{} - newManifest.Platforms[platform] = newVersions - } - newVersions[v] = versionItem - if !checkVersion(options, vs, v) { - versionItem.Yanked = true - newVersions[v] = versionItem - continue - } + platforms = append(platforms, PlatformString(goos, goarch)) + } + } + if len(platforms) > 0 { + platforms = append(platforms, v1manifest.AnyPlatform) + } + + for _, platform := range platforms { + for v, versionItem := range manifest.Platforms[platform] { + if !options.Full { + newVersions := newManifest.Platforms[platform] + if newVersions == nil { + newVersions = map[string]v1manifest.VersionItem{} + newManifest.Platforms[platform] = newVersions } - if _, err := repo.FetchComponentManifest(name, false); err != nil || versionItem.Yanked { - // The component or the version is yanked, skip download binary + newVersions[v] = versionItem + if !checkVersion(options, vs, v) { + versionItem.Yanked = true + newVersions[v] = versionItem continue } - if err := download(targetDir, tmpDir, repo, &versionItem); err != nil { - return nil, errors.Annotatef(err, "download resource: %s", name) - } + } + if _, err := repo.FetchComponentManifest(name, false); err != nil || versionItem.Yanked { + // The component or the version is yanked, skip download binary + continue + } + if err := download(targetDir, tmpDir, repo, &versionItem); err != nil { + return nil, errors.Annotatef(err, "download resource: %s", name) } } }