|
|
|
%define __spec_install_post %{nil}
|
|
%define debug_package %{nil}
|
|
%define __os_install_post %{nil}
|
|
|
|
Name: ethermint
|
|
Summary: ethermint enables ethereum as an ABCI application on tendermint and the COSMOS hub
|
|
License: Apache 2.0
|
|
URL: https://tendermint.com/
|
|
Packager: Greg Szabo
|
|
Requires: tendermint >= 0.10.0
|
|
Requires(pre): /sbin/useradd
|
|
Requires(post): %{__python}
|
|
|
|
%description
|
|
Ethermint enables ethereum to run as an ABCI application on tendermint and the COSMOS hub. This application allows you to get all the benefits of ethereum without having to run your own miners.
|
|
|
|
%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 .%{_datadir}/%{name} .%{_sysconfdir}/systemd/system .%{_sysconfdir}/systemd/system-preset
|
|
%{__cp} $GOPATH/bin/%{name} .%{_bindir}
|
|
%{__cp} $GOPATH/src/github.com/tendermint/%{name}/LICENSE .%{_defaultlicensedir}/%{name}
|
|
%{__cp} $GOPATH/src/github.com/tendermint/%{name}/dev/genesis.json .%{_sysconfdir}/%{name}/genesis.json
|
|
%{__cp} -r $GOPATH/src/github.com/tendermint/%{name}/dev/keystore .%{_sysconfdir}/%{name}
|
|
%{__cat} << EOF > .%{_sysconfdir}/%{name}/tendermint/config.toml
|
|
# This is a TOML config file.
|
|
# For more information, see https://github.com/toml-lang/toml
|
|
|
|
proxy_app = "tcp://127.0.0.1:46658"
|
|
moniker = ""
|
|
fast_sync = true
|
|
db_backend = "leveldb"
|
|
log_level = "debug"
|
|
|
|
[rpc]
|
|
laddr = "tcp://0.0.0.0:46657"
|
|
|
|
[p2p]
|
|
laddr = "tcp://0.0.0.0:46656"
|
|
seeds = ""
|
|
EOF
|
|
%{__cat} << EOF > .%{_sysconfdir}/systemd/system/%{name}.service
|
|
[Unit]
|
|
Description=Ethermint
|
|
#propagates activation, deactivation and activation fails.
|
|
Requires=network-online.target
|
|
#propagates activation, deactivation, activation fails and stops
|
|
BindTo=%{name}-server.service
|
|
#propagates stop and restart (one-way)
|
|
PartOf=%{name}-server.service
|
|
#order
|
|
Before=%{name}-server.service
|
|
After=network-online.target
|
|
#propagates reload
|
|
PropagatesReloadTo=%{name}-server.service
|
|
ReloadPropagatedFrom=%{name}-server.service
|
|
|
|
[Service]
|
|
Environment="EMHOME=%{_sysconfdir}/%{name}"
|
|
Restart=on-failure
|
|
User=%{name}
|
|
Group=%{name}
|
|
PermissionsStartOnly=true
|
|
ExecStart=%{_bindir}/%{name} --rpc --rpcaddr=0.0.0.0 --ws --wsaddr=0.0.0.0 --rpcapi eth,net,web3,personal,admin
|
|
ExecReload=/bin/kill -HUP \$MAINPID
|
|
KillSignal=SIGTERM
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
Also=%{name}-server.service
|
|
EOF
|
|
%{__cat} << EOF > .%{_sysconfdir}/systemd/system/%{name}-server.service
|
|
[Unit]
|
|
Description=Ethermint server
|
|
Requires=network-online.target
|
|
BindTo=%{name}.service
|
|
PartOf=%{name}.service
|
|
After=network-online.target %{name}.service
|
|
PropagatesReloadTo=%{name}.service
|
|
ReloadPropagatedFrom=%{name}.service
|
|
|
|
[Service]
|
|
Environment="TMHOME=%{_sysconfdir}/%{name}/tendermint"
|
|
Restart=on-failure
|
|
User=%{name}
|
|
Group=%{name}
|
|
PermissionsStartOnly=true
|
|
ExecStart=%{_bindir}/tendermint node
|
|
ExecReload=/bin/kill -HUP \$MAINPID
|
|
KillSignal=SIGTERM
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target %{name}.service
|
|
Also=%{name}.service
|
|
EOF
|
|
%{__cat} << EOF > .%{_sysconfdir}/systemd/system-preset/50-%{name}.preset
|
|
disable %{name}.service
|
|
disable %{name}-server.service
|
|
EOF
|
|
%{__cat} << EOF > .%{_datadir}/%{name}/tendermint-genesis-validator.json
|
|
{
|
|
"genesis_time":"2017-06-10T03:37:03Z",
|
|
"chain_id":"my_testchain_id",
|
|
"validators":
|
|
[
|
|
{
|
|
"pub_key":{"type":"ed25519","data":"F651E966D30CEA413839D63D9EC37455DF1FB2DDC409A76555B0CD0B186723E4"},
|
|
"amount":10,
|
|
"name":"my_testchain_node"
|
|
}
|
|
],
|
|
"app_hash":"",
|
|
"app_options": {}
|
|
}
|
|
EOF
|
|
%{__cat} << EOF > .%{_datadir}/%{name}/priv_validator-example.json
|
|
{"address":"AF5886732763B3A38861FC8D2AA2698A156D28BD","pub_key":{"type":"ed25519","data":"F651E966D30CEA413839D63D9EC37455DF1FB2DDC409A76555B0CD0B186723E4"},"last_height":159,"last_round":0,"last_step":3,"last_signature":{"type":"ed25519","data":"654E93AA49B91F48AFEBE172E2C296900339F8849577467AEA9885200D5D9CD4DC225BB099C436A60C832DD2A3C60B6834D9748C0F8E977420BF3696604E2F04"},"last_signbytes":"7B22636861696E5F6964223A22677265677465737431222C22766F7465223A7B22626C6F636B5F6964223A7B2268617368223A2246333144343534433043343939334237333641323332393738443738333645453846384642433031222C227061727473223A7B2268617368223A2246304430443241333933443241444530323739303244304438333643384532443938333231304234222C22746F74616C223A317D7D2C22686569676874223A3135392C22726F756E64223A302C2274797065223A327D7D","priv_key":{"type":"ed25519","data":"44BD99EE9FFAEA5CECA7E52EF7476A5C949BC8635BCB906468C7CC3456659809F651E966D30CEA413839D63D9EC37455DF1FB2DDC409A76555B0CD0B186723E4"}}
|
|
EOF
|
|
%{__chmod} -Rf a+rX,u+w,g-w,o-w .
|
|
|
|
%build
|
|
# Nothing to do here.
|
|
|
|
%install
|
|
cd %{name}-%{version}
|
|
%{__cp} -a * %{buildroot}
|
|
|
|
%post
|
|
%{_bindir}/%{name} --datadir %{_sysconfdir}/%{name} init %{_sysconfdir}/%{name}/genesis.json
|
|
test ! -f %{_sysconfdir}/%{name}/tendermint/priv_validator.json && tendermint gen_validator > %{_sysconfdir}/%{name}/tendermint/priv_validator.json && %{__chmod} 0400 %{_sysconfdir}/%{name}/tendermint/priv_validator.json && %{__chown} %{name}.%{name} %{_sysconfdir}/%{name}/tendermint/priv_validator.json
|
|
tendermint_pubkey=`%{__python} -uc "import json ; print json.loads(open('%{_sysconfdir}/%{name}/tendermint/priv_validator.json').read())['pub_key']['data']"`
|
|
test ! -f %{_sysconfdir}/%{name}/tendermint/genesis.json && %{__cat} << EOF > %{_sysconfdir}/%{name}/tendermint/genesis.json
|
|
{
|
|
"genesis_time": "2017-06-10T03:37:03Z",
|
|
"chain_id": "my_chain_id",
|
|
"validators":
|
|
[
|
|
{
|
|
"pub_key":{"type":"ed25519","data":"$tendermint_pubkey"},
|
|
"amount":10,
|
|
"name":"my_testchain_node"
|
|
}
|
|
],
|
|
"app_hash": "",
|
|
"app_options": {}
|
|
}
|
|
EOF
|
|
%{__chown} %{name}.%{name} %{_sysconfdir}/%{name}/tendermint/genesis.json
|
|
systemctl daemon-reload
|
|
systemctl enable %{name}
|
|
|
|
%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}
|
|
%config(noreplace) %attr(0644, %{name}, %{name}) %{_sysconfdir}/%{name}/genesis.json
|
|
%attr(0755, %{name}, %{name}) %dir %{_sysconfdir}/%{name}/keystore
|
|
%attr(0644, %{name}, %{name}) %{_sysconfdir}/%{name}/keystore/*
|
|
%attr(0755, %{name}, %{name}) %dir %{_sysconfdir}/%{name}/tendermint
|
|
%config(noreplace) %attr(0644, %{name}, %{name}) %{_sysconfdir}/%{name}/tendermint/config.toml
|
|
%{_bindir}/*
|
|
%{_sysconfdir}/systemd/system/*
|
|
%{_sysconfdir}/systemd/system-preset/*
|
|
%dir %{_datadir}/%{name}
|
|
%{_datadir}/%{name}/*
|
|
%dir %{_defaultlicensedir}/%{name}
|
|
%doc %{_defaultlicensedir}/%{name}/LICENSE
|
|
|