Skip to content

Commit 7b1c487

Browse files
sangbidarustyrussell
authored andcommitted
makefile: use SED from configure in most places.
Some simple cases are left alone, but anything called from make uses $SED.
1 parent 23784a4 commit 7b1c487

File tree

7 files changed

+34
-31
lines changed

7 files changed

+34
-31
lines changed

Makefile

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#! /usr/bin/make
22

33
# Extract version from git, or if we're from a zipfile, use dirname
4-
VERSION=$(shell git describe --tags --always --dirty=-modded --abbrev=7 2>/dev/null || pwd | sed -n 's|.*/c\{0,1\}lightning-v\{0,1\}\([0-9a-f.rc\-]*\)$$|v\1|gp')
4+
VERSION=$(shell git describe --tags --always --dirty=-modded --abbrev=7 2>/dev/null || pwd | $(SED) -n 's|.*/c\{0,1\}lightning-v\{0,1\}\([0-9a-f.rc\-]*\)$$|v\1|gp')
55

66
# Next release.
77
CLN_NEXT_VERSION := v25.12
@@ -318,30 +318,30 @@ else
318318
# Git doesn't maintain timestamps, so we only regen if sources actually changed:
319319
# We place the SHA inside some generated files so we can tell if they need updating.
320320
# Usage: $(call SHA256STAMP_CHANGED)
321-
SHA256STAMP_CHANGED = [ x"`sed -n 's/.*SHA256STAMP:\([a-f0-9]*\).*/\1/p' $@ 2>/dev/null`" != x"`cat $(sort $(filter-out FORCE,$^)) | $(SHA256SUM) | cut -c1-64`" ]
321+
SHA256STAMP_CHANGED = [ x"`$(SED) -n 's/.*SHA256STAMP:\([a-f0-9]*\).*/\1/p' $@ 2>/dev/null`" != x"`cat $(sort $(filter-out FORCE,$^)) | $(SHA256SUM) | cut -c1-64`" ]
322322
# Usage: $(call SHA256STAMP,commentprefix,commentpostfix)
323323
SHA256STAMP = echo "$(1) SHA256STAMP:"`cat $(sort $(filter-out FORCE,$^)) | $(SHA256SUM) | cut -c1-64`"$(2)" >> $@
324324
endif
325325

