From 54a93645655bb7c9b52a6c3d79a43d479ddfec97 Mon Sep 17 00:00:00 2001 From: Greg Szabo Date: Thu, 6 Jul 2017 20:00:06 +0000 Subject: [PATCH] Added trackomatron build process --- devops/rpmbuild/Makefile | 10 +++ .../extrafiles/DEBIAN-trackomatron/changelog | 6 ++ .../extrafiles/DEBIAN-trackomatron/compat | 1 + .../extrafiles/DEBIAN-trackomatron/control | 15 ++++ .../extrafiles/DEBIAN-trackomatron/copyright | 21 ++++++ .../extrafiles/DEBIAN-trackomatron/postinst | 45 +++++++++++ .../extrafiles/DEBIAN-trackomatron/postrm | 41 ++++++++++ .../extrafiles/DEBIAN-trackomatron/preinst | 37 ++++++++++ .../extrafiles/DEBIAN-trackomatron/prerm | 39 ++++++++++ .../system-preset/50-trackomatron.preset | 3 + .../system/trackomatron-server.service | 23 ++++++ .../etc/systemd/system/trackomatron.service | 29 ++++++++ .../trackomatron/usr/share/basecoin/key.json | 12 +++ .../trackomatron/usr/share/basecoin/key2.json | 12 +++ .../rpmbuild/spectemplates/trackomatron.spec | 74 +++++++++++++++++++ 15 files changed, 368 insertions(+) create mode 100644 devops/rpmbuild/extrafiles/DEBIAN-trackomatron/changelog create mode 100644 devops/rpmbuild/extrafiles/DEBIAN-trackomatron/compat create mode 100644 devops/rpmbuild/extrafiles/DEBIAN-trackomatron/control create mode 100644 devops/rpmbuild/extrafiles/DEBIAN-trackomatron/copyright create mode 100644 devops/rpmbuild/extrafiles/DEBIAN-trackomatron/postinst create mode 100644 devops/rpmbuild/extrafiles/DEBIAN-trackomatron/postrm create mode 100644 devops/rpmbuild/extrafiles/DEBIAN-trackomatron/preinst create mode 100644 devops/rpmbuild/extrafiles/DEBIAN-trackomatron/prerm create mode 100644 devops/rpmbuild/extrafiles/trackomatron/etc/systemd/system-preset/50-trackomatron.preset create mode 100644 devops/rpmbuild/extrafiles/trackomatron/etc/systemd/system/trackomatron-server.service create mode 100644 devops/rpmbuild/extrafiles/trackomatron/etc/systemd/system/trackomatron.service create mode 100644 devops/rpmbuild/extrafiles/trackomatron/usr/share/basecoin/key.json create mode 100644 devops/rpmbuild/extrafiles/trackomatron/usr/share/basecoin/key2.json create mode 100644 devops/rpmbuild/spectemplates/trackomatron.spec diff --git a/devops/rpmbuild/Makefile b/devops/rpmbuild/Makefile index 6a4713886..a373e2ff8 100644 --- a/devops/rpmbuild/Makefile +++ b/devops/rpmbuild/Makefile @@ -76,6 +76,13 @@ build-ethermint: git-branch cp $(GOPATH)/src/github.com/tendermint/ethermint/build/ethermint $(GOPATH)/bin @echo "*** Built ethermint" +build-trackomatron: git-branch + @echo "*** Building trackomatron" + go get -d -u go github.com/tendermint/trackomatron || echo "Workaround so there is no error message." + cd $(GOPATH)/src/github.com/tendermint/trackomatron && git checkout "$(GIT_BRANCH)" && git pull + $(MAKE) -C $(GOPATH)/src/github.com/tendermint/trackomatron get_vendor_deps install + @echo "*** Built trackomatron" + version-%: $(GOPATH)/bin/% if [ -z "$(BUILD_NUMBER)" ]; then echo "BUILD_NUMBER not set" ; false ; fi $(eval $*_version=$(shell $< version | cut -d- -f1 )) @@ -224,10 +231,13 @@ distclean: clean rm -rf $(GOPATH)/src/github.com/tendermint/tendermint rm -rf $(GOPATH)/src/github.com/tendermint/basecoin rm -rf $(GOPATH)/src/github.com/tendermint/ethermint + rm -rf $(GOPATH)/src/github.com/tendermint/trackomatron rm -rf $(GOPATH)/bin/tendermint rm -rf $(GOPATH)/bin/basecoin rm -rf $(GOPATH)/bin/basecli rm -rf $(GOPATH)/bin/ethermint + rm -rf $(GOPATH)/bin/tracko + rm -rf $(GOPATH)/bin/trackocli .PHONY : clean diff --git a/devops/rpmbuild/extrafiles/DEBIAN-trackomatron/changelog b/devops/rpmbuild/extrafiles/DEBIAN-trackomatron/changelog new file mode 100644 index 000000000..aab92cc02 --- /dev/null +++ b/devops/rpmbuild/extrafiles/DEBIAN-trackomatron/changelog @@ -0,0 +1,6 @@ +trackomatron (@VERSION@) @STABILITY@; urgency=medium + + * Automatic build. See https://github.com/tendermint/trackomatron for more information. + + -- Greg Szabo @DATETIMESTAMP@ + diff --git a/devops/rpmbuild/extrafiles/DEBIAN-trackomatron/compat b/devops/rpmbuild/extrafiles/DEBIAN-trackomatron/compat new file mode 100644 index 000000000..ec635144f --- /dev/null +++ b/devops/rpmbuild/extrafiles/DEBIAN-trackomatron/compat @@ -0,0 +1 @@ +9 diff --git a/devops/rpmbuild/extrafiles/DEBIAN-trackomatron/control b/devops/rpmbuild/extrafiles/DEBIAN-trackomatron/control new file mode 100644 index 000000000..72e6f9145 --- /dev/null +++ b/devops/rpmbuild/extrafiles/DEBIAN-trackomatron/control @@ -0,0 +1,15 @@ +Source: trackomatron +Section: net +Priority: optional +Maintainer: Greg Szabo +Build-Depends: debhelper (>=9) +Depends: tendermint (>=0.10.0) +Standards-Version: 3.9.6 +Homepage: https://tendermint.com +Package: trackomatron +Architecture: amd64 +Version: @VERSION@ +Installed-Size: @INSTALLEDSIZE@ +Description: Trackomatron - Track invoices on the blockchain + This software is intended to create a space to easily send invoices between and within institutions. Firstly, the commands of trackmatron are separated into two broad categories: submitting information to the blockchain (transactions), and retrieving information from the blockchain (query). + diff --git a/devops/rpmbuild/extrafiles/DEBIAN-trackomatron/copyright b/devops/rpmbuild/extrafiles/DEBIAN-trackomatron/copyright new file mode 100644 index 000000000..32a1921d5 --- /dev/null +++ b/devops/rpmbuild/extrafiles/DEBIAN-trackomatron/copyright @@ -0,0 +1,21 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: trackomatron +Source: https://github.com/tendermint/trackomatron + +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-trackomatron/postinst b/devops/rpmbuild/extrafiles/DEBIAN-trackomatron/postinst new file mode 100644 index 000000000..c1a0abcc6 --- /dev/null +++ b/devops/rpmbuild/extrafiles/DEBIAN-trackomatron/postinst @@ -0,0 +1,45 @@ +#!/bin/sh +# postinst script for trackomatron +# + +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 trackomatron.trackomatron /etc/trackomatron + chown trackomatron.trackomatron /etc/trackomatron/tendermint + sudo -Hu trackomatron tracko init --home /etc/trackomatron 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 trackomatron tracko init --home /etc/trackomatron/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-trackomatron/postrm b/devops/rpmbuild/extrafiles/DEBIAN-trackomatron/postrm new file mode 100644 index 000000000..445d4fbd8 --- /dev/null +++ b/devops/rpmbuild/extrafiles/DEBIAN-trackomatron/postrm @@ -0,0 +1,41 @@ +#!/bin/sh +# postrm script for trackomatron +# + +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-trackomatron/preinst b/devops/rpmbuild/extrafiles/DEBIAN-trackomatron/preinst new file mode 100644 index 000000000..199320043 --- /dev/null +++ b/devops/rpmbuild/extrafiles/DEBIAN-trackomatron/preinst @@ -0,0 +1,37 @@ +#!/bin/sh +# preinst script for trackomatron +# + +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 '^trackomatron:' /etc/passwd ; then + useradd -k /dev/null -r -m -b /etc trackomatron + 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-trackomatron/prerm b/devops/rpmbuild/extrafiles/DEBIAN-trackomatron/prerm new file mode 100644 index 000000000..fb98bece0 --- /dev/null +++ b/devops/rpmbuild/extrafiles/DEBIAN-trackomatron/prerm @@ -0,0 +1,39 @@ +#!/bin/sh +# prerm script for basecoin +# + +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 trackomatron 2> /dev/null || : + systemctl stop trackomatron-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/trackomatron/etc/systemd/system-preset/50-trackomatron.preset b/devops/rpmbuild/extrafiles/trackomatron/etc/systemd/system-preset/50-trackomatron.preset new file mode 100644 index 000000000..7ddca4019 --- /dev/null +++ b/devops/rpmbuild/extrafiles/trackomatron/etc/systemd/system-preset/50-trackomatron.preset @@ -0,0 +1,3 @@ +disable trackomatron.service +disable trackomatron-server.service + diff --git a/devops/rpmbuild/extrafiles/trackomatron/etc/systemd/system/trackomatron-server.service b/devops/rpmbuild/extrafiles/trackomatron/etc/systemd/system/trackomatron-server.service new file mode 100644 index 000000000..097789a0e --- /dev/null +++ b/devops/rpmbuild/extrafiles/trackomatron/etc/systemd/system/trackomatron-server.service @@ -0,0 +1,23 @@ +[Unit] +Description=Trackomatron server +Requires=network-online.target +BindTo=trackomatron.service +PartOf=trackomatron.service +After=network-online.target trackomatron.service +PropagatesReloadTo=trackomatron.service +ReloadPropagatedFrom=trackomatron.service + +[Service] +Environment="TMHOME=/etc/trackomatron/tendermint" +Restart=on-failure +User=trackomatron +Group=trackomatron +PermissionsStartOnly=true +ExecStart=/usr/bin/tendermint node +ExecReload=/bin/kill -HUP $MAINPID +KillSignal=SIGTERM + +[Install] +WantedBy=multi-user.target trackomatron.service +Also=trackomatron.service + diff --git a/devops/rpmbuild/extrafiles/trackomatron/etc/systemd/system/trackomatron.service b/devops/rpmbuild/extrafiles/trackomatron/etc/systemd/system/trackomatron.service new file mode 100644 index 000000000..fbbf53262 --- /dev/null +++ b/devops/rpmbuild/extrafiles/trackomatron/etc/systemd/system/trackomatron.service @@ -0,0 +1,29 @@ +[Unit] +Description=Trackomatron +#propagates activation, deactivation and activation fails. +Requires=network-online.target +#propagates activation, deactivation, activation fails and stops +BindTo=trackomatron-server.service +#propagates stop and restart (one-way) +PartOf=trackomatron-server.service +#order +Before=trackomatron-server.service +After=network-online.target +#propagates reload +PropagatesReloadTo=trackomatron-server.service +ReloadPropagatedFrom=trackomatron-server.service + +[Service] +Environment="BCHOME=/etc/trackomatron" +Restart=on-failure +User=trackomatron +Group=trackomatron +PermissionsStartOnly=true +ExecStart=/usr/bin/trackomatron start --without-tendermint +ExecReload=/bin/kill -HUP $MAINPID +KillSignal=SIGTERM + +[Install] +WantedBy=multi-user.target +Also=trackomatron-server.service + diff --git a/devops/rpmbuild/extrafiles/trackomatron/usr/share/basecoin/key.json b/devops/rpmbuild/extrafiles/trackomatron/usr/share/basecoin/key.json new file mode 100644 index 000000000..bdefe8fd4 --- /dev/null +++ b/devops/rpmbuild/extrafiles/trackomatron/usr/share/basecoin/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/trackomatron/usr/share/basecoin/key2.json b/devops/rpmbuild/extrafiles/trackomatron/usr/share/basecoin/key2.json new file mode 100644 index 000000000..ddfc6809b --- /dev/null +++ b/devops/rpmbuild/extrafiles/trackomatron/usr/share/basecoin/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/trackomatron.spec b/devops/rpmbuild/spectemplates/trackomatron.spec new file mode 100644 index 000000000..3296b9905 --- /dev/null +++ b/devops/rpmbuild/spectemplates/trackomatron.spec @@ -0,0 +1,74 @@ + +%define __spec_install_post %{nil} +%define debug_package %{nil} +%define __os_install_post %{nil} + +Name: trackomatron +Summary: Trackomatron - Track invoices on the blockchain +License: Apache 2.0 +URL: https://tendermint.com/ +Packager: Greg Szabo +Requires: tendermint >= 0.10.0 +Requires(pre): /sbin/useradd + +%description +This software is intended to create a space to easily send invoices between and within institutions. Firstly, the commands of trackmatron are separated into two broad categories: submitting information to the blockchain (transactions), and retrieving information from the blockchain (query). + +%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/tracko $GOPATH/bin/trackocli .%{_bindir} +%{__cp} $GOPATH/src/github.com/tendermint/%{name}/LICENSE .%{_defaultlicensedir}/%{name} + +cp -r %{_topdir}/extrafiles/trackomatron/* ./ + +%{__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} tracko 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 +