@@ -14,11 +14,29 @@ export PATH=$PWD/bin:$PATH
14
14
15
15
source ./scripts/nodes-configuration.sh
16
16
17
- UNAME=$( uname -s) SED=
18
- case $UNAME in
19
- Darwin) SED=" gsed" ;;
20
- Linux) SED=" sed" ;;
21
- esac
17
+ # We need this when running in Docker Desktop on macOS. `sed -i` doesn’t work well with VOLUMEs
18
+ # there, unless it can create its temporary files outside of a VOLUME, which requires $TMPDIR.
19
+ export TMPDIR=" ${TMPDIR:-/ tmp} "
20
+ export TMP=" ${TMP:-/ tmp} "
21
+
22
+ UNAME=$( uname -s)
23
+
24
+ # Normal `sed -i` is a bit stubborn, and really wants to create its temporary files in the
25
+ # directory of the target file. It is not a true in-place edit, and often braks permissions.
26
+ # Let’s use this wrapper instead.
27
+ sed_i () {
28
+ local tmpfile=$( mktemp)
29
+ local sed_bin=sed
30
+ if [ " $UNAME " == " Darwin" ] ; then sed_bin=gsed ; fi
31
+ if $sed_bin " $@ " > " $tmpfile " ; then
32
+ cat " $tmpfile " > " ${@: -1} " # Replace the last argument file (in-place file) with tmpfile content
33
+ rm " $tmpfile "
34
+ else
35
+ echo " sed failed." >&2
36
+ rm " $tmpfile "
37
+ return 1
38
+ fi
39
+ }
22
40
23
41
case $( uname) in
24
42
Darwin) date=' gdate' ;;
@@ -108,7 +126,7 @@ cardano-cli byron genesis genesis \
108
126
cp templates/babbage/alonzo-babbage-test-genesis.json " ${ROOT} /genesis.alonzo.spec.json"
109
127
cp templates/babbage/byron-configuration.yaml " ${ROOT} /configuration.yaml"
110
128
111
- $SED -i " ${ROOT} /configuration.yaml " \
129
+ sed_i \
112
130
-e ' s/Protocol: RealPBFT/Protocol: Cardano/' \
113
131
-e ' s|GenesisFile: genesis.json|ByronGenesisFile: genesis/byron/genesis.json|' \
114
132
-e ' /ByronGenesisFile/ aShelleyGenesisFile: genesis/shelley/genesis.json' \
@@ -117,7 +135,8 @@ $SED -i "${ROOT}/configuration.yaml" \
117
135
-e ' s/LastKnownBlockVersion-Major: 0/LastKnownBlockVersion-Major: 6/' \
118
136
-e ' s/LastKnownBlockVersion-Minor: 2/LastKnownBlockVersion-Minor: 0/' \
119
137
-e " s/minSeverity: Info/minSeverity: ${CARDANO_NODE_LOG_LEVEL} /" \
120
- -e " s/cardano.node.ChainDB: Notice/cardano.node.ChainDB: ${CARDANO_NODE_CHAINDB_LOG_LEVEL} /"
138
+ -e " s/cardano.node.ChainDB: Notice/cardano.node.ChainDB: ${CARDANO_NODE_CHAINDB_LOG_LEVEL} /" \
139
+ " ${ROOT} /configuration.yaml"
121
140
122
141
echo " " >> " ${ROOT} /configuration.yaml"
123
142
echo " PBftSignatureThreshold: 0.6" >> " ${ROOT} /configuration.yaml"
@@ -159,7 +178,7 @@ jq --raw-output ".protocolConsts.protocolMagic = ${NETWORK_MAGIC}" "${ROOT}/gene
159
178
160
179
rm " ${ROOT} /genesis/byron/genesis-wrong.json"
161
180
162
- $SED -i " ${ROOT} /genesis/shelley/genesis.json " \
181
+ sed_i \
163
182
-e ' s/"slotLength": 1/"slotLength": 0.2/' \
164
183
-e ' s/"activeSlotsCoeff": 5.0e-2/"activeSlotsCoeff": 0.1/' \
165
184
-e ' s/"securityParam": 2160/"securityParam": 10/' \
@@ -172,7 +191,8 @@ $SED -i "${ROOT}/genesis/shelley/genesis.json" \
172
191
-e ' s/"major": 0/"major": 7/' \
173
192
-e ' s/"rho": 0.0/"rho": 0.1/' \
174
193
-e ' s/"tau": 0.0/"tau": 0.1/' \
175
- -e ' s/"updateQuorum": 5/"updateQuorum": 2/'
194
+ -e ' s/"updateQuorum": 5/"updateQuorum": 2/' \
195
+ " ${ROOT} /genesis/shelley/genesis.json"
176
196
177
197
for NODE_ID in ${SP_NODES_ID} ; do
178
198
TARGET=" ${ROOT} /node-sp${NODE_ID} "
@@ -248,8 +268,8 @@ for NODE in ${SP_NODES}; do
248
268
done
249
269
250
270
echo " Update start time in genesis files"
251
- $SED -i -E " s/\" startTime\" : [0-9]+/\" startTime\" : ${timeUnix} /" ${ROOT} /genesis/byron/genesis.json
252
- $SED -i -E " s/\" systemStart\" : \" .*\" /\" systemStart\" : \" ${timeISO} \" /" ${ROOT} /genesis/shelley/genesis.json
271
+ sed_i -E " s/\" startTime\" : [0-9]+/\" startTime\" : ${timeUnix} /" ${ROOT} /genesis/byron/genesis.json
272
+ sed_i -E " s/\" systemStart\" : \" .*\" /\" systemStart\" : \" ${timeISO} \" /" ${ROOT} /genesis/shelley/genesis.json
253
273
254
274
byronGenesisHash=$( cardano-cli byron genesis print-genesis-hash --genesis-json ${ROOT} /genesis/byron/genesis.json)
255
275
shelleyGenesisHash=$( cardano-cli genesis hash --genesis ${ROOT} /genesis/shelley/genesis.json)
@@ -259,9 +279,9 @@ echo "Byron genesis hash: $byronGenesisHash"
259
279
echo " Shelley genesis hash: $shelleyGenesisHash "
260
280
echo " Alonzo genesis hash: $alonzoGenesisHash "
261
281
262
- $SED -i -E " s/ByronGenesisHash: '.*'/ByronGenesisHash: '${byronGenesisHash} '/" ${ROOT} /configuration.yaml
263
- $SED -i -E " s/ShelleyGenesisHash: '.*'/ShelleyGenesisHash: '${shelleyGenesisHash} '/" ${ROOT} /configuration.yaml
264
- $SED -i -E " s/AlonzoGenesisHash: '.*'/AlonzoGenesisHash: '${alonzoGenesisHash} '/" ${ROOT} /configuration.yaml
282
+ sed_i -E " s/ByronGenesisHash: '.*'/ByronGenesisHash: '${byronGenesisHash} '/" ${ROOT} /configuration.yaml
283
+ sed_i -E " s/ShelleyGenesisHash: '.*'/ShelleyGenesisHash: '${shelleyGenesisHash} '/" ${ROOT} /configuration.yaml
284
+ sed_i -E " s/AlonzoGenesisHash: '.*'/AlonzoGenesisHash: '${alonzoGenesisHash} '/" ${ROOT} /configuration.yaml
265
285
266
286
# Create config folder
267
287
rm -rf ./config/*
@@ -274,14 +294,16 @@ cp ./templates/babbage/db-sync-config.json ./config/network/cardano-db-sync/conf
274
294
cp ./templates/babbage/node-config.json ./config/network/cardano-node/config.json
275
295
cp ./templates/babbage/submit-api-config.json ./config/network/cardano-submit-api/config.json
276
296
277
- $SED -i -E " s/\" ByronGenesisHash\" : \" .*\" /\" ByronGenesisHash\" : \" ${byronGenesisHash} \" /" ./config/network/cardano-node/config.json
278
- $SED -i -E " s/\" ShelleyGenesisHash\" : \" .*\" /\" ShelleyGenesisHash\" : \" ${shelleyGenesisHash} \" /" ./config/network/cardano-node/config.json
279
- $SED -i -E " s/\" AlonzoGenesisHash\" : \" .*\" /\" AlonzoGenesisHash\" : \" ${alonzoGenesisHash} \" /" ./config/network/cardano-node/config.json
297
+ sed_i -E " s/\" ByronGenesisHash\" : \" .*\" /\" ByronGenesisHash\" : \" ${byronGenesisHash} \" /" ./config/network/cardano-node/config.json
298
+ sed_i -E " s/\" ShelleyGenesisHash\" : \" .*\" /\" ShelleyGenesisHash\" : \" ${shelleyGenesisHash} \" /" ./config/network/cardano-node/config.json
299
+ sed_i -E " s/\" AlonzoGenesisHash\" : \" .*\" /\" AlonzoGenesisHash\" : \" ${alonzoGenesisHash} \" /" ./config/network/cardano-node/config.json
280
300
281
301
cp ./templates/babbage/topology.json ./config/network/cardano-node/topology.json
282
302
# docker hostname in topology.json isn't working, so need to specify ip of local network
283
303
CONTAINER_IP=$( hostname -I | xargs)
284
- $SED -i " s/172.17.0.1/$CONTAINER_IP /g" ./config/network/cardano-node/topology.json
304
+ sed_i " s/172.17.0.1/$CONTAINER_IP /g" ./config/network/cardano-node/topology.json
305
+ # Note: for some reason, the first cardano-node (on port 3001) isn’t immediately responsive to the outside world, so:
306
+ sed_i " s/3001/3002/g" ./config/network/cardano-node/topology.json
285
307
286
308
cp " ${ROOT} " /genesis/byron/genesis.json ./config/network/cardano-node/genesis/byron.json
287
309
cp " ${ROOT} " /genesis/byron/genesis.json ./config/network/genesis/byron.json
0 commit comments