From 7af63eb0a7b32e011bf316e3228bca3e7c0aa650 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Wed, 13 Jan 2021 12:19:35 +1030 Subject: [PATCH] wire/Makefile: refactor to allow non-experimental spec patches. And rename the current patches to all be _exp_*.patch. These are applied after the basic patches. Signed-off-by: Rusty Russell Header from folded patch 'fix.patch': --- wire/Makefile | 68 +++++++++++++------ wire/common_wiregen.c | 2 +- wire/common_wiregen.h | 2 +- ...a71038bd72453cabefd3ace17ce8b8dd96e.patch} | 0 ...tracted_onion_exp_badonion_blinding.patch} | 0 ...nctlv => extracted_onion_exp_enctlv.patch} | 0 ...ffers => extracted_onion_exp_offers.patch} | 0 ...a71038bd72453cabefd3ace17ce8b8dd96e.patch} | 0 ...ted_peer_exp_add_htlc-plus-blinding.patch} | 0 ...und => extracted_peer_exp_dual_fund.patch} | 0 ...> extracted_peer_exp_dual_fund_more.patch} | 0 ...d => extracted_peer_exp_tmp_chan_id.patch} | 0 ... extracted_peer_exp_varonionmessage.patch} | 0 wire/onion_printgen.c | 2 +- wire/onion_printgen.h | 2 +- wire/onion_wiregen.c | 2 +- wire/onion_wiregen.h | 2 +- wire/peer_printgen.c | 2 +- wire/peer_printgen.h | 2 +- wire/peer_wiregen.c | 2 +- wire/peer_wiregen.h | 2 +- 21 files changed, 56 insertions(+), 32 deletions(-) rename wire/{extracted_onion_experimental_1b1c9a71038bd72453cabefd3ace17ce8b8dd96e => extracted_onion_exp_1b1c9a71038bd72453cabefd3ace17ce8b8dd96e.patch} (100%) rename wire/{extracted_onion_experimental_badonion_blinding => extracted_onion_exp_badonion_blinding.patch} (100%) rename wire/{extracted_onion_experimental_enctlv => extracted_onion_exp_enctlv.patch} (100%) rename wire/{extracted_onion_experimental_offers => extracted_onion_exp_offers.patch} (100%) rename wire/{extracted_peer_experimental_1b1c9a71038bd72453cabefd3ace17ce8b8dd96e => extracted_peer_exp_1b1c9a71038bd72453cabefd3ace17ce8b8dd96e.patch} (100%) rename wire/{extracted_peer_experimental_add_htlc-plus-blinding => extracted_peer_exp_add_htlc-plus-blinding.patch} (100%) rename wire/{extracted_peer_experimental_dual_fund => extracted_peer_exp_dual_fund.patch} (100%) rename wire/{extracted_peer_experimental_dual_fund_more => extracted_peer_exp_dual_fund_more.patch} (100%) rename wire/{extracted_peer_experimental_tmp_chan_id => extracted_peer_exp_tmp_chan_id.patch} (100%) rename wire/{extracted_peer_experimental_varonionmessage => extracted_peer_exp_varonionmessage.patch} (100%) diff --git a/wire/Makefile b/wire/Makefile index e6e1a4d5d..cb992a303 100644 --- a/wire/Makefile +++ b/wire/Makefile @@ -47,34 +47,58 @@ BOLT_EXTRACT=$(LOCAL_BOLTDIR)/tools/extract-formats.py WIRE_BOLT_DEPS := $(BOLT_DEPS) tools/gen/impl_template tools/gen/header_template -# Explicit command to re-extract CSV from BOLTs. -extract-bolt-csv: bolt-precheck - @$(BOLT_EXTRACT) $(LOCAL_BOLTDIR)/0[127]*.md > wire/peer_wire.csv - @echo '#include ' > wire/onion_wire.csv - @$(BOLT_EXTRACT) $(LOCAL_BOLTDIR)/04*.md >> wire/onion_wire.csv +ALL_PEER_PATCHES := $(sort $(wildcard wire/extracted_peer*.patch)) +ALL_ONION_PATCHES := $(sort $(wildcard wire/extracted_onion*.patch)) -extract-bolt12-csv: bolt-precheck - $(BOLT_EXTRACT) $(LOCAL_BOLTDIR)/12*.md > wire/bolt12_exp_wire.csv +# These are applied to the non-exp csvs to make the exp csvs. +PEER_EXP_PATCHES := $(sort $(wildcard wire/extracted_peer_exp*.patch)) +ONION_EXP_PATCHES := $(sort $(wildcard wire/extracted_onion_exp*.patch)) -ifeq ($(EXPERIMENTAL_FEATURES),1) -extract-bolt-csv: extract-bolt12-csv -endif +# These are always applied to the bolts. +PEER_PATCHES := $(filter-out $(PEER_EXP_PATCHES),$(ALL_PEER_PATCHES)) +ONION_PATCHES := $(filter-out $(ONION_EXP_PATCHES),$(ALL_ONION_PATCHES)) -# Explicit command to add patchfile for BOLT CSV's -extract-experimental-bolt-csv: bolt-precheck - @$(BOLT_EXTRACT) $(LOCAL_BOLTDIR)/0[127]*.md | diff -u wire/peer_exp_wire.csv - >wire/extracted_peer_experimental_$(BOLTVERSION) | if [ $$? -lt 0 ];then exit 1;fi - @{ echo '#include '; $(BOLT_EXTRACT) $(LOCAL_BOLTDIR)/04*.md; } | diff -u wire/onion_exp_wire.csv - > wire/extracted_onion_experimental_$(BOLTVERSION) | if [ $$? -lt 0 ];then exit 1;fi +# Explicit command to re-extract CSV from BOLTs and patch. +# This is not a normal make depencency, since we don't want this +# called implicitly. +# Note: You will need to run extract-bolt12-csv manually! +extract-bolt-csv: extract-peer-csv extract-onion-csv -ifeq ($(EXPERIMENTAL_FEATURES),1) -EXPERIMENTAL_PEER_PATCHES := $(sort $(wildcard wire/extracted_peer_experimental_*)) -EXPERIMENTAL_ONION_PATCHES := $(sort $(wildcard wire/extracted_onion_experimental_*)) +extract-peer-csv: wire/peer_wire.csv.raw + @set -e; T=wire/peer_wire.csv; trap "rm -f $$T.$$$$" 0; cp $< $$T.$$$$; for p in $(PEER_PATCHES); do echo APPLY $$p; patch $$T.$$$$ $$p; done; mv $$T.$$$$ $$T -wire/peer_exp_wire.csv: wire/peer_wire.csv $(EXPERIMENTAL_PEER_PATCHES) - @set -e; trap "rm -f $@.$$$$" 0; cp $< $@.$$$$; for exp in $(EXPERIMENTAL_PEER_PATCHES); do patch $@.$$$$ $$exp >/dev/null ; done; mv $@.$$$$ $@ +extract-onion-csv: wire/onion_wire.csv.raw + @set -e; T=wire/onion_wire.csv; trap "rm -f $$T.$$$$" 0; cp $< $$T.$$$$; for p in $(ONION_PATCHES); do echo APPLY $$p; patch $$T.$$$$ $$p; done; mv $$T.$$$$ $$T -wire/onion_exp_wire.csv: wire/onion_wire.csv $(EXPERIMENTAL_ONION_PATCHES) - @set -e; trap "rm -f $@.$$$$" 0; cp $< $@.$$$$; for exp in $(EXPERIMENTAL_ONION_PATCHES); do patch $@.$$$$ $$exp; done >/dev/null ; mv $@.$$$$ $@ -endif +extract-bolt12-csv: wire/bolt12_wire.csv.raw + @set -e; T=wire/bolt12_wire.csv; trap "rm -f $$T.$$$$" 0; cp $< $$T.$$$$; for p in $(BOLT12_PATCHES); do echo APPLY $$p; patch $$T.$$$$ $$p; done; mv $$T.$$$$ $$T + +wire/peer_wire.csv.raw: bolt-precheck + @$(BOLT_EXTRACT) $(LOCAL_BOLTDIR)/0[127]*.md > $@ + +wire/onion_wire.csv.raw: bolt-precheck + @(echo '#include '; $(BOLT_EXTRACT) $(LOCAL_BOLTDIR)/04*.md) > $@ + +wire/bolt12_wire.csv.raw: bolt-precheck + @$(BOLT_EXTRACT) $(LOCAL_BOLTDIR)/12*.md > $@ + +# How to make the exp versions from non-exp versions: +wire/peer_exp_wire.csv: wire/peer_wire.csv + @set -e; T=$@; trap "rm -f $$T.$$$$" 0; cp $< $$T.$$$$; for p in $(PEER_EXP_PATCHES); do echo APPLY $$p; patch $$T.$$$$ $$p; done; mv $$T.$$$$ $$T + +wire/onion_exp_wire.csv: wire/onion_wire.csv + @set -e; T=$@; trap "rm -f $$T.$$$$" 0; cp $< $$T.$$$$; for p in $(ONION_EXP_PATCHES); do echo APPLY $$p; patch $$T.$$$$ $$p; done; mv $$T.$$$$ $$T + +wire/bolt12_exp_wire.csv: wire/bolt12_wire.csv + @set -e; T=$@; trap "rm -f $$T.$$$$" 0; cp $< $$T.$$$$; for p in $(BOLT12_EXP_PATCHES); do echo APPLY $$p; patch $$T.$$$$ $$p; done; mv $$T.$$$$ $$T + +# These can be deleted. +.INTERMEDIATE: wire/peer_wire.csv.raw wire/onion_wire.csv.raw wire/bolt12_wire.csv.raw + +# Explicit command to add patchfile for BOLT CSV's against current one. +generate-bolt-csv-patch: bolt-precheck + @$(BOLT_EXTRACT) $(LOCAL_BOLTDIR)/0[127]*.md | diff -u wire/peer$(EXP)_wire.csv - >wire/extracted_peer$(EXP)_$(BOLTVERSION).patch | if [ $$? -lt 0 ];then exit 1;fi; echo wire/extracted_peer$(EXP)_$(BOLTVERSION).patch + @{ echo '#include '; $(BOLT_EXTRACT) $(LOCAL_BOLTDIR)/04*.md; } | diff -u wire/onion$(EXP)_wire.csv - > wire/extracted_onion$(EXP)_$(BOLTVERSION).patch | if [ $$? -lt 0 ];then exit 1;fi; echo wire/extracted_onion$(EXP)_$(BOLTVERSION).patch # tlvs_n1 and n2 are used for test vectors, thus not referenced: expose them # for testing and to prevent compile error about them being unused. diff --git a/wire/common_wiregen.c b/wire/common_wiregen.c index 922ef39de..ddf017ed9 100644 --- a/wire/common_wiregen.c +++ b/wire/common_wiregen.c @@ -100,4 +100,4 @@ bool fromwire_custommsg_out(const tal_t *ctx, const void *p, u8 **msg) fromwire_u8_array(&cursor, &plen, *msg, msg_len); return cursor != NULL; } -// SHA256STAMP:3d4dd8c4e467b5a2158181d3b2e1e7f59f5082c8c5c91ba35d1fdda9a8d1ed6e +// SHA256STAMP:9dd0524ec6bd37da39061033975a68f614938210cec718e6ce32cf0d6a1e55b9 diff --git a/wire/common_wiregen.h b/wire/common_wiregen.h index 1fe50cb38..4651526ab 100644 --- a/wire/common_wiregen.h +++ b/wire/common_wiregen.h @@ -41,4 +41,4 @@ bool fromwire_custommsg_out(const tal_t *ctx, const void *p, u8 **msg); #endif /* LIGHTNING_WIRE_COMMON_WIREGEN_H */ -// SHA256STAMP:3d4dd8c4e467b5a2158181d3b2e1e7f59f5082c8c5c91ba35d1fdda9a8d1ed6e +// SHA256STAMP:9dd0524ec6bd37da39061033975a68f614938210cec718e6ce32cf0d6a1e55b9 diff --git a/wire/extracted_onion_experimental_1b1c9a71038bd72453cabefd3ace17ce8b8dd96e b/wire/extracted_onion_exp_1b1c9a71038bd72453cabefd3ace17ce8b8dd96e.patch similarity index 100% rename from wire/extracted_onion_experimental_1b1c9a71038bd72453cabefd3ace17ce8b8dd96e rename to wire/extracted_onion_exp_1b1c9a71038bd72453cabefd3ace17ce8b8dd96e.patch diff --git a/wire/extracted_onion_experimental_badonion_blinding b/wire/extracted_onion_exp_badonion_blinding.patch similarity index 100% rename from wire/extracted_onion_experimental_badonion_blinding rename to wire/extracted_onion_exp_badonion_blinding.patch diff --git a/wire/extracted_onion_experimental_enctlv b/wire/extracted_onion_exp_enctlv.patch similarity index 100% rename from wire/extracted_onion_experimental_enctlv rename to wire/extracted_onion_exp_enctlv.patch diff --git a/wire/extracted_onion_experimental_offers b/wire/extracted_onion_exp_offers.patch similarity index 100% rename from wire/extracted_onion_experimental_offers rename to wire/extracted_onion_exp_offers.patch diff --git a/wire/extracted_peer_experimental_1b1c9a71038bd72453cabefd3ace17ce8b8dd96e b/wire/extracted_peer_exp_1b1c9a71038bd72453cabefd3ace17ce8b8dd96e.patch similarity index 100% rename from wire/extracted_peer_experimental_1b1c9a71038bd72453cabefd3ace17ce8b8dd96e rename to wire/extracted_peer_exp_1b1c9a71038bd72453cabefd3ace17ce8b8dd96e.patch diff --git a/wire/extracted_peer_experimental_add_htlc-plus-blinding b/wire/extracted_peer_exp_add_htlc-plus-blinding.patch similarity index 100% rename from wire/extracted_peer_experimental_add_htlc-plus-blinding rename to wire/extracted_peer_exp_add_htlc-plus-blinding.patch diff --git a/wire/extracted_peer_experimental_dual_fund b/wire/extracted_peer_exp_dual_fund.patch similarity index 100% rename from wire/extracted_peer_experimental_dual_fund rename to wire/extracted_peer_exp_dual_fund.patch diff --git a/wire/extracted_peer_experimental_dual_fund_more b/wire/extracted_peer_exp_dual_fund_more.patch similarity index 100% rename from wire/extracted_peer_experimental_dual_fund_more rename to wire/extracted_peer_exp_dual_fund_more.patch diff --git a/wire/extracted_peer_experimental_tmp_chan_id b/wire/extracted_peer_exp_tmp_chan_id.patch similarity index 100% rename from wire/extracted_peer_experimental_tmp_chan_id rename to wire/extracted_peer_exp_tmp_chan_id.patch diff --git a/wire/extracted_peer_experimental_varonionmessage b/wire/extracted_peer_exp_varonionmessage.patch similarity index 100% rename from wire/extracted_peer_experimental_varonionmessage rename to wire/extracted_peer_exp_varonionmessage.patch diff --git a/wire/onion_printgen.c b/wire/onion_printgen.c index b23bbcf26..515fcd255 100644 --- a/wire/onion_printgen.c +++ b/wire/onion_printgen.c @@ -653,4 +653,4 @@ void printonion_wire_tlv_message(const char *tlv_name, const u8 *msg) { printwire_tlvs(tlv_name, &msg, &plen, print_tlvs_tlv_payload, ARRAY_SIZE(print_tlvs_tlv_payload)); } } -// SHA256STAMP:de983a18d6a298f6dc27229bc10eaaf846bc313e06450e23d122ea84de5c829a +// SHA256STAMP:1af6b26217b4ee1dd0b9001ca463ff07463e89524ab11a9b80f99321c5e8bd0c diff --git a/wire/onion_printgen.h b/wire/onion_printgen.h index 65e76d29f..0c1a214ee 100644 --- a/wire/onion_printgen.h +++ b/wire/onion_printgen.h @@ -57,4 +57,4 @@ void printwire_mpp_timeout(const char *fieldname, const u8 *cursor); #endif /* LIGHTNING_WIRE_ONION_PRINTGEN_H */ -// SHA256STAMP:de983a18d6a298f6dc27229bc10eaaf846bc313e06450e23d122ea84de5c829a +// SHA256STAMP:1af6b26217b4ee1dd0b9001ca463ff07463e89524ab11a9b80f99321c5e8bd0c diff --git a/wire/onion_wiregen.c b/wire/onion_wiregen.c index 8e53016c8..fe5693c6b 100644 --- a/wire/onion_wiregen.c +++ b/wire/onion_wiregen.c @@ -697,4 +697,4 @@ bool fromwire_mpp_timeout(const void *p) return false; return cursor != NULL; } -// SHA256STAMP:de983a18d6a298f6dc27229bc10eaaf846bc313e06450e23d122ea84de5c829a +// SHA256STAMP:1af6b26217b4ee1dd0b9001ca463ff07463e89524ab11a9b80f99321c5e8bd0c diff --git a/wire/onion_wiregen.h b/wire/onion_wiregen.h index caa3c01df..56a126a5b 100644 --- a/wire/onion_wiregen.h +++ b/wire/onion_wiregen.h @@ -207,4 +207,4 @@ bool fromwire_mpp_timeout(const void *p); #endif /* LIGHTNING_WIRE_ONION_WIREGEN_H */ -// SHA256STAMP:de983a18d6a298f6dc27229bc10eaaf846bc313e06450e23d122ea84de5c829a +// SHA256STAMP:1af6b26217b4ee1dd0b9001ca463ff07463e89524ab11a9b80f99321c5e8bd0c diff --git a/wire/peer_printgen.c b/wire/peer_printgen.c index 64a2d4612..660a1c6af 100644 --- a/wire/peer_printgen.c +++ b/wire/peer_printgen.c @@ -2036,4 +2036,4 @@ void printpeer_wire_tlv_message(const char *tlv_name, const u8 *msg) { printwire_tlvs(tlv_name, &msg, &plen, print_tlvs_reply_channel_range_tlvs, ARRAY_SIZE(print_tlvs_reply_channel_range_tlvs)); } } -// SHA256STAMP:7cb56bd1ecb24076a620bf103cd28fc31cd45a31e2d6e59a1fd1f2a742d520fd +// SHA256STAMP:b2c31b272b7ada6d454bb530173e0f68d1f9274a17267f9a3ecb40cbf8ea478e diff --git a/wire/peer_printgen.h b/wire/peer_printgen.h index b4361dd9a..fc7d88f1c 100644 --- a/wire/peer_printgen.h +++ b/wire/peer_printgen.h @@ -70,4 +70,4 @@ void printwire_gossip_timestamp_filter(const char *fieldname, const u8 *cursor); void printwire_channel_update_checksums(const char *fieldname, const u8 **cursor, size_t *plen); void printwire_channel_update_timestamps(const char *fieldname, const u8 **cursor, size_t *plen); #endif /* LIGHTNING_WIRE_PEER_PRINTGEN_H */ -// SHA256STAMP:7cb56bd1ecb24076a620bf103cd28fc31cd45a31e2d6e59a1fd1f2a742d520fd +// SHA256STAMP:b2c31b272b7ada6d454bb530173e0f68d1f9274a17267f9a3ecb40cbf8ea478e diff --git a/wire/peer_wiregen.c b/wire/peer_wiregen.c index 8dd90452f..a38f05aa6 100644 --- a/wire/peer_wiregen.c +++ b/wire/peer_wiregen.c @@ -1630,4 +1630,4 @@ bool fromwire_channel_update_option_channel_htlc_max(const void *p, secp256k1_ec *htlc_maximum_msat = fromwire_amount_msat(&cursor, &plen); return cursor != NULL; } -// SHA256STAMP:7cb56bd1ecb24076a620bf103cd28fc31cd45a31e2d6e59a1fd1f2a742d520fd +// SHA256STAMP:b2c31b272b7ada6d454bb530173e0f68d1f9274a17267f9a3ecb40cbf8ea478e diff --git a/wire/peer_wiregen.h b/wire/peer_wiregen.h index 64bdd9ab3..f881c9f82 100644 --- a/wire/peer_wiregen.h +++ b/wire/peer_wiregen.h @@ -595,4 +595,4 @@ bool fromwire_channel_update_option_channel_htlc_max(const void *p, secp256k1_ec #endif /* LIGHTNING_WIRE_PEER_WIREGEN_H */ -// SHA256STAMP:7cb56bd1ecb24076a620bf103cd28fc31cd45a31e2d6e59a1fd1f2a742d520fd +// SHA256STAMP:b2c31b272b7ada6d454bb530173e0f68d1f9274a17267f9a3ecb40cbf8ea478e