mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-04-19 19:28:22 +00:00
Merge pull request #1388 from aptly-dev/fix/flat-mirror-filtering
do not set empty mirror architectures for flat mirrors
This commit is contained in:
@@ -317,6 +317,9 @@ func (l *PackageList) VerifyDependencies(options int, architectures []string, so
|
||||
progress.InitBar(int64(l.Len())*int64(len(architectures)), false, aptly.BarGeneralVerifyDependencies)
|
||||
}
|
||||
|
||||
if len(architectures) == 0 {
|
||||
return nil, fmt.Errorf("no architectures defined, cannot verify dependencies")
|
||||
}
|
||||
for _, arch := range architectures {
|
||||
cache := make(map[string]bool, 2048)
|
||||
|
||||
|
||||
@@ -105,7 +105,6 @@ func NewRemoteRepo(name string, archiveRoot string, distribution string, compone
|
||||
if !strings.HasPrefix(result.Distribution, ".") {
|
||||
result.Distribution = "./" + result.Distribution
|
||||
}
|
||||
result.Architectures = nil
|
||||
if len(result.Components) > 0 {
|
||||
return nil, fmt.Errorf("components aren't supported for flat repos")
|
||||
}
|
||||
@@ -351,7 +350,7 @@ ok:
|
||||
return err
|
||||
}
|
||||
|
||||
if !repo.IsFlat() {
|
||||
if len(stanza["Architectures"]) > 0 {
|
||||
architectures := strings.Split(stanza["Architectures"], " ")
|
||||
sort.Strings(architectures)
|
||||
// "source" architecture is never present, despite Release file claims
|
||||
@@ -365,7 +364,13 @@ ok:
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if len(repo.Architectures) == 0 {
|
||||
return fmt.Errorf("no architectures found, please specify")
|
||||
}
|
||||
|
||||
if !repo.IsFlat() {
|
||||
components := strings.Split(stanza["Components"], " ")
|
||||
if strings.Contains(repo.Distribution, "/") {
|
||||
distributionLast := path.Base(repo.Distribution) + "/"
|
||||
|
||||
@@ -115,7 +115,6 @@ func (s *RemoteRepoSuite) TestInvalidURL(c *C) {
|
||||
func (s *RemoteRepoSuite) TestFlatCreation(c *C) {
|
||||
c.Check(s.flat.IsFlat(), Equals, true)
|
||||
c.Check(s.flat.Distribution, Equals, "./")
|
||||
c.Check(s.flat.Architectures, IsNil)
|
||||
c.Check(s.flat.Components, IsNil)
|
||||
|
||||
flat2, _ := NewRemoteRepo("flat2", "http://pkg.jenkins-ci.org/debian-stable", "binary/", []string{}, []string{}, false, false, false)
|
||||
|
||||
@@ -2,7 +2,7 @@ Name: mirror14
|
||||
Archive Root URL: http://repo.aptly.info/system-tests/cloud.r-project.org/bin/linux/debian/
|
||||
Distribution: ./bullseye-cran40/
|
||||
Components:
|
||||
Architectures:
|
||||
Architectures: all, amd64, i386
|
||||
Download Sources: no
|
||||
Download .udebs: no
|
||||
Last update: never
|
||||
|
||||
@@ -2,7 +2,7 @@ Name: mirror21
|
||||
Archive Root URL: http://repo.aptly.info/system-tests/pkg.jenkins.io/debian-stable/
|
||||
Distribution: ./binary/
|
||||
Components:
|
||||
Architectures:
|
||||
Architectures: all
|
||||
Download Sources: no
|
||||
Download .udebs: no
|
||||
Last update: never
|
||||
|
||||
@@ -2,7 +2,7 @@ Name: mirror33
|
||||
Archive Root URL: http://repo.aptly.info/system-tests/nvidia.github.io/libnvidia-container/stable/ubuntu16.04/amd64/
|
||||
Distribution: ./
|
||||
Components:
|
||||
Architectures:
|
||||
Architectures: amd64
|
||||
Download Sources: no
|
||||
Download .udebs: no
|
||||
Last update: never
|
||||
|
||||
6
system/t04_mirror/CreateMirror34Test_gold
Normal file
6
system/t04_mirror/CreateMirror34Test_gold
Normal file
@@ -0,0 +1,6 @@
|
||||
Downloading: http://repo.aptly.info/system-tests/developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/Release
|
||||
Error (retrying): HTTP code 404 while fetching http://repo.aptly.info/system-tests/developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/Release
|
||||
Retrying 0 http://repo.aptly.info/system-tests/developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/Release...
|
||||
Download Error: http://repo.aptly.info/system-tests/developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/Release
|
||||
Downloading: http://repo.aptly.info/system-tests/developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/InRelease
|
||||
ERROR: unable to fetch mirror: no architectures found, please specify
|
||||
6
system/t04_mirror/CreateMirror35Test_gold
Normal file
6
system/t04_mirror/CreateMirror35Test_gold
Normal file
@@ -0,0 +1,6 @@
|
||||
Downloading & parsing package files...
|
||||
Applying filter...
|
||||
Packages filtered: 4743 -> 81.
|
||||
Building download queue...
|
||||
Download queue: 81 items (3.00 GiB)
|
||||
|
||||
17
system/t04_mirror/CreateMirror35Test_mirror_show
Normal file
17
system/t04_mirror/CreateMirror35Test_mirror_show
Normal file
@@ -0,0 +1,17 @@
|
||||
Name: mirror35
|
||||
Archive Root URL: http://repo.aptly.info/system-tests/developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/
|
||||
Distribution: ./
|
||||
Components:
|
||||
Architectures: amd64
|
||||
Download Sources: no
|
||||
Download .udebs: no
|
||||
Filter: cuda-12-6 (= 12.6.2-1)
|
||||
Filter With Deps: yes
|
||||
Last update: never
|
||||
|
||||
Information from release file:
|
||||
Acquire-By-Hash: no
|
||||
Architecture: x86_64
|
||||
Date: Mon, 04 Nov 2024 16:02:23 +0000
|
||||
Label: NVIDIA CUDA
|
||||
Origin: NVIDIA
|
||||
@@ -126,7 +126,10 @@
|
||||
"ArchiveRoot": "http://repo.aptly.info/system-tests/download.opensuse.org/repositories/Apache:/MirrorBrain/Debian_9.0/",
|
||||
"Distribution": "./",
|
||||
"Components": null,
|
||||
"Architectures": null,
|
||||
"Architectures": [
|
||||
"amd64",
|
||||
"i386"
|
||||
],
|
||||
"Meta": {
|
||||
"Architectures": "i386 amd64",
|
||||
"Archive": "Debian_9.0",
|
||||
|
||||
@@ -454,3 +454,38 @@ class CreateMirror33Test(BaseTest):
|
||||
def check(self):
|
||||
self.check_output()
|
||||
self.check_cmd_output("aptly mirror show mirror33", "mirror_show")
|
||||
|
||||
|
||||
class CreateMirror34Test(BaseTest):
|
||||
"""
|
||||
create mirror error: flat repo with filter but no architectures in InRelease file
|
||||
"""
|
||||
configOverride = {"max-tries": 1}
|
||||
runCmd = "aptly mirror create -ignore-signatures -filter \"cuda-12-6 (= 12.6.2-1)\" -filter-with-deps mirror34 http://repo.aptly.info/system-tests/developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ ./"
|
||||
|
||||
|
||||
class CreateMirror35Test(BaseTest):
|
||||
"""
|
||||
create mirror: flat repo with filter but no architectures in InRelease file
|
||||
"""
|
||||
configOverride = {"max-tries": 1}
|
||||
fixtureCmds = [
|
||||
"aptly mirror create -architectures amd64 -ignore-signatures -filter \"cuda-12-6 (= 12.6.2-1)\" -filter-with-deps mirror35 "
|
||||
"http://repo.aptly.info/system-tests/developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ ./",
|
||||
]
|
||||
runCmd = "aptly mirror update -ignore-signatures mirror35"
|
||||
|
||||
# the downloading of the actual packages will return 404 since they don't exist. ignore the errors, the test verifies proper count of filtered packages
|
||||
|
||||
def outputMatchPrepare(self, s):
|
||||
s = re.sub(r'Downloading: .*\n', '', s, flags=re.MULTILINE)
|
||||
s = re.sub(r'Download Error: .*\n', '', s, flags=re.MULTILINE)
|
||||
s = re.sub(r'Retrying .*\n', '', s, flags=re.MULTILINE)
|
||||
s = re.sub(r'Error \(retrying\): .*\n', '', s, flags=re.MULTILINE)
|
||||
s = re.sub(r'HTTP code 404 while fetching .*\n', '', s, flags=re.MULTILINE)
|
||||
s = re.sub(r'ERROR: unable to update: .*\n', '', s, flags=re.MULTILINE)
|
||||
return s
|
||||
|
||||
def check(self):
|
||||
self.check_output()
|
||||
self.check_cmd_output("aptly mirror show mirror35", "mirror_show")
|
||||
|
||||
Reference in New Issue
Block a user