Post-build Cleanup

This utility will clean up any files that have been included in your Snap during build which also exist in the base Snap or any content-Snaps that you are using.

Usage with sc-jsonnet

Applying the utility with sc-jsonnet is the easiest method. To use, simply import the library and add cleanup([]) to your snapcraft tag. Pass-into the function all your content-Snaps and base Snap in between the square brackets separated by commas. The following code shows a trivial example of using it:

local snapcraft = import 'snapcraft.libsonnet';
local cleanup = import 'https://raw.githubusercontent.com/diddlesnaps/snapcraft-utils-library/master/lib/cleanup.libsonnet';

snapcraft {
    name: cleanup-example,
    version: "0.1",
    summary: "Example of using the 'cleanup' library",
    description: |||
        This is my-snap's description. You have a paragraph or two to tell the
        most important story about your snap. Keep it under 100 words though,
        we live in tweetspace and your description wants to look good in the snap
        store.
    |||,

    base: core18,

    apps:
        cleanup-example:
            extensions: [gnome-3-28]
            ...

    # Add the rest of your snapcraft build config here
}
+ cleanup(["gnome-3-28-1804"])

If you are using multiple utilities then put the cleanup utility last in the chain.

Manually adding to snapcraft.yaml

Add the following part into your snapcraft.yaml, and change my-part to a list of all of your snap’s other parts:

parts:
  cleanup:
    after: [my-part]  # Make this part run last; list all your other parts here
    plugin: nil
    build-snaps: [gnome-3-28-1804]  # List all content-snaps you're using here
    override-prime: |
      set -eux
      for snap in "gnome-3-28-1804"; do  # List all content-snaps you're using here
        cd "/snap/$snap/current" && find . -type f,l -exec rm -f "$SNAPCRAFT_PRIME/{}" "$SNAPCRAFT_PRIME/usr/{}" \;
      done
      for CRUFT in bug lintian man; do
        rm -rf $SNAPCRAFT_PRIME/usr/share/$CRUFT
      done
      find $SNAPCRAFT_PRIME/usr/share/doc/ -type f -not -name 'copyright' -delete
      find $SNAPCRAFT_PRIME/usr/share -type d -empty -delete

Adjust the after definition to ensure that the cleanup part runs after every other part defined in your yaml.