Hi,

this adds a pseudo flavor 'builddoc' to lilypond, not meant to be
used by mere mortals, but to make it easier to build the documentation,
run tests and check for regressions when adding or updating build
dependencies.

For example, I'd like to experiment with extractpdfmark (not yet
in the ports tree), which is recommended to get smaller PDF output
in case many little PDF snippets are included.

The normal (unflavored) build still works without flaws.

Any objections?

Ciao,
        Kili

Index: Makefile
===================================================================
RCS file: /cvs/ports/print/lilypond/Makefile,v
diff -u -p -r1.67 Makefile
--- Makefile    19 Aug 2025 11:42:46 -0000      1.67
+++ Makefile    7 Jan 2026 21:32:26 -0000
@@ -9,10 +9,20 @@ PKGNAME-main=         lilypond-${VERSION}
 PKGNAME-docs=          lilypond-docs-${VERSION}
 CATEGORIES=            print
 
+# For testing purposes only. Expect changes to PLIST-doc, because the
+# downloaded documentation has been built with a much older version of
+# texi2html.
+# Don't try to build with MAKE_JOBS set to something > 1.
+PSEUDO_FLAVORS=                builddoc
+FLAVOR?=
+
 URW_V=                 20200910
 DISTFILES=             ${DISTNAME}.tar.bz2
+.if !${FLAVOR:Mbuilddoc}
 DISTFILES.doc=         ${DISTNAME-docs}.tar.xz
-DISTFILES.urw =                urw-base35-fonts-${URW_V}.tar.gz
+.endif
+DISTFILES.urw=         urw-base35-fonts-${URW_V}.tar.gz
+SUPDISTFILES.doc=      ${DISTNAME-docs}.tar.xz
 EXTRACT_ONLY=          ${DISTFILES} ${DISTFILES.urw}
 
 MULTI_PACKAGES=                -main -docs
@@ -43,9 +53,11 @@ CONFIGURE_ENV=               AUTOCONF_VERSION=${AUTOC
                        GUILE_FLAVOR=guile-2.2 \
                        LDFLAGS=-L${LOCALBASE}/lib
 CONFIGURE_ARGS+=       --disable-debugging \
-                       --disable-documentation \
                        --disable-optimising \
                        --disable-pipe
+.if !${FLAVOR:Mbuilddoc}
+CONFIGURE_ARGS+=       --disable-documentation
+.endif
 
 USE_GMAKE=             Yes
 MAKE_FILE=             GNUmakefile
@@ -76,39 +88,69 @@ BUILD_DEPENDS=              print/fontforge \
                        devel/gettext,-tools \
                        devel/autoconf/${AUTOCONF_VERSION} \
                        ${RUN_DEPENDS}
+.if ${FLAVOR:Mbuilddoc}
+# rsync is used by a script for just copying things around locally.
+# coreutils is used for 'cp --link ...' (see GNUmakefile.in, 154)
+# (both to be fixed upstream, who is known to ignore standards since
+# decades).
+BUILD_DEPENDS+=                graphics/ImageMagick \
+                       net/rsync \
+                       print/texinfo \
+                       sysutils/coreutils \
+                       textproc/texi2html
+.endif
 
 SUBST_VARS+=           VERSION
 
 ALL_TARGET=            all bytecode
 INSTALL_TARGET+=       install install-bytecode
-
-# Extract the documentation distfiles.
+.if ${FLAVOR:Mbuilddoc}
+ALL_TARGET+=           doc
+INSTALL_TARGET+=       install-doc
+.endif
+
+# Extract the documentation distfiles or, when building with the
+# builddoc flavor, ensure some tools from coreutils, findutils and
+# texinfo packages are used.
 # Remove files generated by bison to avoid some recompilations
 # during fake stage.
 post-extract:
+.if ${FLAVOR:Mbuilddoc}
+.  for p in cp find makeinfo pdftexi2dvi texi2dvi texi2pdf texindex
+       @ln -s ${LOCALBASE}/bin/g$p ${WRKDIR}/bin/$p
+.  endfor
+.else
        @xz -cd ${FULLDISTDIR}/${DISTNAME-docs}.tar.xz | \
                pax -rs '!^\.!${WRKDIR}/docs!'
+.endif
        @rm -rf ${WRKSRC}/lily/out
 
 LILYFONTDIR=   ${PREFIX}/share/lilypond/${VERSION}/fonts/otf
 TEXGYREDIR=    ${LOCALBASE}/share/texmf-dist/fonts/opentype/public/tex-gyre
 URWDIR=                ${WRKDIR}/urw-base35-fonts-${URW_V}/fonts
+
 post-install:
+.if ${FLAVOR:Mbuilddoc}
+       cd ${PREFIX}/share/doc/lilypond && \
+               mv html ${VERSION}
+       rm -rf ${PREFIX}/info
+.else
        ${INSTALL_DATA_DIR} ${PREFIX}/share/doc/lilypond/${VERSION}
        umask 022 && cp -R ${WRKDIR}/docs/share/doc/lilypond/html/* \
                ${PREFIX}/share/doc/lilypond/${VERSION}
        for f in ${WRKDIR}/docs/share/man/man1/*; do \
                ${INSTALL_MAN} $$f ${PREFIX}/man/man1; \
-       done; \
+       done
+.endif
        for f in cursor heros schola; do \
                for s in regular bold bolditalic italic; do \
                        ${INSTALL_DATA} ${TEXGYREDIR}/texgyre$$f-$$s.otf \
                                ${LILYFONTDIR}; \
                done; \
-       done; \
+       done
        for s in Roman BdIta Bold Italic; do \
                ${INSTALL_DATA} ${URWDIR}/C059-$$s.otf ${LILYFONTDIR}; \
-       done; \
+       done
        for f in NimbusMonoPS NimbusSans; do \
                for s in Regular Bold BoldItalic Italic; do \
                        ${INSTALL_DATA} ${URWDIR}/$$f-$$s.otf \
@@ -116,8 +158,9 @@ post-install:
                done; \
        done
 
-
-# Regression tests disabled, because we don't build the documentation.
+# Regression tests disabled for normal builds.
+.if !${FLAVOR:Mbuilddoc}
 NO_TEST=               Yes
+.endif
 
 .include <bsd.port.mk>
Index: patches/patch-scripts_build_build-doc-tree_sh
===================================================================
RCS file: patches/patch-scripts_build_build-doc-tree_sh
diff -N patches/patch-scripts_build_build-doc-tree_sh
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-scripts_build_build-doc-tree_sh       7 Jan 2026 21:32:26 
-0000
@@ -0,0 +1,9 @@
+Index: scripts/build/build-doc-tree.sh
+--- scripts/build/build-doc-tree.sh.orig
++++ scripts/build/build-doc-tree.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/bin/sh
+ 
+ DEST="$1"
+ shift

Reply via email to