diff --git a/srcpkgs/xbps-triggers/files/gconf-schemas b/srcpkgs/xbps-triggers/files/gconf-schemas new file mode 100755 index 0000000000..b3efde8ed9 --- /dev/null +++ b/srcpkgs/xbps-triggers/files/gconf-schemas @@ -0,0 +1,92 @@ +#!/bin/sh -e +# +# (Un)registers GConf schemas/entries into the schemas database directory. +# +# The following variables can be defined by a package to register .entries +# and .schemas files: +# +# gconf_entries - A list of .entries files to register. When using this +# variable, packages need to be fixed to not register +# them and to install those files to GCONF_SCHEMAS_DIR. +# gconf_schemas - A list of .schemas files to register. When using this +# variable, packages need to be fixed to not register +# them and to install those files to GCONF_SCHEMAS_DIR. +# +# Arguments: $ACTION = [run/targets] +# $TARGET = [post-install/pre-remove] +# $PKGNAME +# $VERSION +# $UPDATE = [yes/no] +# +ACTION="$1" +TARGET="$2" +PKGNAME="$3" +VERSION="$4" +UPDATE="$5" + +# The gconftool-2 binary program. +GCONFTOOL2="usr/bin/gconftool-2" + +# Default configuration source (database). +GCONF_CONFIG_SOURCE="xml::/etc/gconf/gconf.xml.defaults" + +# Where .schemas files go. +GCONF_SCHEMAS_DIR="usr/share/gconf/schemas" + +case "$ACTION" in +targets) + echo "post-install pre-remove" + ;; +run) + if [ ! -x "$GCONFTOOL2" ]; then + exit 0 + fi + if [ -z "$gconf_entries" -a -z "$gconf_schemas" ]; then + return 0 + fi + + case "$TARGET" in + post-install) + for f in ${gconf_schemas}; do + GCONF_CONFIG_SOURCE="$GCONF_CONFIG_SOURCE" \ + ${GCONFTOOL2} --makefile-install-rule \ + ${GCONF_SCHEMAS_DIR}/${f} >/dev/null + if [ $? -eq 0 ]; then + echo "Registered GConf schema: ${f}." + fi + done + for f in ${gconf_entries}; do + ${GCONFTOOL2} --config-source=${GCONF_CONFIG_SOURCE} \ + --direct --load ${GCONF_SCHEMAS_DIR}/${f} \ + >/dev/null + if [ $? -eq 0 ]; then + echo "Registered GConf entry: ${f}." + fi + done + ;; + pre-remove) + for f in ${gconf_entries}; do + ${GCONFTOOL2} --config-source=${GCONF_CONFIG_SOURCE} \ + --direct --unload ${GCONF_SCHEMAS_DIR}/${f} \ + >/dev/null + if [ $? -eq 0 ]; then + echo "Unregistered GConf entry: ${f}." + fi + done + for f in ${gconf_schemas}; do + GCONF_CONFIG_SOURCE="${GCONF_CONFIG_SOURCE}" \ + ${GCONFTOOL2} --makefile-uninstall-rule \ + ${GCONF_SCHEMAS_DIR}/${f} >/dev/null + if [ $? -eq 0 ]; then + echo "Unregistered GConf schema: ${f}." + fi + done + ;; + esac + ;; +*) + exit 1 + ;; +esac + +exit 0 diff --git a/srcpkgs/xbps-triggers/files/gio-modules b/srcpkgs/xbps-triggers/files/gio-modules new file mode 100755 index 0000000000..ae74ec7bfb --- /dev/null +++ b/srcpkgs/xbps-triggers/files/gio-modules @@ -0,0 +1,39 @@ +#!/bin/sh -e +# +# Updates GLib GIO module cache with gio-querymodules. +# +# Arguments: $ACTION = [run/targets] +# $TARGET = [post-install/post-remove] +# $PKGNAME +# $VERSION +# $UPDATE = [yes/no] +# +ACTION="$1" +TARGET="$2" +PKGNAME="$3" +VERSION="$4" +UPDATE="$5" + +gioquery=usr/bin/gio-querymodules +giocachedir=usr/lib/gio/modules + +case "$ACTION" in +targets) + echo "post-install post-remove" + ;; +run) + case "$TARGET" in + post-*) + if [ -x ${gioquery} -a -d ${giocachedir} ]; then + echo "Updating GLib GIO modules cache..." + ${gioquery} ${giocachedir} + fi + ;; + esac + ;; +*) + exit 1 + ;; +esac + +exit 0 diff --git a/srcpkgs/xbps-triggers/files/gsettings-schemas b/srcpkgs/xbps-triggers/files/gsettings-schemas new file mode 100755 index 0000000000..5bd1782736 --- /dev/null +++ b/srcpkgs/xbps-triggers/files/gsettings-schemas @@ -0,0 +1,57 @@ +#!/bin/sh -e +# +# GLib's GSettings XML schema files. +# +# Arguments: $ACTION = [run/targets] +# $TARGET = [post-install/pre-remove] +# $PKGNAME +# $VERSION +# $UPDATE = [yes/no] +# +ACTION="$1" +TARGET="$2" +PKGNAME="$3" +VERSION="$4" +UPDATE="$5" + +# The glib-compile-schemas binary program. +GSCHEMASCOMP="usr/bin/glib-compile-schemas" + +# Where .schemas files go. +GLIB_SCHEMAS_DIR="usr/share/glib-2.0/schemas" + +case "$ACTION" in +targets) + echo "post-install post-remove pre-remove" + ;; +run) + if [ ! -x "$GSCHEMASCOMP" ]; then + exit 0 + fi + + case "$TARGET" in + post-*) + # Compile all GSettings schema files. + echo -n "Refreshing GSettings database from " + echo -n "${GLIB_SCHEMAS_DIR}... " + ${GSCHEMASCOMP} ${GLIB_SCHEMAS_DIR} + if [ $? -eq 0 ]; then + echo "done." + else + echo "failed!" + fi + ;; + pre-remove) + if [ "${PKGNAME}" = "glib" ]; then + rm -f ${GLIB_SCHEMAS_DIR}/*.compiled + echo "Removed GSettings database file." + fi + ;; + esac + ;; +*) + exit 1 + ;; +esac + +exit 0 diff --git a/srcpkgs/xbps-triggers/files/gtk-icon-cache b/srcpkgs/xbps-triggers/files/gtk-icon-cache new file mode 100755 index 0000000000..679408702a --- /dev/null +++ b/srcpkgs/xbps-triggers/files/gtk-icon-cache @@ -0,0 +1,51 @@ +#!/bin/sh -e +# +# Updates GTK+ icon cache file with gtk-update-icon-cache(1). +# +# Arguments: $ACTION = [run/targets] +# $TARGET = [post-install/post-remove] +# $PKGNAME +# $VERSION +# $UPDATE = [yes/no] +# +ACTION="$1" +TARGET="$2" +PKGNAME="$3" +VERSION="$4" +UPDATE="$5" + +iconcache_bin=usr/bin/gtk-update-icon-cache + +case "$ACTION" in +targets) + echo "post-install post-remove" + ;; +run) + if [ "$TARGET" = "post-remove" -a "${PKGNAME}" = "gtk+" ]; then + for dir in ${gtk_iconcache_dirs}; do + if [ -f ${dir}/icon-theme.cache ]; then + rm -f ${dir}/icon-theme.cache + echo -n "Removed GTK+ icon theme " + echo "cache for ${dir}." + fi + done + break + fi + case "$TARGET" in + post-*) + for dir in ${gtk_iconcache_dirs}; do + if [ -x ${iconcache_bin} ]; then + echo -n "Updating GTK+ icon cache for " + echo "${dir}..." + ${iconcache_bin} -q -f -t ${dir} + fi + done + ;; + esac + ;; +*) + exit 1 + ;; +esac + +exit 0 diff --git a/srcpkgs/xbps-triggers/files/gtk-immodules b/srcpkgs/xbps-triggers/files/gtk-immodules new file mode 100755 index 0000000000..1f534e8376 --- /dev/null +++ b/srcpkgs/xbps-triggers/files/gtk-immodules @@ -0,0 +1,43 @@ +#!/bin/sh -e +# +# Updates GTK+ IM modules file with gtk-query-immodules-2.0(1). +# +# Arguments: $ACTION = [run/targets] +# $TARGET = [post-install/post-remove] +# $PKGNAME +# $VERSION +# $UPDATE = [yes/no] +# +ACTION="$1" +TARGET="$2" +PKGNAME="$3" +VERSION="$4" +UPDATE="$5" + +immodules_bin=usr/bin/gtk-query-immodules-2.0 +immodules_db=etc/gtk-2.0/gtk.immodules + +case "$ACTION" in +targets) + echo "post-install post-remove" + ;; +run) + if [ "$TARGET" = "post-remove" -a "${PKGNAME}" = "gtk+" ]; then + [ -f ${immodules_db} ] rm -f ${immodules_db} + break + fi + case "$TARGET" in + post-*) + if [ -x ${immodules_bin} ]; then + echo "Updating GTK's immodules database..." + ${immodules_bin} > ${immodules_db} + fi + ;; + esac + ;; +*) + exit 1 + ;; +esac + +exit 0 diff --git a/srcpkgs/xbps-triggers/files/gtk-pixbuf-loaders b/srcpkgs/xbps-triggers/files/gtk-pixbuf-loaders new file mode 100755 index 0000000000..7c2327a415 --- /dev/null +++ b/srcpkgs/xbps-triggers/files/gtk-pixbuf-loaders @@ -0,0 +1,47 @@ +#!/bin/sh -e +# +# Updates's GDK Pixbuf loaders cache with gdk-pixbuf-query-loaders(1). +# +# Arguments: $ACTION = [run/targets] +# $TARGET = [post-install/post-remove] +# $PKGNAME +# $VERSION +# $UPDATE = [yes/no] +# +ACTION="$1" +TARGET="$2" +PKGNAME="$3" +VERSION="$4" +UPDATE="$5" + +pixbuf_bin=usr/bin/gdk-pixbuf-query-loaders + +case "$ACTION" in +targets) + echo "post-install post-remove" + ;; +run) + if [ "$TARGET" = "post-remove" -a "${PKGNAME}" = "gdk-pixbuf" ]; then + _cache_file=$(${pixbuf_bin} --print-cache-file) + [ -f .${_cache_file} ] && rm -f .${_cache_file} + break + fi + case "$TARGET" in + post-*) + if [ -f etc/gtk-2.0/gdk-pixbuf.loaders ]; then + echo " Removing obsolete conf file: etc/gtk-2.0/gdk-pixbuf.loaders" + rm -f etc/gtk-2.0/gdk-pixbuf.loaders + fi + if [ -x ${pixbuf_bin} ]; then + echo "Updating GDK Pixbuf loaders cache..." + ${pixbuf_bin} --update-cache + fi + ;; + esac + ;; +*) + exit 1 + ;; +esac + +exit 0 diff --git a/srcpkgs/xbps-triggers/files/info-files b/srcpkgs/xbps-triggers/files/info-files new file mode 100755 index 0000000000..2a792cb357 --- /dev/null +++ b/srcpkgs/xbps-triggers/files/info-files @@ -0,0 +1,58 @@ +#!/bin/sh -e +# +# Registers or unregisters info files for a package. +# +# Arguments: $ACTION = [run/targets] +# $TARGET = [post-install/pre-remove] +# $PKGNAME +# $VERSION +# $UPDATE = [yes/no] +# +ACTION="$1" +TARGET="$2" +PKGNAME="$3" +VERSION="$4" +UPDATE="$5" + +installinfo=usr/bin/install-info +infodir=usr/share/info + +case "$ACTION" in +targets) + echo "post-install pre-remove" + ;; +run) + [ ! -x "$installinfo" ] && exit 0 + + if [ -z "$info_files" ]; then + echo "Trigger info-files: empty info_files." + exit 1 + fi + + for f in ${info_files}; do + [ "$f" = "/usr/share/info/dir" ] && continue + + case "$TARGET" in + post-install) + echo -n "Registering info file: $f... " + ;; + pre-remove) + echo -n "Unregistering info file: $f... " + infoargs="--delete" + ;; + esac + + $installinfo $infoargs ./$f $infodir/dir 2>/dev/null + if [ $? -eq 0 ]; then + echo "done." + else + echo "failed!" + fi + done + ;; +*) + exit 1 + ;; +esac + +exit 0 diff --git a/srcpkgs/xbps-triggers/files/initramfs-tools b/srcpkgs/xbps-triggers/files/initramfs-tools new file mode 100755 index 0000000000..cde30bcdae --- /dev/null +++ b/srcpkgs/xbps-triggers/files/initramfs-tools @@ -0,0 +1,65 @@ +#!/bin/sh -e +# +# Runs update-initramfs(8) to create/update an initramfs for specified +# version (if the pkg that is triggering it) or for the currently +# installed kernel otherwise. +# +# Arguments: $ACTION = [run/targets] +# $TARGET = [post-install/post-remove] +# $PKGNAME +# $VERSION +# $UPDATE = [yes/no] +# +ACTION="$1" +TARGET="$2" +PKGNAME="$3" +VERSION="$4" +UPDATE="$5" + +update_initramfs=usr/sbin/update-initramfs + +case "$ACTION" in +targets) + echo "post-install post-remove" + ;; +run) + # Exit if the command cannot be executed. + [ ! -x ${update_initramfs} ] && exit 0 + + # Cannot continue if /proc and /sys not mounted! + if [ ! -e ./proc/filesystems -a ! -e ./sys/kernel/vmcoreinfo ]; then + echo "initramfs-tools trigger:" + echo "WARNING: /proc and /sys (relative to cwd) are not mounted" + echo "WARNING: cannot continue, exiting..." + exit 0 + fi + + # Always use relative paths to create the initramfs! + initramfs_args="-b ./boot" + + if [ "$PKGNAME" = "kernel" -o "$PKGNAME" = "kernel-snapshot" ]; then + if [ "$TARGET" = "post-remove" ]; then + exit 0 + fi + if [ ! -f var/lib/initramfs-tools/${VERSION} ]; then + # Create new initramfs + initramfs_args="$initramfs_args -c -t -k ${VERSION}" + else + # Update existing initramfs + initramfs_args="$initramfs_args -B -u -t -k ${VERSION}" + fi + else + # Update initramfs for all kernels + initramfs_args="$initramfs_args -B -u -t -k all" + fi + + ${update_initramfs} ${initramfs_args} + exit $? + + ;; +*) + exit 1 + ;; +esac + +exit 0 diff --git a/srcpkgs/xbps-triggers/files/mimedb b/srcpkgs/xbps-triggers/files/mimedb new file mode 100755 index 0000000000..a76ca71b9b --- /dev/null +++ b/srcpkgs/xbps-triggers/files/mimedb @@ -0,0 +1,38 @@ +#!/bin/sh -e +# +# Updates the shared-mime-info db file with update-mime-database(1). +# +# Arguments: $ACTION = [run/targets] +# $TARGET = [post-install/post-remove] +# $PKGNAME +# $VERSION +# $UPDATE = [yes/no] +# +ACTION="$1" +TARGET="$2" +PKGNAME="$3" +VERSION="$4" +UPDATE="$5" + +mimedb_bin=usr/bin/update-mime-database + +case "$ACTION" in +targets) + echo "post-install post-remove" + ;; +run) + case "$TARGET" in + post-*) + if [ -x ${mimedb_bin} ]; then + echo "Updating shared-mime-info database..." + ${mimedb_bin} usr/share/mime > /dev/null + fi + ;; + esac + ;; +*) + exit 1 + ;; +esac + +exit 0 diff --git a/srcpkgs/xbps-triggers/files/openrc-service b/srcpkgs/xbps-triggers/files/openrc-service new file mode 100755 index 0000000000..e7aabe007c --- /dev/null +++ b/srcpkgs/xbps-triggers/files/openrc-service @@ -0,0 +1,117 @@ +#!/bin/sh +# +# Registers or unregisters OpenRC services into the specified +# runlevel. This works by specifying three arguments as follows: +# +# service_name runlevel register +# -------------------------------------------------- +# dbus default boolean +# -------------------------------------------------- +# +# Arguments: $ACTION = [run/targets] +# $TARGET = [post-install/pre-remove] +# $PKGNAME +# $VERSION +# $UPDATE = [yes/no] +# +ACTION="$1" +TARGET="$2" +PKGNAME="$3" +VERSION="$4" +UPDATE="$5" + +initdir=etc/init.d +metadatadir=var/db/xbps/metadata/${PKGNAME} + +case "$ACTION" in +targets) + echo "post-install pre-remove" + ;; +run) + [ ! -x sbin/rc-update ] && exit 0 + [ ! -x sbin/rc-service ] && exit 0 + [ -z "$openrc_services" ] && exit 1 + + if [ "$TARGET" = "pre-remove" ]; then + rcupdate_args="del" + elif [ "$TARGET" = "post-install" ]; then + rcupdate_args="add" + else + exit 1 + fi + + [ ! -f etc/fstab ] && touch etc/fstab + + set -- ${openrc_services} + while [ $# -gt 0 ]; do + unset skip_service + srv_restart=$metadatadir/.$1_srv_restart + if [ "$TARGET" = "post-install" ]; then + # The service shouldn't be registered, so just show a message + # explaining how to add it in the future. + case "$3" in + [Ff][Aa][Ll][Ss][Ee]|[Oo][Ff]|0) + skip_service=1 + ;; + [Tt][Rr][Uu][Ee]|[Oo][Nn]|1) + unset skip_service + ;; + esac + if [ -n "$skip_service" ]; then + cat <<_EOF +================================================================ + +The system service '${1}' won't be added into the runlevel +'${2}' by default, so it will remain disabled at boot. + +To start it at boot time, use the following command: + + $ rc-update add ${1} ${2} + +To disable it again use: + + $ rc-update del ${1} ${2} + +================================================================ +_EOF + shift; shift; shift; + continue + else + echo "Registering '${1}' service to start at boot." + fi + if [ -f $srv_restart ]; then + # Restart service if it was running previously. + $initdir/$1 start + rm -f $srv_restart + else + # Register service. + if sbin/rc-service -e ${1}; then + sbin/rc-update add ${1} ${2} + fi + fi + else + # While removing always stop the service if running. + $initdir/$1 -q status + if [ $? -eq 0 ]; then + $initdir/$1 stop + fi + # + # While upgrading a package, don't remove the service. + # + if [ "$UPDATE" = "yes" ]; then + touch -f $srv_restart + else + # Unregister the service. + sbin/rc-update del ${1} ${2} + fi + fi + unset srv_restart + shift; shift; shift; + done + ;; +*) + exit 1 + ;; +esac + +exit 0 diff --git a/srcpkgs/xbps-triggers/files/pango-modules b/srcpkgs/xbps-triggers/files/pango-modules new file mode 100755 index 0000000000..ab21be33b1 --- /dev/null +++ b/srcpkgs/xbps-triggers/files/pango-modules @@ -0,0 +1,46 @@ +#!/bin/sh -e +# +# Updates the list of pango modules with pango-querymodules(1). +# +# Arguments: $ACTION = [run/targets] +# $TARGET = [post-install/post-remove] +# $PKGNAME +# $VERSION +# $UPDATE = [yes/no] +# +ACTION="$1" +TARGET="$2" +PKGNAME="$3" +VERSION="$4" +UPDATE="$5" + +pango_bin=usr/bin/pango-querymodules +pango_modules=etc/pango/pango.modules + +case "$ACTION" in +targets) + echo "post-install post-remove" + ;; +run) + if [ "$TARGET" = "post-remove" -a "${PKGNAME}" = "pango" ]; then + if [ -f ${pango_modules} ]; then + echo "Removing pango modules file..." + rm -f ${pango_modules} + fi + break + fi + case "$TARGET" in + post-*) + if [ -x ${pango_bin} ]; then + echo "Updating pango modules file..." + ${pango_bin} > ${pango_modules} + fi + ;; + esac + ;; +*) + exit 1 + ;; +esac + +exit 0 diff --git a/srcpkgs/xbps-triggers/files/register-shell b/srcpkgs/xbps-triggers/files/register-shell new file mode 100755 index 0000000000..e2cacfab77 --- /dev/null +++ b/srcpkgs/xbps-triggers/files/register-shell @@ -0,0 +1,66 @@ +#!/bin/sh -e +# +# Registers or unregisters a shell in /etc/shells. +# +# Arguments: $ACTION = [run/targets] +# $TARGET = [post-install/post-remove] +# $PKGNAME +# $VERSION +# $UPDATE = [yes/no] +# +ACTION="$1" +TARGET="$2" +PKGNAME="$3" +VERSION="$4" +UPDATE="$5" + +case "$ACTION" in +targets) + echo "post-install post-remove" + ;; +run) + [ "$TARGET" != "post-install" -a "$TARGET" != "post-remove" ] && exit 1 + + if [ -z "$register_shell" ]; then + echo "Trigger register-shell: empty \$register_shell!" + exit 1 + fi + + case "$TARGET" in + post-install) + if [ ! -f etc/shells ]; then + for f in ${register_shell}; do + echo $f >> etc/shells + echo "Registered $f into /etc/shells." + done + chmod 644 etc/shells + else + for f in ${register_shell}; do + if ! grep -q $f etc/shells; then + echo $f >> etc/shells + echo -n "Registered $f into " + echo "/etc/shells." + fi + done + fi + ;; + post-remove) + if [ -f etc/shells ]; then + for f in ${register_shell}; do + if grep -q $f etc/shells; then + shell=$(echo $f|sed "s|\\/|\\\/|g") + sed -i -e "/$shell/d" etc/shells + echo -n "Unregistered $f from " + echo "/etc/shells." + fi + done + fi + ;; + esac + ;; +*) + exit 1 + ;; +esac + +exit 0 diff --git a/srcpkgs/xbps-triggers/files/system-accounts b/srcpkgs/xbps-triggers/files/system-accounts new file mode 100755 index 0000000000..ec2d21da30 --- /dev/null +++ b/srcpkgs/xbps-triggers/files/system-accounts @@ -0,0 +1,84 @@ +#!/bin/sh -e +# +# (Un)registers systems accounts (users/groups). +# +# Arguments: $ACTION = [run/targets] +# $TARGET = [post-install/pre-remove] +# $PKGNAME +# $VERSION +# $UPDATE = [yes/no] +# +ACTION="$1" +TARGET="$2" +PKGNAME="$3" +VERSION="$4" +UPDATE="$5" + +useradd_cmd=usr/sbin/useradd +userdel_cmd=usr/sbin/userdel +groupadd_cmd=usr/sbin/groupadd +passwd_cmd=usr/bin/passwd +getent_cmd=usr/bin/getent + +case "$ACTION" in +targets) + echo "post-install pre-remove" + ;; +run) + if [ ! -x $useradd_cmd -a ! -x $groupadd_cmd -a ! -x $passwd_cmd \ + -a ! -x $getent_cmd ]; then + exit 0 + fi + + if [ -z "$system_accounts" ]; then + exit 0 + fi + + case "$TARGET" in + post-install) + for acct in ${system_accounts}; do + eval homedir="\$${acct}_homedir" + eval shell="\$${acct}_shell" + eval descr="\$${acct}_descr" + eval groups="\$${acct}_groups" + [ -z "$homedir" ] && homedir="/" + [ -z "$shell" ] && shell="/sbin/nologin" + [ -z "$descr" ] && descr="$acct unpriviledged user" + [ -n "$groups" ] && groups="-G $groups" + + if ! $getent_cmd group ${acct} >/dev/null; then + $groupadd_cmd -r ${acct} \ + 2>&1 >/dev/null || exit $? + echo "Created ${acct} system group." + fi + if ! $getent_cmd passwd ${acct} >/dev/null; then + $useradd_cmd -c "$descr" -d "$homedir" \ + -s "$shell" -g ${acct} $groups \ + -r ${acct} && \ + $passwd_cmd -l ${acct} \ + 2>&1 >/dev/null || exit $? + echo "Created ${acct} system user." + fi + done + ;; + pre-remove) + # + # Only unregister if we aren't updating a package. + # + if [ "$UPDATE" = "no" ]; then + for acct in ${system_accounts}; do + $userdel_cmd ${acct} 2>&1 >/dev/null + if [ $? -eq 0 ]; then + echo "Removed ${acct} system user/group." + fi + done + fi + ;; + esac + ;; +*) + exit 1 + ;; +esac + +exit 0 diff --git a/srcpkgs/xbps-triggers/files/update-desktopdb b/srcpkgs/xbps-triggers/files/update-desktopdb new file mode 100755 index 0000000000..ea14b9d01b --- /dev/null +++ b/srcpkgs/xbps-triggers/files/update-desktopdb @@ -0,0 +1,45 @@ +#!/bin/sh -e +# +# Updates the MIME database that connects with applications, through +# the update-desktop-database(1) utility. +# +# Arguments: $ACTION = [run/targets] +# $TARGET = [post-install/post-remove] +# $PKGNAME +# $VERSION +# $UPDATE = [yes/no] +# +ACTION="$1" +TARGET="$2" +PKGNAME="$3" +VERSION="$4" +UPDATE="$5" + +desktopdb_bin=usr/bin/update-desktop-database +desktopdb_dir=usr/share/applications +desktopdb_cache=${desktopdb_dir}/mimeinfo.cache + +case "$ACTION" in +targets) + echo "post-install post-remove" + ;; +run) + if [ "$TARGET" = "post-remove" -a "${PKGNAME}" = "desktop-file-utils" ]; then + [ -f ${desktopdb_cache} ] && rm -f ${desktopdb_cache} + break + fi + case "$TARGET" in + post-*) + if [ -x ${desktopdb_bin} ]; then + echo "Updating MIME database..." + ${desktopdb_bin} ${desktopdb_dir} + fi + ;; + esac + ;; +*) + exit 1 + ;; +esac + +exit 0 diff --git a/srcpkgs/xbps-triggers/files/x11-fonts b/srcpkgs/xbps-triggers/files/x11-fonts new file mode 100755 index 0000000000..5219631f9e --- /dev/null +++ b/srcpkgs/xbps-triggers/files/x11-fonts @@ -0,0 +1,66 @@ +#!/bin/sh -e +# +# This trigger rebuilds the fonts.dir and fonts.scale files +# for packages that install X11 fonts, and update fontconfig's +# cache for those fonts. +# +# Arguments: $ACTION = [run/targets] +# $TARGET = [post-install/pre-remove] +# $PKGNAME +# $VERSION +# $UPDATE = [yes/no] +# +ACTION="$1" +TARGET="$2" +PKGNAME="$3" +VERSION="$4" +UPDATE="$5" + +mkfontdir=usr/bin/mkfontdir +mkfontscale=usr/bin/mkfontscale +fccache=usr/bin/fc-cache + +case "$ACTION" in +targets) + echo "post-install pre-remove" + ;; +run) + if [ ! -x ${mkfontdir} -a ! -x ${mkfontscale} ]; then + exit 0 + fi + + [ -z "${font_dirs}" ] && exit 0 + + case "$TARGET" in + post-install) + for dir in ${font_dirs}; do + echo "Building ${dir}/fonts.dir..." + ${mkfontdir} .${dir} || exit $? + echo "Building ${dir}/fonts.scale..." + ${mkfontscale} .${dir} || exit $? + echo "Updating fontconfig's cache..." + ${fccache} .${dir} 2>/dev/null + done + ;; + pre-remove) + for dir in ${font_dirs}; do + if [ -f .${dir}/fonts.dir ]; then + rm -f .${dir}/fonts.dir + fi + if [ -f .${dir}/fonts.scale ]; then + rm -f .${dir}/fonts.scale + fi + if [ -f .${dir}/encodings.dir ]; then + rm -f .${dir}/encodings.dir + fi + done + ;; + esac + + ;; +*) + exit 1 + ;; +esac + +exit 0 diff --git a/srcpkgs/xbps-triggers/files/xml-catalog b/srcpkgs/xbps-triggers/files/xml-catalog new file mode 100755 index 0000000000..3a12359f84 --- /dev/null +++ b/srcpkgs/xbps-triggers/files/xml-catalog @@ -0,0 +1,94 @@ +#!/bin/sh -e +# +# Registers or unregisters SGML/XML catalog entries, through +# the xmlcatmgr application. +# +# Arguments: $ACTION = [run/targets] +# $TARGET = [post-install/pre-remove] +# $PKGNAME +# $VERSION +# $UPDATE = [yes/no] +# +ACTION="$1" +TARGET="$2" +PKGNAME="$3" +VERSION="$4" +UPDATE="$5" + +sgml_catalog=usr/share/sgml/catalog +xml_catalog=usr/share/xml/catalog + +register_entries() +{ + if [ -n "${sgml_entries}" ]; then + echo -n "Registering SGML catalog entries... " + set -- ${sgml_entries} + while [ $# -gt 0 ]; do + xmlcatmgr -sc ${sgml_catalog} add "$1" "$2" "$3" + shift; shift; shift; + done + echo "done." + fi + + if [ -n "${xml_entries}" ]; then + echo -n "Registering XML catalog entries... " + set -- ${xml_entries} + while [ $# -gt 0 ]; do + xmlcatmgr -c ${xml_catalog} add "$1" "$2" "$3" + shift; shift; shift; + done + echo "done." + fi +} + +unregister_entries() +{ + if [ -n "${sgml_entries}" ]; then + echo -n "Unregistering SGML catalog entries... " + set -- ${sgml_entries} + while [ $# -gt 0 ]; do + xmlcatmgr -sc ${sgml_catalog} remove "$1" "$2" \ + 2>/dev/null + shift; shift; shift + done + echo "done." + fi + if [ -n "${xml_entries}" ]; then + echo -n "Unregistering XML catalog entries... " + set -- ${xml_entries} + while [ $# -gt 0 ]; do + xmlcatmgr -c ${xml_catalog} remove "$1" "$2" \ + 2>/dev/null + shift; shift; shift + done + echo "done." + fi +} + +case "$ACTION" in +targets) + echo "post-install pre-remove" + ;; +run) + [ ! -x $xmlcatmgr ] && exit 0 + [ -n "${sgml_entries}" -a ! -f "${sgml_catalog}" ] && exit 0 + [ -n "${xml_entries}" -a ! -f "${xml_catalog}" ] && exit 0 + + case "$TARGET" in + post-install) + register_entries + ;; + pre-remove) + unregister_entries + ;; + *) + exit 1 + ;; + esac + ;; +*) + exit 1 + ;; +esac + +exit 0 diff --git a/srcpkgs/xbps-triggers/template b/srcpkgs/xbps-triggers/template index 0da8bf4274..24d7ed69dd 100644 --- a/srcpkgs/xbps-triggers/template +++ b/srcpkgs/xbps-triggers/template @@ -1,6 +1,6 @@ # Template file for 'xbps-triggers' pkgname=xbps-triggers -version=0.4 +version=0.5 build_style=custom-install short_desc="XBPS Package System triggers" maintainer="Juan RP " @@ -12,9 +12,14 @@ base_chroot=yes do_install() { - install -d ${DESTDIR}/var/db/xbps/triggers - install -m750 ${XBPS_TRIGGERSDIR}/* ${DESTDIR}/var/db/xbps/triggers - for f in $(find ${DESTDIR}/var/db/xbps/triggers); do - echo "# end" >> ${f} + _triggersdir=${DESTDIR}/var/db/xbps/triggers + + install -d ${_triggersdir} + + for f in ${FILESDIR}/*; do + _trigger=$(basename $f) + install -m750 ${FILESDIR}/${_trigger} \ + ${_triggersdir}/${_trigger} + echo "# end" >> ${_triggersdir}/${_trigger} done }