Date: Tuesday, May 14, 2013 @ 09:41:14 Author: alucryd Revision: 90806
archrelease: copy trunk to community-staging-i686, community-staging-x86_64 Added: gnome-panel/repos/community-staging-i686/ gnome-panel/repos/community-staging-i686/0001-Add-the-GNOME-Flashback-session.patch (from rev 90805, gnome-panel/trunk/0001-Add-the-GNOME-Flashback-session.patch) gnome-panel/repos/community-staging-i686/18_fix_force_quit_applet.patch (from rev 90805, gnome-panel/trunk/18_fix_force_quit_applet.patch) gnome-panel/repos/community-staging-i686/PKGBUILD (from rev 90805, gnome-panel/trunk/PKGBUILD) gnome-panel/repos/community-staging-i686/drop-gweather-xml-include.patch (from rev 90805, gnome-panel/trunk/drop-gweather-xml-include.patch) gnome-panel/repos/community-staging-i686/fix-autoconf.patch (from rev 90805, gnome-panel/trunk/fix-autoconf.patch) gnome-panel/repos/community-staging-i686/gnome-desktop-3.8.patch (from rev 90805, gnome-panel/trunk/gnome-desktop-3.8.patch) gnome-panel/repos/community-staging-i686/gnome-panel.install (from rev 90805, gnome-panel/trunk/gnome-panel.install) gnome-panel/repos/community-staging-x86_64/ gnome-panel/repos/community-staging-x86_64/0001-Add-the-GNOME-Flashback-session.patch (from rev 90805, gnome-panel/trunk/0001-Add-the-GNOME-Flashback-session.patch) gnome-panel/repos/community-staging-x86_64/18_fix_force_quit_applet.patch (from rev 90805, gnome-panel/trunk/18_fix_force_quit_applet.patch) gnome-panel/repos/community-staging-x86_64/PKGBUILD (from rev 90805, gnome-panel/trunk/PKGBUILD) gnome-panel/repos/community-staging-x86_64/drop-gweather-xml-include.patch (from rev 90805, gnome-panel/trunk/drop-gweather-xml-include.patch) gnome-panel/repos/community-staging-x86_64/fix-autoconf.patch (from rev 90805, gnome-panel/trunk/fix-autoconf.patch) gnome-panel/repos/community-staging-x86_64/gnome-desktop-3.8.patch (from rev 90805, gnome-panel/trunk/gnome-desktop-3.8.patch) gnome-panel/repos/community-staging-x86_64/gnome-panel.install (from rev 90805, gnome-panel/trunk/gnome-panel.install) ---------------------------------------------------------------------+ community-staging-i686/0001-Add-the-GNOME-Flashback-session.patch | 95 ++++ community-staging-i686/18_fix_force_quit_applet.patch | 98 ++++ community-staging-i686/PKGBUILD | 79 +++ community-staging-i686/drop-gweather-xml-include.patch | 10 community-staging-i686/fix-autoconf.patch | 11 community-staging-i686/gnome-desktop-3.8.patch | 199 ++++++++++ community-staging-i686/gnome-panel.install | 12 community-staging-x86_64/0001-Add-the-GNOME-Flashback-session.patch | 95 ++++ community-staging-x86_64/18_fix_force_quit_applet.patch | 98 ++++ community-staging-x86_64/PKGBUILD | 79 +++ community-staging-x86_64/drop-gweather-xml-include.patch | 10 community-staging-x86_64/fix-autoconf.patch | 11 community-staging-x86_64/gnome-desktop-3.8.patch | 199 ++++++++++ community-staging-x86_64/gnome-panel.install | 12 14 files changed, 1008 insertions(+) Copied: gnome-panel/repos/community-staging-i686/0001-Add-the-GNOME-Flashback-session.patch (from rev 90805, gnome-panel/trunk/0001-Add-the-GNOME-Flashback-session.patch) =================================================================== --- community-staging-i686/0001-Add-the-GNOME-Flashback-session.patch (rev 0) +++ community-staging-i686/0001-Add-the-GNOME-Flashback-session.patch 2013-05-14 07:41:14 UTC (rev 90806) @@ -0,0 +1,95 @@ +From a5b951654b856d899e8c6a4116b4ccc4f18aac91 Mon Sep 17 00:00:00 2001 +From: Jeremy Bicha <jbi...@ubuntu.com> +Date: Sun, 24 Feb 2013 17:22:29 -0500 +Subject: [PATCH] Add the GNOME Flashback session + +This was removed from gnome-session 3.7.4 so let's it add it back here +(under new name) + +https://bugzilla.gnome.org/show_bug.cgi?id=694625 +--- + data/Makefile.am | 18 +++++++++++++++++- + data/gnome-flashback.desktop.in | 7 +++++++ + data/gnome-flashback.session.desktop.in | 3 +++ + po/POTFILES.in | 2 ++ + 4 files changed, 29 insertions(+), 1 deletion(-) + create mode 100644 data/gnome-flashback.desktop.in + create mode 100644 data/gnome-flashback.session.desktop.in + +diff --git a/data/Makefile.am b/data/Makefile.am +index 83f82e2..84e1954 100644 +--- a/data/Makefile.am ++++ b/data/Makefile.am +@@ -30,17 +30,33 @@ gsettings_SCHEMAS = $(gsettings_schemas_in:.xml.in=.xml) + + @GSETTINGS_RULES@ + ++sessiondir = $(datadir)/gnome-session/sessions ++session_in_files = gnome-flashback.session.desktop.in ++session_DATA = $(session_in_files:.session.desktop.in=.session) ++ ++xsessiondir = $(datadir)/xsessions ++xsession_in_files = gnome-flashback.desktop.in ++xsession_DATA = $(xsession_in_files:.desktop.in=.desktop) ++ ++%.session: %.session.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ ++ ++@INTLTOOL_DESKTOP_RULE@ ++ + default_layoutdir = $(datadir)/gnome-panel + default_layout_DATA = panel-default-layout.layout + + EXTRA_DIST = \ + $(gsettings_schemas_in_in) \ ++ $(session_in_files) \ ++ $(xsession_in_files) \ + $(default_layout_DATA) + + CLEANFILES = \ + $(gsettings__enum_file) \ + $(gsettings_SCHEMAS_in) \ + $(gsettings_SCHEMAS) \ +- *.gschema.valid ++ *.gschema.valid \ ++ $(session_DATA) \ ++ $(xsession_DATA) + + -include $(top_srcdir)/git.mk +diff --git a/data/gnome-flashback.desktop.in b/data/gnome-flashback.desktop.in +new file mode 100644 +index 0000000..4856f75 +--- /dev/null ++++ b/data/gnome-flashback.desktop.in +@@ -0,0 +1,7 @@ ++[Desktop Entry] ++_Name=GNOME Flashback ++_Comment=This session logs you into GNOME with the traditional panel ++Exec=gnome-session --session=gnome-flashback ++TryExec=gnome-session ++Icon= ++Type=Application +diff --git a/data/gnome-flashback.session.desktop.in b/data/gnome-flashback.session.desktop.in +new file mode 100644 +index 0000000..c012c58 +--- /dev/null ++++ b/data/gnome-flashback.session.desktop.in +@@ -0,0 +1,3 @@ ++[GNOME Session] ++_Name=GNOME Flashback ++RequiredComponents=gnome-panel;gnome-settings-daemon;gnome-screensaver;metacity;nautilus-classic;notification-daemon;gnome-fallback-background-helper;gnome-fallback-media-keys-helper;gnome-fallback-mount-helper; +diff --git a/po/POTFILES.in b/po/POTFILES.in +index bc65c4c..a6aa6c7 100644 +--- a/po/POTFILES.in ++++ b/po/POTFILES.in +@@ -23,6 +23,8 @@ applets/wncklet/window-menu.c + applets/wncklet/wncklet.c + applets/wncklet/workspace-switcher.c + [type: gettext/glade]applets/wncklet/workspace-switcher.ui ++data/gnome-flashback.desktop.in ++data/gnome-flashback.session.desktop.in + data/org.gnome.gnome-panel.applet.clock.gschema.xml.in.in + data/org.gnome.gnome-panel.applet.fish.gschema.xml.in.in + data/org.gnome.gnome-panel.applet.window-list.gschema.xml.in.in +-- +1.7.10.4 + Copied: gnome-panel/repos/community-staging-i686/18_fix_force_quit_applet.patch (from rev 90805, gnome-panel/trunk/18_fix_force_quit_applet.patch) =================================================================== --- community-staging-i686/18_fix_force_quit_applet.patch (rev 0) +++ community-staging-i686/18_fix_force_quit_applet.patch 2013-05-14 07:41:14 UTC (rev 90806) @@ -0,0 +1,98 @@ +Description: Fix Force-Quit panel applet + This patch implements handling of XInput2 extension events in the applet. + Without this patch, the applet fails to recognize such events (either mouse + click for killing application, or escape key for exiting), hence freezing the + desktop. + . + Also fix the event mask in call of gdk_device_grab() for keyboard. +Author: Sébastien Villemot <sebast...@debian.org> +Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=698740 +Forwarded: no +Last-Update: 2013-01-28 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +--- a/gnome-panel/panel-force-quit.c ++++ b/gnome-panel/panel-force-quit.c +@@ -32,6 +32,8 @@ + #include <X11/Xlib.h> + #include <X11/keysym.h> + ++#include <X11/extensions/XInput2.h> ++ + #include "panel-icon-names.h" + #include "panel-stock-icons.h" + +@@ -246,22 +248,23 @@ + + static void + handle_button_press_event (GtkWidget *popup, +- XKeyEvent *event) ++ Display *display, ++ Window subwindow) + { + Window window; + + remove_popup (popup); + +- if (event->subwindow == None) ++ if (subwindow == None) + return; + + if (wm_state_atom == None) +- wm_state_atom = XInternAtom (event->display, "WM_STATE", FALSE); ++ wm_state_atom = XInternAtom (display, "WM_STATE", FALSE); + +- window = find_managed_window (event->display, event->subwindow); ++ window = find_managed_window (display, subwindow); + + if (window != None) { +- if (!gdk_x11_window_lookup_for_display (gdk_x11_lookup_xdisplay (event->display), window)) ++ if (!gdk_x11_window_lookup_for_display (gdk_x11_lookup_xdisplay (display), window)) + kill_window_question ((gpointer) window); + } + } +@@ -272,10 +275,12 @@ + GtkWidget *popup) + { + XEvent *xevent = (XEvent *) gdk_xevent; ++ XIEvent *xiev; ++ XIDeviceEvent *xidev; + + switch (xevent->type) { + case ButtonPress: +- handle_button_press_event (popup, &xevent->xkey); ++ handle_button_press_event (popup, xevent->xbutton.display, xevent->xbutton.subwindow); + return GDK_FILTER_REMOVE; + case KeyPress: + if (xevent->xkey.keycode == XKeysymToKeycode (xevent->xany.display, XK_Escape)) { +@@ -283,6 +288,21 @@ + return GDK_FILTER_REMOVE; + } + break; ++ case GenericEvent: ++ xiev = (XIEvent *) xevent->xcookie.data; ++ xidev = (XIDeviceEvent *) xiev; ++ switch (xiev->evtype) { ++ case XI_KeyPress: ++ if (xidev->detail == XKeysymToKeycode (xevent->xany.display, XK_Escape)) { ++ remove_popup (popup); ++ return GDK_FILTER_REMOVE; ++ } ++ break; ++ case XI_ButtonPress: ++ handle_button_press_event (popup, xidev->display, xidev->child); ++ return GDK_FILTER_REMOVE; ++ } ++ break; + default: + break; + } +@@ -331,7 +351,7 @@ + + status = gdk_device_grab (keyboard, root, + GDK_OWNERSHIP_NONE, FALSE, +- GDK_KEY_PRESS | GDK_KEY_RELEASE, ++ GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK, + NULL, time); + if (status != GDK_GRAB_SUCCESS) { + g_warning ("Keyboard grab failed\n"); Copied: gnome-panel/repos/community-staging-i686/PKGBUILD (from rev 90805, gnome-panel/trunk/PKGBUILD) =================================================================== --- community-staging-i686/PKGBUILD (rev 0) +++ community-staging-i686/PKGBUILD 2013-05-14 07:41:14 UTC (rev 90806) @@ -0,0 +1,79 @@ +# $Id$ +# Maintainer: Balló György <ballogyor+arch at gmail dot com> +# Contributor: Jan de Groot <j...@archlinux.org> + +pkgbase=gnome-panel +pkgname=('gnome-panel' 'gnome-flashback-session') +pkgver=3.6.2 +pkgrel=6 +arch=('i686' 'x86_64') +license=('GPL') +pkgdesc="Legacy GNOME panel" +url="https://live.gnome.org/GnomePanel" +depends=('dconf' 'evolution-data-server' 'gconf' 'gnome-desktop' 'gnome-menus' 'librsvg' + 'libwnck3' 'telepathy-glib') +makedepends=('gobject-introspection' 'intltool' 'yelp-tools' 'networkmanager' 'gnome-common') +install=$pkgbase.install +options=('!libtool') +source=(http://ftp.gnome.org/pub/gnome/sources/$pkgbase/${pkgver:0:3}/$pkgbase-$pkgver.tar.xz + gnome-desktop-3.8.patch + drop-gweather-xml-include.patch + 18_fix_force_quit_applet.patch + 0001-Add-the-GNOME-Flashback-session.patch + fix-autoconf.patch) +sha256sums=('a41c45c5512e796b8602ce50bf0d205993eab364c860aae31afa582d77b77079' + '3a67f4b07a7dd356fad6b40a43983f3945123ed40080eb153396a481b34efc0c' + 'e3298c62bc577969817c5d6752be83a5129004fd344e4f7998a0d8aa61874305' + '9d742f675d9e09a032bfe00e0523a4ef7e234589a74a6086243bf335ce212775' + '9db0d1dadd2183777ed39e84caca1096a857897bbcf0e18ad599996dd397f1e0' + '6828c097505d2dbbf465ed7ff694adbd646a0af2105c8dd864d1061bf0afea71') + +build() { + cd "$pkgbase-$pkgver" + + # Port to gnome-desktop 3.8 + patch -Np1 -i "$srcdir/gnome-desktop-3.8.patch" + + # Fix build with libgweather 3.8 + patch -Np0 -i "$srcdir/drop-gweather-xml-include.patch" + + # Fix force quit applet to avoid freeze + patch -Np1 -i "$srcdir/18_fix_force_quit_applet.patch" + + # Add GNOME Flashback session + # https://bugzilla.gnome.org/show_bug.cgi?id=694625 + patch -Np1 -i "$srcdir/0001-Add-the-GNOME-Flashback-session.patch" + + # Fix build + patch -Np1 -i "$srcdir/fix-autoconf.patch" + + autoreconf -fi + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/lib/$pkgbase \ + --disable-static --disable-schemas-compile \ + PYTHON=/usr/bin/python2 + make +} + +package_gnome-panel() { + cd "$pkgbase-$pkgver" + make DESTDIR="$pkgdir" install + + # Remove unneeded script + rm "$pkgdir/usr/lib/gnome-panel/gnome-panel-add" + + # Split out the session files + rm -r "$pkgdir"/usr/share/{gnome-session,xsessions} +} + +package_gnome-flashback-session() { + pkgdesc="Shell for Gnome 3 which was initially called Gnome Fallback" + url="https://live.gnome.org/GnomeFlashback" + depends=('gnome-screensaver' 'gnome-panel' 'gnome-session' 'gnome-settings-daemon' + 'gnome-settings-daemon-compat' 'gnome-themes-standard' 'metacity' 'nautilus' + 'notification-daemon' 'polkit-gnome') + install= + + cd "$pkgbase-$pkgver" + make -C data DESTDIR="$pkgdir" install-sessionDATA + make -C data DESTDIR="$pkgdir" install-xsessionDATA +} Copied: gnome-panel/repos/community-staging-i686/drop-gweather-xml-include.patch (from rev 90805, gnome-panel/trunk/drop-gweather-xml-include.patch) =================================================================== --- community-staging-i686/drop-gweather-xml-include.patch (rev 0) +++ community-staging-i686/drop-gweather-xml-include.patch 2013-05-14 07:41:14 UTC (rev 90806) @@ -0,0 +1,10 @@ +--- applets/clock/clock.c.orig 2012-12-25 14:38:00.101601746 -0600 ++++ applets/clock/clock.c 2012-12-25 14:38:30.331443803 -0600 +@@ -54,7 +54,6 @@ + #define GNOME_DESKTOP_USE_UNSTABLE_API + #include <libgnome-desktop/gnome-wall-clock.h> + +-#include <libgweather/gweather-xml.h> + #include <libgweather/location-entry.h> + #include <libgweather/timezone-menu.h> + #include <libgweather/gweather-enum-types.h> Copied: gnome-panel/repos/community-staging-i686/fix-autoconf.patch (from rev 90805, gnome-panel/trunk/fix-autoconf.patch) =================================================================== --- community-staging-i686/fix-autoconf.patch (rev 0) +++ community-staging-i686/fix-autoconf.patch 2013-05-14 07:41:14 UTC (rev 90806) @@ -0,0 +1,11 @@ +diff -Naur gnome-panel-3.6.2.orig/configure.ac gnome-panel-3.6.2/configure.ac +--- gnome-panel-3.6.2.orig/configure.ac 2012-11-12 18:51:14.000000000 +0100 ++++ gnome-panel-3.6.2/configure.ac 2013-04-10 14:50:14.132509059 +0200 +@@ -1,6 +1,6 @@ + AC_INIT([gnome-panel], [3.6.2], + [http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-panel]) +-AM_CONFIG_HEADER(config.h) ++AC_CONFIG_HEADERS(config.h) + AM_INIT_AUTOMAKE([1.11 no-dist-gzip dist-xz tar-ustar -Wno-portability]) + m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) + Copied: gnome-panel/repos/community-staging-i686/gnome-desktop-3.8.patch (from rev 90805, gnome-panel/trunk/gnome-desktop-3.8.patch) =================================================================== --- community-staging-i686/gnome-desktop-3.8.patch (rev 0) +++ community-staging-i686/gnome-desktop-3.8.patch 2013-05-14 07:41:14 UTC (rev 90806) @@ -0,0 +1,199 @@ +diff -Naur gnome-panel-3.6.2.orig/applets/clock/calendar-window.c gnome-panel-3.6.2/applets/clock/calendar-window.c +--- gnome-panel-3.6.2.orig/applets/clock/calendar-window.c 2012-11-12 18:35:17.000000000 +0100 ++++ gnome-panel-3.6.2/applets/clock/calendar-window.c 2013-04-08 23:10:30.451012763 +0200 +@@ -42,9 +42,6 @@ + #include <glib/gi18n.h> + #include <gio/gio.h> + +-#define GNOME_DESKTOP_USE_UNSTABLE_API +-#include <libgnome-desktop/gnome-desktop-utils.h> +- + #include "calendar-window.h" + + #include "clock.h" +@@ -168,6 +165,13 @@ + return; + } + ++ /* FIXME: reintroduce terminal support if a proper GAppInfo port of gnome-panel is ever done */ ++ if (terminal) { ++ g_printerr ("Terminal-based calendar/tasks applications are no longer supported, sorry. " ++ "Please configure a different application.\n"); ++ return; ++ } ++ + command_line = g_find_program_in_path (program); + if (command_line == NULL) { + g_printerr ("Cannot launch calendar/tasks application: %s in path\n", program); +@@ -189,9 +193,6 @@ + screen = gtk_widget_get_screen (calwin->priv->calendar); + error = NULL; + +- if (terminal) +- gnome_desktop_prepend_terminal_to_vector (&argc, &argv); +- + display = gdk_screen_make_display_name (screen); + + result = g_spawn_async (NULL, /* working directory */ +diff -Naur gnome-panel-3.6.2.orig/gnome-panel/panel-run-dialog.c gnome-panel-3.6.2/gnome-panel/panel-run-dialog.c +--- gnome-panel-3.6.2.orig/gnome-panel/panel-run-dialog.c 2012-11-12 18:35:17.000000000 +0100 ++++ gnome-panel-3.6.2/gnome-panel/panel-run-dialog.c 2013-04-08 23:10:52.408175181 +0200 +@@ -25,6 +25,7 @@ + * Havoc Pennington <h...@pobox.com> + * George Lebl <ji...@5z.com> + * Mark McLoughlin <m...@skynet.ie> ++ * Tom Tromey (Copyright (C) 1998) + */ + + #include <config.h> +@@ -42,8 +43,6 @@ + #include <gdk/gdkkeysyms.h> + #include <gmenu-tree.h> + +-#include <libgnome-desktop/gnome-desktop-utils.h> +- + #include <libpanel-util/panel-error.h> + #include <libpanel-util/panel-glib.h> + #include <libpanel-util/panel-gtk.h> +@@ -335,6 +334,132 @@ + */ + } + ++ ++/** ++ * panel_run_dialog_prepend_terminal_to_vector: ++ * @argc: a pointer to the vector size ++ * @argv: a pointer to the vector ++ * ++ * Description: Prepends a terminal (either the one configured as default in ++ * the user's GNOME setup, or one of the common xterm emulators) to the passed ++ * in vector, modifying it in the process. The vector should be allocated with ++ * #g_malloc, as this will #g_free the original vector. Also all elements must ++ * have been allocated separately. That is the standard glib/GNOME way of ++ * doing vectors however. If the integer that @argc points to is negative, the ++ * size will first be computed. Also note that passing in pointers to a vector ++ * that is empty, will just create a new vector for you. ++ **/ ++/* TODO: throw out this function if there ever is a proper GAppInfo port */ ++static void ++panel_run_dialog_prepend_terminal_to_vector (int *argc, char ***argv) ++{ ++ char **real_argv; ++ int real_argc; ++ int i, j; ++ char **term_argv = NULL; ++ int term_argc = 0; ++ GSettings *settings; ++ ++ gchar *terminal = NULL; ++ ++ char **the_argv; ++ ++ g_return_if_fail (argc != NULL); ++ g_return_if_fail (argv != NULL); ++ ++ /* sanity */ ++ if(*argv == NULL) ++ *argc = 0; ++ ++ the_argv = *argv; ++ ++ /* compute size if not given */ ++ if (*argc < 0) { ++ for (i = 0; the_argv[i] != NULL; i++) ++ ; ++ *argc = i; ++ } ++ ++ settings = g_settings_new ("org.gnome.desktop.default-applications.terminal"); ++ terminal = g_settings_get_string (settings, "exec"); ++ ++ if (terminal) { ++ gchar *command_line; ++ gchar *exec_flag; ++ ++ exec_flag = g_settings_get_string (settings, "exec-arg"); ++ ++ if (exec_flag == NULL) ++ command_line = g_strdup (terminal); ++ else ++ command_line = g_strdup_printf ("%s %s", terminal, ++ exec_flag); ++ ++ g_shell_parse_argv (command_line, ++ &term_argc, ++ &term_argv, ++ NULL /* error */); ++ ++ g_free (command_line); ++ g_free (exec_flag); ++ g_free (terminal); ++ } ++ ++ g_object_unref (settings); ++ ++ if (term_argv == NULL) { ++ char *check; ++ ++ term_argc = 2; ++ term_argv = g_new0 (char *, 3); ++ ++ check = g_find_program_in_path ("gnome-terminal"); ++ if (check != NULL) { ++ term_argv[0] = check; ++ /* Note that gnome-terminal takes -x and ++ * as -e in gnome-terminal is broken we use that. */ ++ term_argv[1] = g_strdup ("-x"); ++ } else { ++ if (check == NULL) ++ check = g_find_program_in_path ("nxterm"); ++ if (check == NULL) ++ check = g_find_program_in_path ("color-xterm"); ++ if (check == NULL) ++ check = g_find_program_in_path ("rxvt"); ++ if (check == NULL) ++ check = g_find_program_in_path ("xterm"); ++ if (check == NULL) ++ check = g_find_program_in_path ("dtterm"); ++ if (check == NULL) { ++ g_warning (_("Cannot find a terminal, using " ++ "xterm, even if it may not work")); ++ check = g_strdup ("xterm"); ++ } ++ term_argv[0] = check; ++ term_argv[1] = g_strdup ("-e"); ++ } ++ } ++ ++ real_argc = term_argc + *argc; ++ real_argv = g_new (char *, real_argc + 1); ++ ++ for (i = 0; i < term_argc; i++) ++ real_argv[i] = term_argv[i]; ++ ++ for (j = 0; j < *argc; j++, i++) ++ real_argv[i] = (char *)the_argv[j]; ++ ++ real_argv[i] = NULL; ++ ++ g_free (*argv); ++ *argv = real_argv; ++ *argc = real_argc; ++ ++ /* we use g_free here as we sucked all the inner strings ++ * out from it into real_argv */ ++ g_free (term_argv); ++} ++ + static gboolean + panel_run_dialog_launch_command (PanelRunDialog *dialog, + const char *command, +@@ -354,7 +479,7 @@ + screen = gtk_window_get_screen (GTK_WINDOW (dialog->run_dialog)); + + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->terminal_checkbox))) +- gnome_desktop_prepend_terminal_to_vector (&argc, &argv); ++ panel_run_dialog_prepend_terminal_to_vector (&argc, &argv); + + display = gdk_screen_make_display_name (screen); + Copied: gnome-panel/repos/community-staging-i686/gnome-panel.install (from rev 90805, gnome-panel/trunk/gnome-panel.install) =================================================================== --- community-staging-i686/gnome-panel.install (rev 0) +++ community-staging-i686/gnome-panel.install 2013-05-14 07:41:14 UTC (rev 90806) @@ -0,0 +1,12 @@ +post_install() { + glib-compile-schemas /usr/share/glib-2.0/schemas + gtk-update-icon-cache -q -t -f /usr/share/icons/hicolor +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} Copied: gnome-panel/repos/community-staging-x86_64/0001-Add-the-GNOME-Flashback-session.patch (from rev 90805, gnome-panel/trunk/0001-Add-the-GNOME-Flashback-session.patch) =================================================================== --- community-staging-x86_64/0001-Add-the-GNOME-Flashback-session.patch (rev 0) +++ community-staging-x86_64/0001-Add-the-GNOME-Flashback-session.patch 2013-05-14 07:41:14 UTC (rev 90806) @@ -0,0 +1,95 @@ +From a5b951654b856d899e8c6a4116b4ccc4f18aac91 Mon Sep 17 00:00:00 2001 +From: Jeremy Bicha <jbi...@ubuntu.com> +Date: Sun, 24 Feb 2013 17:22:29 -0500 +Subject: [PATCH] Add the GNOME Flashback session + +This was removed from gnome-session 3.7.4 so let's it add it back here +(under new name) + +https://bugzilla.gnome.org/show_bug.cgi?id=694625 +--- + data/Makefile.am | 18 +++++++++++++++++- + data/gnome-flashback.desktop.in | 7 +++++++ + data/gnome-flashback.session.desktop.in | 3 +++ + po/POTFILES.in | 2 ++ + 4 files changed, 29 insertions(+), 1 deletion(-) + create mode 100644 data/gnome-flashback.desktop.in + create mode 100644 data/gnome-flashback.session.desktop.in + +diff --git a/data/Makefile.am b/data/Makefile.am +index 83f82e2..84e1954 100644 +--- a/data/Makefile.am ++++ b/data/Makefile.am +@@ -30,17 +30,33 @@ gsettings_SCHEMAS = $(gsettings_schemas_in:.xml.in=.xml) + + @GSETTINGS_RULES@ + ++sessiondir = $(datadir)/gnome-session/sessions ++session_in_files = gnome-flashback.session.desktop.in ++session_DATA = $(session_in_files:.session.desktop.in=.session) ++ ++xsessiondir = $(datadir)/xsessions ++xsession_in_files = gnome-flashback.desktop.in ++xsession_DATA = $(xsession_in_files:.desktop.in=.desktop) ++ ++%.session: %.session.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ ++ ++@INTLTOOL_DESKTOP_RULE@ ++ + default_layoutdir = $(datadir)/gnome-panel + default_layout_DATA = panel-default-layout.layout + + EXTRA_DIST = \ + $(gsettings_schemas_in_in) \ ++ $(session_in_files) \ ++ $(xsession_in_files) \ + $(default_layout_DATA) + + CLEANFILES = \ + $(gsettings__enum_file) \ + $(gsettings_SCHEMAS_in) \ + $(gsettings_SCHEMAS) \ +- *.gschema.valid ++ *.gschema.valid \ ++ $(session_DATA) \ ++ $(xsession_DATA) + + -include $(top_srcdir)/git.mk +diff --git a/data/gnome-flashback.desktop.in b/data/gnome-flashback.desktop.in +new file mode 100644 +index 0000000..4856f75 +--- /dev/null ++++ b/data/gnome-flashback.desktop.in +@@ -0,0 +1,7 @@ ++[Desktop Entry] ++_Name=GNOME Flashback ++_Comment=This session logs you into GNOME with the traditional panel ++Exec=gnome-session --session=gnome-flashback ++TryExec=gnome-session ++Icon= ++Type=Application +diff --git a/data/gnome-flashback.session.desktop.in b/data/gnome-flashback.session.desktop.in +new file mode 100644 +index 0000000..c012c58 +--- /dev/null ++++ b/data/gnome-flashback.session.desktop.in +@@ -0,0 +1,3 @@ ++[GNOME Session] ++_Name=GNOME Flashback ++RequiredComponents=gnome-panel;gnome-settings-daemon;gnome-screensaver;metacity;nautilus-classic;notification-daemon;gnome-fallback-background-helper;gnome-fallback-media-keys-helper;gnome-fallback-mount-helper; +diff --git a/po/POTFILES.in b/po/POTFILES.in +index bc65c4c..a6aa6c7 100644 +--- a/po/POTFILES.in ++++ b/po/POTFILES.in +@@ -23,6 +23,8 @@ applets/wncklet/window-menu.c + applets/wncklet/wncklet.c + applets/wncklet/workspace-switcher.c + [type: gettext/glade]applets/wncklet/workspace-switcher.ui ++data/gnome-flashback.desktop.in ++data/gnome-flashback.session.desktop.in + data/org.gnome.gnome-panel.applet.clock.gschema.xml.in.in + data/org.gnome.gnome-panel.applet.fish.gschema.xml.in.in + data/org.gnome.gnome-panel.applet.window-list.gschema.xml.in.in +-- +1.7.10.4 + Copied: gnome-panel/repos/community-staging-x86_64/18_fix_force_quit_applet.patch (from rev 90805, gnome-panel/trunk/18_fix_force_quit_applet.patch) =================================================================== --- community-staging-x86_64/18_fix_force_quit_applet.patch (rev 0) +++ community-staging-x86_64/18_fix_force_quit_applet.patch 2013-05-14 07:41:14 UTC (rev 90806) @@ -0,0 +1,98 @@ +Description: Fix Force-Quit panel applet + This patch implements handling of XInput2 extension events in the applet. + Without this patch, the applet fails to recognize such events (either mouse + click for killing application, or escape key for exiting), hence freezing the + desktop. + . + Also fix the event mask in call of gdk_device_grab() for keyboard. +Author: Sébastien Villemot <sebast...@debian.org> +Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=698740 +Forwarded: no +Last-Update: 2013-01-28 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +--- a/gnome-panel/panel-force-quit.c ++++ b/gnome-panel/panel-force-quit.c +@@ -32,6 +32,8 @@ + #include <X11/Xlib.h> + #include <X11/keysym.h> + ++#include <X11/extensions/XInput2.h> ++ + #include "panel-icon-names.h" + #include "panel-stock-icons.h" + +@@ -246,22 +248,23 @@ + + static void + handle_button_press_event (GtkWidget *popup, +- XKeyEvent *event) ++ Display *display, ++ Window subwindow) + { + Window window; + + remove_popup (popup); + +- if (event->subwindow == None) ++ if (subwindow == None) + return; + + if (wm_state_atom == None) +- wm_state_atom = XInternAtom (event->display, "WM_STATE", FALSE); ++ wm_state_atom = XInternAtom (display, "WM_STATE", FALSE); + +- window = find_managed_window (event->display, event->subwindow); ++ window = find_managed_window (display, subwindow); + + if (window != None) { +- if (!gdk_x11_window_lookup_for_display (gdk_x11_lookup_xdisplay (event->display), window)) ++ if (!gdk_x11_window_lookup_for_display (gdk_x11_lookup_xdisplay (display), window)) + kill_window_question ((gpointer) window); + } + } +@@ -272,10 +275,12 @@ + GtkWidget *popup) + { + XEvent *xevent = (XEvent *) gdk_xevent; ++ XIEvent *xiev; ++ XIDeviceEvent *xidev; + + switch (xevent->type) { + case ButtonPress: +- handle_button_press_event (popup, &xevent->xkey); ++ handle_button_press_event (popup, xevent->xbutton.display, xevent->xbutton.subwindow); + return GDK_FILTER_REMOVE; + case KeyPress: + if (xevent->xkey.keycode == XKeysymToKeycode (xevent->xany.display, XK_Escape)) { +@@ -283,6 +288,21 @@ + return GDK_FILTER_REMOVE; + } + break; ++ case GenericEvent: ++ xiev = (XIEvent *) xevent->xcookie.data; ++ xidev = (XIDeviceEvent *) xiev; ++ switch (xiev->evtype) { ++ case XI_KeyPress: ++ if (xidev->detail == XKeysymToKeycode (xevent->xany.display, XK_Escape)) { ++ remove_popup (popup); ++ return GDK_FILTER_REMOVE; ++ } ++ break; ++ case XI_ButtonPress: ++ handle_button_press_event (popup, xidev->display, xidev->child); ++ return GDK_FILTER_REMOVE; ++ } ++ break; + default: + break; + } +@@ -331,7 +351,7 @@ + + status = gdk_device_grab (keyboard, root, + GDK_OWNERSHIP_NONE, FALSE, +- GDK_KEY_PRESS | GDK_KEY_RELEASE, ++ GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK, + NULL, time); + if (status != GDK_GRAB_SUCCESS) { + g_warning ("Keyboard grab failed\n"); Copied: gnome-panel/repos/community-staging-x86_64/PKGBUILD (from rev 90805, gnome-panel/trunk/PKGBUILD) =================================================================== --- community-staging-x86_64/PKGBUILD (rev 0) +++ community-staging-x86_64/PKGBUILD 2013-05-14 07:41:14 UTC (rev 90806) @@ -0,0 +1,79 @@ +# $Id$ +# Maintainer: Balló György <ballogyor+arch at gmail dot com> +# Contributor: Jan de Groot <j...@archlinux.org> + +pkgbase=gnome-panel +pkgname=('gnome-panel' 'gnome-flashback-session') +pkgver=3.6.2 +pkgrel=6 +arch=('i686' 'x86_64') +license=('GPL') +pkgdesc="Legacy GNOME panel" +url="https://live.gnome.org/GnomePanel" +depends=('dconf' 'evolution-data-server' 'gconf' 'gnome-desktop' 'gnome-menus' 'librsvg' + 'libwnck3' 'telepathy-glib') +makedepends=('gobject-introspection' 'intltool' 'yelp-tools' 'networkmanager' 'gnome-common') +install=$pkgbase.install +options=('!libtool') +source=(http://ftp.gnome.org/pub/gnome/sources/$pkgbase/${pkgver:0:3}/$pkgbase-$pkgver.tar.xz + gnome-desktop-3.8.patch + drop-gweather-xml-include.patch + 18_fix_force_quit_applet.patch + 0001-Add-the-GNOME-Flashback-session.patch + fix-autoconf.patch) +sha256sums=('a41c45c5512e796b8602ce50bf0d205993eab364c860aae31afa582d77b77079' + '3a67f4b07a7dd356fad6b40a43983f3945123ed40080eb153396a481b34efc0c' + 'e3298c62bc577969817c5d6752be83a5129004fd344e4f7998a0d8aa61874305' + '9d742f675d9e09a032bfe00e0523a4ef7e234589a74a6086243bf335ce212775' + '9db0d1dadd2183777ed39e84caca1096a857897bbcf0e18ad599996dd397f1e0' + '6828c097505d2dbbf465ed7ff694adbd646a0af2105c8dd864d1061bf0afea71') + +build() { + cd "$pkgbase-$pkgver" + + # Port to gnome-desktop 3.8 + patch -Np1 -i "$srcdir/gnome-desktop-3.8.patch" + + # Fix build with libgweather 3.8 + patch -Np0 -i "$srcdir/drop-gweather-xml-include.patch" + + # Fix force quit applet to avoid freeze + patch -Np1 -i "$srcdir/18_fix_force_quit_applet.patch" + + # Add GNOME Flashback session + # https://bugzilla.gnome.org/show_bug.cgi?id=694625 + patch -Np1 -i "$srcdir/0001-Add-the-GNOME-Flashback-session.patch" + + # Fix build + patch -Np1 -i "$srcdir/fix-autoconf.patch" + + autoreconf -fi + ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/lib/$pkgbase \ + --disable-static --disable-schemas-compile \ + PYTHON=/usr/bin/python2 + make +} + +package_gnome-panel() { + cd "$pkgbase-$pkgver" + make DESTDIR="$pkgdir" install + + # Remove unneeded script + rm "$pkgdir/usr/lib/gnome-panel/gnome-panel-add" + + # Split out the session files + rm -r "$pkgdir"/usr/share/{gnome-session,xsessions} +} + +package_gnome-flashback-session() { + pkgdesc="Shell for Gnome 3 which was initially called Gnome Fallback" + url="https://live.gnome.org/GnomeFlashback" + depends=('gnome-screensaver' 'gnome-panel' 'gnome-session' 'gnome-settings-daemon' + 'gnome-settings-daemon-compat' 'gnome-themes-standard' 'metacity' 'nautilus' + 'notification-daemon' 'polkit-gnome') + install= + + cd "$pkgbase-$pkgver" + make -C data DESTDIR="$pkgdir" install-sessionDATA + make -C data DESTDIR="$pkgdir" install-xsessionDATA +} Copied: gnome-panel/repos/community-staging-x86_64/drop-gweather-xml-include.patch (from rev 90805, gnome-panel/trunk/drop-gweather-xml-include.patch) =================================================================== --- community-staging-x86_64/drop-gweather-xml-include.patch (rev 0) +++ community-staging-x86_64/drop-gweather-xml-include.patch 2013-05-14 07:41:14 UTC (rev 90806) @@ -0,0 +1,10 @@ +--- applets/clock/clock.c.orig 2012-12-25 14:38:00.101601746 -0600 ++++ applets/clock/clock.c 2012-12-25 14:38:30.331443803 -0600 +@@ -54,7 +54,6 @@ + #define GNOME_DESKTOP_USE_UNSTABLE_API + #include <libgnome-desktop/gnome-wall-clock.h> + +-#include <libgweather/gweather-xml.h> + #include <libgweather/location-entry.h> + #include <libgweather/timezone-menu.h> + #include <libgweather/gweather-enum-types.h> Copied: gnome-panel/repos/community-staging-x86_64/fix-autoconf.patch (from rev 90805, gnome-panel/trunk/fix-autoconf.patch) =================================================================== --- community-staging-x86_64/fix-autoconf.patch (rev 0) +++ community-staging-x86_64/fix-autoconf.patch 2013-05-14 07:41:14 UTC (rev 90806) @@ -0,0 +1,11 @@ +diff -Naur gnome-panel-3.6.2.orig/configure.ac gnome-panel-3.6.2/configure.ac +--- gnome-panel-3.6.2.orig/configure.ac 2012-11-12 18:51:14.000000000 +0100 ++++ gnome-panel-3.6.2/configure.ac 2013-04-10 14:50:14.132509059 +0200 +@@ -1,6 +1,6 @@ + AC_INIT([gnome-panel], [3.6.2], + [http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-panel]) +-AM_CONFIG_HEADER(config.h) ++AC_CONFIG_HEADERS(config.h) + AM_INIT_AUTOMAKE([1.11 no-dist-gzip dist-xz tar-ustar -Wno-portability]) + m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) + Copied: gnome-panel/repos/community-staging-x86_64/gnome-desktop-3.8.patch (from rev 90805, gnome-panel/trunk/gnome-desktop-3.8.patch) =================================================================== --- community-staging-x86_64/gnome-desktop-3.8.patch (rev 0) +++ community-staging-x86_64/gnome-desktop-3.8.patch 2013-05-14 07:41:14 UTC (rev 90806) @@ -0,0 +1,199 @@ +diff -Naur gnome-panel-3.6.2.orig/applets/clock/calendar-window.c gnome-panel-3.6.2/applets/clock/calendar-window.c +--- gnome-panel-3.6.2.orig/applets/clock/calendar-window.c 2012-11-12 18:35:17.000000000 +0100 ++++ gnome-panel-3.6.2/applets/clock/calendar-window.c 2013-04-08 23:10:30.451012763 +0200 +@@ -42,9 +42,6 @@ + #include <glib/gi18n.h> + #include <gio/gio.h> + +-#define GNOME_DESKTOP_USE_UNSTABLE_API +-#include <libgnome-desktop/gnome-desktop-utils.h> +- + #include "calendar-window.h" + + #include "clock.h" +@@ -168,6 +165,13 @@ + return; + } + ++ /* FIXME: reintroduce terminal support if a proper GAppInfo port of gnome-panel is ever done */ ++ if (terminal) { ++ g_printerr ("Terminal-based calendar/tasks applications are no longer supported, sorry. " ++ "Please configure a different application.\n"); ++ return; ++ } ++ + command_line = g_find_program_in_path (program); + if (command_line == NULL) { + g_printerr ("Cannot launch calendar/tasks application: %s in path\n", program); +@@ -189,9 +193,6 @@ + screen = gtk_widget_get_screen (calwin->priv->calendar); + error = NULL; + +- if (terminal) +- gnome_desktop_prepend_terminal_to_vector (&argc, &argv); +- + display = gdk_screen_make_display_name (screen); + + result = g_spawn_async (NULL, /* working directory */ +diff -Naur gnome-panel-3.6.2.orig/gnome-panel/panel-run-dialog.c gnome-panel-3.6.2/gnome-panel/panel-run-dialog.c +--- gnome-panel-3.6.2.orig/gnome-panel/panel-run-dialog.c 2012-11-12 18:35:17.000000000 +0100 ++++ gnome-panel-3.6.2/gnome-panel/panel-run-dialog.c 2013-04-08 23:10:52.408175181 +0200 +@@ -25,6 +25,7 @@ + * Havoc Pennington <h...@pobox.com> + * George Lebl <ji...@5z.com> + * Mark McLoughlin <m...@skynet.ie> ++ * Tom Tromey (Copyright (C) 1998) + */ + + #include <config.h> +@@ -42,8 +43,6 @@ + #include <gdk/gdkkeysyms.h> + #include <gmenu-tree.h> + +-#include <libgnome-desktop/gnome-desktop-utils.h> +- + #include <libpanel-util/panel-error.h> + #include <libpanel-util/panel-glib.h> + #include <libpanel-util/panel-gtk.h> +@@ -335,6 +334,132 @@ + */ + } + ++ ++/** ++ * panel_run_dialog_prepend_terminal_to_vector: ++ * @argc: a pointer to the vector size ++ * @argv: a pointer to the vector ++ * ++ * Description: Prepends a terminal (either the one configured as default in ++ * the user's GNOME setup, or one of the common xterm emulators) to the passed ++ * in vector, modifying it in the process. The vector should be allocated with ++ * #g_malloc, as this will #g_free the original vector. Also all elements must ++ * have been allocated separately. That is the standard glib/GNOME way of ++ * doing vectors however. If the integer that @argc points to is negative, the ++ * size will first be computed. Also note that passing in pointers to a vector ++ * that is empty, will just create a new vector for you. ++ **/ ++/* TODO: throw out this function if there ever is a proper GAppInfo port */ ++static void ++panel_run_dialog_prepend_terminal_to_vector (int *argc, char ***argv) ++{ ++ char **real_argv; ++ int real_argc; ++ int i, j; ++ char **term_argv = NULL; ++ int term_argc = 0; ++ GSettings *settings; ++ ++ gchar *terminal = NULL; ++ ++ char **the_argv; ++ ++ g_return_if_fail (argc != NULL); ++ g_return_if_fail (argv != NULL); ++ ++ /* sanity */ ++ if(*argv == NULL) ++ *argc = 0; ++ ++ the_argv = *argv; ++ ++ /* compute size if not given */ ++ if (*argc < 0) { ++ for (i = 0; the_argv[i] != NULL; i++) ++ ; ++ *argc = i; ++ } ++ ++ settings = g_settings_new ("org.gnome.desktop.default-applications.terminal"); ++ terminal = g_settings_get_string (settings, "exec"); ++ ++ if (terminal) { ++ gchar *command_line; ++ gchar *exec_flag; ++ ++ exec_flag = g_settings_get_string (settings, "exec-arg"); ++ ++ if (exec_flag == NULL) ++ command_line = g_strdup (terminal); ++ else ++ command_line = g_strdup_printf ("%s %s", terminal, ++ exec_flag); ++ ++ g_shell_parse_argv (command_line, ++ &term_argc, ++ &term_argv, ++ NULL /* error */); ++ ++ g_free (command_line); ++ g_free (exec_flag); ++ g_free (terminal); ++ } ++ ++ g_object_unref (settings); ++ ++ if (term_argv == NULL) { ++ char *check; ++ ++ term_argc = 2; ++ term_argv = g_new0 (char *, 3); ++ ++ check = g_find_program_in_path ("gnome-terminal"); ++ if (check != NULL) { ++ term_argv[0] = check; ++ /* Note that gnome-terminal takes -x and ++ * as -e in gnome-terminal is broken we use that. */ ++ term_argv[1] = g_strdup ("-x"); ++ } else { ++ if (check == NULL) ++ check = g_find_program_in_path ("nxterm"); ++ if (check == NULL) ++ check = g_find_program_in_path ("color-xterm"); ++ if (check == NULL) ++ check = g_find_program_in_path ("rxvt"); ++ if (check == NULL) ++ check = g_find_program_in_path ("xterm"); ++ if (check == NULL) ++ check = g_find_program_in_path ("dtterm"); ++ if (check == NULL) { ++ g_warning (_("Cannot find a terminal, using " ++ "xterm, even if it may not work")); ++ check = g_strdup ("xterm"); ++ } ++ term_argv[0] = check; ++ term_argv[1] = g_strdup ("-e"); ++ } ++ } ++ ++ real_argc = term_argc + *argc; ++ real_argv = g_new (char *, real_argc + 1); ++ ++ for (i = 0; i < term_argc; i++) ++ real_argv[i] = term_argv[i]; ++ ++ for (j = 0; j < *argc; j++, i++) ++ real_argv[i] = (char *)the_argv[j]; ++ ++ real_argv[i] = NULL; ++ ++ g_free (*argv); ++ *argv = real_argv; ++ *argc = real_argc; ++ ++ /* we use g_free here as we sucked all the inner strings ++ * out from it into real_argv */ ++ g_free (term_argv); ++} ++ + static gboolean + panel_run_dialog_launch_command (PanelRunDialog *dialog, + const char *command, +@@ -354,7 +479,7 @@ + screen = gtk_window_get_screen (GTK_WINDOW (dialog->run_dialog)); + + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->terminal_checkbox))) +- gnome_desktop_prepend_terminal_to_vector (&argc, &argv); ++ panel_run_dialog_prepend_terminal_to_vector (&argc, &argv); + + display = gdk_screen_make_display_name (screen); + Copied: gnome-panel/repos/community-staging-x86_64/gnome-panel.install (from rev 90805, gnome-panel/trunk/gnome-panel.install) =================================================================== --- community-staging-x86_64/gnome-panel.install (rev 0) +++ community-staging-x86_64/gnome-panel.install 2013-05-14 07:41:14 UTC (rev 90806) @@ -0,0 +1,12 @@ +post_install() { + glib-compile-schemas /usr/share/glib-2.0/schemas + gtk-update-icon-cache -q -t -f /usr/share/icons/hicolor +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +}