build/Makefile.common: shrink pdfs before publish

Closes: SYS#6380
Change-Id: I7c01b1cb1a0e7de385359671461a0ad142dfa5ad
This commit is contained in:
Oliver Smith 2023-03-16 13:10:16 +01:00
parent 33b5f5c889
commit 24cca7086b
2 changed files with 36 additions and 3 deletions

View File

@ -9,8 +9,9 @@
SSH_COMMAND = ssh -o 'UserKnownHostsFile=$(OSMO_GSM_MANUALS_DIR)/build/known_hosts' -p 48
UPLOAD_PATH ?= generic@sysmocom-downloads:documents
SYMLINKS = common build
CLEAN_FILES += $(SYMLINKS)
CLEAN_FILES += $(SYMLINKS) $(SHRINK_MARKER)
PDF_FILES = $(patsubst %.adoc,%.pdf,$(ASCIIDOC)) $(patsubst %.xml,%.pdf,$(VTY_REFERENCE))
SHRINK_MARKER = generated/.pdf_shrink_marker
PUBLISH_REF ?= master
PUBLISH_TEMPDIR = _publish_tmpdir
@ -20,12 +21,17 @@ prefix ?= /usr/local
$(SYMLINKS):
ln -s $(OSMO_GSM_MANUALS_DIR)/$@ $@
# Reduce pdf size by storing the embedded images with less quality (SYS#6380)
shrink: $(SHRINK_MARKER)
$(SHRINK_MARKER): $(UPLOAD_FILES)
build/shrink-pdfs.sh $(UPLOAD_FILES)
# Publish to $UPLOAD_PATH
upload: $(UPLOAD_FILES)
upload: shrink
rsync -avz $(UPLOAD_FILES) $(UPLOAD_PATH)/
# Publish to https://ftp.osmocom.org/docs/
publish: $(UPLOAD_FILES)
publish: shrink
[ -n "$(OSMO_REPOSITORY)" ] || exit 1
rm -rf "$(PUBLISH_TEMPDIR)"
mkdir -p "$(PUBLISH_TEMPDIR)/$(OSMO_REPOSITORY)/$(PUBLISH_REF)"

27
build/shrink-pdfs.sh Executable file
View File

@ -0,0 +1,27 @@
#!/bin/sh -e
# Reduce pdf size by storing the embedded images with less quality (SYS#6380)
# usage: shrink-pdfs.sh first.pdf [second.pdf [...]]
mkdir -p generated
for i in $@; do
out="generated/shrink_temp.pdf"
ps2pdf -dPDFSETTINGS=/ebook "$i" "$out"
size_old=$(du "$i" | cut -f1)
size_old_h=$(du -h "$i" | cut -f1)
size_new=$(du "$out" | cut -f1)
size_new_h=$(du -h "$out" | cut -f1)
if [ "$size_new" -lt "$size_old" ]; then
echo "* $i: $size_new_h (shrunk from $size_old_h)"
mv "$out" "$i"
else
echo "* $i: $size_old_h"
rm "$out"
fi
done
# Add a marker so the Makefile knows that the shrink script ran. The generated
# dir is already in the gitignore files of repositories using osmo-gsm-manuals,
# so put it there.
touch generated/.pdf_shrink_marker