On Sun, Aug 12, 2012 at 10:06:15PM +0400, Vadim Zhukov wrote:
> Hello all.
> 
> Here is a working prototype of cache invalidating helper framework.
> With it you can just add something like:
> 
> MODULES +=    updb
> MODUPDB_WHAT =        desktop-files icons
> 
> and have all RUN_DEPENDS and @exec/@unexec-goo added to final plist
> on the fly. Module is MULTI_PACKAGES aware but require small patch
> to bsd.port.mk (see below). PKG_ARGS_TAIL is the same as PKG_ARGS
> but is appended at the last; this way we get packaging list fragments
> where they belong, at the end of the plist.
> 
> In the future I think it's possible to add automatic checks in plist
> create/update stage, making make-plist warn when something is missed.
> 
> Comments and flames are welcome. :)

We decided some time ago to go with triggers which espie@ is working on.
It'll eventually work similar to @fontdir (similar as in a marker, not similar 
in the code) so it was decided not to go the way you are proposing.



> Index: mk/bsd.port.mk
> ===================================================================
> RCS file: /cvs/ports/infrastructure/mk/bsd.port.mk,v
> retrieving revision 1.1183
> diff -u -p -r1.1183 bsd.port.mk
> --- mk/bsd.port.mk    4 Aug 2012 14:23:30 -0000       1.1183
> +++ mk/bsd.port.mk    12 Aug 2012 17:56:02 -0000
> @@ -993,6 +993,9 @@ PKG_ARGS${_S} += -A'${PKG_ARCH${_S}}'
>  .  if !defined(_COMMENT${_S})
>  ERRORS += "Fatal: Missing comment for ${_S:S/^-$/main package/}."
>  .  endif
> +
> +PKG_ARGS${_S} += ${PKG_ARGS_TAIL}
> +PKG_ARGS${_S} += ${PKG_ARGS_TAIL${_S}}
>  .endfor
>  
>  GUNZIP_CMD ?= /usr/bin/gunzip -f
> Index: mk/updb.port.mk
> ===================================================================
> RCS file: mk/updb.port.mk
> diff -N mk/updb.port.mk
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ mk/updb.port.mk   12 Aug 2012 17:56:02 -0000
> @@ -0,0 +1,82 @@
> +# $OpenBSD$
> +# Simplify adding different "update-*" goo.
> +# Written by Vadim Zhukov 2012, public domain
> +#
> +# How to use:
> +# - Set MODUPDB_WHAT to a list of caches you want to invalidate/rebuild,
> +#   list of possible names below.
> +# - If any icon caches should be invalidated, set MODUPDB_ICON_THEMES to
> +#   a list of themes to be updated. List is fixed, see below.
> +#
> +#
> +# What                       Effect
> +# =====================================================
> +# desktop-files              Runs update-desktop-database
> +# icons                      Runs gtk-update-icon-cache
> +# mime                       Runs update-mime-database
> +#
> +#
> +# Icon theme         Where
> +# =====================================================
> +# hicolor            ${PREFIX}/share/icons/hicolor
> +# oxygen             ${PREFIX}/share/icons/oxygen
> +# oxygen-colored     ${PREFIX}/share/icons/Oxygen_Black
> +#                    ${PREFIX}/share/icons/Oxygen_Blue
> +#                    ${PREFIX}/share/icons/Oxygen_White
> +#                    ${PREFIX}/share/icons/Oxygen_Yellow
> +#                    ${PREFIX}/share/icons/Oxygen_Zion
> +#
> +
> +MODUPDB_WHAT ?=
> +MODUPDB_ICON_THEMES ?=               hicolor
> +_MODUPDB_PFRAG_BASE =                ${PORTSDIR}/infrastructure/plist
> +
> +# List of all cache types and corresponding RUN_DEPENDS for them
> +_MODUPDB_DEPS_MAP = \
> +     desktop-files   devel/desktop-file-utils \
> +     icons           x11/gtk+2,-guic \
> +     mime            misc/shared-mime-info \
> +
> +
> +.if !defined(MULTI_PACKAGES) || empty(MULTI_PACKAGES)
> +# Make users happy, do not use "-" subpackage to allow usual
> +# "make show=RUN_DEPENDS" checks
> +
> +. for _what _dep in ${_MODUPDB_DEPS_MAP}
> +.   if ${MODUPDB_WHAT:M${_what}}
> +RUN_DEPENDS +=       ${_dep}
> +
> +.     if "${_what}" == "icons"
> +.       for _t in ${MODUPDB_ICON_THEMES}
> +PKG_ARGS_TAIL +=     -f ${_MODUPDB_PFRAG_BASE}/PFRAG.icons-${_t}
> +.       endfor
> +.     else
> +PKG_ARGS_TAIL +=     -f ${_MODUPDB_PFRAG_BASE}/PFRAG.${_what}
> +.     endif
> +
> +.   endif
> +. endfor
> +
> +.else
> +# Go thorugh subpackages as usual
> +
> +. for _s in ${MULTI_PACKAGES}
> +MODUPDB_WHAT${_s} ?=         ${MODUPDB_WHAT}
> +MODUPDB_ICON_THEMES${_s} ?=  ${MODUPDB_ICON_THEMES}
> +
> +.   for _what _dep in ${_MODUPDB_DEPS_MAP}
> +.     if ${MODUPDB_WHAT${_s}:M${_what}}
> +RUN_DEPENDS${_s} +=  ${_dep}
> +
> +.       if "${_what}" == "icons"
> +.         for _t in ${MODUPDB_ICON_THEMES${_s}}
> +PKG_ARGS_TAIL${_s} +=        -f ${_MODUPDB_PFRAG_BASE}/PFRAG.icons-${_t}
> +.         endfor
> +.       else
> +PKG_ARGS_TAIL${_s} +=        -f ${_MODUPDB_PFRAG_BASE}/PFRAG.${_what}
> +.       endif
> +
> +.     endif
> +.   endfor
> +. endfor
> +.endif
> Index: plist/PFRAG.desktop-files
> ===================================================================
> RCS file: plist/PFRAG.desktop-files
> diff -N plist/PFRAG.desktop-files
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ plist/PFRAG.desktop-files 12 Aug 2012 17:56:02 -0000
> @@ -0,0 +1,2 @@
> +@exec %D/bin/update-desktop-database
> +@unexec-delete %D/bin/update-desktop-database
> Index: plist/PFRAG.icons-hicolor
> ===================================================================
> RCS file: plist/PFRAG.icons-hicolor
> diff -N plist/PFRAG.icons-hicolor
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ plist/PFRAG.icons-hicolor 12 Aug 2012 17:56:02 -0000
> @@ -0,0 +1,2 @@
> +@exec %D/bin/gtk-update-icon-cache -q -t %D/share/icons/hicolor
> +@unexec-delete %D/bin/gtk-update-icon-cache -q -t %D/share/icons/hicolor
> Index: plist/PFRAG.icons-oxygen
> ===================================================================
> RCS file: plist/PFRAG.icons-oxygen
> diff -N plist/PFRAG.icons-oxygen
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ plist/PFRAG.icons-oxygen  12 Aug 2012 17:56:02 -0000
> @@ -0,0 +1,2 @@
> +@exec %D/bin/gtk-update-icon-cache -q -t %D/share/icons/oxygen
> +@unexec-delete %D/bin/gtk-update-icon-cache -q -t %D/share/icons/oxygen
> Index: plist/PFRAG.icons-oxygen-colored
> ===================================================================
> RCS file: plist/PFRAG.icons-oxygen-colored
> diff -N plist/PFRAG.icons-oxygen-colored
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ plist/PFRAG.icons-oxygen-colored  12 Aug 2012 17:56:02 -0000
> @@ -0,0 +1,10 @@
> +@exec %D/bin/gtk-update-icon-cache -q -t %D/share/icons/Oxygen_Black
> +@unexec-delete %D/bin/gtk-update-icon-cache -q -t %D/share/icons/Oxygen_Black
> +@exec %D/bin/gtk-update-icon-cache -q -t %D/share/icons/Oxygen_Blue
> +@unexec-delete %D/bin/gtk-update-icon-cache -q -t %D/share/icons/Oxygen_Blue
> +@exec %D/bin/gtk-update-icon-cache -q -t %D/share/icons/Oxygen_White
> +@unexec-delete %D/bin/gtk-update-icon-cache -q -t %D/share/icons/Oxygen_White
> +@exec %D/bin/gtk-update-icon-cache -q -t %D/share/icons/Oxygen_Yellow
> +@unexec-delete %D/bin/gtk-update-icon-cache -q -t 
> %D/share/icons/Oxygen_Yellow
> +@exec %D/bin/gtk-update-icon-cache -q -t %D/share/icons/Oxygen_Zion
> +@unexec-delete %D/bin/gtk-update-icon-cache -q -t %D/share/icons/Oxygen_Zion
> Index: plist/PFRAG.mime
> ===================================================================
> RCS file: plist/PFRAG.mime
> diff -N plist/PFRAG.mime
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ plist/PFRAG.mime  12 Aug 2012 17:56:02 -0000
> @@ -0,0 +1,2 @@
> +@exec %D/bin/update-mime-database %D/share/mime
> +@unexec-delete %D/bin/update-mime-database %D/share/mime
> 

-- 
Antoine

Reply via email to