mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-05-05 22:08:27 +00:00
fix: prevent db cleanup from deleting AppStream pool files
This commit is contained in:
committed by
André Roth
parent
2a228625e2
commit
02423af931
@@ -26,6 +26,7 @@ func aptlyDBCleanup(cmd *commander.Command, args []string) error {
|
||||
|
||||
// collect information about references packages...
|
||||
existingPackageRefs := deb.NewPackageRefList()
|
||||
referencedAppStreamFiles := []string{}
|
||||
|
||||
// used only in verbose mode to report package use source
|
||||
packageRefSources := map[string][]string{}
|
||||
@@ -55,6 +56,10 @@ func aptlyDBCleanup(cmd *commander.Command, args []string) error {
|
||||
}
|
||||
}
|
||||
|
||||
for _, poolPath := range repo.AppStreamFiles {
|
||||
referencedAppStreamFiles = append(referencedAppStreamFiles, poolPath)
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
@@ -118,6 +123,11 @@ func aptlyDBCleanup(cmd *commander.Command, args []string) error {
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
for _, poolPath := range snapshot.AppStreamFiles {
|
||||
referencedAppStreamFiles = append(referencedAppStreamFiles, poolPath)
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
@@ -236,6 +246,7 @@ func aptlyDBCleanup(cmd *commander.Command, args []string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
referencedFiles = append(referencedFiles, referencedAppStreamFiles...)
|
||||
sort.Strings(referencedFiles)
|
||||
context.Progress().ShutdownBar()
|
||||
|
||||
|
||||
7
system/t08_db/CleanupDB13Test_gold
Normal file
7
system/t08_db/CleanupDB13Test_gold
Normal file
@@ -0,0 +1,7 @@
|
||||
Loading mirrors, local repos, snapshots and published repos...
|
||||
Loading list of all packages...
|
||||
Deleting unreferenced packages (0)...
|
||||
Building list of files referenced by packages...
|
||||
Building list of files in package pool...
|
||||
Deleting unreferenced files (0)...
|
||||
Compacting database...
|
||||
14
system/t08_db/CleanupDB13Test_publish
Normal file
14
system/t08_db/CleanupDB13Test_publish
Normal file
@@ -0,0 +1,14 @@
|
||||
Loading packages...
|
||||
Generating metadata files and linking package files...
|
||||
[!] Failed to generate package contents: unable to read .deb archive from amanda-client_3.3.1-3~bpo60+1_amd64.deb: ar: missing global header
|
||||
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:
|
||||
|
||||
Snapshot snap-appstream 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/ hardy main
|
||||
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.
|
||||
@@ -150,3 +150,27 @@ class CleanupDB12Test(BaseTest):
|
||||
"aptly mirror drop gnuplot-maverick",
|
||||
]
|
||||
runCmd = "aptly db cleanup -verbose -dry-run"
|
||||
|
||||
|
||||
class CleanupDB13Test(BaseTest):
|
||||
"""
|
||||
cleanup db: appstream files survive cleanup
|
||||
"""
|
||||
fixtureWebServer = "../t04_mirror/test_release2"
|
||||
fixtureGpg = True
|
||||
configOverride = {"downloadRetries": 0}
|
||||
fixtureCmds = [
|
||||
"aptly mirror create --ignore-signatures -with-appstream -architectures=amd64 appstream-test ${url} hardy main",
|
||||
"aptly mirror update -ignore-checksums --ignore-signatures appstream-test",
|
||||
"aptly snapshot create snap-appstream from mirror appstream-test",
|
||||
]
|
||||
runCmd = "aptly db cleanup"
|
||||
|
||||
def check(self):
|
||||
self.check_output()
|
||||
# verify appstream files survive cleanup by publishing the snapshot
|
||||
self.check_cmd_output(
|
||||
"aptly publish snapshot -keyring=${files}/aptly.pub -secret-keyring=${files}/aptly.sec snap-appstream",
|
||||
"publish", match_prepare=self.expand_environ)
|
||||
self.check_exists('public/dists/hardy/main/dep11/Components-amd64.yml.gz')
|
||||
self.check_exists('public/dists/hardy/main/dep11/icons-48x48.tar.gz')
|
||||
|
||||
Reference in New Issue
Block a user