diff --git a/Makefile b/Makefile index de0666dd6..a896678d7 100644 --- a/Makefile +++ b/Makefile @@ -122,7 +122,7 @@ draw_deps: tools @goviz -i github.com/cosmos/cosmos-sdk/cmd/gaia/cmd/gaiad -d 2 | dot -Tpng -o dependency-graph.png clean: - rm -f devtools-stamp vendor-deps + rm -f devtools-stamp vendor-deps snapcraft.yaml ######################################## ### Documentation @@ -235,6 +235,18 @@ localnet-start: localnet-stop localnet-stop: docker-compose down + +######################################## +### Packaging + +snapcraft.yaml: snapcraft.yaml.in + sed "s/@VERSION@/${VERSION}/g" < $< > $@ + +build-snap-edge: snapcraft.yaml + snapcraft clean + snapcraft + + # To avoid unintended conflicts with file names, always add to .PHONY # unless there is a reason not to. # https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html @@ -243,4 +255,5 @@ check_tools check_dev_tools get_vendor_deps draw_deps test test_cli test_unit \ test_cover test_lint benchmark devdoc_init devdoc devdoc_save devdoc_update \ build-linux build-docker-gaiadnode localnet-start localnet-stop \ format check-ledger test_sim_gaia_nondeterminism test_sim_modules test_sim_gaia_fast \ -test_sim_gaia_multi_seed test_sim_gaia_import_export update_tools update_dev_tools +test_sim_gaia_multi_seed test_sim_gaia_import_export update_tools update_dev_tools \ +build-snap-edge diff --git a/snapcraft.yaml.in b/snapcraft.yaml.in new file mode 100644 index 000000000..7a7878a3c --- /dev/null +++ b/snapcraft.yaml.in @@ -0,0 +1,49 @@ +name: gaia # you probably want to 'snapcraft register ' +# base: core18 # the base snap is the execution environment for this snap +version: '@VERSION@' # just for humans, typically '1.2+git' or '1.3.2' +summary: Gaia Daemon # 79 char long summary +description: | + This snap provides the Gaia daemon gaiad and the command line + tool gaiacli. +grade: devel # must be 'stable' to release into candidate/stable channels +confinement: strict # use 'strict' once you have the right plugs and slots + +apps: + gaiad: + command: bin/gaiad + plugs: [home,network,network-bind] + gaiacli: + command: bin/gaiacli + plugs: [home,network,network-bind] + +parts: + gaia: + plugin: dump + source: ./ + override-pull: | + rootdir=$(pwd) + gitroot=$(git rev-parse --show-toplevel) + cd ${gitroot} && git archive \ + -o ${rootdir}/gaia-@VERSION@.tar.gz \ + --format tar.gz -9 --prefix gaia-@VERSION@/ HEAD + cd ${rootdir} + tar xvf gaia-@VERSION@.tar.gz ; rm -f gaia-@VERSION@.tar.gz + mkdir -p go/src/github.com/cosmos bin + mv gaia-@VERSION@/ go/src/github.com/cosmos/cosmos-sdk/ + + # Use the following instructions to build a package from a release. + # wget https://github.com/cosmos/cosmos-sdk/archive/v@VERSION@.tar.gz + # tar xvf v@VERSION@.tar.gz + # rm v@VERSION@.tar.gz + + build-snaps: [go] + override-build: | + base=`pwd` + export GOPATH=`pwd`/go + cd $GOPATH/src/github.com/cosmos/cosmos-sdk + make tools + make vendor-deps + make install + mkdir $SNAPCRAFT_PART_INSTALL/bin + cp $GOPATH/bin/gaiad $SNAPCRAFT_PART_INSTALL/bin + cp $GOPATH/bin/gaiacli $SNAPCRAFT_PART_INSTALL/bin