Using with sc-jsonnet

I have been working on improving the sharing of snippets of snapcraft.yaml code with a tool I found called jsonnet. sc-jsonnet is a utility that I have created using libjsonnet; you can find sc-jsonnet in the snapstore. It enables you to create your snapcraft.yaml file with re-use of shared code as a primary feature. Find more information about sc-jsonnet at the sc-jsonnet documentation site.

Howto

To add snapcraft-alsa to your snapcraft.jsonnet file, simply add the import at the top of your jsonnet file and then run the alsa() function against your existing project definition:

local snapcraft = import 'snapcraft.libsonnet';
local alsa = import 'https://raw.githubusercontent.com/diddlesnaps/snapcraft-alsa/master/alsa.libsonnet';

snapcraft {
    name: "my-super-snap",
    version: "0.1",
    parts: {
        mypart: {
            plugin: "nil",
        },
    },
} + alsa()

You can also supply a version number to build a specific version of alsa, which will download and compile the version of alsa that you specify. It will also try to remove any references to libasound2 and libasound2-plugins from previously defined parts:

local snapcraft = import 'snapcraft.libsonnet';
local alsa = import 'https://raw.githubusercontent.com/diddlesnaps/snapcraft-alsa/master/alsa.libsonnet';

snapcraft {
    name: "my-super-snap",
    version: "0.1",
    parts: {
        mypart: {
            plugin: "nil",
        },
    },
} + alsa("1.1.9")

Ideally you would choose a commit hash for the address or copy the file locally. To use a commit hash, try the following address, which is for the latest commit as of writing this document:

local alsa = import 'https://raw.githubusercontent.com/diddlesnaps/snapcraft-alsa/bdfde06/alsa.libsonnet';