Remove built in "triggers"

Originally, the idea was that clients would replicate "OS/tree"s from
a build server, but we'd run things like "ldconfig" on the client.
This was to allow adding e.g. the nVidia binary driver.

However, the triggers were the only thing in the system at the moment
that really had expected knowledge of the *contents* of the OS, like
the location of binaries.

For now, it's architecturally cleaner if we move the burden of
triggers to the tree builder (e.g. gnome-ostree or RPM).  Eventually
we may want OSTree to assist with this type of thing (perhaps
something like RPM %ghost), but this is the right thing to do now.
This commit is contained in:
Colin Walters 2013-07-07 14:37:59 -04:00
parent f6bca20551
commit 26cef497a6
28 changed files with 2 additions and 830 deletions

View File

@ -17,9 +17,7 @@
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
if !TRIGGERS_ONLY
libexec_PROGRAMS += ostreed
endif
ostreed_SOURCES = src/daemon/ostreed.c \
src/daemon/ot-daemon.h \

View File

@ -17,9 +17,7 @@
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
if !TRIGGERS_ONLY
privlib_LTLIBRARIES += libostree.la
endif
libostree_la_SOURCES = src/libostree/ostree.h \
src/libostree/ostree-core.c \
@ -41,8 +39,6 @@ libostree_la_SOURCES = src/libostree/ostree.h \
src/libostree/ostree-types.h \
src/libostree/ostree-traverse.c \
src/libostree/ostree-traverse.h \
src/libostree/ostree-sysroot.c \
src/libostree/ostree-sysroot.h \
$(NULL)
if USE_LIBARCHIVE
libostree_la_SOURCES += src/libostree/ostree-libarchive-input-stream.h \

View File

@ -17,9 +17,7 @@
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
if !TRIGGERS_ONLY
bin_PROGRAMS += ostree
endif
ostree_SOURCES = src/ostree/main.c \
src/ostree/ostree-curl-fetcher.h \
@ -59,7 +57,6 @@ ostree_SOURCES += \
src/ostree/ot-admin-builtin-os-init.c \
src/ostree/ot-admin-builtin-install.c \
src/ostree/ot-admin-builtin-status.c \
src/ostree/ot-admin-builtin-run-triggers.c \
src/ostree/ot-admin-builtin-upgrade.c \
src/ostree/ot-admin-builtins.h \
src/ostree/ot-admin-cleanup.c \

View File

@ -17,9 +17,7 @@
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
if !TRIGGERS_ONLY
noinst_LTLIBRARIES += libotutil.la
endif
libotutil_la_SOURCES = \
src/libotutil/ot-checksum-utils.c \

View File

@ -15,13 +15,11 @@
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
if !TRIGGERS_ONLY
if BUILDOPT_DRACUT
sbin_PROGRAMS += ostree-prepare-root
sbin_PROGRAMS += ostree-remount
noinst_LTLIBRARIES += libswitchroot-mountutil.la
endif
endif
libswitchroot_mountutil_la_SOURCES = \
src/switchroot/ostree-mount-util.c \

View File

@ -1,41 +0,0 @@
# Makefile for triggers
#
# Copyright (C) 2011 Colin Walters <walters@verbum.org>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
triggersdir = $(libexecdir)/ostree/triggers.d
triggers_SCRIPTS = \
src/triggers/triggers.d/0001ldconfig.trigger \
src/triggers/triggers.d/0005depmod.trigger \
src/triggers/triggers.d/0010mime-database.trigger \
src/triggers/triggers.d/0020dconf.trigger \
src/triggers/triggers.d/0030glib.trigger \
src/triggers/triggers.d/0040gdk-pixbuf.trigger \
src/triggers/triggers.d/0050gconf.trigger \
src/triggers/triggers.d/0060immodules.trigger \
src/triggers/triggers.d/0070pango.trigger \
src/triggers/triggers.d/0080gtk+.trigger \
src/triggers/triggers.d/0090desktop-database.trigger \
src/triggers/triggers.d/0100fontconfig-cache.trigger \
$(NULL)
EXTRA_DIST += $(triggers_SCRIPTS)
bin_PROGRAMS += ostree-run-triggers
ostree_run_triggers_SOURCES = src/triggers/ostree-run-triggers.c
ostree_run_triggers_CFLAGS = $(OT_INTERNAL_GIO_UNIX_CFLAGS)
ostree_run_triggers_LDADD = $(OT_INTERNAL_GIO_UNIX_LIBS)

View File