326326
# generate-wire.py --page [header|impl] hdrfilename wirename < csv > file
327327
%_wiregen.h: %_wire.csv $(WIRE_GEN_DEPS)
328328
@if $(call SHA256STAMP_CHANGED); then \
329-
$(call VERBOSE,"wiregen $@",tools/generate-wire.py --page header $($@_args) $@ `basename $< .csv | sed 's/_exp_/_/'` < $< > $@ && $(call SHA256STAMP,//,)); \
329+
$(call VERBOSE,"wiregen $@",tools/generate-wire.py --page header $($@_args) $@ `basename $< .csv | $(SED) 's/_exp_/_/'` < $< > $@ && $(call SHA256STAMP,//,)); \
330330
fi
331331

332332
%_wiregen.c: %_wire.csv $(WIRE_GEN_DEPS)
333333
@if $(call SHA256STAMP_CHANGED); then \
334-
$(call VERBOSE,"wiregen $@",tools/generate-wire.py --page impl $($@_args) ${@:.c=.h} `basename $< .csv | sed 's/_exp_/_/'` < $< > $@ && $(call SHA256STAMP,//,)); \
334+
$(call VERBOSE,"wiregen $@",tools/generate-wire.py --page impl $($@_args) ${@:.c=.h} `basename $< .csv | $(SED) 's/_exp_/_/'` < $< > $@ && $(call SHA256STAMP,//,)); \
335335
fi
336336

337337
%_printgen.h: %_wire.csv $(WIRE_GEN_DEPS)
338338
@if $(call SHA256STAMP_CHANGED); then \
339-
$(call VERBOSE,"printgen $@",tools/generate-wire.py -s -P --page header $($@_args) $@ `basename $< .csv | sed 's/_exp_/_/'` < $< > $@ && $(call SHA256STAMP,//,)); \
339+
$(call VERBOSE,"printgen $@",tools/generate-wire.py -s -P --page header $($@_args) $@ `basename $< .csv | $(SED) 's/_exp_/_/'` < $< > $@ && $(call SHA256STAMP,//,)); \
340340
fi
341341

342342
%_printgen.c: %_wire.csv $(WIRE_GEN_DEPS)
343343
@if $(call SHA256STAMP_CHANGED); then \
344-
$(call VERBOSE,"printgen $@",tools/generate-wire.py -s -P --page impl $($@_args) ${@:.c=.h} `basename $< .csv | sed 's/_exp_/_/'` < $< > $@ && $(call SHA256STAMP,//,)); \
344+
$(call VERBOSE,"printgen $@",tools/generate-wire.py -s -P --page impl $($@_args) ${@:.c=.h} `basename $< .csv | $(SED) 's/_exp_/_/'` < $< > $@ && $(call SHA256STAMP,//,)); \
345345
fi
346346

347347
RUST_PROFILE ?= debug
@@ -411,7 +411,7 @@ ALL_TEST_GEN += $(GRPC_GEN)
411411
$(GRPC_GEN) &: cln-grpc/proto/node.proto cln-grpc/proto/primitives.proto
412412
$(PYTHON) -m grpc_tools.protoc -I cln-grpc/proto cln-grpc/proto/node.proto --python_out=$(GRPC_PATH)/ --grpc_python_out=$(GRPC_PATH)/ --experimental_allow_proto3_optional
413413
$(PYTHON) -m grpc_tools.protoc -I cln-grpc/proto cln-grpc/proto/primitives.proto --python_out=$(GRPC_PATH)/ --experimental_allow_proto3_optional
414-
find $(GRPC_DIR)/ -type f -name "*.py" -print0 | xargs -0 sed -i'.bak' -e 's/^import \(.*\)_pb2 as .*__pb2/from pyln.grpc import \1_pb2 as \1__pb2/g'
414+
find $(GRPC_DIR)/ -type f -name "*.py" -print0 | xargs -0 $(SED) -i'.bak' -e 's/^import \(.*\)_pb2 as .*__pb2/from pyln.grpc import \1_pb2 as \1__pb2/g'
415415
find $(GRPC_DIR)/ -type f -name "*.py.bak" -print0 | xargs -0 rm -f
416416

417417
# We make pretty much everything depend on these.
@@ -444,7 +444,7 @@ mkdocs.yml: $(MANPAGES:=.md)
444444
@$(call VERBOSE, "genidx $@", \
445445
find doc -maxdepth 1 -name '*\.[0-9]\.md' | \
446446
cut -b 5- | LC_ALL=C sort | \
447-
sed 's/\(.*\)\.\(.*\).*\.md/- "\1": "\1.\2.md"/' | \
447+
$(SED) 's/\(.*\)\.\(.*\).*\.md/- "\1": "\1.\2.md"/' | \
448448
$(PYTHON) devtools/blockreplace.py mkdocs.yml manpages --language=yml --indent " " \
449449
)
450450

@@ -559,7 +559,7 @@ check-python-flake8:
559559
@# E731 do not assign a lambda expression, use a def
560560
@# W503: line break before binary operator
561561
@# E741: ambiguous variable name
562-
@uv run flake8 --ignore=E501,E731,E741,W503,F541,E275 --exclude $(shell echo ${PYTHON_GENERATED} | sed 's/ \+/,/g') ${PYSRC}
562+
@uv run flake8 --ignore=E501,E731,E741,W503,F541,E275 --exclude $(shell echo ${PYTHON_GENERATED} | $(SED) 's/ \+/,/g') ${PYSRC}
563563

564564
check-pytest-pyln-proto:
565565
PATH=$(PYLN_PATH) PYTHONPATH=$(MY_CHECK_PYTHONPATH) uv run $(PYTEST) contrib/pyln-proto/tests/
@@ -717,7 +717,7 @@ $(ALL_TEST_PROGRAMS:=.o): $(ALL_GEN_SOURCES)
717717

718718
update-ccan:
719719
mv ccan ccan.old
720-
DIR=$$(pwd)/ccan; cd ../ccan && ./tools/create-ccan-tree -a $$DIR `cd $$DIR.old/ccan && find * -name _info | sed s,/_info,, | $(SORT)` $(CCAN_NEW)
720+
DIR=$$(pwd)/ccan; cd ../ccan && ./tools/create-ccan-tree -a $$DIR `cd $$DIR.old/ccan && find * -name _info | $(SED) s,/_info,, | $(SORT)` $(CCAN_NEW)
721721
mkdir -p ccan/tools/configurator
722722
cp ../ccan/tools/configurator/configurator.c ../ccan/doc/configurator.1 ccan/tools/configurator/
723723
$(MAKE) ccan/config.h
@@ -772,8 +772,8 @@ update-pyln-versions: $(PYLNS:%=update-pyln-version-%)
772772
update-pyln-version-%:
773773
@if [ -z "$(NEW_VERSION)" ]; then echo "Set NEW_VERSION!" >&2; exit 1; fi
774774
@echo "Updating contrib/pyln-$* to $(NEW_VERSION)"
775-
@sed -i.bak 's/^version = .*/version = "$(NEW_VERSION)"/' contrib/pyln-$*/pyproject.toml && rm contrib/pyln-$*/pyproject.toml.bak
776-
@sed -i.bak 's/^__version__ = .*/__version__ = "$(NEW_VERSION)"/' contrib/pyln-$*/pyln/$*/__init__.py && rm contrib/pyln-$*/pyln/$*/__init__.py.bak
775+
@$(SED) -i.bak 's/^version = .*/version = "$(NEW_VERSION)"/' contrib/pyln-$*/pyproject.toml && rm contrib/pyln-$*/pyproject.toml.bak
776+
@$(SED) -i.bak 's/^__version__ = .*/__version__ = "$(NEW_VERSION)"/' contrib/pyln-$*/pyln/$*/__init__.py && rm contrib/pyln-$*/pyln/$*/__init__.py.bak
777777

778778
pyln-release: $(PYLNS:%=pyln-release-%)
779779

@@ -805,7 +805,7 @@ update-lock:
805805
update-reckless-version:
806806
@if [ -z "$(NEW_VERSION)" ]; then echo "Set NEW_VERSION!" >&2; exit 1; fi
807807
@echo "Updating tools/reckless to $(NEW_VERSION)"
808-
@sed -i.bak "s/__VERSION__ = '.*'/__VERSION__ = '$(NEW_VERSION)'/" tools/reckless && rm tools/reckless.bak
808+
@$(SED) -i.bak "s/__VERSION__ = '.*'/__VERSION__ = '$(NEW_VERSION)'/" tools/reckless && rm tools/reckless.bak
809809

810810
update-dot-version:
811811
@if [ -z "$(NEW_VERSION)" ]; then echo "Set NEW_VERSION!" >&2; exit 1; fi
@@ -816,7 +816,7 @@ update-mocks: $(ALL_TEST_PROGRAMS:%=update-mocks/%.c)
816816
$(ALL_TEST_PROGRAMS:%=update-mocks/%.c): $(ALL_GEN_HEADERS) $(EXTERNAL_LIBS) libccan.a ccan/ccan/cdump/tools/cdump-enumstr config.vars
817817

818818
update-mocks/%: % $(ALL_GEN_HEADERS) $(ALL_GEN_SOURCES)
819-
@MAKE=$(MAKE) tools/update-mocks.sh "$*" $(SUPPRESS_OUTPUT)
819+
@MAKE=$(MAKE) SED=$(SED) tools/update-mocks.sh "$*" $(SUPPRESS_OUTPUT)
820820

821821
unittest/%: % bolt-precheck
822822
BOLTDIR=$(LOCAL_BOLTDIR) $(VG) $(VG_TEST_ARGS) $* > /dev/null

contrib/plugins/cowsay.sh

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
#! /bin/sh
22

3+
# Set sed using best effort, for MacOS.
4+
if which gsed > /dev/null; then SED="gsed"; else SED="sed"; fi
5+
36
maybe_cowsay()
47
{
58
cowsay || cat <<EOF
@@ -17,24 +20,24 @@ EOF
1720
# Eg. {"jsonrpc":"2.0","id":2,"method":"getmanifest","params":{}}\n\n
1821
read -r JSON
1922
read -r _
20-
id=$(echo "$JSON" | sed 's/.*"id" *: *\([^,]*\),.*/\1/')
23+
id=$(echo "$JSON" | $SED 's/.*"id" *: *\([^,]*\),.*/\1/')
2124

2225
echo '{"jsonrpc":"2.0","id":'"$id"',"result":{"dynamic":true,"options":[],"rpcmethods":[{"name":"cowsay","usage":"<string>","description":"Have a cow, man!"}]}}'
2326

2427
# Eg. {"jsonrpc":"2.0","id":5,"method":"init","params":{"options":{},"configuration":{"lightning-dir":"/home/rusty/.lightning","rpc-file":"lightning-rpc","startup":false}}}\n\n
2528
read -r JSON
2629
read -r _
27-
id=$(echo "$JSON" | sed 's/.*"id" *: *\([^,]*\),.*/\1/')
30+
id=$(echo "$JSON" | $SED 's/.*"id" *: *\([^,]*\),.*/\1/')
2831

2932
echo '{"jsonrpc":"2.0","id":'"$id"',"result":{}}'
3033

3134
# eg. { "jsonrpc" : "2.0", "method" : "cowsay", "id" : 6, "params" :[ "hello"] }
3235
while read -r JSON; do
3336
read -r _
34-
id=$(echo "$JSON" | sed 's/.*"id" *: *\([^,]*\),.*/\1/')
35-
params=$(echo "$JSON" | sed 's/.*"params" *: *//' | tr -d '[{}]"')
37+
id=$(echo "$JSON" | $SED 's/.*"id" *: *\([^,]*\),.*/\1/')
38+
params=$(echo "$JSON" | $SED 's/.*"params" *: *//' | tr -d '[{}]"')
3639
echo '{"jsonrpc":"2.0","id":'"$id"',"result":{"format-hint":"simple","cowsay":"'
3740
# FIXME: lightning-cli does not unescape \\, so we replace with an L.
38-
printf "%s" "$params" | maybe_cowsay | sed 's/\\/L/g' | sed ':a;N;$!ba;s/\n/\\n/g' | tr '\012' '"'
41+
printf "%s" "$params" | maybe_cowsay | $SED 's/\\/L/g' | $SED ':a;N;$!ba;s/\n/\\n/g' | tr '\012' '"'
3942
echo '}}'
4043
done

doc/Makefile

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -226,9 +226,9 @@ doc/.doc_version: version_gen.h
226226
@if cmp $@.new $@ >/dev/null 2>&1; then rm -f $@.new; else mv $@.new $@; $(ECHO) Documentation version updated to `cat doc/.doc_version`; fi
227227

228228
$(PREFIXED_MANPAGES): doc/lightning-%: doc/%.md tools/md2man.sh doc/.doc_version
229-
@VERSION=`cat doc/.doc_version` tools/md2man.sh $(LOWDOWN) $<
229+
@VERSION=`cat doc/.doc_version` SED=$(SED) tools/md2man.sh $(LOWDOWN) $<
230230
$(NON_PREFIXED_MANPAGES): doc/%: doc/%.md tools/md2man.sh doc/.doc_version
231-
@VERSION=`cat doc/.doc_version` tools/md2man.sh $(LOWDOWN) $<
231+
@VERSION=`cat doc/.doc_version` SED=$(SED) tools/md2man.sh $(LOWDOWN) $<
232232

233233
doc/protocol-%.svg: test/test_protocol
234234
test/test_protocol --svg < test/commits/$*.script > $@
@@ -263,8 +263,8 @@ check: check-manpages
263263

264264
# This needs plugins, too.
265265
check-manpages: all-programs check-config-docs default-targets
266-
@tools/check-manpage.sh cli/lightning-cli doc/lightning-cli.1.md
267-
@tools/check-manpage.sh "lightningd/lightningd --lightning-dir=/tmp/" doc/lightningd-config.5.md
266+
@SED=$(SED) tools/check-manpage.sh cli/lightning-cli doc/lightning-cli.1.md
267+
@SED=$(SED) tools/check-manpage.sh "lightningd/lightningd --lightning-dir=/tmp/" doc/lightningd-config.5.md
268268
@awk '/^$$/ { do { getline } while ($$0 ~ /^( {4,}|\t)/) } /^\s*```/ { do { getline } while ($$0 !~ /^\s*```/) } /^([^`_\\]|`([^`\\]|\\.)*`|\b_|_\b|\\.)*\B_\B/ { print "" ; print "Unescaped underscore at " FILENAME ":" NR ":" ; print ; ret = 1 } ENDFILE { NR = 0 } END { exit ret }' doc/*.[0-9].md
269269

270270
# Makes sure that fields mentioned in schema are in man page, and vice versa.
@@ -281,7 +281,7 @@ doc/index.rst: $(MARKDOWNPAGES_WITH_EXT) $(NON_PREFIXED_MARKDOWNPAGES_WITH_EXT)
281281
for m in $(MARKDOWNPAGES_WITH_EXT) $(NON_PREFIXED_MARKDOWNPAGES_WITH_EXT); do \
282282
base=$$(basename "$$m"); \
283283
echo "$$base" | \
284-
sed -E 's/^(.*)\.([0-9]+)\.md$$/\1 <\1.\2.md>/; t; s/^(.*)\.md$$/\1 <\1.md>/'; \
284+
$(SED) -E 's/^(.*)\.([0-9]+)\.md$$/\1 <\1.\2.md>/; t; s/^(.*)\.md$$/\1 <\1.md>/'; \
285285
done | \
286286
LC_ALL=C sort | \
287287
$(PYTHON) devtools/blockreplace.py doc/index.rst manpages --language=rst --indent " " \

plugins/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -277,9 +277,9 @@ plugins/sql-schema_gen.h: $(SQL_SCHEMA_PARTS)
277277
SEP=""; \
278278
echo "\"{"; \
279279
for l in $(SQL_LISTRPCS); do \
280-
echo "$$SEP\"$$l\":{\"properties\":$$(cat plugins/sql-schema_$${l}_gen.h)}" | sed s/\"/\\\"/g; \
280+
echo "$$SEP\"$$l\":{\"properties\":$$(cat plugins/sql-schema_$${l}_gen.h)}" | $(SED) s/\"/\\\"/g; \
281281
SEP=","; \
282-
done | sed "s/\\\"/\\\\\"/g"; \
282+
done | $(SED) "s/\\\"/\\\\\"/g"; \
283283
echo "}\"") | tr -d " \n" > $@ \
284284
)
285285

tools/check-manpage.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ get_cmd_opts()
1010
{
1111
# Trim out -- after first one: ensure width sufficient to give desc
1212
# on same line, and ignore single-letter prefix e.g. -X|--ex
13-
COLUMNS=1000 $1 --help | sed -n 's/^\(-.|\)\?\(--[^ ]*\)\( \| \).*/\2/p' | while IFS=$'\n' read -r opt; do
13+
COLUMNS=1000 $1 --help | $SED -n 's/^\(-.|\)\?\(--[^ ]*\)\( \| \).*/\2/p' | while IFS=$'\n' read -r opt; do
1414
case "$opt" in
1515
# We don't document dev options.
1616
--dev-*)
@@ -46,7 +46,7 @@ if [ -z "$CMD_OPTNAMES" ]; then
4646
fi
4747

4848
# Now, gather (long) opt names from man page, make sure they match.
49-
MAN_OPTNAMES=$(grep -vi 'deprecated in' "$2" | sed -E -n 's,^\* \*\*(--)?([^*/]*)\*\*(/\*\*-.\*\*)?(=?).*,\2\4,p'| sort)
49+
MAN_OPTNAMES=$(grep -vi 'deprecated in' "$2" | $SED -E -n 's,^\* \*\*(--)?([^*/]*)\*\*(/\*\*-.\*\*)?(=?).*,\2\4,p'| sort)
5050

5151
if [ "$CMD_OPTNAMES" != "$MAN_OPTNAMES" ]; then
5252
echo "diff of command names vs manpage names":

tools/md2man.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,14 @@ TITLELINE="$(head -n1 "$SOURCE")"
2929
# Replace lightning-cli with $ lightning-cli but do not replace it if it is preceded with (
3030
# because it is used in the examples to run it in the shell, eg. $(lightning-cli listpeerchannels)
3131
# shellcheck disable=SC2016 # These are not variables, shellcheck!
32-
SOURCE=$(tail -n +3 "$SOURCE" | sed -E '
32+
SOURCE=$(tail -n +3 "$SOURCE" | $SED -E '
3333
:a;N;$!ba;
3434
s#(\(lightning-cli)#\x1#ig;
3535
s#lightning-cli#$ lightning-cli#g;
3636
s#\x1#(lightning-cli#g;
3737
' |
3838
# Lowdown requires a blank line before every preformatted text block
39-
sed '
39+
$SED '
4040
/^$/{:0;N;/\n$/b0};s/^[[:blank:]]*```/\n\0/;
4141
/\n[[:blank:]]*```/{:1;n;/^[[:blank:]]*```/!b1}
4242
')

tools/mockup.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,5 +73,5 @@ for SYMBOL; do
7373

7474
echo "/* Generated stub for $SYMBOL */"
7575

76-
tail -n "+${LINE}" < "$FILE" | head -n "$NUM" | sed 's/^extern *//' | sed 's/PRINTF_FMT([^)]*)//' | sed 's/NON_NULL_ARGS([^)]*)//' | sed 's/NO_NULL_ARGS//g' | sed 's/NORETURN//g' | sed 's/RETURNS_NONNULL//g' | sed 's/LAST_ARG_NULL//g' | sed 's/WARN_UNUSED_RESULT//g' | sed 's/,/ UNNEEDED,/g' | sed 's/\([a-z0-9A-Z*_]* [a-z0-9A-Z*_]*\));/\1 UNNEEDED);/' | sed "s/;\$/$STUB/" | sed 's/[[:space:]]*$//'
76+
tail -n "+${LINE}" < "$FILE" | head -n "$NUM" | $SED 's/^extern *//' | $SED 's/PRINTF_FMT([^)]*)//' | $SED 's/NON_NULL_ARGS([^)]*)//' | $SED 's/NO_NULL_ARGS//g' | $SED 's/NORETURN//g' | $SED 's/RETURNS_NONNULL//g' | $SED 's/LAST_ARG_NULL//g' | $SED 's/WARN_UNUSED_RESULT//g' | $SED 's/,/ UNNEEDED,/g' | $SED 's/\([a-z0-9A-Z*_]* [a-z0-9A-Z*_]*\));/\1 UNNEEDED);/' | $SED "s/;\$/$STUB/" | $SED 's/[[:space:]]*$//'
7777
done

0 commit comments

Comments
 (0)