Rust Plugin build-attributes question (failing validation)


#1

Hi there - I’m working on a snap for ncspot (ncurses spotify player written in Rust). WHen looking at the docs and some samples on github, I see many snapcraft.yaml files using build-attributes: [no-system-libraries] with the rust plugin.

I’m using snapcraft 3 and when building I am running into the following.

Using 'snap/snapcraft.yaml': Project assets will be searched for from the 'snap' directory.
Issues while validating snapcraft.yaml: The 'parts/ncspot/build-attributes[0]' property does not match the required schema: 'no-system-libraries' is not one of ['no-patchelf', 'no-install', 'debug', 'keep-execstack']

So which one of the new options would be the proper one to use?

Also had tried snapcrft help plugins which only showed 2 options:

  - build-attributes: [attribute1, attribute2]

    A list of special attributes that affect the build of this specific part.
    Supported attributes:

      - no-install:
        Do not run the install target provided by the plugin's build system.

        Supported by: kbuild

      - debug:
        Plugins that support the concept of build types build in Release mode
        by default. Setting the 'debug' attribute requests that they instead
        build in Debug mode.

Thank you.

PS - Had read up on https://docs.snapcraft.io/rust-applications/7826 - but that one still uses the no-system-libraries option.

PPS - While looking at a bunch of other Rust projects - I suspect this may not be needed.


#2

Hi there.
No system libraries is the default behavior for snapcraft 3.x
Hope this helps!


#3

That absolutely does help. I was just not sure because so many of the examples had that attribute. Including the one in the documentation. Completely appreciate the reply!


#4

is this case also when cross compiling
it seems to behave correctly for native build, but when cross-building packages like libc are pulled in.
snapcraft, version 3.8+


#5

Can you clarify what is failing when cross building?


#6

it does not fail to build. But additional dependencies are pulled in. Such as glibc.
And I did not find way to tell snapcraft not to auto-pull in extra dependencies