Release file: support Version field

https://wiki.debian.org/DebianRepository/Format#Version

The Version field, if specified, shall be the version of the release.
On the other hand, if not set or set to an empty value, the Version
field will not be included in the Release file.

Signed-off-by: Zhang Xiao <xiao.zhang@windriver.com>
This commit is contained in:
Zhang Xiao
2026-02-10 01:26:02 +00:00
parent 9defe70190
commit e2ebcbb02a
23 changed files with 189 additions and 13 deletions
+8 -4
View File
@@ -24,7 +24,8 @@
}
],
"Storage": "",
"Suite": ""
"Suite": "",
"Version": ""
},
{
"AcquireByHash": false,
@@ -50,7 +51,8 @@
}
],
"Storage": "",
"Suite": ""
"Suite": "",
"Version": ""
},
{
"AcquireByHash": false,
@@ -77,7 +79,8 @@
}
],
"Storage": "",
"Suite": ""
"Suite": "",
"Version": ""
},
{
"AcquireByHash": false,
@@ -104,6 +107,7 @@
}
],
"Storage": "",
"Suite": ""
"Suite": "",
"Version": ""
}
]
+14
View File
@@ -0,0 +1,14 @@
Loading packages...
Generating metadata files and linking package files...
Finalizing metadata files...
Signing file 'Release' with gpg, please enter your passphrase when prompted:
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
Local repo local-repo has been successfully published.
Please setup your webserver to serve directory '${HOME}/.aptly/public' with autoindexing.
Now you can add following line to apt sources:
deb http://your-server/ maverick contrib
deb-src http://your-server/ maverick contrib
Don't forget to add your GPG key to apt with apt-key.
You can also use `aptly serve` to publish your repositories over HTTP quickly.
@@ -0,0 +1,12 @@
Origin: . maverick
Label: label37
Suite: maverick
Version: 13.3
Codename: maverick
Architectures: i386
Components: contrib
Description: Generated by aptly
MD5Sum:
SHA1:
SHA256:
SHA512:
+2 -1
View File
@@ -23,5 +23,6 @@
}
],
"Storage": "",
"Suite": ""
"Suite": "",
"Version": ""
}
+2 -1
View File
@@ -23,5 +23,6 @@
}
],
"Storage": "",
"Suite": ""
"Suite": "",
"Version": ""
}
@@ -1,6 +1,7 @@
Origin: aptly24
Label: . squeeze
Suite: squeeze
Version: 13.3
Codename: squeeze
NotAutomatic: yes
ButAutomaticUpgrades: yes
@@ -1,6 +1,7 @@
Origin: LP-PPA-gladky-anton-gnuplot
Label: . maverick
Suite: maverick
Version: 13.3
Codename: maverick
Signed-By: a,string
Architectures: amd64 i386
@@ -1,6 +1,7 @@
Origin: earth
Label: fun
Suite: maverick
Version: 13.3
Codename: maverick
Architectures: i386
Components: main
@@ -0,0 +1,9 @@
Loading packages...
Generating metadata files and linking package files...
Finalizing metadata files...
Signing file 'Release' with gpg, please enter your passphrase when prompted:
Clearsigning file 'Release' with gpg, please enter your passphrase when prompted:
Cleaning up published repository ./maverick...
Cleaning up component 'main'...
Published local repository ./maverick [i386, source] publishes {main: [local-repo]} has been updated successfully.
@@ -0,0 +1,11 @@
Origin: . maverick
Label: . maverick
Suite: maverick
Codename: maverick
Architectures: i386
Components: main
Description: Generated by aptly
MD5Sum:
SHA1:
SHA256:
SHA512:
+19
View File
@@ -1005,3 +1005,22 @@ class PublishRepo36Test(BaseTest):
# verify byte-identical output
second_release = self.read_file('public/dists/maverick/Release')
self.check_equal(first_release, second_release)
class PublishRepo37Test(BaseTest):
"""
publish repo: custom version
"""
fixtureCmds = [
"aptly repo create local-repo",
"aptly repo add local-repo ${files}",
]
runCmd = "aptly publish repo -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -distribution=maverick -component=contrib -label=label37 -version=13.3 local-repo"
gold_processor = BaseTest.expand_environ
def check(self):
super(PublishRepo37Test, self).check()
# verify contents except of sums
self.check_file_contents(
'public/dists/maverick/Release', 'release', match_prepare=strip_processor)
+2 -2
View File
@@ -690,7 +690,7 @@ class PublishSnapshot23Test(BaseTest):
class PublishSnapshot24Test(BaseTest):
"""
publish snapshot: custom origin, notautomatic and butautomaticupgrades
publish snapshot: custom origin, version, notautomatic and butautomaticupgrades
"""
fixtureDB = True
fixturePool = True
@@ -698,7 +698,7 @@ class PublishSnapshot24Test(BaseTest):
"aptly snapshot create snap24 from mirror gnuplot-maverick",
]
sortOutput = True
runCmd = "aptly publish snapshot -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -distribution=squeeze -origin=aptly24 -notautomatic=yes -butautomaticupgrades=yes snap24"
runCmd = "aptly publish snapshot -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -distribution=squeeze -origin=aptly24 -version=13.3 -notautomatic=yes -butautomaticupgrades=yes snap24"
gold_processor = BaseTest.expand_environ
def check(self):
+2 -2
View File
@@ -607,7 +607,7 @@ class PublishSwitch16Test(BaseTest):
class PublishSwitch17Test(BaseTest):
"""
publish switch: signed-by
publish switch: signed-by, version
"""
fixtureDB = True
fixturePool = True
@@ -616,7 +616,7 @@ class PublishSwitch17Test(BaseTest):
"aptly snapshot create snap2 from mirror gnuplot-maverick",
"aptly publish snapshot -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -distribution=maverick snap1",
]
runCmd = "aptly publish switch -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -signed-by=a,string maverick snap2"
runCmd = "aptly publish switch -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -signed-by=a,string -version=13.3 maverick snap2"
gold_processor = BaseTest.expand_environ
def check(self):
+24 -2
View File
@@ -629,7 +629,7 @@ class PublishUpdate19Test(BaseTest):
class PublishUpdate20Test(BaseTest):
"""
publish update: update label and origin
publish update: update label, origin, version
"""
fixtureCmds = [
"aptly repo create local-repo",
@@ -637,7 +637,7 @@ class PublishUpdate20Test(BaseTest):
"aptly publish repo -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -distribution=maverick -skip-bz2 local-repo",
"aptly repo remove local-repo pyspi"
]
runCmd = "aptly publish update -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -label=fun -origin=earth maverick"
runCmd = "aptly publish update -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -label=fun -origin=earth -version=13.3 maverick"
gold_processor = BaseTest.expand_environ
def check(self):
@@ -647,3 +647,25 @@ class PublishUpdate20Test(BaseTest):
# verify contents except of sums
self.check_file_contents('public/dists/maverick/Release', 'release', match_prepare=strip_processor)
class PublishUpdate21Test(BaseTest):
"""
publish update: update version with empty value
"""
fixtureCmds = [
"aptly repo create local-repo",
"aptly repo add local-repo ${files}/",
"aptly publish repo -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -distribution=maverick -skip-bz2 -version=13.3 local-repo",
"aptly repo remove local-repo pyspi"
]
runCmd = "aptly publish update -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec -version='' maverick"
gold_processor = BaseTest.expand_environ
def check(self):
super(PublishUpdate21Test, self).check()
self.check_exists('public/dists/maverick/InRelease')
# verify contents except of sums
self.check_file_contents('public/dists/maverick/Release', 'release', match_prepare=strip_processor)