[libvirt] [PATCH v3 4/5] docs: Perform JavaScript minimization at build time
Christophe de Dinechin
cdupontd at redhat.com
Wed Jun 19 14:50:25 UTC 2019
> On 19 Jun 2019, at 14:41, Andrea Bolognani <abologna at redhat.com> wrote:
>
> We want to store third-party JavaScript libraries in their
> non-minimized (source) form in the repository, but when users
> are browsing libvirt.org we'd rather only transmit the more
> compact minified variant.
>
> Call uglifyjs at build time, if available, to achieve this.
> Signed-off-by: Andrea Bolognani <abologna at redhat.com>
Reviewed-by: Christophe de Dinechin <dinechin at redhat.com>
> ---
> .gitignore | 1 +
> docs/Makefile.am | 30 +++++++++++++++++++++++++++---
> docs/index.html.in | 6 +++---
> docs/page.xsl | 2 +-
> docs/site.xsl | 1 +
> docs/subsite.xsl | 1 +
> m4/virt-external-programs.m4 | 2 ++
> 7 files changed, 36 insertions(+), 7 deletions(-)
>
> diff --git a/.gitignore b/.gitignore
> index 727bfdb6ec..522ac762b6 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -61,6 +61,7 @@
> /docs/apibuild.py.stamp
> /docs/devhelp/libvirt.devhelp
> /docs/hvsupport.html.in
> +/docs/js/*.min.js
> /docs/libvirt-admin-*.xml
> /docs/libvirt-api.xml
> /docs/libvirt-lxc-*.xml
> diff --git a/docs/Makefile.am b/docs/Makefile.am
> index 9b79fc60c1..e787a7c47b 100644
> --- a/docs/Makefile.am
> +++ b/docs/Makefile.am
> @@ -240,6 +240,7 @@ news.html.in: \
> $(srcdir)/news.xml \
> $(srcdir)/news-html.xsl
> $(AM_V_GEN)$(XSLTPROC) --nonet \
> + --stringparam js "$(JS)" \
> $(srcdir)/news-html.xsl \
> $(srcdir)/news.xml \
> >$@-tmp \
> @@ -258,7 +259,7 @@ MAINTAINERCLEANFILES += \
> convert -rotate 90 $< $@
>
> %.html.tmp: %.html.in site.xsl subsite.xsl page.xsl \
> - $(acl_generated)
> + $(acl_generated) $(minified_javascript)
> $(AM_V_GEN)name=`echo $@ | sed -e 's/.tmp//'`; \
> dir=`dirname $@` ; \
> if test "$$dir" = "."; \
> @@ -270,24 +271,47 @@ MAINTAINERCLEANFILES += \
> fi; \
> $(XSLTPROC) --stringparam pagename $$name \
> --stringparam timestamp $(timestamp) --nonet \
> + --stringparam js "$(JS)" \
> $(top_srcdir)/docs/$$style $< > $@ \
> + || { rm $@ && exit 1; }; \
> + sed -i 's/@JS@/$(JS)/g' "$@" \
> || { rm $@ && exit 1; }
>
> %.html: %.html.tmp
> $(AM_V_GEN)$(XMLLINT) --nonet --format $< > $(srcdir)/$@ \
> || { rm $(srcdir)/$@ && exit 1; }
>
> +
> +if HAVE_UGLIFYJS
> +JS = min.js
> +minified_javascript = $(javascript:%.js=%.min.js)
> +EXTRA_DIST += $(minified_javascript)
> +MAINTAINERCLEANFILES += $(minified_javascript)
> +
> +%.min.js: %.js
> + $(AM_V_GEN)$(UGLIFYJS) -o $@ $<
> +else ! HAVE_UGLIFYJS
> +JS = js
> +minified_javascript = $(javascript)
> +
> +dist-hook:
> + echo "uglifyjs is required to make dist." >&2
It’s silly, but the Fedora package is called uglify-js. Maybe mention that?
> + exit 1
> +endif ! HAVE_UGLIFYJS
> +
> $(apihtml_generated): html/index.html
>
> html/index.html: libvirt-api.xml newapi.xsl page.xsl $(APIBUILD_STAMP)
> $(AM_V_GEN)$(XSLTPROC) --nonet -o $(srcdir)/ \
> --stringparam builddir '$(abs_top_builddir)' \
> --stringparam timestamp $(timestamp) \
> + --stringparam js "$(JS)" \
> $(srcdir)/newapi.xsl $(srcdir)/libvirt-api.xml && \
> $(XMLLINT) --nonet --noout $(srcdir)/html/*.html
>
> $(addprefix $(srcdir)/,$(devhelphtml)): $(srcdir)/libvirt-api.xml $(devhelpxsl)
> $(AM_V_GEN)$(XSLTPROC) --stringparam timestamp $(timestamp) \
> + --stringparam js "$(JS)" \
> --nonet -o $(srcdir)/devhelp/ \
> $(top_srcdir)/docs/devhelp/devhelp.xsl $(srcdir)/libvirt-api.xml
>
> @@ -372,7 +396,7 @@ install-data-local:
> for f in $(css) $(dot_html) $(gif) $(png); do \
> $(INSTALL) -m 0644 $(srcdir)/$$f $(DESTDIR)$(HTML_DIR); done
> $(mkinstalldirs) $(DESTDIR)$(HTML_DIR)/js
> - for f in $(javascript); do \
> + for f in $(minified_javascript); do \
> $(INSTALL) -m 0644 $(srcdir)/$$f $(DESTDIR)$(HTML_DIR)/js/; done
> $(mkinstalldirs) $(DESTDIR)$(HTML_DIR)/logos
> for f in $(logofiles); do \
> @@ -401,7 +425,7 @@ uninstall-local:
> for f in $(logofiles); do \
> rm -f $(DESTDIR)$(HTML_DIR)/$$f; \
> done
> - for f in $(javascript); do \
> + for f in $(minified_javascript); do \
> rm -f $(DESTDIR)$(HTML_DIR)/$$f; \
> done
> for h in $(apihtml); do rm -f $(DESTDIR)$(HTML_DIR)/$$h; done
> diff --git a/docs/index.html.in b/docs/index.html.in
> index cab387ebb6..a912d7282a 100644
> --- a/docs/index.html.in
> +++ b/docs/index.html.in
> @@ -2,9 +2,9 @@
> <!DOCTYPE html>
> <html xmlns="http://www.w3.org/1999/xhtml">
> <head>
> - <script type="text/javascript" src="js/jquery-3.4.1.js"> </script>
> - <script type="text/javascript" src="js/moment-2.24.0.js"> </script>
> - <script type="text/javascript" src="js/jquery.rss-3.3.0.js"> </script>
> + <script type="text/javascript" src="js/jquery-3.4.1. at JS@"> </script>
> + <script type="text/javascript" src="js/moment-2.24.0. at JS@"> </script>
> + <script type="text/javascript" src="js/jquery.rss-3.3.0. at JS@"> </script>
>
> <script type="text/javascript">
> <!--
> diff --git a/docs/page.xsl b/docs/page.xsl
> index 65ddeb2bb7..bf78103df3 100644
> --- a/docs/page.xsl
> +++ b/docs/page.xsl
> @@ -99,7 +99,7 @@
> <meta name="description" content="libvirt, virtualization, virtualization API"/>
> <xsl:apply-templates select="/html:html/html:head/*" mode="content"/>
>
> - <script type="text/javascript" src="{$href_base}js/main.js">
> + <script type="text/javascript" src="{$href_base}js/main.{$js}">
> <xsl:comment>// forces non-empty element</xsl:comment>
> </script>
> </head>
> diff --git a/docs/site.xsl b/docs/site.xsl
> index c9d41f2c93..fb9c503993 100644
> --- a/docs/site.xsl
> +++ b/docs/site.xsl
> @@ -28,6 +28,7 @@
> <xsl:apply-templates select="." mode="page">
> <xsl:with-param name="pagename" select="$pagename"/>
> <xsl:with-param name="timestamp" select="$timestamp"/>
> + <xsl:with-param name="js" select="$js"/>
> </xsl:apply-templates>
> </xsl:template>
>
> diff --git a/docs/subsite.xsl b/docs/subsite.xsl
> index f56ac0491c..c939ed6588 100644
> --- a/docs/subsite.xsl
> +++ b/docs/subsite.xsl
> @@ -18,6 +18,7 @@
> <xsl:apply-templates select="." mode="page">
> <xsl:with-param name="pagename" select="$pagename"/>
> <xsl:with-param name="timestamp" select="$timestamp"/>
> + <xsl:with-param name="js" select="$js"/>
> </xsl:apply-templates>
> </xsl:template>
>
> diff --git a/m4/virt-external-programs.m4 b/m4/virt-external-programs.m4
> index 0f995998c3..371acb972c 100644
> --- a/m4/virt-external-programs.m4
> +++ b/m4/virt-external-programs.m4
> @@ -34,6 +34,8 @@ AC_DEFUN([LIBVIRT_CHECK_EXTERNAL_PROGRAMS], [
> AC_MSG_ERROR("xsltproc is required to build libvirt")
> fi
> AC_PATH_PROG([AUGPARSE], [augparse], [/usr/bin/augparse])
> + AC_PATH_PROG([UGLIFYJS], [uglifyjs], [])
> + AM_CONDITIONAL([HAVE_UGLIFYJS], [test "$UGLIFYJS"])
> AC_PROG_MKDIR_P
> AC_PROG_LN_S
>
> --
> 2.21.0
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
More information about the libvir-list
mailing list