mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-05-06 22:18:28 +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...
|
// collect information about references packages...
|
||||||
existingPackageRefs := deb.NewPackageRefList()
|
existingPackageRefs := deb.NewPackageRefList()
|
||||||
|
referencedAppStreamFiles := []string{}
|
||||||
|
|
||||||
// used only in verbose mode to report package use source
|
// used only in verbose mode to report package use source
|
||||||
packageRefSources := map[string][]string{}
|
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
|
return nil
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -118,6 +123,11 @@ func aptlyDBCleanup(cmd *commander.Command, args []string) error {
|
|||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, poolPath := range snapshot.AppStreamFiles {
|
||||||
|
referencedAppStreamFiles = append(referencedAppStreamFiles, poolPath)
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -236,6 +246,7 @@ func aptlyDBCleanup(cmd *commander.Command, args []string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
referencedFiles = append(referencedFiles, referencedAppStreamFiles...)
|
||||||
sort.Strings(referencedFiles)
|
sort.Strings(referencedFiles)
|
||||||
context.Progress().ShutdownBar()
|
context.Progress().ShutdownBar()
|
||||||
|
|
||||||
|
|||||||
@@ -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...
|
||||||
@@ -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",
|
"aptly mirror drop gnuplot-maverick",
|
||||||
]
|
]
|
||||||
runCmd = "aptly db cleanup -verbose -dry-run"
|
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