diff --git a/ports-mgmt/appstream-generator/Makefile b/ports-mgmt/appstream-generator/Makefile index 10a455c7e34f..fb2244e73ced 100644 --- a/ports-mgmt/appstream-generator/Makefile +++ b/ports-mgmt/appstream-generator/Makefile @@ -1,75 +1,77 @@ PORTNAME= appstream-generator DISTVERSIONPREFIX= v DISTVERSION= 0.10.2 -PORTREVISION= 3 +PORTREVISION= 4 CATEGORIES= ports-mgmt MASTER_SITES= LOCAL/arrowd/:assets DISTFILES= ${_ASSETS_DISTNAME}${EXTRACT_SUFX}:assets MAINTAINER= arrowd@FreeBSD.org COMMENT= Fast AppStream metadata generator WWW= https://github.com/ximion/appstream-generator LICENSE= LGPL3 LICENSE_FILE= ${WRKSRC}/LICENSE BUILD_DEPENDS= nlohmann-json>=3:devel/nlohmann-json \ inja>=3:devel/inja \ catch2>0:devel/catch2 \ ${LOCALBASE}/include/__generator.hpp:devel/stdgenerator \ ${LOCALBASE}/share/xsl/docbook/manpages/docbook.xsl:textproc/docbook-xsl LIB_DEPENDS= libappstream.so:devel/appstream \ libappstream-compose.so:devel/appstream-compose \ libCatch2.so:devel/catch2 \ libcurl.so:ftp/curl \ liblmdb.so:databases/lmdb \ libicuuc.so:devel/icu \ libtbb.so:devel/onetbb \ libfyaml.so:textproc/libfyaml USES= compiler:c++23-lang gnome libarchive meson pkgconfig USE_GNOME= glib20 libxml2 libxslt:build USE_CXXSTD= c++23 USE_GITHUB= yes GH_ACCOUNT= ximion OPTIONS_DEFINE= MANPAGES MANPAGES_BUILD_DEPENDS= xsltproc:textproc/libxslt MESON_ARGS= -Dbackward=false CFLAGS+= -fexperimental-library DATADIR= ${PREFIX}/share/appstream OPTIONS_SUB= yes # only needed to fool meson BINARY_ALIAS= npm=true _ASSETS_DISTNAME=${PORTNAME}-js-assets-${_ASSETS_VERSION} _ASSETS_VERSION=${PORTVERSION} .include .if ${ARCH} == i386 || ${ARCH} == powerpc || ${ARCH:Marmv?} post-patch: @${REINPLACE_CMD} -e "/tbb_dep/s|'tbb'|'tbb32'|" \ ${WRKSRC}/meson.build .endif post-install: cd ${WRKSRC}/data && \ ${COPYTREE_SHARE} templates ${STAGEDIR}${DATADIR} - ${INSTALL_SCRIPT} ${PATCHDIR}/poudriere-hook-bulk.sh ${STAGEDIR}${DATADIR} + @${MKDIR} -p ${STAGEDIR}${PREFIX}/etc/poudriere.d/hooks + ${INSTALL_SCRIPT} ${PATCHDIR}/poudriere-hook-bulk.sh \ + ${STAGEDIR}${PREFIX}/etc/poudriere.d/hooks/appstream-post-bulk.sh.sample repackage-js: pkg info npm > /dev/null cd ${WRKSRC}/contrib/setup && ./build_js.sh cd ${WRKDIR} && ${TAR} -czf /tmp/${_ASSETS_DISTNAME}${EXTRACT_SUFX} \ ${WRKSRC:T}/data/templates/default/static/js @cd /tmp && sha256 ${_ASSETS_DISTNAME}${EXTRACT_SUFX} \ && ${ECHO_CMD} -n "SIZE (${_ASSETS_DISTNAME}${EXTRACT_SUFX}) = " \ && ${STAT} -f %z ${_ASSETS_DISTNAME}${EXTRACT_SUFX} \ .include diff --git a/ports-mgmt/appstream-generator/files/poudriere-hook-bulk.sh b/ports-mgmt/appstream-generator/files/poudriere-hook-bulk.sh index 805d9bab446a..0b41c7d5426e 100644 --- a/ports-mgmt/appstream-generator/files/poudriere-hook-bulk.sh +++ b/ports-mgmt/appstream-generator/files/poudriere-hook-bulk.sh @@ -1,65 +1,82 @@ #!/bin/sh # /usr/local/etc/poudriere.d/hooks/bulk.sh +# Variables to be set by operator +# +# The location for the generated data +# This should be persistent across "poudriere bulk" runs and be specific to +# the given jail-ports-set combination (i.e. have ${MASTERNAME} in the path) +ASGEN_WORKSPACE=/asgen/${MASTERNAME} +# The URL to the repository root (which will contain AppStreamComponents.xml.gz) +REPOSITORY_URL=https://pkg.freebsd.org/FreeBSD:16:amd64/latest + status="$1" shift if [ "$status" != "done" ]; then exit 0 fi +echo "==> Running AppStream post-bulk hook" + ASGEN_CMD=/usr/local/bin/appstream-generator -# The location for the generated data -# This should be persistent across "poudriere bulk" runs and be specific to -# the given jail-ports-set combination (i.e. have ${MASTERNAME} in the path) -ASGEN_WORKSPACE=/asgen/${MASTERNAME} ARCH=$(uname -p) # PACKAGES ends with "/.latest", so we chop it first if [ "$(basename ${PACKAGES})" == ".latest" ]; then suite=$(basename $(dirname ${PACKAGES})) else suite=$(basename ${PACKAGES}) fi asgen_config=$(cat< ${ASGEN_WORKSPACE}/asgen-config.json # Generate the metainfo echo Running $ASGEN_CMD -w "${ASGEN_WORKSPACE}" run "$suite" $ASGEN_CMD -w "${ASGEN_WORKSPACE}" run "$suite" # TODO: Upstream recommends running cleanup once in a week $ASGEN_CMD -w "${ASGEN_WORKSPACE}" cleanup -# Copy the metadata archive back to Poudriere repository root -cp "${ASGEN_WORKSPACE}/export/data/${suite}/default/Components-${ARCH}.xml.gz" "${PACKAGES}/AppStreamComponents.xml.gz" +# Symlink the metadata archives back to Poudriere repository root +for f in ${ASGEN_WORKSPACE}/export/data/${suite}/default/*.gz; do + dest_f=AppStream$(basename ${f} | sed s/-${ARCH}//) + ln -fs ${f} ${PACKAGES}/${dest_f} +done -# Link media files -ln -s "${ASGEN_WORKSPACE}/export/media" "${PACKAGES}/media" +# Symlink the media dir +ln -fs "${ASGEN_WORKSPACE}/export/media" "${PACKAGES}/media" -# Make a symlink to follow Poudriere layout +# Follow Poudriere layout if ATOMIC_PACKAGE_REPOSITORY is enabled if [ "$(basename ${PACKAGES})" == ".latest" ]; then - ln -fs .latest/AppStreamComponents.xml.gz ${PACKAGES}/../AppStreamComponents.xml.gz + for f in ${ASGEN_WORKSPACE}/export/data/${suite}/default/*.gz; do + dest_f=AppStream$(basename ${f} | sed s/-${ARCH}//) + ln -fs ${f} ${PACKAGES_ROOT}/${dest_f} + done + ln -fs "${ASGEN_WORKSPACE}/export/media" "${PACKAGES_ROOT}/media" fi +echo "==> AppStream metadata exported to ${PACKAGES}/AppStreamComponents.xml.gz" +echo "==> HTML report is available at ${ASGEN_WORKSPACE}/export/html" + exit 0 diff --git a/ports-mgmt/appstream-generator/pkg-plist b/ports-mgmt/appstream-generator/pkg-plist index 3a3c23ae6832..d18858dee07d 100644 --- a/ports-mgmt/appstream-generator/pkg-plist +++ b/ports-mgmt/appstream-generator/pkg-plist @@ -1,46 +1,46 @@ bin/appstream-generator +etc/poudriere.d/hooks/appstream-post-bulk.sh.sample %%DATADIR%%/asgen-hints.json %%DATADIR%%/hicolor-theme-index.theme -%%DATADIR%%/poudriere-hook-bulk.sh %%DATADIR%%/templates/debian/base.html %%DATADIR%%/templates/debian/main.html %%DATADIR%%/templates/debian/static/css/highlight.css %%DATADIR%%/templates/debian/static/css/style.css %%DATADIR%%/templates/debian/static/img %%DATADIR%%/templates/debian/static/js %%DATADIR%%/templates/default/base.html %%DATADIR%%/templates/default/issues_index.html %%DATADIR%%/templates/default/issues_page.html %%DATADIR%%/templates/default/main.html %%DATADIR%%/templates/default/metainfo_index.html %%DATADIR%%/templates/default/metainfo_page.html %%DATADIR%%/templates/default/section_page.html %%DATADIR%%/templates/default/sections_index.html %%DATADIR%%/templates/default/static/css/highlight.css %%DATADIR%%/templates/default/static/css/style.css %%DATADIR%%/templates/default/static/img/asgen.png %%DATADIR%%/templates/default/static/img/cpt-nogui.png %%DATADIR%%/templates/default/static/img/favicon.png %%DATADIR%%/templates/default/static/img/no-image.png %%DATADIR%%/templates/default/static/js/flot/jquery.flot.canvas.js %%DATADIR%%/templates/default/static/js/flot/jquery.flot.categories.js %%DATADIR%%/templates/default/static/js/flot/jquery.flot.crosshair.js %%DATADIR%%/templates/default/static/js/flot/jquery.flot.errorbars.js %%DATADIR%%/templates/default/static/js/flot/jquery.flot.fillbetween.js %%DATADIR%%/templates/default/static/js/flot/jquery.flot.image.js %%DATADIR%%/templates/default/static/js/flot/jquery.flot.js %%DATADIR%%/templates/default/static/js/flot/jquery.flot.navigate.js %%DATADIR%%/templates/default/static/js/flot/jquery.flot.pie.js %%DATADIR%%/templates/default/static/js/flot/jquery.flot.resize.js %%DATADIR%%/templates/default/static/js/flot/jquery.flot.selection.js %%DATADIR%%/templates/default/static/js/flot/jquery.flot.stack.js %%DATADIR%%/templates/default/static/js/flot/jquery.flot.symbol.js %%DATADIR%%/templates/default/static/js/flot/jquery.flot.threshold.js %%DATADIR%%/templates/default/static/js/flot/jquery.flot.time.js %%DATADIR%%/templates/default/static/js/highlight/highlight.pack.js %%DATADIR%%/templates/default/static/js/highlight/highlight.pack.min.js %%DATADIR%%/templates/default/static/js/jquery/jquery.min.js %%DATADIR%%/templates/default/static/js/jquery/jquery.slim.min.js %%DATADIR%%/templates/ubuntu %%MANPAGES%%share/man/man1/appstream-generator.1.gz share/metainfo/org.freedesktop.appstream.generator.metainfo.xml