From a6b4998786132a4f3614a234b9eb48102bc85e17 Mon Sep 17 00:00:00 2001 From: EuAndreh Date: Sun, 30 Mar 2025 09:38:37 -0300 Subject: Makefile: Use rsync(1) in "install" over cp(1) in loop --- Makefile | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index f1747f0..3a15506 100644 --- a/Makefile +++ b/Makefile @@ -134,6 +134,8 @@ derived-assets = \ baseurl.txt \ expiry.txt \ src/content/.well-known/security.txt \ + install.html.txt \ + install.src.txt \ side-assets = \ src/collections/*/*/*/*/*.html.*.txt \ @@ -194,6 +196,13 @@ src/content/.well-known/security.txt: email.txt baseurl.txt expiry.txt printf 'Encryption: %s/public.asc\n' "`cat baseurl.txt`" >> $@ printf 'Preferred-Languages: en, pt, fr, eo, es\n' >> $@ +install.html.txt: $(all-contents) $(sources.snippets) $(sources.snippets.gz) + find $(all-contents) `cat $(sources.snippets) $(sources.snippets.gz)` \ + | sed 's|^src/content/||' > $@ + +install.src.txt: $(sources) + find $(sources) | sed 's|^src/content/||' > $@ + check-unit: @@ -224,19 +233,10 @@ clean: ## Installs into $(DESTDIR)$(PREFIX). Its dependency target ## ensures that all installable artifacts are crafted beforehand. install: all - mkdir -p \ - '$(DESTDIR)$(SRCDIR)' \ - - for f in $(all-contents) `cat $(sources.snippets)`; do \ - dir='$(DESTDIR)$(HTMLDIR)'/"`dirname "$${f#src/content/}"`"; \ - mkdir -p "$$dir"; \ - cp -P "$$f" "$$dir"; \ - done - for f in $(sources); do \ - dir='$(DESTDIR)$(SRCDIR)'/"`dirname "$${f#src/content/}"`"; \ - mkdir -p "$$dir"; \ - cp -P "$$f" "$$dir"; \ - done + rsync --mkpath -a --files-from=install.html.txt src/content/ \ + '$(DESTDIR)$(HTMLDIR)' + rsync --mkpath -a --files-from=install.src.txt src/content/ \ + '$(DESTDIR)$(SRCDIR)' ## Uninstalls from $(DESTDIR)$(PREFIX). This is a perfect mirror ## of the "install" target, and removes *all* that was installed. -- cgit v1.2.3