aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCasey Marshall <casey.marshall@canonical.com>2016-09-01 14:23:36 -0500
committerCasey Marshall <casey.marshall@canonical.com>2016-09-11 11:17:12 -0500
commit0a56d83d3d8d6369b350ec2810752b683a4a1a3e (patch)
tree2e1fd4f97a40e437c531b54dcce39f0724d3c310
parentMerge pull request #1041 (diff)
downloadmonero-0a56d83d3d8d6369b350ec2810752b683a4a1a3e.tar.xz
Add snap packaging.
This adds [snap](https://snapcraft.io) packaging to the project. See the link for more information on snaps. Snap packages install on all Linux distributions. On Ubuntu, snap confinement with apparmor and seccomp provide an additional layer of security. This snap sets up monerod as a systemd service, which should start immediately on install. To access the wallet CLI, simply run `monero` (/snap/bin/monero). I think it's a really quick & easy way to get started with monero. I've made some opinionated decisions in the packaging just to kick this off, but I'm happy to iterate on this stuff.
-rwxr-xr-xcontrib/snap/daemon.bash11
-rwxr-xr-xcontrib/snap/log.bash3
-rwxr-xr-xcontrib/snap/wallet.bash6
-rw-r--r--snapcraft.yaml62
-rw-r--r--src/daemon/CMakeLists.txt1
-rw-r--r--src/simplewallet/CMakeLists.txt3
6 files changed, 85 insertions, 1 deletions
diff --git a/contrib/snap/daemon.bash b/contrib/snap/daemon.bash
new file mode 100755
index 000000000..dfbf5e3f6
--- /dev/null
+++ b/contrib/snap/daemon.bash
@@ -0,0 +1,11 @@
+#!/bin/bash -e
+
+export HOME=${SNAP_DATA}
+cd ${SNAP_DATA}
+
+ARGS=
+if [ -e "${SNAP_DATA}/etc/monerod.conf" ]; then
+ ARGS="--config-file ${SNAP_DATA}/etc/monerod.conf"
+fi
+
+exec ${SNAP}/bin/monerod --detach $ARGS
diff --git a/contrib/snap/log.bash b/contrib/snap/log.bash
new file mode 100755
index 000000000..c81efeb2c
--- /dev/null
+++ b/contrib/snap/log.bash
@@ -0,0 +1,3 @@
+#!/bin/bash -e
+
+exec tail -c +0 -F ${SNAP_DATA}/.bitmonero/bitmonero.log
diff --git a/contrib/snap/wallet.bash b/contrib/snap/wallet.bash
new file mode 100755
index 000000000..04aa6c525
--- /dev/null
+++ b/contrib/snap/wallet.bash
@@ -0,0 +1,6 @@
+#!/bin/bash -e
+
+export HOME=${SNAP_USER_DATA}
+cd ${SNAP_USER_DATA}
+
+exec ${SNAP}/usr/bin/rlwrap ${SNAP}/bin/monero-wallet-cli "$@"
diff --git a/snapcraft.yaml b/snapcraft.yaml
new file mode 100644
index 000000000..89004f62d
--- /dev/null
+++ b/snapcraft.yaml
@@ -0,0 +1,62 @@
+name: monero
+version: 0 # TODO: change this to release version in CI builds
+summary: "Monero: the secure, private, untraceable cryptocurrency https://getmonero.org"
+description: |
+ Monero is a private, secure, untraceable, decentralised digital currency.
+ You are your bank, you control your funds, and nobody can trace your transfers
+ unless you allow them to do so.
+grade: devel
+confinement: strict
+
+apps:
+ d:
+ daemon: forking
+ command: daemon.bash
+ plugs:
+ - network
+ - network-bind
+
+ log:
+ command: log.bash
+
+ monero:
+ command: wallet.bash
+ plugs:
+ - network
+
+parts:
+ wrapper:
+ plugin: dump
+ source: .
+ stage-packages:
+ - rlwrap
+ organize:
+ contrib/snap/daemon.bash: daemon.bash
+ contrib/snap/log.bash: log.bash
+ contrib/snap/wallet.bash: wallet.bash
+ snap:
+ - daemon.bash
+ - log.bash
+ - wallet.bash
+ - usr/bin/rlwrap
+
+ cmake-build:
+ plugin: cmake
+ source: .
+ build-packages:
+ - gcc
+ - cmake
+ - pkg-config
+ - libunbound-dev
+ - libevent-dev
+ - libboost-all-dev
+ - libdb-dev
+ - libunwind-dev
+ - libminiupnpc-dev
+ - libldns-dev
+ - libexpat1-dev
+ - bison
+ - doxygen
+ - graphviz
+ snap:
+ - bin
diff --git a/src/daemon/CMakeLists.txt b/src/daemon/CMakeLists.txt
index 511efcb36..a8c93aa0f 100644
--- a/src/daemon/CMakeLists.txt
+++ b/src/daemon/CMakeLists.txt
@@ -106,3 +106,4 @@ add_dependencies(daemon version)
set_property(TARGET daemon
PROPERTY
OUTPUT_NAME "monerod")
+install(TARGETS daemon DESTINATION bin)
diff --git a/src/simplewallet/CMakeLists.txt b/src/simplewallet/CMakeLists.txt
index 97852c3dc..572819899 100644
--- a/src/simplewallet/CMakeLists.txt
+++ b/src/simplewallet/CMakeLists.txt
@@ -59,4 +59,5 @@ add_dependencies(simplewallet
version)
set_property(TARGET simplewallet
PROPERTY
- OUTPUT_NAME "monero-wallet-cli") \ No newline at end of file
+ OUTPUT_NAME "monero-wallet-cli")
+install(TARGETS simplewallet DESTINATION bin)