aboutsummaryrefslogtreecommitdiffstats
path: root/build
diff options
context:
space:
mode:
authorOliver Smith <osmith@sysmocom.de>2023-03-16 13:10:16 +0100
committerOliver Smith <osmith@sysmocom.de>2023-03-17 12:42:01 +0100
commit24cca7086b2c7f8bb12fbb1f03fa0a438e2493ab (patch)
tree0d155bc2bcf3b9d1c9df58be66d04fe426b56f07 /build
parent33b5f5c8894f09b3e2b5e98d3411dc5ebc919437 (diff)
build/Makefile.common: shrink pdfs before publish
Diffstat (limited to 'build')
-rw-r--r--build/Makefile.common.inc12
-rwxr-xr-xbuild/shrink-pdfs.sh27
2 files changed, 36 insertions, 3 deletions
diff --git a/build/Makefile.common.inc b/build/Makefile.common.inc
index bdc3817..9e79621 100644
--- a/build/Makefile.common.inc
+++ b/build/Makefile.common.inc
@@ -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)"
diff --git a/build/shrink-pdfs.sh b/build/shrink-pdfs.sh
new file mode 100755
index 0000000..a919ac3
--- /dev/null
+++ b/build/shrink-pdfs.sh
@@ -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