You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

181 lines
6.6 KiB

%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