@ -76,16 +76,13 @@ endif
libgsystem_srcpath := src/libgsystem
libgsystem_cflags = $(OT_INTERNAL_GIO_UNIX_CFLAGS) -I$(srcdir)/src/libgsystem
libgsystem_libs = $(OT_INTERNAL_GIO_UNIX_LIBS)
if !TRIGGERS_ONLY
include src/libgsystem/Makefile-libgsystem.am
noinst_LTLIBRARIES += libgsystem.la
endif
include Makefile-daemon.am
include Makefile-otutil.am
include Makefile-libostree.am
include Makefile-ostree.am
include Makefile-switchroot.am
include Makefile-triggers.am
include Makefile-tests.am
include Makefile-dracut.am

View File

@ -31,11 +31,6 @@ LT_INIT([disable-static])
OSTREE_FEATURES=""
AC_SUBST([OSTREE_FEATURES])
AC_ARG_ENABLE(triggers-only,
AS_HELP_STRING([--enable-triggers-only], [Only build and install triggers]),,
enable_triggers_only=no)
AM_CONDITIONAL(TRIGGERS_ONLY, test x$enable_triggers_only != xno)
AC_ARG_ENABLE(installed_tests,
AS_HELP_STRING([--enable-installed-tests],
[Install test programs (default: no)]),,
@ -61,9 +56,6 @@ AS_IF([test x$enable_embedded_dependencies = xyes], [
AC_ARG_WITH(soup,
AS_HELP_STRING([--with-soup], [Use libsoup @<:@default=yes@:>@]),
[], [with_soup=check])
if test x$enable_triggers_only != xno; then
with_soup=no
fi
AS_IF([test x$with_soup != xno ], [
AC_MSG_CHECKING([for $SOUP_DEPENDENCY])
PKG_CHECK_EXISTS($SOUP_DEPENDENCY, have_soup=yes, have_soup=no)
@ -89,9 +81,6 @@ AC_ARG_ENABLE(documentation,
AC_HELP_STRING([--enable-documentation],
[build documentation]),,
enable_documentation=yes)
if test x$enable_triggers_only != xno; then
enable_documentation=no
fi
if test x$enable_documentation = xyes; then
AC_PATH_PROG([XSLTPROC], [xsltproc])
if test x$XSLTPROC = x; then
@ -103,9 +92,6 @@ AM_CONDITIONAL(BUILD_DOCUMENTATION, test x$enable_documentation = xyes)
AC_ARG_WITH(libarchive,
AS_HELP_STRING([--without-libarchive], [Do not use libarchive]),
:, with_libarchive=maybe)
if test x$enable_triggers_only != xno; then
with_libarchive=no
fi
AS_IF([ test x$with_libarchive != xno ], [
AC_MSG_CHECKING([for $LIBARCHIVE_DEPENDENCY])
@ -125,7 +111,7 @@ AS_IF([ test x$with_libarchive != xno ], [
if test x$with_libarchive != xno; then OSTREE_FEATURES="$OSTREE_FEATURES +libarchive"; fi
AM_CONDITIONAL(USE_LIBARCHIVE, test $with_libarchive != no)
AS_IF([test x$cross_compiling != xyes && test -d /etc/kernel && test x$enable_triggers_only != xyes ],
AS_IF([test x$cross_compiling != xyes && test -d /etc/kernel ],
[kernel_updates_default=yes],
[kernel_updates_default=no])
@ -136,7 +122,7 @@ AC_ARG_ENABLE(kernel-updates,
enable_kernel_updates=${kernel_updates_default})
AM_CONDITIONAL(ENABLE_KERNEL_UPDATES, test $enable_kernel_updates != no)
AS_IF([test x$cross_compiling != xyes && test -d /etc/grub.d && test x$enable_triggers_only != xyes ],
AS_IF([test x$cross_compiling != xyes && test -d /etc/grub.d ],
[grub2_hook_default=yes],
[grub2_hook_default=no])
@ -163,7 +149,6 @@ echo "
===============
triggers only: $enable_triggers_only
embedded dependencies: $enable_embedded_dependencies
libsoup (retrieve remote HTTP repositories): $with_soup
libarchive (parse tar files directly): $with_libarchive

View File

@ -1,105 +0,0 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
*
* Copyright (C) 2012 Colin Walters <walters@verbum.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*
* Author: Colin Walters <walters@verbum.org>
*/
#include "config.h"
#include <sys/wait.h>
#include "ostree.h"
#include "otutil.h"
static const char * const sysroot_environ[] = {
"HOME=/",
"PWD=/",
"HOSTNAME=ostreesysroot",
"LANG=C",
"PATH=/usr/bin:/bin:/usr/sbin:/sbin",
"SHELL=/bin/bash",
"TERM=vt100",
"TMPDIR=/tmp",
"TZ=EST5EDT",
NULL
};
const char *const*
ostree_get_sysroot_environ (void)
{
return (const char *const*)sysroot_environ;
}
/**
* @root: (allow-none): Change to this root; if %NULL, don't chroot
*
* Triggers are a set of programs to run on a root to regenerate cache
* files. This API call will simply run them against the given root.
*/
gboolean
ostree_run_triggers_in_root (GFile *root,
GCancellable *cancellable,
GError **error)
{
gboolean ret = FALSE;
int estatus;
gs_free char *rel_triggerdir = NULL;
gs_unref_object GFile *triggerdir = NULL;
gs_unref_ptrarray GPtrArray *argv = NULL;
rel_triggerdir = g_build_filename ("usr", "libexec", "ostree", "triggers.d", NULL);
if (root)
triggerdir = g_file_resolve_relative_path (root, rel_triggerdir);
else
triggerdir = g_file_new_for_path (rel_triggerdir);
if (g_file_query_exists (triggerdir, cancellable))
{
argv = g_ptr_array_new ();
if (root)
{
g_ptr_array_add (argv, "linux-user-chroot");
g_ptr_array_add (argv, "--unshare-pid");
g_ptr_array_add (argv, "--unshare-ipc");
/* FIXME - unshare net too */
g_ptr_array_add (argv, "--mount-proc");
g_ptr_array_add (argv, "/proc");
g_ptr_array_add (argv, "--mount-bind");
g_ptr_array_add (argv, "/dev");
g_ptr_array_add (argv, "/dev");
g_ptr_array_add (argv, (char*)gs_file_get_path_cached (root));
}
g_ptr_array_add (argv, "ostree-run-triggers");
g_ptr_array_add (argv, NULL);
if (!g_spawn_sync (NULL, (char**)argv->pdata,
(char**) ostree_get_sysroot_environ (),
G_SPAWN_SEARCH_PATH,
NULL, NULL, NULL, NULL, &estatus, error))
goto out;
if (!g_spawn_check_exit_status (estatus, error))
goto out;
}
ret = TRUE;
out:
return ret;
}

View File

@ -1,39 +0,0 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
*
* Copyright (C) 2011 Colin Walters <walters@verbum.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*
* Author: Colin Walters <walters@verbum.org>
*/
#ifndef _OSTREE_SYSROOT
#define _OSTREE_SYSROOT
#include "ostree-core.h"
#include "ostree-types.h"
G_BEGIN_DECLS
const char *const* ostree_get_sysroot_environ (void);
gboolean ostree_run_triggers_in_root (GFile *root,
GCancellable *cancellable,
GError **error);
G_END_DECLS
#endif

View File

@ -29,7 +29,6 @@
#include <ostree-mutable-tree.h>
#include <ostree-repo-file.h>
#include <ostree-traverse.h>
#include <ostree-sysroot.h>
#include <ostree-diff.h>
#endif

View File

@ -1,61 +0,0 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
*
* Copyright (C) 2012 Colin Walters <walters@verbum.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*
* Author: Colin Walters <walters@verbum.org>
*/
#include "config.h"
#include "ot-admin-builtins.h"
#include "ot-admin-functions.h"
#include "ostree.h"
#include <unistd.h>
#include <stdlib.h>
#include <glib/gi18n.h>
static GOptionEntry options[] = {
{ NULL }
};
gboolean
ot_admin_builtin_run_triggers (int argc, char **argv, OtAdminBuiltinOpts *admin_opts, GError **error)
{
GOptionContext *context;
gboolean ret = FALSE;
gs_unref_object GFile *rootdir = NULL;
__attribute__((unused)) GCancellable *cancellable = NULL;
context = g_option_context_new ("[ROOT] - Run triggers (regenerate caches, etc.)");
g_option_context_add_main_entries (context, options, NULL);
if (!g_option_context_parse (context, &argc, &argv, error))
goto out;
rootdir = g_file_new_for_path (argv[1]);
if (!ostree_run_triggers_in_root (rootdir, cancellable, error))
goto out;
ret = TRUE;
out:
if (context)
g_option_context_free (context);
return ret;
}

View File

@ -38,7 +38,6 @@ gboolean ot_admin_builtin_deploy (int argc, char **argv, OtAdminBuiltinOpts *adm
gboolean ot_admin_builtin_prune (int argc, char **argv, OtAdminBuiltinOpts *admin_opts, GError **error);
gboolean ot_admin_builtin_status (int argc, char **argv, OtAdminBuiltinOpts *admin_opts, GError **error);
gboolean ot_admin_builtin_diff (int argc, char **argv, OtAdminBuiltinOpts *admin_opts, GError **error);
gboolean ot_admin_builtin_run_triggers (int argc, char **argv, OtAdminBuiltinOpts *admin_opts, GError **error);
gboolean ot_admin_builtin_upgrade (int argc, char **argv, OtAdminBuiltinOpts *admin_opts, GError **error);
G_END_DECLS

View File

@ -52,7 +52,6 @@ static OstreeAdminCommand admin_subcommands[] = {
{ "prune", ot_admin_builtin_prune },
{ "status", ot_admin_builtin_status },
{ "config-diff", ot_admin_builtin_diff },
{ "run-triggers", ot_admin_builtin_run_triggers },
{ NULL, NULL }
};

View File

@ -31,7 +31,6 @@
static gboolean opt_user_mode;
static gboolean opt_allow_noent;
static gboolean opt_no_triggers;
static char *opt_subpath;
static gboolean opt_union;
static gboolean opt_from_stdin;
@ -42,7 +41,6 @@ static GOptionEntry options[] = {
{ "subpath", 0, 0, G_OPTION_ARG_STRING, &opt_subpath, "Checkout sub-directory PATH", "PATH" },
{ "union", 0, 0, G_OPTION_ARG_NONE, &opt_union, "Keep existing directories, overwrite existing files", NULL },
{ "allow-noent", 0, 0, G_OPTION_ARG_NONE, &opt_allow_noent, "Do nothing if specified path does not exist", NULL },
{ "no-triggers", 0, 0, G_OPTION_ARG_NONE, &opt_no_triggers, "Don't run triggers", NULL },
{ "from-stdin", 0, 0, G_OPTION_ARG_NONE, &opt_from_stdin, "Process many checkouts from standard input", NULL },
{ "from-file", 0, 0, G_OPTION_ARG_STRING, &opt_from_file, "Process many checkouts from input file", NULL },
{ NULL }
@ -262,12 +260,6 @@ ostree_builtin_checkout (int argc, char **argv, GFile *repo_path, GError **error
if (!process_many_checkouts (repo, checkout_target, cancellable, error))
goto out;
if (!opt_no_triggers)
{
if (!ostree_run_triggers_in_root (checkout_target, cancellable, error))
goto out;
}
}
else
{
@ -286,13 +278,6 @@ ostree_builtin_checkout (int argc, char **argv, GFile *repo_path, GError **error
checkout_target_tmp ? checkout_target_tmp : checkout_target,
cancellable, error))
goto out;
if (!opt_no_triggers)
{
if (!ostree_run_triggers_in_root (checkout_target_tmp ? checkout_target_tmp : checkout_target,
cancellable, error))
goto out;
}
}
ret = TRUE;

View File

@ -1,233 +0,0 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
*
* Copyright (C) 2011,2012 Colin Walters <walters@verbum.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*
* Author: Colin Walters <walters@verbum.org>
*/
#include "config.h"
#include <gio/gio.h>
#include <string.h>
static gboolean verbose;
static GOptionEntry options[] = {
{ "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose, "Display informational messages", NULL },
{ NULL }
};
static gboolean
run_trigger (const char *path,
GCancellable *cancellable,
GError **error)
{
gboolean ret = FALSE;
char *basename = NULL;
GPtrArray *args = NULL;
int estatus;
basename = g_path_get_basename (path);
args = g_ptr_array_new ();
g_ptr_array_add (args, (char*)path);
g_ptr_array_add (args, NULL);
if (verbose)
g_print ("Running trigger: %s\n", path);
if (!g_spawn_sync (NULL,
(char**)args->pdata,
NULL,
0,
NULL, NULL, NULL, NULL,
&estatus,
error))
{
g_prefix_error (error, "Failed to run trigger %s: ", basename);
goto out;
}
ret = TRUE;
out:
g_free (basename);
if (args)
g_ptr_array_free (args, TRUE);
return ret;
}
static int
compare_files_by_basename (gconstpointer ap,
gconstpointer bp)
{
GFile *a = *(GFile**)ap;
GFile *b = *(GFile**)bp;
char *name_a, *name_b;
int c;
name_a = g_file_get_basename (a);
name_b = g_file_get_basename (b);
c = strcmp (name_a, name_b);
g_free (name_b);
g_free (name_a);
return c;
}
static gboolean
get_sorted_triggers (GPtrArray **out_triggers,
GCancellable *cancellable,
GError **error)
{
gboolean ret = FALSE;
GError *temp_error = NULL;
char *triggerdir_path = NULL;
GFile *triggerdir = NULL;
GFileInfo *file_info = NULL;
GFileEnumerator *enumerator = NULL;
GPtrArray *ret_triggers = NULL;
ret_triggers = g_ptr_array_new_with_free_func ((GDestroyNotify)g_object_unref);
triggerdir_path = g_build_filename (LIBEXECDIR, "ostree", "triggers.d", NULL);
triggerdir = g_file_new_for_path (triggerdir_path);
enumerator = g_file_enumerate_children (triggerdir, "standard::name,standard::type",
G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
cancellable,
error);
if (!enumerator)
goto out;
while ((file_info = g_file_enumerator_next_file (enumerator, cancellable, &temp_error)) != NULL)
{
const char *name;
guint32 type;
name = g_file_info_get_attribute_byte_string (file_info, "standard::name");
type = g_file_info_get_attribute_uint32 (file_info, "standard::type");
if (type == G_FILE_TYPE_REGULAR && g_str_has_suffix (name, ".trigger"))
{
char *child_path;
GFile *child;
child_path = g_build_filename (triggerdir_path, name, NULL);
child = g_file_new_for_path (child_path);
g_free (child_path);
g_ptr_array_add (ret_triggers, child);
}
g_clear_object (&file_info);
}
if (file_info == NULL && temp_error != NULL)
{
g_propagate_error (error, temp_error);
goto out;
}
g_ptr_array_sort (ret_triggers, compare_files_by_basename);
ret = TRUE;
if (out_triggers)
{
*out_triggers = ret_triggers;
ret_triggers = NULL;
}
out:
g_free (triggerdir_path);
g_clear_object (&triggerdir);
g_clear_object (&enumerator);
if (ret_triggers)
g_ptr_array_unref (ret_triggers);
return ret;
}
gboolean
run_triggers (GCancellable *cancellable,
GError **error)
{
gboolean ret = FALSE;
int i;
GPtrArray *triggers = NULL;
char *path = NULL;
if (!get_sorted_triggers (&triggers, cancellable, error))
goto out;
for (i = 0; i < triggers->len; i++)
{
const char *basename;
GFile *trigger_path = triggers->pdata[i];
guint64 start_time;
guint64 end_time;
g_free (path);
path = g_file_get_path (trigger_path);
basename = strrchr (path, '/');
if (basename)
basename += 1;
else
basename = path;
start_time = g_get_monotonic_time ();
g_print ("ostree-run-triggers: Starting: %s\n", basename);
if (!run_trigger (path, cancellable, error))
goto out;
end_time = g_get_monotonic_time ();
g_print ("ostree-run-triggers: Completed %s in %.2f seconds\n", basename,
(double) (end_time - start_time) / (double)G_USEC_PER_SEC);
}
ret = TRUE;
out:
g_free (path);
if (triggers)
g_ptr_array_unref (triggers);
return ret;
}
int
main (int argc,
char **argv)
{
GOptionContext *context;
GError *real_error = NULL;
GError **error = &real_error;
GCancellable *cancellable = NULL;
gboolean ret = FALSE;
g_type_init ();
context = g_option_context_new ("- Regenerate caches in operating system tree");
g_option_context_add_main_entries (context, options, NULL);
if (!g_option_context_parse (context, &argc, &argv, error))
goto out;
if (!run_triggers (cancellable, error))
goto out;
ret = TRUE;
out:
if (real_error)
g_printerr ("%s\n", real_error->message);
g_clear_error (&real_error);
if (!ret)
return 1;
return 0;
}

View File

@ -1,23 +0,0 @@
#!/bin/bash
# Post-installation hook for shared libraries. -*- mode: sh -*-
#
# Written by Colin Walters <walters@verbum.org>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
if test -x "$(which ldconfig 2>/dev/null)"; then
exec ldconfig
fi

View File

@ -1,27 +0,0 @@
#!/bin/bash
# Post-installation hook for kernel modules. -*- mode: sh -*-
#
# Written by Colin Walters <walters@verbum.org>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
set -e
if test -x "$(which depmod 2>/dev/null)"; then
for d in /usr/lib/modules/*; do
if test -d "$d"; then depmod $(basename "$d"); fi
done
fi

View File

@ -1,23 +0,0 @@
#!/bin/sh
# Post-installation hook for shared-mime-info. -*- mode: sh -*-
#
# Written by Matthias Clasen <mclasen@redhat.com>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
if test -x "$(which update-mime-database 2>/dev/null)"; then
exec update-mime-database /usr/share/mime
fi

View File

@ -1,23 +0,0 @@
#!/bin/sh
# Post-installation hook for system dconf schemas. -*- mode: sh -*-
#
# Written by Colin Walters <walters@verbum.org>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
if test -x "$(which dconf 2>/dev/null)"; then
exec dconf update
fi

View File

@ -1,23 +0,0 @@
#!/bin/sh
# Post-installation hook for glib/gschema. -*- mode: sh -*-
#
# Written by Colin Walters <walters@verbum.org>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
if test -x "$(which glib-compile-schemas 2>/dev/null)"; then
exec glib-compile-schemas /usr/share/glib-2.0/schemas
fi

View File

@ -1,24 +0,0 @@
#!/bin/sh
# Post-installation hook for gdk-pixbuf. -*- mode: sh -*-
# Corresponds to gdk-pixbuf/gdk-pixbuf/Makefile.am:install-data-hook
#
# Written by Colin Walters <walters@verbum.org>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
if test -x "$(which gdk-pixbuf-query-loaders 2>/dev/null)"; then
exec gdk-pixbuf-query-loaders --update-cache
fi

View File

@ -1,29 +0,0 @@
#!/bin/sh
# Post-installation hook for GConf. -*- mode: sh -*-
#
# Written by Colin Walters <walters@verbum.org>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
if test -x "$(which gconftool-2 2>/dev/null)"; then
GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
export GCONF_CONFIG_SOURCE
for f in /etc/gconf/schemas/*.schemas; do
# The default output is extremely chatty...redirect to
# /dev/null here until there's a way to make it quieter.
gconftool-2 --makefile-install-rule "$f" >/dev/null
done
fi

View File

@ -1,23 +0,0 @@
#!/bin/sh
# Post-installation hook for GTK+ input method modules. -*- mode: sh -*-
#
# Written by Matthias Clasen <mclasen@redhat.com>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
if test -x "$(which gtk-query-immodules-3.0 2>/dev/null)"; then
exec gtk-query-immodules-3.0 --update-cache
fi

View File

@ -1,29 +0,0 @@
#!/bin/sh
# Post-installation hook for pango. -*- mode: sh -*-
# Corresponds to gdk-pixbuf/gdk-pixbuf/Makefile.am:install-data-hook
#
# Written by Colin Walters <walters@verbum.org>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
if test -x "$(which pango-querymodules 2>/dev/null)"; then
# Support both old and new pango-querymodules; see
# http://git.gnome.org/browse/pango/commit/?id=9bbb992671140b840bedb4339f6c326a2ae2c072
if ! pango-querymodules --system --update-cache; then
DEST=/etc/pango/pango.modules
pango-querymodules --system > ${DEST}.tmp && mv ${DEST}.tmp ${DEST}
fi
fi

View File

@ -1,30 +0,0 @@
#!/bin/sh
# Post-installation hook for gtk icon cache. -*- mode: sh -*-
#
# Written by Colin Walters <walters@verbum.org>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
if test -x "$(which gtk-update-icon-cache 2>/dev/null)"; then
for dir in /usr/share/icons/*; do
if test -f $dir/index.theme; then
if ! gtk-update-icon-cache --quiet $dir; then
echo "Failed to run gtk-update-icon-cache for $dir"
exit 1
fi
fi
done
fi

View File

@ -1,23 +0,0 @@
#!/bin/sh
# Post-installation hook for desktop files. -*- mode: sh -*-
#
# Written by Matthias Clasen <mclasen@redhat.com>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
if test -x "$(which update-desktop-database 2>/dev/null)"; then
exec update-desktop-database -q /usr/share/applications
fi

View File

@ -1,23 +0,0 @@
#!/bin/sh
# Post-installation hook for the FontConfig cache -*- mode: sh -*-
#
# Written by Adrian Perez de Castro <aperez@igalia.com>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
if test -x "$(which fc-cache 2>/dev/null)"; then
exec fc-cache --system-only
fi