Call for testing: snapcraft 2.35

Hello,

It is time! We have the snapcraft snap version 2.35 in the candidate channel in the store, and we want to move it to stable as soon as possible. We have been releasing the snapcraft deb to Ubuntu for a long time, but now we want to get it into the snap store and reach new places :slight_smile:

We need help from our lovely community, because the number of possible operating systems, architectures, hardware and configurations is staggering. So please, follow these steps to give it a quick try: Install and configure lxd:

# Install and configure lxd.
sudo groupadd --system lxd
sudo usermod -a -G lxd $USER
newgrp lxd
sudo snap install lxd
sudo lxd init
# It's generally ok to answer every question with the default.
# Just keep pressing enter until lxd is happy.

Install the snapcraft snap, and tell it to use lxd to isolate the builds:

sudo snap install snapcraft --candidate --classic
export SNAPCRAFT_CONTAINER_BUILDS=local

Smoke test the installation, building an empty snap:

mkdir test-snapcraft
cd test-snapcraft
snapcraft init
snapcraft

If all works well, you will get a .snap file back. If anything goes wrong here we want to know! Please leave a reply with your testing results.

After the smoke test, you can help us making further exploratory testing. You can take a look at the snapcraft tutorials that will help you getting started. For example, let me recommend this new one by @davidcalle to package a website:

Finally, there are many interesting options that you can try for exploratory testing, like --target-arch for cross-building, set SNAPCRAFT_BUILD_INFO=1 to record a manifest of the build, use build-snaps in the snapcraft.yaml file, store commands like snapcraft push and snapcraft release.

If you have questions, get stuck, or see something weird, we will be available here to help.

pura vida

3 Likes

As usual, during the snapcraft testing we package a lot of interesting projects. Here is the bling-bling for 2.35:

glowing-bear, a web client for weechat.

This is already in the store maintained by snapcrafters. Get it with:

sudo snap install glowing-bear --beta

pomodoro, a CLI pomodoro timer.

Ekrankopio de 2017-11-17 11-37-52

Here is the pull request to get it upstream.

base58, a command to encode and decode to base58. This is a very popular encoding used by bitcoin and ipfs (which also have stable snaps in the store:)

This has been already upstreamed and hooked to https://build.snapcraft.io. So, get it with:

sudo snap install base58 --edge
1 Like

Can I repeat all this process inside an LXD container? I already have snapcraft installed and I was thinking of a way I could give these commands a try without needing a Virtual Machine. However, if that’s the only case, then I will do it and maybe try making one or two snaps to publish :+1:

You can, but if you want to do container builds inside the container, you need to allow for nesting.
So you can launch your container with something like this:

lxc launch --ephemeral --config security.privileged=true --config security.nesting=true ubuntu:xenial

Also, in order to install snaps inside the container, you have to install in it squashfuse:

sudo apt install squashfuse --yes

But not how in the instructions I gave SNAPCRAFT_CONTAINER_BUILDS is set to local.
That means that the snap will be build inside a LXD container, leaving your host machine without any change. The idea of this is to reduce the need to manually set up a temporarily environment in lxd, docker or kvm to build.

I can report that I successfully snapped Liri Browser, Liri Text and Liri Calculator using cleanbuild on Ubuntu 17.10 with the latest snapcraft snap. All three are using build-snaps. So that test passed for me :wink:

2 Likes

Note that you don’t need the container to be privileged just to nest more LXD containers, you just need the security.nesting="true" bit.

2 Likes

My only issue is with the fact I will need to install a different version of snapcraft in my machine. If that works without needing to use a container like LXD, then no need to think too much about this.

When running the smoke test only, I faced this issue only:

22:51:14 › snapcraft
Using LXD remote 'local' from SNAPCRAFT_CONTAINER_BUILDS
error: Failed to run: /usr/bin/lxd forkstart snapcraft-my-snap-name /var/lib/lxd/containers /var/log/lxd/snapcraft-my-snap-name/lxc.conf: 
Try `lxc info --show-log local:snapcraft-my-snap-name` for more info
The container could not be started.
The files /etc/subuid and /etc/subgid need to contain this line for mounting the local folder:
    root:1000:1
Note: Add the line to both files, do not remove any existing lines.
Restart lxd after making this change.
Refer to the documentation at https://linuxcontainers.org/lxd/getting-started-cli.

As the line says root:1000:1 I’d like to know if it is a safe change to do before proceeding. I ran the commands @elopio said above so I’m not understanding why I’m having this issue.

1 Like

This is required to map root in the container to your local user (1000) so that files will be owned by the user - the container won’t have any privileges on your host.

1 Like

@kalikiana that sounds like a great self-answered question for askubuntu.com :slight_smile:

We are getting a very nice distribution of users in our unstable channel, with almost the same amount of active devices following each channel. Thanks a lot for accepting a little more risk to help us test early!

We have just moved the snap to stable.

https://twitter.com/sergiusens/status/933448105135140865

Now, please continue helping us testing the next release by refreshing to edge:

sudo snap refresh snapcraft --edge
2 Likes

I can confirm that I tested snapped android studio with snapcraft 2.35 and it worked fine. Can we please move snapcraft from -proposed to -updates on xenial ?

The release of Android Studio is blocked on that one.