|
|
-
- %define __spec_install_post %{nil}
- %define debug_package %{nil}
- %define __os_install_post %{nil}
-
- Name: basecoin
- Summary: basecoin is a Proof-of-Stake cryptocurrency and framework
- License: Apache 2.0
- URL: https://tendermint.com/
- Packager: Greg Szabo
- Requires: tendermint >= 0.10.0
- Provides: basecli
- Requires(pre): /sbin/useradd
- Requires(post): %{__python}
-
- %description
- Basecoin is an ABCI application designed to be used with the Tendermint consensus engine to form a Proof-of-Stake cryptocurrency. It also provides a general purpose framework for extending the feature-set of the cryptocurrency by implementing plugins.
-
- %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} $GOPATH/bin/basecli .%{_bindir}
- %{__cp} $GOPATH/src/github.com/tendermint/%{name}/LICENSE .%{_defaultlicensedir}/%{name}
- #iso8601date=`date -u +"%Y-%m-%dT%H:%M:%SZ"`
- %{__cat} << EOF > .%{_sysconfdir}/%{name}/genesis.json
- {
- "genesis_time": "2017-06-10T03:37:03Z",
- "chain_id": "my_chain_id",
- "validators": [],
- "app_hash": "",
- "app_options": {
- "accounts": [{
- "name": "dev_money",
- "address": "1B1BE55F969F54064628A63B9559E7C21C925165",
- "pub_key": {
- "type": "ed25519",
- "data": "619D3678599971ED29C7529DDD4DA537B97129893598A17C82E3AC9A8BA95279"
- },
- "coins": [
- {
- "denom": "mycoin",
- "amount": 9007199254740992
- }
- ]
- }]
- }
- }
- EOF
- %{__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:36658"
- moniker = ""
- fast_sync = true
- db_backend = "leveldb"
- log_level = "debug"
-
- [rpc]
- laddr = "tcp://0.0.0.0:36657"
-
- [p2p]
- laddr = "tcp://0.0.0.0:36656"
- seeds = ""
- EOF
- %{__cat} << EOF > .%{_sysconfdir}/systemd/system/%{name}.service
- [Unit]
- Description=Basecoin
- #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="BCHOME=%{_sysconfdir}/%{name}"
- Restart=on-failure
- User=%{name}
- Group=%{name}
- PermissionsStartOnly=true
- ExecStart=%{_bindir}/%{name} start --without-tendermint
- 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=Basecoin 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}/key.json
- {
- "address": "1B1BE55F969F54064628A63B9559E7C21C925165",
- "priv_key": {
- "type": "ed25519",
- "data": "C70D6934B4F55F1B7BC33B56B9CA8A2061384AFC19E91E44B40C4BBA182953D1619D3678599971ED29C7529DDD4DA537B97129893598A17C82E3AC9A8BA95279"
- },
- "pub_key": {
- "type": "ed25519",
- "data": "619D3678599971ED29C7529DDD4DA537B97129893598A17C82E3AC9A8BA95279"
- }
- }
- EOF
- %{__cat} << EOF > .%{_datadir}/%{name}/key2.json
- {
- "address": "1DA7C74F9C219229FD54CC9F7386D5A3839F0090",
- "priv_key": {
- "type": "ed25519",
- "data": "34BAE9E65CE8245FAD035A0E3EED9401BDE8785FFB3199ACCF8F5B5DDF7486A8352195DA90CB0B90C24295B90AEBA25A5A71BC61BAB2FE2387241D439698B7B8"
- },
- "pub_key": {
- "type": "ed25519",
- "data": "352195DA90CB0B90C24295B90AEBA25A5A71BC61BAB2FE2387241D439698B7B8"
- }
- }
- 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}/basecoin-genesis-devmoney.json
- {
- "genesis_time":"2017-06-10T03:37:03Z",
- "chain_id":"my_testchain_id",
- "validators": [],
- "app_hash":"",
- "app_options": {
- "accounts": [{
- "pub_key": {
- "type": "ed25519",
- "data": "619D3678599971ED29C7529DDD4DA537B97129893598A17C82E3AC9A8BA95279"
- },
- "coins": [
- {
- "denom": "mycoin",
- "amount": 9007199254740992
- }
- ]
- }]
- }
- }
- 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
- test ! -f %{_sysconfdir}/%{name}/priv_validator.json && tendermint gen_validator > %{_sysconfdir}/%{name}/priv_validator.json && %{__chmod} 0400 %{_sysconfdir}/%{name}/priv_validator.json && %{__chown} %{name}.%{name} %{_sysconfdir}/%{name}/priv_validator.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}
- #%ghost %attr(0400, %{name}, %{name}) %{_sysconfdir}/%{name}/priv_validator.json
- %config(noreplace) %attr(0644, %{name}, %{name}) %{_sysconfdir}/%{name}/genesis.json
- %attr(0755, %{name}, %{name}) %dir %{_sysconfdir}/%{name}/tendermint
- #%ghost %attr(0400, %{name}, %{name}) %{_sysconfdir}/%{name}/tendermint/priv_validator.json
- %config(noreplace) %attr(0644, %{name}, %{name}) %{_sysconfdir}/%{name}/tendermint/config.toml
- #%ghost %attr(0644, %{name}, %{name}) %{_sysconfdir}/%{name}/tendermint/genesis.json
- %{_bindir}/*
- %{_sysconfdir}/systemd/system/*
- %{_sysconfdir}/systemd/system-preset/*
- %dir %{_datadir}/%{name}
- %{_datadir}/%{name}/*
- %dir %{_defaultlicensedir}/%{name}
- %doc %{_defaultlicensedir}/%{name}/LICENSE
-
|