diff --git a/toolkit/tools/internal/packagerepo/repocloner/rpmrepocloner/rpmrepocloner.go b/toolkit/tools/internal/packagerepo/repocloner/rpmrepocloner/rpmrepocloner.go index 0a421ea7baf..9c5fa71709c 100644 --- a/toolkit/tools/internal/packagerepo/repocloner/rpmrepocloner/rpmrepocloner.go +++ b/toolkit/tools/internal/packagerepo/repocloner/rpmrepocloner/rpmrepocloner.go @@ -26,6 +26,7 @@ const ( leaveChrootFilesOnDisk = false updateRepoID = "mariner-official-update" fetcherRepoID = "fetcher-cloned-repo" + cacheRepoDir = "/upstream-cached-rpms" ) var ( @@ -333,14 +334,31 @@ func (r *RpmRepoCloner) SearchAndClone(cloneDeps bool, singlePackageToClone *pkg // ConvertDownloadedPackagesIntoRepo initializes the downloaded RPMs into an RPM repository. func (r *RpmRepoCloner) ConvertDownloadedPackagesIntoRepo() (err error) { - fullRpmDownloadDir := buildpipeline.GetRpmsDir(r.chroot.RootDir(), chrootDownloadDir) + srcDir := filepath.Join(r.chroot.RootDir(), chrootDownloadDir) + repoDir := srcDir - err = rpmrepomanager.OrganizePackagesByArch(fullRpmDownloadDir, fullRpmDownloadDir) + if !buildpipeline.IsRegularBuild() { + // Docker based build don't use overlay so repo folder + // must be explicitely set to the RPMs cache folder + repoDir = filepath.Join(r.chroot.RootDir(), cacheRepoDir) + } + + err = rpmrepomanager.OrganizePackagesByArch(srcDir, repoDir) if err != nil { return } err = r.initializeMountedChrootRepo(chrootDownloadDir) + if err != nil { + return + } + + if !buildpipeline.IsRegularBuild() { + // Docker based build don't use overlay so cache repo + // must be explicitely initialized + err = r.initializeMountedChrootRepo(cacheRepoDir) + } + return }