Merge lp:~mvo/snappy/snappy-snapfs-cleanup-kernel-assets into lp:~snappy-dev/snappy/snappy-moved-to-github

Proposed by Michael Vogt
Status: Needs review
Proposed branch: lp:~mvo/snappy/snappy-snapfs-cleanup-kernel-assets
Merge into: lp:~snappy-dev/snappy/snappy-moved-to-github
Prerequisite: lp:~mvo/snappy/snappy-snapfs-needs-reboot
Diff against target: 64 lines (+38/-0)
3 files modified
snappy/kernel.go (+11/-0)
snappy/snapp.go (+7/-0)
snappy/snapp_snapfs_test.go (+20/-0)
To merge this branch: bzr merge lp:~mvo/snappy/snappy-snapfs-cleanup-kernel-assets
Reviewer Review Type Date Requested Status
John Lenton (community) Approve
Review via email: mp+274982@code.launchpad.net

Commit message

Cleanup kernel assets on remove

To post a comment you must log in.
782. By Michael Vogt

remove kernel assets in /boot/ on snap removal

Revision history for this message
John Lenton (chipaca) wrote :

Looks good. But a question.

review: Approve
Revision history for this message
Michael Vogt (mvo) wrote :

Thanks! Fixed the code as suggested.

Unmerged revisions

782. By Michael Vogt

remove kernel assets in /boot/ on snap removal

781. By Michael Vogt

show a reboot required message (not complete yet)

780. By Michael Vogt

go fmt

779. By Michael Vogt

partition/partition.go: IsNextBootOther() is always false on all-snap systems

778. By Michael Vogt

add missing tests for reboot-required reporting

777. By Michael Vogt

partition/bootloader.go: its ok to not have an "other" partition

776. By Michael Vogt

snappy/snapp.go: detect if kernel/os needs reboot

775. By Michael Vogt

partition/bootloader.go: do not crash if "/" is not system-{a,b}

774. By Michael Vogt

fix tests

773. By Michael Vogt

mered lp:snappy

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'snappy/kernel.go'
2--- snappy/kernel.go 2015-10-20 08:49:57 +0000
3+++ snappy/kernel.go 2015-10-20 08:49:57 +0000
4@@ -67,3 +67,14 @@
5
6 return nil
7 }
8+
9+func removeKernel(s *SnapPart) error {
10+ bootdir := partition.BootloaderDir()
11+ if err := os.MkdirAll(filepath.Join(bootdir, s.Version()), 0755); err !=
12+ nil {
13+ return err
14+ }
15+ blobName := filepath.Base(snapfs.BlobPath(s.basedir))
16+ dstDir := filepath.Join(bootdir, blobName)
17+ return os.RemoveAll(dstDir)
18+}
19
20=== modified file 'snappy/snapp.go'
21--- snappy/snapp.go 2015-10-20 08:49:57 +0000
22+++ snappy/snapp.go 2015-10-20 08:49:57 +0000
23@@ -1211,6 +1211,13 @@
24 return err
25 }
26
27+ // FIXME: this needs to go into a special kernel snap
28+ if s.m.Type == pkg.TypeKernel {
29+ if err := removeKernel(s); err != nil {
30+ logger.Noticef("Failed to remove kernel assets %s", err)
31+ }
32+ }
33+
34 // best effort(?)
35 os.Remove(filepath.Dir(s.basedir))
36
37
38=== modified file 'snappy/snapp_snapfs_test.go'
39--- snappy/snapp_snapfs_test.go 2015-10-20 08:49:57 +0000
40+++ snappy/snapp_snapfs_test.go 2015-10-20 08:49:57 +0000
41@@ -329,3 +329,23 @@
42 mockb.bootvars["snappy_kernel"] = "ubuntu-kernel." + testOrigin + "_4.0-1.snap"
43 c.Assert(snap.NeedsReboot(), Equals, true)
44 }
45+
46+func (s *SnapfsTestSuite) TestInstallKernelSnapRemovesKernelAssets(c *C) {
47+ files := [][]string{
48+ {"vmlinuz-4.2", "I'm a kernel"},
49+ {"initrd.img-4.2", "...and I'm an initrd"},
50+ }
51+ snapPkg := makeTestSnapPackageWithFiles(c, packageKernel, files)
52+ part, err := NewSnapPartFromSnapFile(snapPkg, "origin", true)
53+ c.Assert(err, IsNil)
54+
55+ _, err = part.Install(&MockProgressMeter{}, 0)
56+ c.Assert(err, IsNil)
57+ kernelAssetsDir := filepath.Join(s.mockBootloaderDir, "ubuntu-kernel.origin_4.0-1.snap")
58+ c.Assert(helpers.FileExists(kernelAssetsDir), Equals, true)
59+
60+ // ensure uninstall cleans the kernel assets
61+ err = part.Uninstall(&MockProgressMeter{})
62+ c.Assert(err, IsNil)
63+ c.Assert(helpers.FileExists(kernelAssetsDir), Equals, false)
64+}

Subscribers

People subscribed via source and target branches