I am creating a snap to control smart devices.
I am trying to add support for multiple devices like
Raspberry Pi and
NanoPi but they are using fork of the same library WiringPi to control the device pins so both library’s cannot be installed on the same snap.
I have decided to go on different rout and control the devices pins through the library that installed on the device outside of the snap.
While trying to run the commands in the terminal or the executable that located on the device I get an error that it does not exist
No such file or directory (with the command
ls in my software inside the snap I verified that the executable exist and I can see it inside the snap).
The command that I use in the terminal is
Is there a way to make the executable on the device accessible within the snap and run on the device out side of the snap?
gpio can be found in
/usr/bin/gpio depending on the device.
I saw Snap layouts but I am not sure how to use it in this case.
layout: /usr/local/bin/gpio: bind: $SNAP_DATA/usr/local/bin/gpio
to the snap the error is changing to
Permission denied although I change the
gpio executable to
777 permissions and run the snap with
name: cybear-jinni base: core20 version: '0.1.3' # Just for humans, typically '1.2+git' or '1.3.2' summary: Smart home snap for CyBear Jinni smart devices. description: | A CyBear Jinni snap for smart devices. Using this snap you can make your device smart and control lamp or blind (if the device is supported currently only NanoPi Duo2), you will be able to control it using physical buttons and even from your phones using CyBear Jinni app. Our goal here at CyBear Jinni is to raise the quality of life for everyone. We are doing this by making Smart-Home accessible for the common person. This is open source project so feel free to take a look at the code and join us advancing the world forward. grade: devel # devel/stable confinement: devmode # devmode/classic/strict #architectures: # - build-on: armhf # run-on: armhf # # - build-on: arm64 # run-on: arm64 # # - build-on: amd64 # run-on: amd64 parts: wiring-np: plugin: dump source: . build-attributes: [keep-execstack] override-build: | #git clone https://github.com/CyBear-Jinni/WiringNP ## git clone https://github.com/friendlyarm/WiringNP // Does not work on the armbian os, https://forum.armbian.com/topic/13889-nanopiduo2-wiringnp-unable-to-determine-board-revision/ #cd WiringNP/ #chmod 755 build #./build #cd .. #git clone https://github.com/WiringPi/WiringPi.git #cd WiringPi/ #chmod 755 build #./build #cd .. build-packages: - git - make smart-home: after: [wiring-np] plugin: dump source: . override-build: | scripts/bashScripts/nativeExecutableMaker.sh # Downloading dart-sdk for the correct architecture. rm -r SmartDeviceDart #cd scripts/bashScripts/ #./compileAllCFiles.sh # Have to be executed when working directory is this file location #cd ../.. snapcraftctl build build-packages: - wget - unzip - gcc - g++ stage-packages: - libatlas-base-dev - libevent-dev layout: /usr/local/bin/gpio: bind: $SNAP_DATA/usr/local/bin/gpio apps: cybear-jinni: command: CyBear-Jinni_Smart-Device $SNAP #daemon: simple plugs: [network, network-bind, gpio, hardware-observe]