From: Matthias Kilian Subject: Re: print/lilypond: add builddoc pseudo flavor To: ports@openbsd.org Date: Thu, 15 Jan 2026 22:52:39 +0100 Hi, On Thu, Jan 08, 2026 at 10:17:55AM +0000, Stuart Henderson wrote: > > 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? > > I realise this is a bit of a special case as it's unlikely to package > anyway without PLIST-doc changes, but I'd expect something that changes > the contents of a package to use a flavour rather than pseudo-flavour > (which normally just turns some subpackage on/off). > > As I wouldn't expect -main to change, only -doc, I'd use > > FULLPKGNAME-main= lilypond-${VERSION} > FULLPKGPATH-main= print/lilypond,-main Something like this? 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 15 Jan 2026 21:51:39 -0000 @@ -5,14 +5,25 @@ VERSION= 2.24.4 REVISION-main= 0 DISTNAME= lilypond-v${VERSION} DISTNAME-docs= lilypond-${VERSION}-documentation -PKGNAME-main= lilypond-${VERSION} +FULLPKGNAME-main= lilypond-${VERSION} +FULLPKGPATH-main= print/lilypond,-main 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. +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 +54,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 +89,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 +159,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 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 15 Jan 2026 21:51:39 -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