From e2ebcbb02a128389010d7da4ebdcfc30dbedde05 Mon Sep 17 00:00:00 2001 From: Zhang Xiao Date: Tue, 10 Feb 2026 01:26:02 +0000 Subject: [PATCH] `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 --- AUTHORS | 1 + api/publish.go | 18 +++++++++++++ cmd/publish_repo.go | 1 + cmd/publish_snapshot.go | 5 ++++ cmd/publish_switch.go | 5 ++++ cmd/publish_update.go | 5 ++++ deb/publish.go | 8 ++++++ man/aptly.1 | 12 +++++++++ system/t06_publish/PublishList5Test_gold | 12 ++++++--- system/t06_publish/PublishRepo37Test_gold | 14 ++++++++++ system/t06_publish/PublishRepo37Test_release | 12 +++++++++ system/t06_publish/PublishShow3Test_gold | 3 ++- system/t06_publish/PublishShow4Test_gold | 3 ++- .../t06_publish/PublishSnapshot24Test_release | 1 + .../t06_publish/PublishSwitch17Test_release | 1 + .../t06_publish/PublishUpdate20Test_release | 1 + system/t06_publish/PublishUpdate21Test_gold | 9 +++++++ .../t06_publish/PublishUpdate21Test_release | 11 ++++++++ system/t06_publish/repo.py | 19 +++++++++++++ system/t06_publish/snapshot.py | 4 +-- system/t06_publish/switch.py | 4 +-- system/t06_publish/update.py | 26 ++++++++++++++++-- system/t12_api/publish.py | 27 ++++++++++++++++++- 23 files changed, 189 insertions(+), 13 deletions(-) create mode 100644 system/t06_publish/PublishRepo37Test_gold create mode 100644 system/t06_publish/PublishRepo37Test_release create mode 100644 system/t06_publish/PublishUpdate21Test_gold create mode 100644 system/t06_publish/PublishUpdate21Test_release diff --git a/AUTHORS b/AUTHORS index aa7b8ffb6a..a88befb047 100644 --- a/AUTHORS +++ b/AUTHORS @@ -81,3 +81,4 @@ List of contributors, in chronological order: * Brian Witt (https://github.com/bwitt) * Ales Bregar (https://github.com/abregar) * Tim Foerster (https://github.com/tonobo) +* Zhang Xiao (https://github.com/xzhang1) diff --git a/api/publish.go b/api/publish.go index 54dafce548..334a27a26f 100644 --- a/api/publish.go +++ b/api/publish.go @@ -186,6 +186,8 @@ type publishedRepoCreateParams struct { SignedBy *string ` json:"SignedBy" example:""` // Enable multiple packages with the same filename in different distributions MultiDist *bool ` json:"MultiDist" example:"false"` + // Version of the release + Version string ` json:"Version" example:""` } // @Summary Create Published Repository @@ -361,6 +363,10 @@ func apiPublishRepoOrSnapshot(c *gin.Context) { published.SignedBy = *b.SignedBy } + if b.Version != "" { + published.Version = b.Version + } + duplicate := collection.CheckDuplicate(published) if duplicate != nil { _ = collectionFactory.PublishedRepoCollection().LoadComplete(duplicate, collectionFactory) @@ -404,6 +410,8 @@ type publishedRepoUpdateSwitchParams struct { Label *string ` json:"Label" example:"Debian"` // Value of Origin: field in published repository stanza Origin *string ` json:"Origin" example:"Debian"` + // Version of the release: Optional + Version *string ` json:"Version" example:"13.3"` } // @Summary Update Published Repository @@ -503,6 +511,10 @@ func apiPublishUpdateSwitch(c *gin.Context) { published.Origin = *b.Origin } + if b.Version != nil { + published.Version = *b.Version + } + resources := []string{string(published.Key())} taskName := fmt.Sprintf("Update published %s repository %s/%s", published.SourceKind, published.StoragePrefix(), published.Distribution) maybeRunTaskInBackground(c, taskName, resources, func(out aptly.Progress, _ *task.Detail) (*task.ProcessReturnValue, error) { @@ -1000,6 +1012,8 @@ type publishedRepoUpdateParams struct { Label *string ` json:"Label" example:"Debian"` // Value of Origin: field in published repository stanza Origin *string ` json:"Origin" example:"Debian"` + // Version of the release: Optional + Version *string ` json:"Version" example:"13.3"` } // @Summary Update Published Repository @@ -1080,6 +1094,10 @@ func apiPublishUpdate(c *gin.Context) { published.Origin = *b.Origin } + if b.Version != nil { + published.Version = *b.Version + } + resources := []string{string(published.Key())} taskName := fmt.Sprintf("Update published %s repository %s/%s", published.SourceKind, published.StoragePrefix(), published.Distribution) maybeRunTaskInBackground(c, taskName, resources, func(out aptly.Progress, _ *task.Detail) (*task.ProcessReturnValue, error) { diff --git a/cmd/publish_repo.go b/cmd/publish_repo.go index a088b40ef4..e398c4a471 100644 --- a/cmd/publish_repo.go +++ b/cmd/publish_repo.go @@ -53,6 +53,7 @@ Example: cmd.Flag.Bool("acquire-by-hash", false, "provide index files by hash") cmd.Flag.String("signed-by", "", "an optional field containing a comma separated list of OpenPGP key fingerprints to be used for validating the next Release file") cmd.Flag.Bool("multi-dist", false, "enable multiple packages with the same filename in different distributions") + cmd.Flag.String("version", "", "version of the release") return cmd } diff --git a/cmd/publish_snapshot.go b/cmd/publish_snapshot.go index 67f3c009a7..90939f2dcb 100644 --- a/cmd/publish_snapshot.go +++ b/cmd/publish_snapshot.go @@ -158,6 +158,10 @@ func aptlyPublishSnapshotOrRepo(cmd *commander.Command, args []string) error { published.MultiDist = context.Flags().Lookup("multi-dist").Value.Get().(bool) } + if context.Flags().IsSet("version") { + published.Version = context.Flags().Lookup("version").Value.String() + } + duplicate := collectionFactory.PublishedRepoCollection().CheckDuplicate(published) if duplicate != nil { _ = collectionFactory.PublishedRepoCollection().LoadComplete(duplicate, collectionFactory) @@ -252,6 +256,7 @@ Example: cmd.Flag.Bool("force-overwrite", false, "overwrite files in package pool in case of mismatch") cmd.Flag.Bool("acquire-by-hash", false, "provide index files by hash") cmd.Flag.String("signed-by", "", "an optional field containing a comma separated list of OpenPGP key fingerprints to be used for validating the next Release file") + cmd.Flag.String("version", "", "version of the release") cmd.Flag.Bool("multi-dist", false, "enable multiple packages with the same filename in different distributions") return cmd diff --git a/cmd/publish_switch.go b/cmd/publish_switch.go index 77e6a32e05..20bf5caae4 100644 --- a/cmd/publish_switch.go +++ b/cmd/publish_switch.go @@ -103,6 +103,10 @@ func aptlyPublishSwitch(cmd *commander.Command, args []string) error { published.SignedBy = context.Flags().Lookup("signed-by").Value.String() } + if context.Flags().IsSet("version") { + published.Version = context.Flags().Lookup("version").Value.String() + } + if context.Flags().IsSet("multi-dist") { published.MultiDist = context.Flags().Lookup("multi-dist").Value.Get().(bool) } @@ -167,6 +171,7 @@ This command would switch published repository (with one component) named ppa/wh cmd.Flag.String("component", "", "component names to update (for multi-component publishing, separate components with commas)") cmd.Flag.Bool("force-overwrite", false, "overwrite files in package pool in case of mismatch") cmd.Flag.String("signed-by", "", "an optional field containing a comma separated list of OpenPGP key fingerprints to be used for validating the next Release file") + cmd.Flag.String("version", "", "version of the release") cmd.Flag.Bool("skip-cleanup", false, "don't remove unreferenced files in prefix/component") cmd.Flag.Bool("multi-dist", false, "enable multiple packages with the same filename in different distributions") diff --git a/cmd/publish_update.go b/cmd/publish_update.go index 384847c3a7..ab38d6496a 100644 --- a/cmd/publish_update.go +++ b/cmd/publish_update.go @@ -76,6 +76,10 @@ func aptlyPublishUpdate(cmd *commander.Command, args []string) error { published.MultiDist = context.Flags().Lookup("multi-dist").Value.Get().(bool) } + if context.Flags().IsSet("version") { + published.Version = context.Flags().Lookup("version").Value.String() + } + err = published.Publish(context.PackagePool(), context, collectionFactory, signer, context.Progress(), forceOverwrite, context.SkelPath()) if err != nil { return fmt.Errorf("unable to publish: %s", err) @@ -142,6 +146,7 @@ Example: cmd.Flag.Bool("multi-dist", false, "enable multiple packages with the same filename in different distributions") cmd.Flag.String("origin", "", "overwrite origin name to publish") cmd.Flag.String("label", "", "overwrite label to publish") + cmd.Flag.String("version", "", "version of the release") return cmd } diff --git a/deb/publish.go b/deb/publish.go index 13d8ca369e..9fda070732 100644 --- a/deb/publish.go +++ b/deb/publish.go @@ -55,6 +55,7 @@ type PublishedRepo struct { Label string Suite string Codename string + Version string // Architectures is a list of all architectures published Architectures []string // SourceKind is "local"/"repo" @@ -526,6 +527,7 @@ func (p *PublishedRepo) MarshalJSON() ([]byte, error) { "Origin": p.Origin, "Suite": p.Suite, "Codename": p.Codename, + "Version": p.Version, "NotAutomatic": p.NotAutomatic, "ButAutomaticUpgrades": p.ButAutomaticUpgrades, "Prefix": p.Prefix, @@ -1080,6 +1082,9 @@ func (p *PublishedRepo) Publish(packagePool aptly.PackagePool, publishedStorageP if p.SignedBy != "" { release["Signed-By"] = p.SignedBy } + if p.Version != "" { + release["Version"] = p.Version + } var bufWriter *bufio.Writer bufWriter, err = indexes.ReleaseIndex(component, arch, udeb).BufWriter() @@ -1158,6 +1163,9 @@ func (p *PublishedRepo) Publish(packagePool aptly.PackagePool, publishedStorageP // Let's use a century as a "forever" value. release["Valid-Until"] = publishDate.AddDate(100, 0, 0).Format(datetime_format) } + if p.Version != "" { + release["Version"] = p.Version + } release["Description"] = " Generated by aptly\n" release["MD5Sum"] = "" release["SHA1"] = "" diff --git a/man/aptly.1 b/man/aptly.1 index b777d45261..508fdcd6a5 100644 --- a/man/aptly.1 +++ b/man/aptly.1 @@ -1569,6 +1569,10 @@ Options: set value for Signed-By field . .TP +\-\fBversion\fR +version of the release +. +.TP \-\fBacquire\-by\-hash\fR provide index files by hash . @@ -1714,6 +1718,10 @@ Options: set value for Signed-By field . .TP +\-\fBversion\fR +version of the release +. +.TP \-\fBacquire\-by\-hash\fR provide index files by hash . @@ -2187,6 +2195,10 @@ Options: set value for Signed-By field . .TP +\-\fBversion\fR +version of the release +. +.TP \-\fBbatch\fR run GPG with detached tty . diff --git a/system/t06_publish/PublishList5Test_gold b/system/t06_publish/PublishList5Test_gold index 2474d7ab06..16a424fe3d 100644 --- a/system/t06_publish/PublishList5Test_gold +++ b/system/t06_publish/PublishList5Test_gold @@ -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": "" } ] diff --git a/system/t06_publish/PublishRepo37Test_gold b/system/t06_publish/PublishRepo37Test_gold new file mode 100644 index 0000000000..c44a11e053 --- /dev/null +++ b/system/t06_publish/PublishRepo37Test_gold @@ -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. diff --git a/system/t06_publish/PublishRepo37Test_release b/system/t06_publish/PublishRepo37Test_release new file mode 100644 index 0000000000..68f048e671 --- /dev/null +++ b/system/t06_publish/PublishRepo37Test_release @@ -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: diff --git a/system/t06_publish/PublishShow3Test_gold b/system/t06_publish/PublishShow3Test_gold index e4879a4755..19b0ca615f 100644 --- a/system/t06_publish/PublishShow3Test_gold +++ b/system/t06_publish/PublishShow3Test_gold @@ -23,5 +23,6 @@ } ], "Storage": "", - "Suite": "" + "Suite": "", + "Version": "" } diff --git a/system/t06_publish/PublishShow4Test_gold b/system/t06_publish/PublishShow4Test_gold index a71b98af9e..d10af83a2f 100644 --- a/system/t06_publish/PublishShow4Test_gold +++ b/system/t06_publish/PublishShow4Test_gold @@ -23,5 +23,6 @@ } ], "Storage": "", - "Suite": "" + "Suite": "", + "Version": "" } diff --git a/system/t06_publish/PublishSnapshot24Test_release b/system/t06_publish/PublishSnapshot24Test_release index 139bc67b65..aac2e82a80 100644 --- a/system/t06_publish/PublishSnapshot24Test_release +++ b/system/t06_publish/PublishSnapshot24Test_release @@ -1,6 +1,7 @@ Origin: aptly24 Label: . squeeze Suite: squeeze +Version: 13.3 Codename: squeeze NotAutomatic: yes ButAutomaticUpgrades: yes diff --git a/system/t06_publish/PublishSwitch17Test_release b/system/t06_publish/PublishSwitch17Test_release index 119dafce2e..2a75b16c04 100644 --- a/system/t06_publish/PublishSwitch17Test_release +++ b/system/t06_publish/PublishSwitch17Test_release @@ -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 diff --git a/system/t06_publish/PublishUpdate20Test_release b/system/t06_publish/PublishUpdate20Test_release index 0ab5dd0ab0..da731437c1 100644 --- a/system/t06_publish/PublishUpdate20Test_release +++ b/system/t06_publish/PublishUpdate20Test_release @@ -1,6 +1,7 @@ Origin: earth Label: fun Suite: maverick +Version: 13.3 Codename: maverick Architectures: i386 Components: main diff --git a/system/t06_publish/PublishUpdate21Test_gold b/system/t06_publish/PublishUpdate21Test_gold new file mode 100644 index 0000000000..3be101c498 --- /dev/null +++ b/system/t06_publish/PublishUpdate21Test_gold @@ -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. diff --git a/system/t06_publish/PublishUpdate21Test_release b/system/t06_publish/PublishUpdate21Test_release new file mode 100644 index 0000000000..78154c5bab --- /dev/null +++ b/system/t06_publish/PublishUpdate21Test_release @@ -0,0 +1,11 @@ +Origin: . maverick +Label: . maverick +Suite: maverick +Codename: maverick +Architectures: i386 +Components: main +Description: Generated by aptly +MD5Sum: +SHA1: +SHA256: +SHA512: diff --git a/system/t06_publish/repo.py b/system/t06_publish/repo.py index ea80e53eee..3d530aebeb 100644 --- a/system/t06_publish/repo.py +++ b/system/t06_publish/repo.py @@ -1005,3 +1005,22 @@ def check(self): # 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) diff --git a/system/t06_publish/snapshot.py b/system/t06_publish/snapshot.py index b35d6f3440..3dcdf6fe83 100644 --- a/system/t06_publish/snapshot.py +++ b/system/t06_publish/snapshot.py @@ -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): diff --git a/system/t06_publish/switch.py b/system/t06_publish/switch.py index 77b950e58e..4dae4ace95 100644 --- a/system/t06_publish/switch.py +++ b/system/t06_publish/switch.py @@ -607,7 +607,7 @@ def check(self): 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): diff --git a/system/t06_publish/update.py b/system/t06_publish/update.py index 47663d22aa..b7cbf1139d 100644 --- a/system/t06_publish/update.py +++ b/system/t06_publish/update.py @@ -629,7 +629,7 @@ def check(self): 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 @@ def check(self): # 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) diff --git a/system/t12_api/publish.py b/system/t12_api/publish.py index fe74003f17..964a71a9fa 100644 --- a/system/t12_api/publish.py +++ b/system/t12_api/publish.py @@ -48,6 +48,7 @@ def check(self): 'Distribution': 'wheezy', 'Label': '', 'Origin': '', + 'Version': '', 'NotAutomatic': '', 'ButAutomaticUpgrades': '', 'Path': prefix + '/' + 'wheezy', @@ -94,6 +95,7 @@ def check(self): 'Distribution': distribution, 'Label': '', 'Origin': '', + 'Version': '', 'NotAutomatic': '', 'ButAutomaticUpgrades': '', 'Path': './' + distribution, @@ -166,6 +168,7 @@ def check(self): 'Distribution': 'bookworm', 'Label': '', 'Origin': '', + 'Version': '', 'NotAutomatic': '', 'ButAutomaticUpgrades': '', 'Path': prefix + '/' + 'bookworm', @@ -232,6 +235,7 @@ def check(self): 'Distribution': 'wheezy', 'Label': '', 'Origin': '', + 'Version': '', 'NotAutomatic': '', 'ButAutomaticUpgrades': '', 'Path': prefix + '/' + 'wheezy', @@ -283,6 +287,7 @@ def check(self): "ButAutomaticUpgrades": "yes", "Origin": "earth", "Label": "fun", + "Version": "13.3", } ) self.check_task(task) @@ -299,6 +304,7 @@ def check(self): 'Distribution': 'squeeze', 'Label': 'fun', 'Origin': 'earth', + "Version": "13.3", 'MultiDist': False, 'NotAutomatic': 'yes', 'ButAutomaticUpgrades': 'yes', @@ -377,6 +383,7 @@ def check(self): 'Distribution': 'squeeze', 'Label': 'fun', 'Origin': 'earth', + 'Version': '', 'MultiDist': False, 'NotAutomatic': 'yes', 'ButAutomaticUpgrades': 'yes', @@ -441,12 +448,13 @@ def check(self): json={"PackageRefs": ['Psource pyspi 0.6.1-1.4 f8f1daa806004e89']}) self.check_task(task) - # Update and switch AcquireByHash on. + # Update and switch AcquireByHash on, Version. task = self.put_task( "/api/publish/" + prefix + "/wheezy", json={ "AcquireByHash": True, "Signing": DefaultSigningOptions, + "Version": "13.3" } ) self.check_task(task) @@ -457,6 +465,7 @@ def check(self): 'Distribution': 'wheezy', 'Label': '', 'Origin': '', + 'Version': '13.3', 'NotAutomatic': '', 'ButAutomaticUpgrades': '', 'Path': prefix + '/' + 'wheezy', @@ -549,6 +558,7 @@ def check(self): 'Distribution': 'wheezy', 'Label': '', 'Origin': '', + 'Version': '', 'NotAutomatic': '', 'ButAutomaticUpgrades': '', 'Path': prefix + '/' + 'wheezy', @@ -629,6 +639,7 @@ def check(self): 'Distribution': 'bookworm', 'Label': '', 'Origin': '', + 'Version': '', 'NotAutomatic': '', 'ButAutomaticUpgrades': '', 'Path': prefix + '/' + 'bookworm', @@ -731,6 +742,7 @@ def _do_update(result, index): 'Distribution': 'wheezy', 'Label': '', 'Origin': '', + 'Version': '', 'NotAutomatic': '', 'ButAutomaticUpgrades': '', 'Path': prefix + '/' + 'wheezy', @@ -830,6 +842,7 @@ def check(self): 'Distribution': 'wheezy', 'Label': '', 'Origin': '', + 'Version': '', 'NotAutomatic': '', 'ButAutomaticUpgrades': '', 'Path': prefix + '/' + 'wheezy', @@ -901,6 +914,7 @@ def check(self): 'NotAutomatic': '', 'ButAutomaticUpgrades': '', 'Origin': '', + 'Version': '', 'Path': prefix + '/' + 'wheezy', 'Prefix': prefix, 'SignedBy': '', @@ -941,6 +955,7 @@ def check(self): "SkipContents": True, "Label": "fun", "Origin": "earth", + "Version": "13.3", }) self.check_task(task) repo_expected = { @@ -950,6 +965,7 @@ def check(self): 'Distribution': 'wheezy', 'Label': 'fun', 'Origin': 'earth', + 'Version': '13.3', 'NotAutomatic': '', 'ButAutomaticUpgrades': '', 'Path': prefix + '/' + 'wheezy', @@ -1017,6 +1033,7 @@ def check(self): 'Codename': '', 'Distribution': 'wheezy', 'Label': '', + 'Version': '', 'NotAutomatic': '', 'ButAutomaticUpgrades': '', 'Origin': '', @@ -1053,6 +1070,7 @@ def check(self): 'Distribution': 'wheezy', 'Label': '', 'Origin': '', + 'Version': '', 'NotAutomatic': '', 'ButAutomaticUpgrades': '', 'Path': prefix + '/' + 'wheezy', @@ -1113,6 +1131,7 @@ def check(self): 'NotAutomatic': '', 'ButAutomaticUpgrades': '', 'Origin': '', + 'Version': '', 'Path': prefix + '/' + 'wheezy', 'Prefix': prefix, 'SignedBy': '', @@ -1152,6 +1171,7 @@ def check(self): 'NotAutomatic': '', 'ButAutomaticUpgrades': '', 'Origin': '', + 'Version': '', 'Path': prefix + '/' + 'otherdist', 'Prefix': prefix, 'SignedBy': '', @@ -1194,6 +1214,7 @@ def check(self): 'Distribution': 'wheezy', 'Label': '', 'Origin': '', + 'Version': '', 'NotAutomatic': '', 'ButAutomaticUpgrades': '', 'Path': prefix + '/' + 'wheezy', @@ -1258,6 +1279,7 @@ def check(self): 'NotAutomatic': '', 'ButAutomaticUpgrades': '', 'Origin': '', + 'Version': '', 'Path': prefix + '/' + 'wheezy', 'Prefix': prefix, 'SignedBy': '', @@ -1850,6 +1872,7 @@ def check(self): "SkipContents": True, "Label": "fun", "Origin": "earth", + "Version": "13.3", } ).status_code, 200) @@ -1860,6 +1883,7 @@ def check(self): 'Distribution': 'wheezy', 'Label': 'fun', 'Origin': 'earth', + 'Version': '13.3', 'NotAutomatic': '', 'ButAutomaticUpgrades': '', 'Path': prefix + '/' + 'wheezy', @@ -1915,6 +1939,7 @@ def check(self): 'Distribution': 'wheezy', 'Label': '', 'Origin': '', + 'Version': '', 'NotAutomatic': '', 'ButAutomaticUpgrades': '', 'Path': prefix + '/' + 'wheezy',