Call for testing: snapcraft 3.0

This is unfortunate, I did ask for the redirects in one of the checkpoint posts.
@Lukewh was setting under your jurisdiction

1 Like

I’ll look into it and get back to you.

1 Like

Working fine for my snaps

I wanted to try this to use base 18 but it appears the commands have changed? There is no longer a cleanbuild command? And SNAPCRAFT_BUILD_ENVIRONMENT no longer accepts lxd?

1 Like

@sergiusens Can you confirm that this release will not be SRUed in to Bionic? I need to make sure we can still build snaps using wiki parts until a suitable replacement process is found.

snapcraft should run apt update before installing dependencies. Otherwise if fails to run from provided Docker images.

2 Likes

I can confirm this is the case; we might be doing one minor SRU of our legacy branch onto the archives and that will be it.

Thanks for the feedback, this release will however not be freshened into bespoke docker images yet (it is a different set that needs creating depending on the base being targeted).

I’m getting this error:

Failed to generate snap metadata: The specified command 'desktop-launch' defined in the app 'picard' does not exist or is not executable.
Ensure that 'desktop-launch' is relative to the prime directory.
Run the same command again with --debug to shell into the environment if you wish to introspect this failure.

When trying to build the picard 2.0.x snap:

With snapcraft 3.0. If I try to snapcraft --debug and find the desktop-launch executable:

$ sudo snapcraft-picard # find . -iname desktop-launch

It gives me nothing. It seems this same problem: https://bugs.launchpad.net/snapcraft/+bug/1800057

1 Like

This should be solved in edge where an appropriate error is raised when using wiki parts with bases.

1 Like

And here are the actual release notes https://github.com/snapcore/snapcraft/releases/tag/3.0

1 Like

