diff --git a/devops/rpmbuild/Makefile b/devops/rpmbuild/Makefile index d429242d5..648d5393d 100644 --- a/devops/rpmbuild/Makefile +++ b/devops/rpmbuild/Makefile @@ -32,12 +32,12 @@ endif # Here comes the real deal ### -binaries = tendermint basecoin ethermint trackomatron -build-binaries = build-tendermint build-basecoin build-ethermint build-trackomatron -package-rpm = package-rpm-tendermint package-rpm-basecoin package-rpm-ethermint package-rpm-trackomatron -install-rpm = install-rpm-tendermint install-rpm-basecoin install-rpm-ethermint install-rpm-trackomatron -package-deb = package-deb-tendermint package-deb-basecoin package-deb-ethermint package-deb-trackomatron -install-deb = install-deb-tendermint install-deb-basecoin install-deb-ethermint install-deb-trackomatron +binaries = tendermint basecoin ethermint trackomatron gaia +build-binaries = build-tendermint build-basecoin build-ethermint build-trackomatron build-gaia +package-rpm = package-rpm-tendermint package-rpm-basecoin package-rpm-ethermint package-rpm-trackomatron package-rpm-gaia +install-rpm = install-rpm-tendermint install-rpm-basecoin install-rpm-ethermint install-rpm-trackomatron install-rpm-gaia +package-deb = package-deb-tendermint package-deb-basecoin package-deb-ethermint package-deb-trackomatron package-deb-gaia +install-deb = install-deb-tendermint install-deb-basecoin install-deb-ethermint install-deb-trackomatron install-deb-gaia all: $(binaries) build: $(build-binaries) @@ -84,6 +84,13 @@ build-trackomatron: git-branch @echo "Workaround: trackomatron package has tracko as the binary - trackomatron needed to get the version number" && rm -rf $(GOPATH)/bin/trackomatron && ln -s $(GOPATH)/bin/tracko $(GOPATH)/bin/trackomatron @echo "*** Built trackomatron" +build-gaia: git-branch + @echo "*** Building gaia" + go get -d -u go github.com/cosmos/gaia || echo "Workaround so there is no error message." + cd $(GOPATH)/src/github.com/cosmos/gaia && git checkout "$(GIT_BRANCH)" && git pull + $(MAKE) -C $(GOPATH)/src/github.com/cosmos/gaia get_vendor_deps install + @echo "*** Built gaia" + version-%: $(GOPATH)/bin/% if [ -z "$(BUILD_NUMBER)" ]; then echo "BUILD_NUMBER not set" ; false ; fi $(eval $*_version=$(shell $< version | cut -d- -f1 )) diff --git a/devops/rpmbuild/extrafiles/DEBIAN-gaia/changelog b/devops/rpmbuild/extrafiles/DEBIAN-gaia/changelog new file mode 100644 index 000000000..eca5fbc3d --- /dev/null +++ b/devops/rpmbuild/extrafiles/DEBIAN-gaia/changelog @@ -0,0 +1,6 @@ +gaia (@VERSION@) @STABILITY@; urgency=medium + + * Automatic build. See https://github.com/tendermint/basecoin for more information. + + -- Greg Szabo @DATETIMESTAMP@ + diff --git a/devops/rpmbuild/extrafiles/DEBIAN-gaia/compat b/devops/rpmbuild/extrafiles/DEBIAN-gaia/compat new file mode 100644 index 000000000..ec635144f --- /dev/null +++ b/devops/rpmbuild/extrafiles/DEBIAN-gaia/compat @@ -0,0 +1 @@ +9 diff --git a/devops/rpmbuild/extrafiles/DEBIAN-gaia/control b/devops/rpmbuild/extrafiles/DEBIAN-gaia/control new file mode 100644 index 000000000..8b51d285b --- /dev/null +++ b/devops/rpmbuild/extrafiles/DEBIAN-gaia/control @@ -0,0 +1,15 @@ +Source: gaia +Section: net +Priority: optional +Maintainer: Greg Szabo +Build-Depends: debhelper (>=9) +Depends: tendermint (>=0.10.0) +Standards-Version: 3.9.6 +Homepage: https://cosmos.network +Package: gaia +Architecture: amd64 +Version: @VERSION@ +Installed-Size: @INSTALLEDSIZE@ +Description: gaia - Tendermint Cosmos delegation game chain + Gaia description comes later. + diff --git a/devops/rpmbuild/extrafiles/DEBIAN-gaia/copyright b/devops/rpmbuild/extrafiles/DEBIAN-gaia/copyright new file mode 100644 index 000000000..ffc230134 --- /dev/null +++ b/devops/rpmbuild/extrafiles/DEBIAN-gaia/copyright @@ -0,0 +1,21 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: gaia +Source: https://github.com/cosmos/gaia + +Files: * +Copyright: 2017 All In Bits, Inc. +License: Apache-2.0 + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + . + http://www.apache.org/licenses/LICENSE-2.0 + . + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + . + On Debian systems, the full text of the Apache License 2.0 can be found + in the file `/usr/share/common-licenses/Apache-2.0'. diff --git a/devops/rpmbuild/extrafiles/DEBIAN-gaia/postinst b/devops/rpmbuild/extrafiles/DEBIAN-gaia/postinst new file mode 100644 index 000000000..7d9bd7c5d --- /dev/null +++ b/devops/rpmbuild/extrafiles/DEBIAN-gaia/postinst @@ -0,0 +1,45 @@ +#!/bin/sh +# postinst script for gaia +# + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-remove' +# * `abort-deconfigure' `in-favour' +# `removing' +# +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + configure) + chown gaia.gaia /etc/gaia + chown gaia.gaia /etc/gaia/tendermint + sudo -Hu gaia gaia init --home /etc/gaia 2B24DEE2364762300168DF19B6C18BCE2D399EA2 + #The above command generates a genesis.json file that contains validators. This is wrong, the validator part should be empty. https://github.com/tendermint/basecoin/issues/124 + sudo -Hu gaia tendermint init --home /etc/gaia/tendermint + #The above command might need some kind of additional option in the future. https://github.com/tendermint/tendermint/issues/542 + systemctl daemon-reload + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/devops/rpmbuild/extrafiles/DEBIAN-gaia/postrm b/devops/rpmbuild/extrafiles/DEBIAN-gaia/postrm new file mode 100644 index 000000000..da526ec30 --- /dev/null +++ b/devops/rpmbuild/extrafiles/DEBIAN-gaia/postrm @@ -0,0 +1,41 @@ +#!/bin/sh +# postrm script for gaia +# + +set -e + +# summary of how this script can be called: +# * `remove' +# * `purge' +# * `upgrade' +# * `failed-upgrade' +# * `abort-install' +# * `abort-install' +# * `abort-upgrade' +# * `disappear' +# +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + upgrade|failed-upgrade|abort-upgrade) + systemctl daemon-reload + ;; + + purge|remove|abort-install|disappear) + systemctl daemon-reload + ;; + + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/devops/rpmbuild/extrafiles/DEBIAN-gaia/preinst b/devops/rpmbuild/extrafiles/DEBIAN-gaia/preinst new file mode 100644 index 000000000..cd1a6c2dd --- /dev/null +++ b/devops/rpmbuild/extrafiles/DEBIAN-gaia/preinst @@ -0,0 +1,37 @@ +#!/bin/sh +# preinst script for gaia +# + +set -e + +# summary of how this script can be called: +# * `install' +# * `install' +# * `upgrade' +# * `abort-upgrade' +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + install|upgrade) + if ! grep -q '^gaia:' /etc/passwd ; then + useradd -k /dev/null -r -m -b /etc gaia + fi + ;; + + abort-upgrade) + ;; + + *) + echo "preinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/devops/rpmbuild/extrafiles/DEBIAN-gaia/prerm b/devops/rpmbuild/extrafiles/DEBIAN-gaia/prerm new file mode 100644 index 000000000..8a0522a41 --- /dev/null +++ b/devops/rpmbuild/extrafiles/DEBIAN-gaia/prerm @@ -0,0 +1,39 @@ +#!/bin/sh +# prerm script for gaia +# + +set -e + +# summary of how this script can be called: +# * `remove' +# * `upgrade' +# * `failed-upgrade' +# * `remove' `in-favour' +# * `deconfigure' `in-favour' +# `removing' +# +# for details, see https://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + remove|upgrade|deconfigure) + systemctl stop gaia 2> /dev/null || : + systemctl stop gaia-service 2> /dev/null || : + ;; + + failed-upgrade) + ;; + + *) + echo "prerm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/devops/rpmbuild/extrafiles/gaia/etc/systemd/system-preset/50-gaia.preset b/devops/rpmbuild/extrafiles/gaia/etc/systemd/system-preset/50-gaia.preset new file mode 100644 index 000000000..a9fe09116 --- /dev/null +++ b/devops/rpmbuild/extrafiles/gaia/etc/systemd/system-preset/50-gaia.preset @@ -0,0 +1,3 @@ +disable gaia.service +disable gaia-server.service + diff --git a/devops/rpmbuild/extrafiles/gaia/etc/systemd/system/gaia-server.service b/devops/rpmbuild/extrafiles/gaia/etc/systemd/system/gaia-server.service new file mode 100644 index 000000000..821070de6 --- /dev/null +++ b/devops/rpmbuild/extrafiles/gaia/etc/systemd/system/gaia-server.service @@ -0,0 +1,23 @@ +[Unit] +Description=Gaia server +Requires=network-online.target +BindTo=gaia.service +PartOf=gaia.service +After=network-online.target gaia.service +PropagatesReloadTo=gaia.service +ReloadPropagatedFrom=gaia.service + +[Service] +Environment="TMHOME=/etc/gaia/tendermint" +Restart=on-failure +User=gaia +Group=gaia +PermissionsStartOnly=true +ExecStart=/usr/bin/tendermint node +ExecReload=/bin/kill -HUP $MAINPID +KillSignal=SIGTERM + +[Install] +WantedBy=multi-user.target gaia.service +Also=gaia.service + diff --git a/devops/rpmbuild/extrafiles/gaia/etc/systemd/system/gaia.service b/devops/rpmbuild/extrafiles/gaia/etc/systemd/system/gaia.service new file mode 100644 index 000000000..1e4b2778f --- /dev/null +++ b/devops/rpmbuild/extrafiles/gaia/etc/systemd/system/gaia.service @@ -0,0 +1,28 @@ +[Unit] +Description=Gaia +#propagates activation, deactivation and activation fails. +Requires=network-online.target +#propagates activation, deactivation, activation fails and stops +BindTo=gaia-server.service +#propagates stop and restart (one-way) +PartOf=gaia-server.service +#order +Before=gaia-server.service +After=network-online.target +#propagates reload +PropagatesReloadTo=gaia-server.service +ReloadPropagatedFrom=gaia-server.service + +[Service] +Restart=on-failure +User=gaia +Group=gaia +PermissionsStartOnly=true +ExecStart=/usr/bin/gaia start --without-tendermint --home=/etc/gaia +ExecReload=/bin/kill -HUP $MAINPID +KillSignal=SIGTERM + +[Install] +WantedBy=multi-user.target +Also=gaia-server.service + diff --git a/devops/rpmbuild/extrafiles/gaia/usr/share/gaia/key.json b/devops/rpmbuild/extrafiles/gaia/usr/share/gaia/key.json new file mode 100644 index 000000000..bdefe8fd4 --- /dev/null +++ b/devops/rpmbuild/extrafiles/gaia/usr/share/gaia/key.json @@ -0,0 +1,12 @@ +{ + "address": "1B1BE55F969F54064628A63B9559E7C21C925165", + "priv_key": { + "type": "ed25519", + "data": "C70D6934B4F55F1B7BC33B56B9CA8A2061384AFC19E91E44B40C4BBA182953D1619D3678599971ED29C7529DDD4DA537B97129893598A17C82E3AC9A8BA95279" + }, + "pub_key": { + "type": "ed25519", + "data": "619D3678599971ED29C7529DDD4DA537B97129893598A17C82E3AC9A8BA95279" + } +} + diff --git a/devops/rpmbuild/extrafiles/gaia/usr/share/gaia/key2.json b/devops/rpmbuild/extrafiles/gaia/usr/share/gaia/key2.json new file mode 100644 index 000000000..ddfc6809b --- /dev/null +++ b/devops/rpmbuild/extrafiles/gaia/usr/share/gaia/key2.json @@ -0,0 +1,12 @@ +{ + "address": "1DA7C74F9C219229FD54CC9F7386D5A3839F0090", + "priv_key": { + "type": "ed25519", + "data": "34BAE9E65CE8245FAD035A0E3EED9401BDE8785FFB3199ACCF8F5B5DDF7486A8352195DA90CB0B90C24295B90AEBA25A5A71BC61BAB2FE2387241D439698B7B8" + }, + "pub_key": { + "type": "ed25519", + "data": "352195DA90CB0B90C24295B90AEBA25A5A71BC61BAB2FE2387241D439698B7B8" + } +} + diff --git a/devops/rpmbuild/spectemplates/basecoin.spec b/devops/rpmbuild/spectemplates/basecoin.spec index 88690f2e8..eed8562b4 100644 --- a/devops/rpmbuild/spectemplates/basecoin.spec +++ b/devops/rpmbuild/spectemplates/basecoin.spec @@ -32,7 +32,7 @@ cd %{name}-%{version} %{__cp} $GOPATH/bin/%{name} $GOPATH/bin/basecli .%{_bindir} %{__cp} $GOPATH/src/github.com/tendermint/%{name}/LICENSE .%{_defaultlicensedir}/%{name} -cp -r %{_topdir}/extrafiles/basecoin/* ./ +cp -r %{_topdir}/extrafiles/%{name}/* ./ %{__chmod} -Rf a+rX,u+w,g-w,o-w . diff --git a/devops/rpmbuild/spectemplates/ethermint.spec b/devops/rpmbuild/spectemplates/ethermint.spec index 5887f09e2..20968ac57 100644 --- a/devops/rpmbuild/spectemplates/ethermint.spec +++ b/devops/rpmbuild/spectemplates/ethermint.spec @@ -32,7 +32,7 @@ cd %{name}-%{version} %{__cp} $GOPATH/src/github.com/tendermint/%{name}/setup/genesis.json .%{_sysconfdir}/%{name}/genesis.json %{__cp} -r $GOPATH/src/github.com/tendermint/%{name}/setup/keystore .%{_sysconfdir}/%{name} -cp -r %{_topdir}/extrafiles/ethermint/* ./ +cp -r %{_topdir}/extrafiles/%{name}/* ./ %{__chmod} -Rf a+rX,u+w,g-w,o-w . diff --git a/devops/rpmbuild/spectemplates/gaia.spec b/devops/rpmbuild/spectemplates/gaia.spec new file mode 100644 index 000000000..65be3154d --- /dev/null +++ b/devops/rpmbuild/spectemplates/gaia.spec @@ -0,0 +1,74 @@ + +%define __spec_install_post %{nil} +%define debug_package %{nil} +%define __os_install_post %{nil} + +Name: gaia +Summary: gaia - Tendermint Cosmos delegation game chain +License: Apache 2.0 +URL: https://cosmos.network/ +Packager: Greg Szabo +Requires: tendermint >= 0.10.0 +Requires(pre): /sbin/useradd + +%description +Gaia description comes later. + +%pre +if ! %{__grep} -q '^%{name}:' /etc/passwd ; then + useradd -k /dev/null -r -m -b %{_sysconfdir} %{name} +fi + +%prep +test -d "$GOPATH" || echo "GOPATH not set" +test -d "$GOPATH" + +%{__mkdir_p} %{name}-%{version} +cd %{name}-%{version} + +%{__mkdir_p} .%{_bindir} .%{_defaultlicensedir}/%{name} .%{_sysconfdir}/%{name}/tendermint + +%{__cp} $GOPATH/bin/%{name} .%{_bindir} +%{__cp} $GOPATH/src/github.com/tendermint/%{name}/LICENSE .%{_defaultlicensedir}/%{name} + +cp -r %{_topdir}/extrafiles/%{name}/* ./ + +%{__chmod} -Rf a+rX,u+w,g-w,o-w . + +%build +# Nothing to do here. + +%install +cd %{name}-%{version} +%{__cp} -a * %{buildroot} + +%post +sudo -Hu %{name} gaia init --home %{_sysconfdir}/%{name} 2B24DEE2364762300168DF19B6C18BCE2D399EA2 +#The above command generates a genesis.json file that contains validators. This is wrong, the validator part should be empty. https://github.com/tendermint/basecoin/issues/124 +sudo -Hu %{name} tendermint init --home %{_sysconfdir}/%{name}/tendermint +#The above command might need some kind of additional option in the future. https://github.com/tendermint/tendermint/issues/542 + +#Temporary until https://github.com/tendermint/basecoin/issues/123 +rm -f %{_sysconfdir}/%{name}/key.json +rm -f %{_sysconfdir}/%{name}/key2.json + +systemctl daemon-reload + +%preun +systemctl stop %{name} 2> /dev/null || : +systemctl stop %{name}-service 2> /dev/null || : + +%postun +systemctl daemon-reload + +%files +%attr(0755, %{name}, %{name}) %dir %{_sysconfdir}/%{name} +%attr(0755, %{name}, %{name}) %dir %{_sysconfdir}/%{name}/tendermint +%{_bindir}/* +%{_sysconfdir}/systemd/system/* +%{_sysconfdir}/systemd/system-preset/* +%dir %{_datadir}/%{name} +%{_datadir}/%{name}/* +%dir %{_defaultlicensedir}/%{name} +%doc %{_defaultlicensedir}/%{name}/LICENSE + diff --git a/devops/rpmbuild/spectemplates/tendermint.spec b/devops/rpmbuild/spectemplates/tendermint.spec index e2f6e4afe..843382597 100644 --- a/devops/rpmbuild/spectemplates/tendermint.spec +++ b/devops/rpmbuild/spectemplates/tendermint.spec @@ -18,7 +18,7 @@ test -d "$GOPATH" %{__mkdir_p} %{name}-%{version} cd %{name}-%{version} %{__mkdir_p} .%{_bindir} .%{_defaultlicensedir}/%{name} -%{__cp} $GOPATH/bin/tendermint .%{_bindir} +%{__cp} $GOPATH/bin/%{name} .%{_bindir} %{__cp} $GOPATH/src/github.com/tendermint/tendermint/LICENSE .%{_defaultlicensedir}/%{name} %{__chmod} -Rf a+rX,u+w,g-w,o-w . diff --git a/devops/rpmbuild/spectemplates/trackomatron.spec b/devops/rpmbuild/spectemplates/trackomatron.spec index 3296b9905..937dba203 100644 --- a/devops/rpmbuild/spectemplates/trackomatron.spec +++ b/devops/rpmbuild/spectemplates/trackomatron.spec @@ -31,7 +31,7 @@ cd %{name}-%{version} %{__cp} $GOPATH/bin/tracko $GOPATH/bin/trackocli .%{_bindir} %{__cp} $GOPATH/src/github.com/tendermint/%{name}/LICENSE .%{_defaultlicensedir}/%{name} -cp -r %{_topdir}/extrafiles/trackomatron/* ./ +cp -r %{_topdir}/extrafiles/%{name}/* ./ %{__chmod} -Rf a+rX,u+w,g-w,o-w .