I have just moved 3.0.1 to candidate, folks with existing projects built with 3.0 from candidate will need to run snapcraft clean when using this one. Here’s the list of fixes associated with this point release:

  • cli: hide progress bar for dumb terminals (#2369)
  • build providers: checks for when multipass is missing (#2354)
  • meta: add assumes if using “full” app adapter (#2379)
  • project_loader: raise error if part in after is undefined (#2386)
  • project_loader: do not install base if already installed (#2384)
  • cli: consolidate re-execution (#2385)
  • project: early snapcraft.yaml validation (#2388)
  • build providers: fix osx non base and injection (#2394)
  • project_loader: add git to build-packages for version: git (#2403)
  • cli: handle yaml errors for cleanbuild (#2404)
  • multipass: avoid stdin where possible (#2408)
  • build providers: preset the timezone (#2407)
  • python plugin: process deps before and separately from setup.py (#2409)
  • yaml_utils: allow unicode while encoding (#2414)
  • cli: snapcraft init with a base (#2411)
  • schema: add support for title (#2412)
2 Likes

Do you plan to update Docker images at https://hub.docker.com/r/snapcore/snapcraft/tags/ ? Or setup CI job to do this automatically? I’d like to build snaps without installing a lot of things on my system and without LXD.

The features added here are mostly related to bases which have many implications when using docker, this release is snap only as well.

We will look into how to cope with a multi base world and different build environments targeting those bases in a close future.

I’d like to build snaps without installing a lot of things on my system and without LXD.

Hi @abitrolly. Prior to snapcraft 3.0 and the base keyword, snapcraft would indeed install packages on your system. We didn’t like that either, so in snapcraft 3.0 if you use a base (base: core18), snapcraft will use multipass to build your snap. Your system will no longer be polluted by build packages and intermediate build state.

1 Like

Is there any way to use LXD container instead? I rather don’t like multipass as it’s a VM which (probably) has the same VM limitations(like, how does it deal with snap builds that requires lots(a few gigabytes) of memory?)

2 Likes

3.0.1 is now on the stable channel

2 Likes

@sergiusens @evan multpass installed from snap doesn’t work on Fedora, or am I missing something?

✗ snapcraft                       
Launching a VM.
failed to launch: Connect Failed                                                
An error occurred when trying to launch the instance with 'multipass': returned exit code 3.
Ensure that 'multipass' is setup correctly and try again.

Is there a list of Docker implications?

Now the next logical step for me is to try snapcraft in Docker, and because I switched to base: core18 it will attempt to install multipass to create VM inside Docker. :slight_smile:

I already started to port podman to snap, so I can run podman on Ubuntu, so that I can snapcraft in container without docker and build my other snap.

Hey,

@abitrolly can you check the permissions of /run/multipass_socket please? If that doesn’t exist, post the output of journalctl --unit snap.multipass.* somewhere?

I’ll try it myself here in the mean time.

✗ ls -la /run/multipass_socket
ls: cannot access '/run/multipass_socket': No such file or directory
✗ sudo journalctl --unit snap.multipass.*
zsh: no matches found: snap.multipass.*

EDIT (needed quotes around *):

Dec 04 17:49:37 blackred dnsmasq[5033]: started, version 2.75 cachesize 150
Dec 04 17:49:37 blackred dnsmasq[5033]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify
Dec 04 17:49:37 blackred dnsmasq-dhcp[5033]: DHCP, IP range 10.x.x.2 -- 10.x.x.254, lease time infinite
Dec 04 17:49:37 blackred dnsmasq-dhcp[5033]: DHCP, sockets bound exclusively to interface>
Dec 04 17:49:37 blackred dnsmasq[5033]: reading /etc/resolv.conf
Dec 04 17:49:37 blackred dnsmasq[5033]: using nameserver x.x.x.x#53
Dec 04 17:49:37 blackred dnsmasq[5033]: using nameserver x.x.x.x#53
Dec 04 17:49:37 blackred dnsmasq[5033]: using nameserver fe80::1%wlp3s0#53
Dec 04 17:49:37 blackred dnsmasq[5033]: read /etc/hosts - 2 addresses
Dec 04 17:49:37 blackred dnsmasq[5033]: cannot read /var/snap/multipass/common/data/multipassd/network/dnsmasq.hosts: No such file or directory
Dec 04 17:49:37 blackred multipass.multipassd[4730]: E1204 17:49:37.662490010    4730     uri_parser.cc:46]           bad uri.scheme: ''
Dec 04 17:49:37 blackred multipass.multipassd[4730]: E1204 17:49:37.662587115    4730     uri_parser.cc:52]                            ^ here
Dec 04 17:49:37 blackred multipass.multipassd[4730]: E1204 17:49:37.662603964    4730     http_proxy.cc:54]           cannot parse value of 'http_proxy' env var
Dec 04 17:49:37 blackred multipassd[4730]: gRPC listening on unix:/run/multipass_socket, SSL:on
Dec 04 17:49:37 blackred multipassd[4730]: QIODevice::write (QFile, "/var/snap/multipass/common/cache/multipassd/vault/multipassd-image-records.json"): device not open
Dec 04 17:49:37 blackred multipass.multipassd[4730]: [error] [daemon] Could not determine group id for 'sudo'.
Dec 04 17:49:37 blackred systemd[1]: snap.multipass.multipassd.service: Main process exited, code=exited, status=1/FAILURE
Dec 04 17:49:37 blackred systemd[1]: snap.multipass.multipassd.service: Failed with result 'exit-code'.
Dec 04 17:49:37 blackred systemd[1]: snap.multipass.multipassd.service: Service hold-off time over, scheduling restart.
Dec 04 17:49:37 blackred systemd[1]: snap.multipass.multipassd.service: Scheduled restart job, restart counter is at 39.
Dec 04 17:49:37 blackred systemd[1]: Stopped Service for snap application multipass.multipassd.
Dec 04 17:49:37 blackred systemd[1]: Started Service for snap application multipass.multipassd.