Alexander Pyhalov
2016-07-08 ba15793d1bd648939b4abfd22eab219b07d218b0
Fix publishing issues in multiple components, mostly whitespace issues
50 files modified
1859 ■■■■ changed files
components/desktop/e/evas_generic_loaders/patches/01-poppler.patch 20 ●●●● patch | view | raw | blame | history
components/desktop/gnome2/GConf/patches/GConf-01-g11n-locale-alias.patch 11 ●●●● patch | view | raw | blame | history
components/desktop/gnome2/GConf/patches/GConf-02-GCONF_BACKEND_DIR.patch 11 ●●●● patch | view | raw | blame | history
components/desktop/gnome2/GConf/patches/GConf-03-user-specific-dbus.patch 6 ●●●● patch | view | raw | blame | history
components/desktop/gnome2/GConf/patches/GConf-04-no-defaults-service.patch 4 ●●●● patch | view | raw | blame | history
components/desktop/gnome2/GConf/patches/GConf-05-fixxref-options.patch 4 ●●●● patch | view | raw | blame | history
components/desktop/gnome2/deskbar-applet/patches/deskbar-applet-01-webeyes-compatibility.patch 4 ●●●● patch | view | raw | blame | history
components/desktop/gnome2/deskbar-applet/patches/deskbar-applet-02-multihead-support.patch 26 ●●●● patch | view | raw | blame | history
components/desktop/gnome2/deskbar-applet/patches/deskbar-applet-04-glib.patch 4 ●●●● patch | view | raw | blame | history
components/desktop/gnome2/gnome-panel/patches/gnome-panel-01-default-setup-indiana.patch 37 ●●●● patch | view | raw | blame | history
components/desktop/gnome2/gnome-panel/patches/gnome-panel-02-fish-applet.patch 66 ●●●● patch | view | raw | blame | history
components/desktop/gnome2/gnome-panel/patches/gnome-panel-03-concurrent-login.patch 40 ●●●● patch | view | raw | blame | history
components/desktop/gnome2/gnome-panel/patches/gnome-panel-05-notificationarea-tooltip.patch 21 ●●●● patch | view | raw | blame | history
components/desktop/gnome2/gnome-panel/patches/gnome-panel-06-input-method-filter-keypress.patch 11 ●●●● patch | view | raw | blame | history
components/desktop/gnome2/gnome-panel/patches/gnome-panel-07-restrict-app-launching.patch 629 ●●●● patch | view | raw | blame | history
components/desktop/gnome2/gnome-panel/patches/gnome-panel-08-launch-menu-indiana.patch 48 ●●●● patch | view | raw | blame | history
components/desktop/gnome2/gnome-panel/patches/gnome-panel-13-tooltip.patch 76 ●●●● patch | view | raw | blame | history
components/desktop/gnome2/gnome-panel/patches/gnome-panel-14-hide-show-weather.patch 71 ●●●● patch | view | raw | blame | history
components/desktop/gnome2/gnome-panel/patches/gnome-panel-15-use-vp-time.patch 16 ●●●● patch | view | raw | blame | history
components/desktop/gnome2/gnome-panel/patches/gnome-panel-16-clock.patch 4 ●●●● patch | view | raw | blame | history
components/desktop/gnome2/gnome-panel/patches/gnome-panel-17-gmodules.patch 5 ●●●●● patch | view | raw | blame | history
components/desktop/gnome2/gnome-panel/patches/gnome-panel-18-container_child_background_set_crash.patch 10 ●●●● patch | view | raw | blame | history
components/developer/gtk-doc/Makefile 1 ●●●● patch | view | raw | blame | history
components/editor/gedit/patches/02-py_ssize_t.patch 2 ●●● patch | view | raw | blame | history
components/editor/gedit/patches/03-clipboard-editability.patch 44 ●●●● patch | view | raw | blame | history
components/editor/gedit/patches/04-autoconf-version.patch 6 ●●●● patch | view | raw | blame | history
components/editor/gedit/patches/05-lt-init.patch 8 ●●●● patch | view | raw | blame | history
components/editor/gedit/patches/06-time-plugin.patch 30 ●●●● patch | view | raw | blame | history
components/editor/gedit/patches/08-link-ice.patch 8 ●●●● patch | view | raw | blame | history
components/editor/gedit/patches/10-fix-socket-exploit.patch 66 ●●●● patch | view | raw | blame | history
components/editor/gedit/patches/11-fix-gmodule.patch 8 ●●●● patch | view | raw | blame | history
components/library/gamin/patches/01-all.patch 246 ●●●● patch | view | raw | blame | history
components/library/gamin/patches/02-py27.patch 2 ●●● patch | view | raw | blame | history
components/library/gamin/patches/03-const.patch 15 ●●●● patch | view | raw | blame | history
components/library/gamin/patches/04-allow-override-pythondir.patch 6 ●●●● patch | view | raw | blame | history
components/library/grails/patches/CVE-2012-1833.patch 85 ●●●● patch | view | raw | blame | history
components/library/grails/patches/javadoc.xml.patch 24 ●●●● patch | view | raw | blame | history
components/library/grails/patches/skip-tests.patch 6 ●●●● patch | view | raw | blame | history
components/multimedia/rhythmbox/patches/no-ulong.patch 10 ●●●● patch | view | raw | blame | history
components/multimedia/rhythmbox/patches/rhythmbox-01-playcd.patch 12 ●●●● patch | view | raw | blame | history
components/multimedia/rhythmbox/patches/rhythmbox-02-gvfs.patch 2 ●●● patch | view | raw | blame | history
components/multimedia/rhythmbox/patches/rhythmbox-04-libmtp.patch 29 ●●●● patch | view | raw | blame | history
components/print/hplip/patches/01_build.patch 8 ●●●● patch | view | raw | blame | history
components/print/hplip/patches/02_HPCupsFilter.cpp.patch 45 ●●●● patch | view | raw | blame | history
components/print/hplip/patches/03_ErnieFilter.cpp.patch 5 ●●●●● patch | view | raw | blame | history
components/print/hplip/patches/04_pstotiff.patch 2 ●●● patch | view | raw | blame | history
components/print/hplip/patches/07_facls.detect.patch 4 ●●●● patch | view | raw | blame | history
components/print/hplip/patches/08_posix.ps.patch 2 ●●● patch | view | raw | blame | history
components/print/hplip/patches/09_nonGNUlibc.patch 2 ●●● patch | view | raw | blame | history
components/python/pywbem/patches/01-CVE-2013-6418-CVE-2013-6444.patch 57 ●●●● patch | view | raw | blame | history
components/desktop/e/evas_generic_loaders/patches/01-poppler.patch
@@ -2,7 +2,7 @@
+++ evas_generic_loaders-1.12.0/configure.ac    2015-03-24 18:16:40.754839975 +0300
@@ -73,13 +73,23 @@
       [have_poppler="no"])
    if test "x${have_poppler}" = "xno" ; then
-      PKG_CHECK_EXISTS([poppler >= 0.20],
+      PKG_CHECK_EXISTS([poppler >= 0.20 poppler < 0.30 ],
@@ -24,39 +24,39 @@
+         ],
+         [have_poppler="no"])
    fi
    if test "x${have_poppler}" = "xyes" ; then
--- evas_generic_loaders-1.12.0/config.h.in    2014-11-10 14:27:20.000000000 +0300
+++ evas_generic_loaders-1.12.0/config.h.in    2015-03-24 18:14:12.461601941 +0300
@@ -18,6 +18,9 @@
 /* Have poppler 0.20 */
 #undef HAVE_POPPLER_020
+/* Have poppler 0.30 */
+#undef HAVE_POPPLER_030
+
 /* Have shm_open() call */
 #undef HAVE_SHM_OPEN
--- evas_generic_loaders-1.12.0/src/bin/pdf/main.cpp.~1~    2013-12-11 17:56:58.000000000 +0400
+++ evas_generic_loaders-1.12.0/src/bin/pdf/main.cpp    2015-03-24 18:21:22.309224072 +0300
@@ -62,10 +62,12 @@
    if (!eina_init())
      goto del_global_param;
+#ifndef HAVE_POPPLER_030
    if (globalParams->getAntialias())
      globalParams->setAntialias((char *)"yes");
    if (globalParams->getVectorAntialias())
      globalParams->setVectorAntialias((char *)"yes");
+#endif
    pdfdoc = new PDFDoc(new GooString(file), NULL);
    if (!pdfdoc)
@@ -161,7 +163,7 @@
    if (!output_dev)
      return;
-#ifdef HAVE_POPPLER_020
+#if defined (HAVE_POPPLER_020) || defined (HAVE_POPPLER_030)
    output_dev->startDoc(pdfdoc);
@@ -64,10 +64,10 @@
    output_dev->startDoc(pdfdoc->getXRef());
@@ -170,7 +172,7 @@
    if (dpi <= 0.0) dpi = DEF_DPI;
-#ifdef HAVE_POPPLER_020
+#if defined (HAVE_POPPLER_020) || defined (HAVE_POPPLER_030)
    page->displaySlice(output_dev, dpi, dpi,
    page->displaySlice(output_dev, dpi, dpi,
                       0, false, false,
                       0, 0, width, height,
components/desktop/gnome2/GConf/patches/GConf-01-g11n-locale-alias.patch
@@ -6,13 +6,13 @@
 #include <time.h>
 #include <string.h>
+#include <stdio.h>
 static void
 gconf_locale_cache_add (GConfLocaleCache* cache,
@@ -189,7 +190,66 @@
  * Big mess o' cut-and-pasted code
  */
-/* --------------------------------------------------------------- */
+static GHashTable *alias_table = NULL;
+
@@ -74,14 +74,15 @@
+    }
+  return lang;
+}
 /* Mask for components of locale spec. The ordering here is from
  * least significant to most significant
@@ -360,6 +420,8 @@
           category_memory[0]= '\0';
           category_memory[0]= '\0';
           category_memory++;
+      cp = unalias_lang (cp); /* add locale alias support */
+
           if (strcmp (cp, "C") == 0)
             c_locale_defined= TRUE;
components/desktop/gnome2/GConf/patches/GConf-02-GCONF_BACKEND_DIR.patch
@@ -5,13 +5,13 @@
   gchar* file;
   gchar* retval;
+  gchar* gconf_backend_dir;
   g_return_val_if_fail(address != NULL, NULL);
@@ -181,7 +182,12 @@
   file = g_strconcat("gconfbackend-", back, NULL);
-  retval = g_module_build_path(GCONF_BACKEND_DIR, file);
+  gconf_backend_dir = g_getenv ("GCONF_BACKEND_DIR");
+  if (gconf_backend_dir == NULL)
@@ -19,5 +19,6 @@
+      gconf_backend_dir = GCONF_BACKEND_DIR;
+    }
+  retval = g_module_build_path(gconf_backend_dir, file);
   g_free(back);
components/desktop/gnome2/GConf/patches/GConf-03-user-specific-dbus.patch
@@ -5,7 +5,7 @@
         char *ior;
         GError *error = NULL;
+        const char *dbus_address = NULL;
         /* if the bus isn't running and we don't want to start gconfd then
          * we don't want to autolaunch the bus either, so bail early.
          */
@@ -17,7 +17,7 @@
@@ -2440,6 +2441,31 @@
                 return NULL;
         }
+    if ( dbus_address != NULL ) {
+            if (strncmp(dbus_address, "unix:path=", sizeof ("unix:path="))) {
+                const char *start_addr = dbus_address + sizeof ("unix:path=") - 1;
@@ -44,5 +44,5 @@
+        }
+
         g_type_init ();
         connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
components/desktop/gnome2/GConf/patches/GConf-04-no-defaults-service.patch
@@ -2,11 +2,11 @@
+++ GConf-2.32.4/gconf/default.path.in    2015-01-05 20:49:50.174890995 +0300
@@ -21,7 +21,8 @@
 xml:readwrite:$(HOME)/.gconf
 # Location for system-wide settings that are set by the defaults mechanism
-xml:readonly:@sysgconfdir@/gconf.xml.system
+# We dont use this default mechanism on opensolaris
+# xml:readonly:@sysgconfdir@/gconf.xml.system
 # To read in any defaults settings that the Sys Admin may have created
 # prior to a desktop system upgrade. The SysAdmin can stick default values
components/desktop/gnome2/GConf/patches/GConf-05-fixxref-options.patch
@@ -3,10 +3,10 @@
+++ GConf-2.28.0/doc/gconf/Makefile.in    2010-01-12 15:49:45.537400278 +0000
@@ -239,7 +239,7 @@
 MKDB_OPTIONS = --sgml-mode --output-format=xml
 # Extra options to supply to gtkdoc-fixref
-FIXXREF_OPTIONS = --extra-dir=../glib/html
+FIXXREF_OPTIONS = --extra-dir=../glib/html --module=$(DOC_MODULE)
 # Used for dependencies
 HFILE_GLOB = $(top_srcdir)/gconf/*.h
components/desktop/gnome2/deskbar-applet/patches/deskbar-applet-01-webeyes-compatibility.patch
@@ -6,7 +6,7 @@
+
+<!-- webeyes was replaced by deskbar-applet, transparently upgrade the user -->
+<oaf_server iid="OAFIID:GNOME_WebEyes"
+        type="factory"
+        type="factory"
+        location="OAFIID:Deskbar_Applet_Factory">
+
+    <oaf_attribute name="repo_ids" type="stringv">
@@ -30,6 +30,6 @@
-server_DATA = $(server_in_files:.server.in=.server)
+server_DATA = $(server_in_files:.server.in=.server) \
+    GNOME_WebEyes.server
 # ******************************************************************************
 # GConf Schemas
components/desktop/gnome2/deskbar-applet/patches/deskbar-applet-02-multihead-support.patch
@@ -2,12 +2,12 @@
+++ deskbar-applet-2.23.2/deskbar/ui/AbstractCuemiacDeskbarIcon.py    2008-05-29 16:20:59.272081000 +0100
@@ -31,7 +31,7 @@
         self._active_view = deskbar.BUTTON_UI_NAME
     def create_window_ui(self):
-        self._view = CuemiacWindowView(self._controller, self._core)
+        self._view = CuemiacWindowView(self._controller, self._core, self.applet)
         self._active_view = deskbar.WINDOW_UI_NAME
     def _setup_core (self):
--- deskbar-applet-2.23.2.old/deskbar/ui/CuemiacAlignedView.py    2008-05-29 16:18:39.930265000 +0100
+++ deskbar-applet-2.23.2/deskbar/ui/CuemiacAlignedView.py    2008-05-29 16:27:55.476993000 +0100
@@ -17,16 +17,16 @@
         self.applet.set_flags(gtk.CAN_FOCUS)
+        self.set_screen(applet.get_screen())
         self.applet.connect("change-orient", self._on_change_orient)
         self._screen_height = self.get_screen().get_height ()
@@ -59,6 +60,9 @@
     def get_toplevel(self):
         return self
+
+    def get_topwindow(self):
+        return self.applet.window
     def receive_focus(self, time):
         self.applet.set_state(gtk.STATE_SELECTED)
--- deskbar-applet-2.23.5.old/deskbar/ui/CuemiacWindowView.py    2008-05-29 16:18:39.930125000 +0100
@@ -34,7 +34,7 @@
@@ -8,11 +8,13 @@
     This class is responsible for setting up the GUI.
     """
-    def __init__(self, controller, model):
+    def __init__(self, controller, model, applet):
         AbstractCuemiacView.__init__(self, controller, model)
@@ -43,16 +43,16 @@
         self.__small_window_height = None
+        self.applet = applet
+        self.set_screen(applet.get_screen())
         self.connect("configure-event", self.__save_window_size)
         self.connect("delete-event", self._controller.on_quit)
@@ -50,6 +50,9 @@
     def get_toplevel(self):
         return self
+    def get_topwindow(self):
+        return self.applet.window
+
+
     def receive_focus(self, time):
         self.move( self._model.get_window_x(), self._model.get_window_y() )
         self.entry.grab_focus()
@@ -69,19 +69,19 @@
 import deskbar.interfaces.Controller
@@ -67,14 +68,14 @@ class CuemiacWindowController(deskbar.in
         self._focus_out = False
     def on_show_about(self, sender):
-        show_about(self._view.get_toplevel())
+        show_about(self._view.get_topwindow())
     def on_show_preferences(self, sender):
         prefs = DeskbarPreferences(self._model)
-        prefs.show_run_hide(self._view.get_toplevel())
+        prefs.show_run_hide(self._view.get_topwindow())
     def on_show_help(self, sender):
-        deskbar.core.Utils.launch_default_for_uri_and_scheme("ghelp:deskbar")
+        gnome.ui.help_display_uri_on_screen("ghelp:deskbar", (self._view.get_topwindow()).get_screen())
     def on_query_entry_changed(self, entry):
         self._view.set_clear()
components/desktop/gnome2/deskbar-applet/patches/deskbar-applet-04-glib.patch
@@ -11,9 +11,9 @@
@@ -2,7 +2,7 @@
 #ifndef __DESKBAR_EVOLUTION_H__
 #define __DESKBAR_EVOLUTION_H__
-#include <glib/gtypes.h>
+#include <glib.h>
 #include <gdk-pixbuf/gdk-pixbuf.h>
 G_BEGIN_DECLS
components/desktop/gnome2/gnome-panel/patches/gnome-panel-01-default-setup-indiana.patch
@@ -52,7 +52,7 @@
+        <int>28</int>
       </value>
     </entry>
@@ -109,13 +121,37 @@
     <entry><key>toplevels/top_panel/unhide_delay</key><schema_key>/schemas/apps/panel/toplevels/unhide_delay</schema_key></entry>
     <entry><key>toplevels/top_panel/auto_hide_size</key><schema_key>/schemas/apps/panel/toplevels/auto_hide_size</schema_key></entry>
@@ -93,9 +93,9 @@
+        <bool>true</bool>
+      </value>
+    </entry>
   <!-- Bottom Panel -->
@@ -137,7 +173,7 @@
       <key>toplevels/bottom_panel/size</key>
       <schema_key>/schemas/apps/panel/toplevels/size</schema_key>
@@ -145,13 +145,13 @@
+        <bool>true</bool>
+      </value>
+    </entry>
   <!-- Menu Bar -->
@@ -220,6 +280,60 @@
     <entry><key>objects/menu_bar/launcher_location</key><schema_key>/schemas/apps/panel/objects/launcher_location</schema_key></entry>
     <entry><key>objects/menu_bar/action_type</key><schema_key>/schemas/apps/panel/objects/action_type</schema_key></entry>
+  <!-- Home Launcher -->
+
+    <entry>
@@ -207,7 +207,7 @@
+    <entry><key>objects/home_launcher/action_type</key><schema_key>/schemas/apps/panel/objects/action_type</schema_key></entry>
+
   <!-- Browser Launcher -->
     <entry>
@@ -240,7 +354,7 @@
       <key>objects/browser_launcher/position</key>
@@ -226,7 +226,7 @@
+        <string>firefox.desktop</string>
       </value>
     </entry>
@@ -294,7 +408,7 @@
       <key>objects/email_launcher/position</key>
       <schema_key>/schemas/apps/panel/objects/position</schema_key>
@@ -239,7 +239,7 @@
@@ -328,59 +442,112 @@
     <entry><key>objects/email_launcher/menu_path</key><schema_key>/schemas/apps/panel/objects/menu_path</schema_key></entry>
     <entry><key>objects/email_launcher/action_type</key><schema_key>/schemas/apps/panel/objects/action_type</schema_key></entry>
-  <!-- Window Menu Applet -->
-
+  <!-- Package Manager Launcher -->
@@ -349,7 +349,7 @@
+        <string>gnome-terminal.desktop</string>
       </value>
     </entry>
-    <entry><key>applets/window_menu/attached_toplevel_id</key><schema_key>/schemas/apps/panel/objects/attached_toplevel_id</schema_key> </entry>
-    <entry><key>applets/window_menu/tooltip</key><schema_key>/schemas/apps/panel/objects/tooltip</schema_key></entry>
-    <entry><key>applets/window_menu/use_custom_icon</key><schema_key>/schemas/apps/panel/objects/use_custom_icon</schema_key></entry>
@@ -366,9 +366,9 @@
+    <entry><key>objects/terminal_launcher/use_menu_path</key><schema_key>/schemas/apps/panel/objects/use_menu_path</schema_key></entry>
+    <entry><key>objects/terminal_launcher/menu_path</key><schema_key>/schemas/apps/panel/objects/menu_path</schema_key></entry>
+    <entry><key>objects/terminal_launcher/action_type</key><schema_key>/schemas/apps/panel/objects/action_type</schema_key></entry>
   <!-- Clock Applet -->
@@ -402,7 +569,7 @@
       <key>applets/clock/position</key>
       <schema_key>/schemas/apps/panel/objects/position</schema_key>
@@ -381,7 +381,7 @@
@@ -436,6 +603,63 @@
     <entry><key>applets/clock/launcher_location</key><schema_key>/schemas/apps/panel/objects/launcher_location</schema_key></entry>
     <entry><key>applets/clock/action_type</key><schema_key>/schemas/apps/panel/objects/action_type</schema_key></entry>
+  <!-- Mixer Applet -->
+
+    <entry>
@@ -440,7 +440,7 @@
+    <entry><key>applets/mixer/boundary_box</key><schema_key>/schemas/apps/panel/objects/boundary_box</schema_key></entry>
+
   <!-- Notification Area Applet -->
     <entry>
@@ -456,7 +680,7 @@
       <key>applets/notification_area/position</key>
@@ -463,7 +463,7 @@
@@ -652,6 +876,60 @@
     <entry><key>applets/workspace_switcher/launcher_location</key><schema_key>/schemas/apps/panel/objects/launcher_location</schema_key></entry>
     <entry><key>applets/workspace_switcher/action_type</key><schema_key>/schemas/apps/panel/objects/action_type</schema_key></entry>
+  <!-- Trash Applet -->
+
+    <entry>
@@ -519,17 +519,18 @@
+    <entry><key>applets/trash/action_type</key><schema_key>/schemas/apps/panel/objects/action_type</schema_key></entry>
+
   </entrylist>
 </gconfentryfile>
--- gnome-panel-2.32.1/icons/Makefile.am.~1~    2015-01-05 17:51:41.394166811 +0300
+++ gnome-panel-2.32.1/icons/Makefile.am    2015-01-05 17:56:37.313147797 +0300
@@ -3,7 +3,9 @@
 gegldir = $(datadir)/gnome-panel/pixmaps
 gegl_DATA =                 \
    gnome-gegl2-2.png        \
     gnome-gegl2-2.png        \
-    gnome-gegl2.png
+    gnome-gegl2.png            \
+    top-panel-image.png        \
+    bottom-panel-image.png
 EXTRA_DIST = $(gegl_DATA)
components/desktop/gnome2/gnome-panel/patches/gnome-panel-02-fish-applet.patch
@@ -4,46 +4,46 @@
@@ -174,7 +174,7 @@ PANEL_INPROCESS_ALL=
 PANEL_INPROCESS_APPLETS=
 AC_ARG_WITH(in-process-applets,
    AC_HELP_STRING([--with-in-process-applets=APPLETS],
     AC_HELP_STRING([--with-in-process-applets=APPLETS],
-        [comma-separated list of applets to compile in-process (possible values: none, clock, fish, notification-area, wncklet, all) @<:@default=none@:>@]),
+        [comma-separated list of applets to compile in-process (possible values: none, clock, notification-area, wncklet, all) @<:@default=none@:>@]),
    [for i in `echo $withval | tr , ' '`; do
        if test $i = "none"; then
            PANEL_INPROCESS_NONE=1
     [for i in `echo $withval | tr , ' '`; do
         if test $i = "none"; then
             PANEL_INPROCESS_NONE=1
@@ -182,20 +182,18 @@ AC_ARG_WITH(in-process-applets,
            PANEL_INPROCESS_ALL=1
        else if test $i = "clock"; then
            PANEL_INPROCESS_APPLETS="$PANEL_INPROCESS_APPLETS $i"
             PANEL_INPROCESS_ALL=1
         else if test $i = "clock"; then
             PANEL_INPROCESS_APPLETS="$PANEL_INPROCESS_APPLETS $i"
-        else if test $i = "fish"; then
-            PANEL_INPROCESS_APPLETS="$PANEL_INPROCESS_APPLETS $i"
        else if test $i = "notification-area"; then
            PANEL_INPROCESS_APPLETS="$PANEL_INPROCESS_APPLETS $i"
        else if test $i = "wncklet"; then
            PANEL_INPROCESS_APPLETS="$PANEL_INPROCESS_APPLETS $i"
        else
            echo "applet $i not recognized, ignoring..."
         else if test $i = "notification-area"; then
             PANEL_INPROCESS_APPLETS="$PANEL_INPROCESS_APPLETS $i"
         else if test $i = "wncklet"; then
             PANEL_INPROCESS_APPLETS="$PANEL_INPROCESS_APPLETS $i"
         else
             echo "applet $i not recognized, ignoring..."
-        fi; fi; fi; fi; fi; fi
+        fi; fi; fi; fi; fi
    done],
    [])
     done],
     [])
 if test -n "$PANEL_INPROCESS_ALL"; then
-    PANEL_INPROCESS_APPLETS="clock fish notification-area wncklet"
+    PANEL_INPROCESS_APPLETS="clock notification-area wncklet"
 fi
 if test -n "$PANEL_INPROCESS_NONE"; then
    PANEL_INPROCESS_APPLETS=""
     PANEL_INPROCESS_APPLETS=""
@@ -205,10 +203,6 @@ for i in $PANEL_INPROCESS_APPLETS; do
        CLOCK_COMPILE_INPROCESS=1
        AC_DEFINE([CLOCK_INPROCESS], 1,
        [Defined when compiling the clock applet in-process])
         CLOCK_COMPILE_INPROCESS=1
         AC_DEFINE([CLOCK_INPROCESS], 1,
         [Defined when compiling the clock applet in-process])
-    else if test $i = "fish"; then
-        FISH_COMPILE_INPROCESS=1
-        AC_DEFINE([FISH_INPROCESS], 1,
-        [Defined when compiling the fish applet in-process])
    else if test $i = "notification-area"; then
        NOTIFICATION_AREA_COMPILE_INPROCESS=1
        AC_DEFINE([NOTIFICATION_AREA_INPROCESS], 1,
     else if test $i = "notification-area"; then
         NOTIFICATION_AREA_COMPILE_INPROCESS=1
         AC_DEFINE([NOTIFICATION_AREA_INPROCESS], 1,
@@ -332,7 +326,6 @@ po/Makefile.in
 applets/Makefile
 applets/clock/Makefile
@@ -59,34 +59,34 @@
-help/fish/Makefile
 man/Makefile
 ])
/jds/bin/diff -uprN gnome-panel-2.28.0.old/applets/Makefile.am gnome-panel-2.28.0/applets/Makefile.am
--- gnome-panel-2.32.1/applets/Makefile.am.~1~    2015-01-05 18:00:34.916241811 +0300
+++ gnome-panel-2.32.1/applets/Makefile.am    2015-01-05 18:01:30.085717076 +0300
@@ -1,6 +1,5 @@
 SUBDIRS =            \
    clock            \
     clock            \
-    fish            \
    notification_area    \
    wncklet
     notification_area    \
     wncklet
/jds/bin/diff -uprN gnome-panel-2.28.0.old/help/Makefile.am gnome-panel-2.28.0/help/Makefile.am
--- gnome-panel-2.28.0.old/help/Makefile.am    2009-07-01 14:06:23.000000000 +0100
+++ gnome-panel-2.28.0/help/Makefile.am    2009-10-15 15:52:34.875929591 +0100
@@ -1,3 +1,3 @@
-SUBDIRS = clock fish
+SUBDIRS = clock
 -include $(top_srcdir)/git.mk
diff -ruN gnome-panel-2.29.92.1.orig/configure.in gnome-panel-2.29.92.1/configure.in
--- gnome-panel-2.29.92.1.orig/configure.ac    2010-03-15 03:26:34.022622316 +0000
+++ gnome-panel-2.29.92.1/configure.ac    2010-03-15 03:27:00.996859771 +0000
@@ -213,7 +213,7 @@
        WNCKLET_COMPILE_INPROCESS=1
        AC_DEFINE([WNCKLET_INPROCESS], 1,
        [Defined when compiling the wncklet applet in-process])
         WNCKLET_COMPILE_INPROCESS=1
         AC_DEFINE([WNCKLET_INPROCESS], 1,
         [Defined when compiling the wncklet applet in-process])
-    fi; fi; fi; fi
+    fi; fi; fi
 done
 if test "x$PANEL_INPROCESS_APPLETS" = "x"; then
    PANEL_INPROCESS_APPLETS="(none)"
     PANEL_INPROCESS_APPLETS="(none)"
components/desktop/gnome2/gnome-panel/patches/gnome-panel-03-concurrent-login.patch
@@ -3,7 +3,7 @@
+++ gnome-panel-2.27.91/gnome-panel/panel-default-setup.entries    2009-08-26 17:21:47.749945000 +0100
@@ -5,8 +5,8 @@
     <!-- List of toplevels -->
     <entry>
-      <key>general/toplevel_id_list</key>
-      <schema_key>/schemas/apps/panel/general/toplevel_id_list</schema_key>
@@ -14,7 +14,7 @@
           <value>
@@ -19,8 +19,8 @@
     <!-- List of objects -->
     <entry>
-      <key>general/object_id_list</key>
-      <schema_key>/schemas/apps/panel/general/object_id_list</schema_key>
@@ -25,7 +25,7 @@
           <value>
@@ -33,8 +33,8 @@
     <!-- List of applets -->
     <entry>
-      <key>general/applet_id_list</key>
-      <schema_key>/schemas/apps/panel/general/applet_id_list</schema_key>
@@ -38,35 +38,35 @@
--- gnome-panel-2.27.91.old/gnome-panel/panel-profile.c    2009-08-26 17:20:04.106305000 +0100
+++ gnome-panel-2.27.91/gnome-panel/panel-profile.c    2009-08-26 17:23:09.254481000 +0100
@@ -2518,7 +2518,12 @@ panel_profile_load (void)
    panel_compatibility_maybe_copy_old_config (client);
     panel_compatibility_maybe_copy_old_config (client);
+    /* Commenting this out till we figure out a clean way to migrate
+       objects of previous version of a release to the newer version
+       along with the objects that we intend to add to the newer version
+
    panel_compatibility_migrate_panel_id_list (client);
     panel_compatibility_migrate_panel_id_list (client);
+    */
    panel_profile_load_list (client,
                 PANEL_CONFIG_DIR,
     panel_profile_load_list (client,
                  PANEL_CONFIG_DIR,
/jds/bin/diff -uprN gnome-panel-2.27.91.old/gnome-panel/panel-gconf.c gnome-panel-2.27.91/gnome-panel/panel-gconf.c
--- gnome-panel-2.27.91.old/gnome-panel/panel-gconf.c    2009-08-26 17:20:04.144039000 +0100
+++ gnome-panel-2.27.91/gnome-panel/panel-gconf.c    2009-08-26 17:23:41.676124000 +0100
@@ -108,13 +108,13 @@ panel_gconf_key_type_to_id_list (PanelGC
    switch (type) {
    case PANEL_GCONF_TOPLEVELS:
     switch (type) {
     case PANEL_GCONF_TOPLEVELS:
-        retval = "toplevel_id_list";
+        retval = "toplevel_id_list_jds";
        break;
    case PANEL_GCONF_APPLETS:
         break;
     case PANEL_GCONF_APPLETS:
-        retval = "applet_id_list";
+        retval = "applet_id_list_jds";
        break;
    case PANEL_GCONF_OBJECTS:
         break;
     case PANEL_GCONF_OBJECTS:
-        retval = "object_id_list";
+        retval = "object_id_list_jds";
        break;
    default:
        retval = NULL;
         break;
     default:
         retval = NULL;
components/desktop/gnome2/gnome-panel/patches/gnome-panel-05-notificationarea-tooltip.patch
@@ -4,25 +4,25 @@
@@ -51,6 +51,11 @@ struct _NaTrayPrivate
   GtkWidget *box;
   GtkWidget *frame;
+  gulong query_tooltip_id;
+  gboolean tooltip_enabled;
+
+  GSList *icons;
+
   guint idle_redraw_id;
   GtkOrientation orientation;
@@ -146,12 +155,20 @@ tray_removed (NaTrayManager *manager,
               TraysScreen   *trays_screen)
 {
   NaTray *tray;
+  NaTrayPrivate *priv;
   tray = g_hash_table_lookup (trays_screen->icon_table, icon);
   if (tray == NULL)
     return;
+  priv = tray->priv;
+
   g_assert (tray->priv->trays_screen == trays_screen);
@@ -31,7 +31,7 @@
+  if (g_slist_length (priv->icons) == 0) {
+    priv->tooltip_enabled=TRUE;
+  }
   g_hash_table_remove (trays_screen->icon_table, icon);
   /* this will also destroy the tip associated to this icon */
@@ -727,3 +744,36 @@ na_tray_force_redraw (NaTray *tray)
@@ -45,7 +45,7 @@
+                              gint            y,
+                              gboolean        keyboard_mode,
+                              GtkTooltip     *tooltip,
+                              gpointer        user_data)
+                              gpointer        user_data)
+{
+  NaTray        *tray = (NaTray*)user_data;
+  NaTrayPrivate *priv;
@@ -54,7 +54,7 @@
+
+  gtk_tooltip_set_markup (tooltip, "Area where notification icons appear");
+
+  return ( priv->tooltip_enabled );
+  return ( priv->tooltip_enabled );
+}
+
+void
@@ -77,21 +77,22 @@
@@ -243,6 +243,8 @@ on_applet_realized (GtkWidget *widget,
   g_signal_connect (applet, "destroy",
                     G_CALLBACK (applet_destroy), data);
+  na_tray_set_tooltip (GTK_WIDGET (applet), tray);
+
   gtk_container_add (GTK_CONTAINER (applet), GTK_WIDGET (tray));
   gtk_widget_show (GTK_WIDGET (tray));
diff -ruN gnome-panel-2.29.92.orig/applets/notification_area/na-tray.c gnome-panel-2.29.92/applets/notification_area/na-tray.c
--- gnome-panel-2.29.92.orig/applets/notification_area/na-tray.c    2010-03-11 22:19:45.828748555 +0000
+++ gnome-panel-2.29.92/applets/notification_area/na-tray.c    2010-03-11 22:20:57.182639083 +0000
@@ -244,6 +244,9 @@
   gtk_box_pack_start (GTK_BOX (priv->box), icon, FALSE, FALSE, 0);
   gtk_box_reorder_child (GTK_BOX (priv->box), icon, position);
+  priv->icons = g_slist_append (priv->icons, icon);
+  priv->tooltip_enabled = FALSE;
+
   gtk_widget_show (icon);
 }
components/desktop/gnome2/gnome-panel/patches/gnome-panel-06-input-method-filter-keypress.patch
@@ -2,14 +2,15 @@
--- gnome-panel-2.26.3.old/gnome-panel/panel-run-dialog.c    2009-04-19 18:45:09.000000000 +0100
+++ gnome-panel-2.26.3/gnome-panel/panel-run-dialog.c    2009-07-01 18:48:11.982368000 +0100
@@ -1426,6 +1426,12 @@ entry_event (GtkEditable    *entry,
    char             *temp;
    int               pos, tmp;
     char             *temp;
     int               pos, tmp;
+    /* commit the string when IM is enabled */
+    if (GTK_ENTRY (entry)->editable && event->type == GDK_KEY_PRESS && event->length > 0) {
+        if (gtk_im_context_filter_keypress (GTK_ENTRY (entry)->im_context, event))
+            return TRUE;
+    }
+
    if (event->type != GDK_KEY_PRESS)
        return FALSE;
     if (event->type != GDK_KEY_PRESS)
         return FALSE;
components/desktop/gnome2/gnome-panel/patches/gnome-panel-07-restrict-app-launching.patch
@@ -1,40 +1,40 @@
--- gnome-panel-2.32.1/gnome-panel/Makefile.am.~1~    2010-09-29 20:51:03.000000000 +0400
+++ gnome-panel-2.32.1/gnome-panel/Makefile.am    2015-03-10 12:38:51.894270716 +0300
@@ -15,6 +15,7 @@
    -DGNOMELOCALEDIR=\""$(prefix)/$(DATADIRNAME)/locale"\"    \
    -DBUILDERDIR=\""$(uidir)"\"                \
    -DICONDIR=\""$(datadir)/gnome-panel/pixmaps"\"        \
     -DGNOMELOCALEDIR=\""$(prefix)/$(DATADIRNAME)/locale"\"    \
     -DBUILDERDIR=\""$(uidir)"\"                \
     -DICONDIR=\""$(datadir)/gnome-panel/pixmaps"\"        \
+    -DGMENU_I_KNOW_THIS_IS_UNSTABLE             \
    $(DISABLE_DEPRECATED_CFLAGS)
     $(DISABLE_DEPRECATED_CFLAGS)
 AM_CFLAGS = $(WARN_CFLAGS)
@@ -134,7 +135,8 @@
    $(top_builddir)/gnome-panel/libpanel-util/libpanel-util.la            \
    $(PANEL_LIBS)                                    \
    $(XRANDR_LIBS)                                    \
     $(top_builddir)/gnome-panel/libpanel-util/libpanel-util.la            \
     $(PANEL_LIBS)                                    \
     $(XRANDR_LIBS)                                    \
-    $(X_LIBS)
+    $(X_LIBS)                                    \
+    -lsecdb
 gnome_panel_LDFLAGS = -export-dynamic
@@ -143,12 +145,15 @@
    panel-ditem-editor.c        \
    panel-marshal.c            \
    panel-util.c            \
     panel-ditem-editor.c        \
     panel-marshal.c            \
     panel-util.c            \
+    panel-lockdown.c        \
+    panel-gconf.c            \
    xstuff.c
     xstuff.c
 gnome_desktop_item_edit_LDADD =     \
    $(top_builddir)/gnome-panel/libpanel-util/libpanel-util.la    \
    $(PANEL_LIBS)                            \
     $(top_builddir)/gnome-panel/libpanel-util/libpanel-util.la    \
     $(PANEL_LIBS)                            \
-    $(X_LIBS)
+    $(X_LIBS)                            \
+    -lsecdb
 panel_test_applets_SOURCES =        \
    panel-modules.c            \
     panel-modules.c            \
--- gnome-panel-2.30.2.orig/gnome-panel/gnome-desktop-item-edit.c    2010-12-27 13:01:19.485602424 +0100
+++ gnome-panel-2.30.2/gnome-panel/gnome-desktop-item-edit.c    2010-12-27 12:47:44.055057740 +0100
@@ -18,7 +18,6 @@
@@ -42,22 +42,22 @@
 gboolean panel_global_config_get_tooltips_enabled (void) { return FALSE; }
 #include "panel-lockdown.h"
-gboolean panel_lockdown_get_disable_lock_screen (void) { return FALSE; }
 static int dialogs = 0;
 static gboolean create_new = FALSE;
@@ -103,6 +102,8 @@
    bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
    textdomain (GETTEXT_PACKAGE);
     bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
     textdomain (GETTEXT_PACKAGE);
+     panel_lockdown_init ();
+
    if (!gtk_init_with_args (&argc, &argv,
                             _("- Edit .desktop files"),
                             options,
     if (!gtk_init_with_args (&argc, &argv,
                              _("- Edit .desktop files"),
                              options,
@@ -220,5 +221,7 @@
    if (dialogs > 0)
        gtk_main ();
     if (dialogs > 0)
         gtk_main ();
+    panel_lockdown_finalize ();
+
         return 0;
@@ -66,28 +66,28 @@
+++ gnome-panel-2.32.1/gnome-panel/menu.c    2015-01-05 18:26:37.571796313 +0300
@@ -75,7 +75,8 @@
 static GSList *image_menu_items = NULL;
 static GtkWidget *populate_menu_from_directory (GtkWidget          *menu,
-                        GMenuTreeDirectory *directory);
+                        GMenuTreeDirectory *directory,
+                        gboolean           *is_hidden);
 static void panel_load_menu_image_deferred (GtkWidget   *image_menu_item,
                        GtkIconSize  icon_size,
                         GtkIconSize  icon_size,
@@ -1276,7 +1277,8 @@
 }
 static void
-submenu_to_display (GtkWidget *menu)
+submenu_to_display (GtkWidget *menu,
+                    gboolean  *is_hidden)
 {
    GMenuTree           *tree;
    GMenuTreeDirectory  *directory;
     GMenuTree           *tree;
     GMenuTreeDirectory  *directory;
@@ -1311,7 +1313,15 @@
    }
    if (directory)
     }
     if (directory)
-        populate_menu_from_directory (menu, directory);
+        { /* It's possible that is_hidden is NULL if we end up here from the show
+           signal, which could only happen for the top level menu. */
@@ -98,34 +98,34 @@
+            *is_hidden = local_is_hidden;
+        }
+    }
    append_callback = g_object_get_data (G_OBJECT (menu),
                         "panel-menu-append-callback");
     append_callback = g_object_get_data (G_OBJECT (menu),
                          "panel-menu-append-callback");
@@ -1325,10 +1335,11 @@
 submenu_to_display_in_idle (gpointer data)
 {
    GtkWidget *menu = GTK_WIDGET (data);
     GtkWidget *menu = GTK_WIDGET (data);
+    gboolean is_hidden = FALSE;
    g_object_set_data (G_OBJECT (menu), "panel-menu-idle-id", NULL);
     g_object_set_data (G_OBJECT (menu), "panel-menu-idle-id", NULL);
-    submenu_to_display (menu);
+    submenu_to_display (menu, &is_hidden);
    return FALSE;
     return FALSE;
 }
@@ -1423,19 +1434,25 @@
 static void
 create_submenu (GtkWidget          *menu,
        GMenuTreeDirectory *directory,
         GMenuTreeDirectory *directory,
-        GMenuTreeDirectory *alias_directory)
+        GMenuTreeDirectory *alias_directory,
+        gboolean           *is_hidden)
 {
    GtkWidget *menuitem;
    GtkWidget *submenu;
    gboolean   force_categories_icon;
     GtkWidget *menuitem;
     GtkWidget *submenu;
     gboolean   force_categories_icon;
+    submenu = create_fake_menu (directory);
+    if (panel_lockdown_get_restrict_application_launching ()) {
+        submenu_to_display (submenu, is_hidden);
@@ -133,57 +133,57 @@
+        *is_hidden = FALSE;
+    }
+
    if (alias_directory)
        menuitem = create_submenu_entry (menu, alias_directory);
    else
        menuitem = create_submenu_entry (menu, directory);
     if (alias_directory)
         menuitem = create_submenu_entry (menu, alias_directory);
     else
         menuitem = create_submenu_entry (menu, directory);
-    submenu = create_fake_menu (directory);
-
    gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), submenu);
    /* Keep the infor that we force (or not) the icons to be visible */
     gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), submenu);
     /* Keep the infor that we force (or not) the icons to be visible */
@@ -1444,15 +1461,21 @@
    g_object_set_data (G_OBJECT (submenu),
               "panel-menu-force-icon-for-categories",
               GINT_TO_POINTER (force_categories_icon));
     g_object_set_data (G_OBJECT (submenu),
                "panel-menu-force-icon-for-categories",
                GINT_TO_POINTER (force_categories_icon));
+
+    if (*is_hidden) {
+        gtk_widget_hide (menuitem);
+    }
 }
 static void
 static void
 create_header (GtkWidget       *menu,
-           GMenuTreeHeader *header)
+           GMenuTreeHeader *header,
+           gboolean *is_hidden)
 {
    GMenuTreeDirectory *directory;
    GtkWidget          *menuitem;
     GMenuTreeDirectory *directory;
     GtkWidget          *menuitem;
+    *is_hidden = FALSE;
    directory = gmenu_tree_header_get_directory (header);
    menuitem = create_submenu_entry (menu, directory);
    gmenu_tree_item_unref (directory);
     directory = gmenu_tree_header_get_directory (header);
     menuitem = create_submenu_entry (menu, directory);
     gmenu_tree_item_unref (directory);
@@ -1469,10 +1492,12 @@
 static void
 create_menuitem (GtkWidget          *menu,
         GMenuTreeEntry     *entry,
          GMenuTreeEntry     *entry,
-         GMenuTreeDirectory *alias_directory)
+         GMenuTreeDirectory *alias_directory,
+                                    gboolean *is_hidden)
 {
    GtkWidget  *menuitem;
     GtkWidget  *menuitem;
+        *is_hidden = FALSE;
    menuitem = panel_image_menu_item_new ();
    g_object_set_data_full (G_OBJECT (menuitem),
     menuitem = panel_image_menu_item_new ();
     g_object_set_data_full (G_OBJECT (menuitem),
@@ -1553,12 +1578,18 @@
    g_signal_connect (menuitem, "activate",
              G_CALLBACK (activate_app_def), entry);
     g_signal_connect (menuitem, "activate",
               G_CALLBACK (activate_app_def), entry);
-    gtk_widget_show (menuitem);
+    if (entry != NULL && !panel_lockdown_is_allowed_menu_entry (entry)) {
+        gtk_widget_hide (menuitem);
@@ -192,151 +192,151 @@
+        gtk_widget_show (menuitem);
+    }
 }
 static void
 create_menuitem_from_alias (GtkWidget      *menu,
-                GMenuTreeAlias *alias)
+                GMenuTreeAlias *alias,
+                gboolean *is_hidden)
 {
    GMenuTreeItem *aliased_item;
     GMenuTreeItem *aliased_item;
@@ -1568,13 +1599,15 @@
    case GMENU_TREE_ITEM_DIRECTORY:
        create_submenu (menu,
                GMENU_TREE_DIRECTORY (aliased_item),
     case GMENU_TREE_ITEM_DIRECTORY:
         create_submenu (menu,
                 GMENU_TREE_DIRECTORY (aliased_item),
-                gmenu_tree_alias_get_directory (alias));
+                gmenu_tree_alias_get_directory (alias),
+                is_hidden);
        break;
    case GMENU_TREE_ITEM_ENTRY:
        create_menuitem (menu,
                 GMENU_TREE_ENTRY (aliased_item),
         break;
     case GMENU_TREE_ITEM_ENTRY:
         create_menuitem (menu,
                  GMENU_TREE_ENTRY (aliased_item),
-                 gmenu_tree_alias_get_directory (alias));
+                 gmenu_tree_alias_get_directory (alias),
+                 is_hidden);
        break;
    default:
         break;
     default:
@@ -1681,13 +1714,15 @@
 static GtkWidget *
 populate_menu_from_directory (GtkWidget          *menu,
-                  GMenuTreeDirectory *directory)
+                  GMenuTreeDirectory *directory,
+                              gboolean *is_hidden)
 {
    GList    *children;
    GSList   *l;
    GSList   *items;
    gboolean  add_separator;
 {
     GList    *children;
     GSList   *l;
     GSList   *items;
     gboolean  add_separator;
+        *is_hidden = TRUE;
    children = gtk_container_get_children (GTK_CONTAINER (menu));
    add_separator = (children != NULL);
    g_list_free (children);
     children = gtk_container_get_children (GTK_CONTAINER (menu));
     add_separator = (children != NULL);
     g_list_free (children);
@@ -1696,6 +1731,7 @@
    for (l = items; l; l = l->next) {
        GMenuTreeItem *item = l->data;
     for (l = items; l; l = l->next) {
         GMenuTreeItem *item = l->data;
+        gboolean is_item_hidden = TRUE;
        if (add_separator ||
            gmenu_tree_item_get_type (item) == GMENU_TREE_ITEM_SEPARATOR) {
         if (add_separator ||
             gmenu_tree_item_get_type (item) == GMENU_TREE_ITEM_SEPARATOR) {
@@ -1705,11 +1741,13 @@
        switch (gmenu_tree_item_get_type (item)) {
        case GMENU_TREE_ITEM_DIRECTORY:
         switch (gmenu_tree_item_get_type (item)) {
         case GMENU_TREE_ITEM_DIRECTORY:
-            create_submenu (menu, GMENU_TREE_DIRECTORY (item), NULL);
+            create_submenu (menu, GMENU_TREE_DIRECTORY (item), NULL,
+                            &is_item_hidden);
            break;
        case GMENU_TREE_ITEM_ENTRY:
             break;
         case GMENU_TREE_ITEM_ENTRY:
-            create_menuitem (menu, GMENU_TREE_ENTRY (item), NULL);
+            create_menuitem (menu, GMENU_TREE_ENTRY (item), NULL,
+                             &is_item_hidden);
            break;
        case GMENU_TREE_ITEM_SEPARATOR :
             break;
         case GMENU_TREE_ITEM_SEPARATOR :
@@ -1717,11 +1755,13 @@
            break;
        case GMENU_TREE_ITEM_ALIAS:
             break;
         case GMENU_TREE_ITEM_ALIAS:
-            create_menuitem_from_alias (menu, GMENU_TREE_ALIAS (item));
+            create_menuitem_from_alias (menu, GMENU_TREE_ALIAS (item),
+                                        &is_item_hidden);
            break;
        case GMENU_TREE_ITEM_HEADER:
             break;
         case GMENU_TREE_ITEM_HEADER:
-            create_header (menu, GMENU_TREE_HEADER (item));
+            create_header (menu, GMENU_TREE_HEADER (item),
+                           &is_item_hidden);
            break;
        default:
             break;
         default:
@@ -1729,6 +1769,10 @@
        }
        gmenu_tree_item_unref (item);
         }
         gmenu_tree_item_unref (item);
+
+        if (!is_item_hidden) {
+            *is_hidden = FALSE;
+        }
    }
    g_slist_free (items);
     }
     g_slist_free (items);
--- gnome-panel-2.30.2.orig/gnome-panel/launcher.c    2010-06-22 19:27:02.000000000 +0200
+++ gnome-panel-2.30.2/gnome-panel/launcher.c    2010-12-27 12:47:44.045078620 +0100
@@ -105,6 +105,9 @@
    g_return_if_fail (launcher != NULL);
    g_return_if_fail (launcher->key_file != NULL);
     g_return_if_fail (launcher != NULL);
     g_return_if_fail (launcher->key_file != NULL);
+    if (panel_lockdown_is_forbidden_launcher (launcher))
+        return;
+
    /* FIXME panel_ditem_launch() should be enough for this! */
    url = panel_key_file_get_string (launcher->key_file, "URL");
     /* FIXME panel_ditem_launch() should be enough for this! */
     url = panel_key_file_get_string (launcher->key_file, "URL");
@@ -136,6 +139,9 @@
    g_return_if_fail (launcher != NULL);
    g_return_if_fail (launcher->key_file != NULL);
     g_return_if_fail (launcher != NULL);
     g_return_if_fail (launcher->key_file != NULL);
+    if (panel_lockdown_is_forbidden_launcher (launcher))
+        return;
+
    if (panel_global_config_get_enable_animations ())
        xstuff_zoom_animate (widget,
                     button_widget_get_pixbuf (BUTTON_WIDGET (widget)),
     if (panel_global_config_get_enable_animations ())
         xstuff_zoom_animate (widget,
                      button_widget_get_pixbuf (BUTTON_WIDGET (widget)),
@@ -253,6 +259,8 @@
        gtk_widget_destroy (dialog);
         gtk_widget_destroy (dialog);
 }
+static void panel_recheck_launcher (Launcher *launcher);
+
 static void
 free_launcher (gpointer data)
 {
@@ -266,6 +274,8 @@
        g_free (launcher->location);
    launcher->location = NULL;
         g_free (launcher->location);
     launcher->location = NULL;
+    panel_lockdown_notify_remove (G_CALLBACK (panel_recheck_launcher), launcher);
+
    g_free (launcher);
     g_free (launcher);
 }
@@ -410,6 +420,19 @@
 }
+static void
+panel_recheck_launcher (Launcher *launcher)
+{
+    if (!launcher || !launcher->button)
+        return;
+
+
+    if (panel_lockdown_is_forbidden_launcher (launcher)) {
+        gtk_widget_hide (launcher->button);
+    } else {
@@ -348,55 +348,55 @@
 create_launcher (const char *location)
 {
@@ -488,7 +511,11 @@
                          FALSE,
                          PANEL_ORIENTATION_TOP);
                           FALSE,
                           PANEL_ORIENTATION_TOP);
-    gtk_widget_show (launcher->button);
+    if (panel_lockdown_is_forbidden_launcher (launcher)) {
+        gtk_widget_hide (launcher->button);
+    } else {
+        gtk_widget_show (launcher->button);
+    }
    /*gtk_drag_dest_set (GTK_WIDGET (launcher->button),
               GTK_DEST_DEFAULT_ALL,
     /*gtk_drag_dest_set (GTK_WIDGET (launcher->button),
                GTK_DEST_DEFAULT_ALL,
@@ -515,6 +542,8 @@
                      G_CALLBACK (destroy_launcher),
                      launcher);
                       G_CALLBACK (destroy_launcher),
                       launcher);
+    panel_lockdown_notify_add (G_CALLBACK (panel_recheck_launcher), launcher);
+
    return launcher;
     return launcher;
 }
@@ -813,6 +842,12 @@
    /* setup button according to ditem */
    setup_button (launcher);
     /* setup button according to ditem */
     setup_button (launcher);
+    if (panel_lockdown_is_forbidden_launcher (launcher)) {
+        gtk_widget_hide (launcher->button);
+    } else {
+        gtk_widget_show (launcher->button);
+    }
+
    return launcher;
     return launcher;
 }
@@ -901,6 +936,10 @@
    if (file != NULL)
        panel_key_file_set_string (key_file, "Exec", file);
    panel_key_file_set_string (key_file, "Type", "Application");
     if (file != NULL)
         panel_key_file_set_string (key_file, "Exec", file);
     panel_key_file_set_string (key_file, "Type", "Application");
+
+    if (panel_lockdown_is_forbidden_key_file (key_file))
+        return; /* Application being dragged is forbidden so just return */
+
    panel_ditem_editor_sync_display (PANEL_DITEM_EDITOR (dialog));
    panel_ditem_register_save_uri_func (PANEL_DITEM_EDITOR (dialog),
     panel_ditem_editor_sync_display (PANEL_DITEM_EDITOR (dialog));
     panel_ditem_register_save_uri_func (PANEL_DITEM_EDITOR (dialog),
@@ -957,17 +996,18 @@
    location = panel_make_unique_desktop_uri (NULL, exec_or_uri);
    error = NULL;
     location = panel_make_unique_desktop_uri (NULL, exec_or_uri);
     error = NULL;
-    if (panel_key_file_to_file (key_file, location, &error)) {
-        panel_launcher_create (toplevel, position, location);
-    } else {
@@ -420,9 +420,9 @@
+                   g_error_free (error);
+           }
+    }
    g_key_file_free (key_file);
     g_key_file_free (key_file);
 }
--- gnome-panel-2.30.2.orig/gnome-panel/panel-action-button.c    2010-06-22 19:27:02.000000000 +0200
+++ gnome-panel-2.30.2/gnome-panel/panel-action-button.c    2010-12-27 12:47:44.039866740 +0100
@@ -207,8 +207,11 @@
@@ -437,36 +437,36 @@
+                    gtk_get_current_event_time ());
+    }
 }
 /* Search For Files
--- gnome-panel-2.30.2.orig/gnome-panel/panel-addto.c    2010-06-22 19:27:02.000000000 +0200
+++ gnome-panel-2.30.2/gnome-panel/panel-addto.c    2010-12-27 12:47:44.038546226 +0100
@@ -571,9 +571,10 @@
                        dialog, NULL);
                         dialog, NULL);
 }
-static void panel_addto_make_application_list (GSList             **parent_list,
+static gint panel_addto_make_application_list (GSList             **parent_list,
                           GMenuTreeDirectory  *directory,
                           const char          *filename);
                            GMenuTreeDirectory  *directory,
                            const char          *filename);
+static void panel_addto_dialog_free_item_info (PanelAddtoItemInfo *item_info);
 static void
 panel_addto_prepend_directory (GSList             **parent_list,
@@ -581,6 +582,7 @@
                   const char          *filename)
                    const char          *filename)
 {
    PanelAddtoAppList *data;
     PanelAddtoAppList *data;
+    gint entries_added = 0;
    data = g_new0 (PanelAddtoAppList, 1);
     data = g_new0 (PanelAddtoAppList, 1);
@@ -600,9 +602,16 @@
     * So the iid is built when we select the row.
     */
      * So the iid is built when we select the row.
      */
-    *parent_list = g_slist_prepend (*parent_list, data);
-
-
-    panel_addto_make_application_list (&data->children, directory, filename);
+    entries_added = panel_addto_make_application_list (&data->children, directory, filename);
+    if (entries_added > 0) {
@@ -479,27 +479,27 @@
+        g_free (data);
+    }
 }
 static void
@@ -624,12 +633,13 @@
    *parent_list = g_slist_prepend (*parent_list, data);
     *parent_list = g_slist_prepend (*parent_list, data);
 }
-static void
+static gint
 panel_addto_prepend_alias (GSList         **parent_list,
               GMenuTreeAlias  *alias,
               const char      *filename)
                GMenuTreeAlias  *alias,
                const char      *filename)
 {
    GMenuTreeItem *aliased_item;
     GMenuTreeItem *aliased_item;
+    gint entry = 0;
    aliased_item = gmenu_tree_alias_get_item (alias);
     aliased_item = gmenu_tree_alias_get_item (alias);
@@ -641,9 +651,14 @@
        break;
    case GMENU_TREE_ITEM_ENTRY:
         break;
     case GMENU_TREE_ITEM_ENTRY:
-        panel_addto_prepend_entry (parent_list,
-                       GMENU_TREE_ENTRY (aliased_item),
-                       filename);
@@ -511,63 +511,63 @@
+                        filename);
+            entry = 1;
+        }
        break;
    default:
         break;
     default:
@@ -651,15 +666,17 @@
    }
    gmenu_tree_item_unref (aliased_item);
     }
     gmenu_tree_item_unref (aliased_item);
+    return entry;
 }
-static void
+static gint
 panel_addto_make_application_list (GSList             **parent_list,
                   GMenuTreeDirectory  *directory,
                   const char          *filename)
                    GMenuTreeDirectory  *directory,
                    const char          *filename)
 {
    GSList *items;
    GSList *l;
     GSList *items;
     GSList *l;
+    gint number_entries = 0;
    items = gmenu_tree_directory_get_contents (directory);
     items = gmenu_tree_directory_get_contents (directory);
@@ -670,11 +687,15 @@
            break;
        case GMENU_TREE_ITEM_ENTRY:
             break;
         case GMENU_TREE_ITEM_ENTRY:
-            panel_addto_prepend_entry (parent_list, l->data, filename);
+            if (panel_lockdown_is_allowed_menu_entry (l->data)) {
+                panel_addto_prepend_entry (parent_list, l->data, filename);
+                number_entries = number_entries + 1;
+            }
            break;
        case GMENU_TREE_ITEM_ALIAS:
             break;
         case GMENU_TREE_ITEM_ALIAS:
-            panel_addto_prepend_alias (parent_list, l->data, filename);
+            number_entries = number_entries +
+                    panel_addto_prepend_alias (parent_list, l->data, filename);
            break;
        default:
             break;
         default:
@@ -687,6 +708,8 @@
    g_slist_free (items);
    *parent_list = g_slist_reverse (*parent_list);
     g_slist_free (items);
     *parent_list = g_slist_reverse (*parent_list);
+
+    return number_entries;
 }
 static void
--- gnome-panel-2.30.2.orig/gnome-panel/panel-lockdown.c    2010-02-09 13:32:08.000000000 +0100
+++ gnome-panel-2.30.2/gnome-panel/panel-lockdown.c    2010-12-27 12:59:35.878172712 +0100
@@ -28,13 +28,21 @@
 #include <string.h>
 #include "panel-gconf.h"
+#include <libpanel-util/panel-keyfile.h>
-#define N_LISTENERS 6
+#include <exec_attr.h>
+#include <user_attr.h>
@@ -575,7 +575,7 @@
+#include <pwd.h>
+
+#define N_LISTENERS 8
 #define PANEL_GLOBAL_LOCKDOWN_DIR    "/apps/panel/global"
 #define DESKTOP_GNOME_LOCKDOWN_DIR   "/desktop/gnome/lockdown"
 #define PANEL_GLOBAL_LOCKED_DOWN_KEY PANEL_GLOBAL_LOCKDOWN_DIR  "/locked_down"
@@ -592,13 +592,13 @@
+        guint   restrict_application_launching : 1;
+
+        GSList *allowed_applications;
         GSList *disabled_applets;
@@ -56,6 +68,12 @@
         GSList *closures;
 } PanelLockdown;
+static const gchar *command_line_execs[] = {
+    "/usr/bin/gnome-terminal",
+    "/usr/bin/xterm"
@@ -606,14 +606,14 @@
+#define NUMBER_COMMAND_LINE_EXECS   2
+
 static PanelLockdown panel_lockdown = { 0, };
@@ -63,9 +81,17 @@
 panel_lockdown_invoke_closures (PanelLockdown *lockdown)
 {
         GSList *l;
+        GSList *copy = NULL;
-        for (l = lockdown->closures; l; l = l->next)
+        copy = g_slist_copy (lockdown->closures);
+        for (l = copy; l != NULL; l = l->next) {
@@ -625,12 +625,12 @@
+        }
+        g_slist_free (copy);
 }
 static void
@@ -166,6 +192,50 @@
         panel_lockdown_invoke_closures (lockdown);
 }
+static void
+restrict_application_launching_notify (GConfClient   *client,
+                                       guint          cnxn_id,
@@ -681,7 +681,7 @@
@@ -215,9 +285,43 @@
         return retval;
 }
+static GSList *
+panel_lockdown_load_allowed_applications (PanelLockdown *lockdown,
+                                          GConfClient   *client,
@@ -707,7 +707,7 @@
 void
 panel_lockdown_init (void)
 {
+    if (panel_lockdown_is_user_authorized())
+    if (panel_lockdown_is_user_authorized())
+        {
+            panel_lockdown.locked_down = FALSE;
+            panel_lockdown.disable_command_line = FALSE;
@@ -721,12 +721,12 @@
+
         GConfClient *client;
         int          i = 0;
@@ -273,6 +377,18 @@
                                                       client,
                                                       i++);
+        panel_lockdown.restrict_application_launching =
+        panel_lockdown.restrict_application_launching =
+                panel_lockdown_load_bool (&panel_lockdown,
+                                          client,
+                                          RESTRICT_APPLICATION_LAUNCHING_KEY,
@@ -739,12 +739,12 @@
+                                                          i++);
+
         g_assert (i == N_LISTENERS);
         panel_lockdown.initialized = TRUE;
@@ -294,6 +410,13 @@
         g_slist_free (panel_lockdown.disabled_applets);
         panel_lockdown.disabled_applets = NULL;
+        for (l = panel_lockdown.allowed_applications; l; l = l->next) {
+                g_free (l->data);
+        }
@@ -758,7 +758,7 @@
@@ -371,6 +494,36 @@
         return FALSE;
 }
+gboolean
+panel_lockdown_get_restrict_application_launching (void)
+{
@@ -793,7 +793,7 @@
 panel_lockdown_notify_find (GSList    *closures,
                             GCallback  callback_func,
@@ -440,3 +593,243 @@
         g_closure_unref (closure);
 }
+
@@ -987,7 +987,7 @@
+            }
+            rolename = strtok(NULL, ",");
+        }
+
+
+        free_userattr(userattr);
+        cached_root = TRUE;
+    }
@@ -1041,30 +1041,30 @@
@@ -25,8 +25,11 @@
 #ifndef __PANEL_LOCKDOWN_H__
 #define __PANEL_LOCKDOWN_H__
+#include <libgnome/gnome-desktop-item.h>
 #include <glib.h>
 #include <glib-object.h>
+#include <gmenu-tree.h>
+#include "launcher.h"
 G_BEGIN_DECLS
@@ -39,13 +42,64 @@
 gboolean panel_lockdown_get_disable_log_out      (void);
 gboolean panel_lockdown_get_disable_force_quit   (void);
+gboolean panel_lockdown_get_restrict_application_launching (void);
+GSList  *panel_lockdown_get_allowed_applications (void);
+
 gboolean panel_lockdown_is_applet_disabled (const char *iid);
+gboolean panel_lockdown_is_allowed_application (const gchar *app);
 void panel_lockdown_notify_add    (GCallback callback_func,
                                    gpointer  user_data);
 void panel_lockdown_notify_remove (GCallback callback_func,
                                    gpointer  user_data);
+gchar *panel_lockdown_get_stripped_exec               (const gchar *full_exec);
+gchar *panel_lockdown_get_exec_from_ditem             (GnomeDesktopItem *ditem);
+gboolean panel_lockdown_ditem_in_allowed_applications (GnomeDesktopItem *ditem);
@@ -1113,22 +1113,22 @@
+#define ROOT_ROLE "root"
+
 G_END_DECLS
 #endif /* __PANEL_LOCKDOWN_H__ */
--- gnome-panel-2.30.2.orig/gnome-panel/panel-menu-bar.c    2010-06-22 19:27:02.000000000 +0200
+++ gnome-panel-2.30.2/gnome-panel/panel-menu-bar.c    2010-12-27 12:47:44.040378527 +0100
@@ -69,6 +69,8 @@
    PROP_ORIENTATION,
     PROP_ORIENTATION,
 };
+static GObjectClass *parent_class = NULL;
+
 static void panel_menu_bar_update_text_gravity (PanelMenuBar *menubar);
 static gboolean
@@ -132,6 +134,32 @@
 }
 static void
+panel_menu_bar_parent_set (GtkWidget *widget,
+                          GtkWidget *previous_parent);
@@ -1158,19 +1158,19 @@
+static void
 panel_menu_bar_init (PanelMenuBar *menubar)
 {
    GtkWidget *image;
     GtkWidget *image;
@@ -164,6 +192,8 @@
                   menubar->priv->desktop_item);
    panel_menu_bar_setup_tooltip (menubar);
                    menubar->priv->desktop_item);
     panel_menu_bar_setup_tooltip (menubar);
+    panel_lockdown_notify_add (G_CALLBACK (panel_menubar_recreate_menus),
+                               menubar);
    panel_menu_bar_update_text_gravity (menubar);
    g_signal_connect (menubar, "screen-changed",
     panel_menu_bar_update_text_gravity (menubar);
     g_signal_connect (menubar, "screen-changed",
@@ -172,6 +202,15 @@
 }
 static void
+panel_menu_bar_finalize (GObject *object)
+{
@@ -1182,30 +1182,30 @@
+
+static void
 panel_menu_bar_get_property (GObject    *object,
                 guint     prop_id,
                 GValue    *value,
                  guint     prop_id,
                  GValue    *value,
@@ -274,10 +313,13 @@
    gobject_class->get_property = panel_menu_bar_get_property;
     gobject_class->get_property = panel_menu_bar_get_property;
         gobject_class->set_property = panel_menu_bar_set_property;
+    gobject_class->finalize = panel_menu_bar_finalize;
    widget_class->parent_set = panel_menu_bar_parent_set;
    widget_class->size_allocate = panel_menu_bar_size_allocate;
     widget_class->parent_set = panel_menu_bar_parent_set;
     widget_class->size_allocate = panel_menu_bar_size_allocate;
+    parent_class = g_type_class_peek_parent (klass);
+
    g_type_class_add_private (klass, sizeof (PanelMenuBarPrivate));
    g_object_class_install_property (
     g_type_class_add_private (klass, sizeof (PanelMenuBarPrivate));
     g_object_class_install_property (
--- gnome-panel-2.30.2.orig/gnome-panel/panel-menu-items.c    2010-12-27 13:01:19.490005304 +0100
+++ gnome-panel-2.30.2/gnome-panel/panel-menu-items.c    2010-12-27 12:47:44.059419355 +0100
@@ -158,6 +158,21 @@
    char      *icon;
    char      *name;
    char      *comment;
     char      *icon;
     char      *name;
     char      *comment;
+    GnomeDesktopItem *ditem;
+
+
+    /* If restricted application, then don't append */
+    if (g_path_is_absolute (path))
+        ditem = gnome_desktop_item_new_from_file (path, 0, NULL);
@@ -1219,31 +1219,31 @@
+    if (ditem != NULL) {
+        gnome_desktop_item_unref (ditem);
+    }
    path_freeme = NULL;
     path_freeme = NULL;
@@ -1116,7 +1131,7 @@
    return places_menu;
     return places_menu;
 }
-static void
+void
 panel_place_menu_item_recreate_menu (GtkWidget *widget)
 {
    PanelPlaceMenuItem *place_item;
     PanelPlaceMenuItem *place_item;
@@ -1224,7 +1239,7 @@
    return desktop_menu;
     return desktop_menu;
 }
-static void
+void
 panel_desktop_menu_item_recreate_menu (PanelDesktopMenuItem *desktop_item)
 {
    if (desktop_item->priv->menu) {
     if (desktop_item->priv->menu) {
@@ -1592,8 +1607,11 @@
        tooltip = NULL;
    }
         tooltip = NULL;
     }
-    item = panel_menu_items_create_action_item_full (PANEL_ACTION_LOGOUT,
-                             label, tooltip);
+    if (!panel_lockdown_get_disable_log_out ()) {
@@ -1251,38 +1251,39 @@
+                                label, tooltip);
+    }
+
    g_free (label);
    g_free (tooltip);
     g_free (label);
     g_free (tooltip);
@@ -1619,5 +1637,21 @@
 panel_menu_item_activate_desktop_file (GtkWidget  *menuitem,
                       const char *path)
                        const char *path)
 {
+    GnomeDesktopItem *ditem;
+
+
+    if (g_path_is_absolute (path))
+        ditem = gnome_desktop_item_new_from_file (path, 0, NULL);
+    else
+        ditem = gnome_desktop_item_new_from_basename (path, 0, NULL);
+
+
+    if (ditem != NULL && panel_lockdown_is_forbidden_ditem (ditem)) {
+        gnome_desktop_item_unref (ditem);
+        return;        /* Don't launch as it's a forbidden desktop file */
+    }
+
+
+    if (ditem != NULL) {
+        gnome_desktop_item_unref (ditem);
+    }
+
    panel_launch_desktop_file (path, menuitem_to_screen (menuitem), NULL);
     panel_launch_desktop_file (path, menuitem_to_screen (menuitem), NULL);
 }
--- gnome-panel-2.30.2.orig/gnome-panel/panel-menu-items.h    2010-02-09 13:32:08.000000000 +0100
+++ gnome-panel-2.30.2/gnome-panel/panel-menu-items.h    2010-12-27 12:47:44.039156167 +0100
@@ -90,6 +90,8 @@
 void panel_menu_items_append_lock_logout (GtkWidget *menu);
 void panel_menu_item_activate_desktop_file (GtkWidget  *menuitem,
                        const char *path);
                         const char *path);
+void panel_place_menu_item_recreate_menu (GtkWidget *widget);
+void panel_desktop_menu_item_recreate_menu (PanelDesktopMenuItem *desktop_item);
 G_END_DECLS
components/desktop/gnome2/gnome-panel/patches/gnome-panel-08-launch-menu-indiana.patch
@@ -2,9 +2,9 @@
--- gnome-panel-2.27.92.old/gnome-panel/menu.c    2009-09-14 13:54:27.541171000 +0100
+++ gnome-panel-2.27.92/gnome-panel/menu.c    2009-09-14 13:55:13.776722000 +0100
@@ -1821,6 +1821,53 @@ main_menu_append (GtkWidget *main_menu,
    panel_menu_items_append_lock_logout (main_menu);
     panel_menu_items_append_lock_logout (main_menu);
 }
+void
+run_applications (GtkWidget *widget, gpointer user_data)
+{
@@ -59,37 +59,37 @@
--- gnome-panel-2.27.92.old/gnome-panel/menu.h    2009-09-14 13:54:27.545416000 +0100
+++ gnome-panel-2.27.92/gnome-panel/menu.h    2009-09-14 13:55:13.778639000 +0100
@@ -69,6 +69,8 @@ GtkWidget      *add_menu_separator   (Gt
 gboolean menu_dummy_button_press_event (GtkWidget      *menuitem,
                    GdkEventButton *event);
                     GdkEventButton *event);
+void run_applications (GtkWidget *widget, gpointer user_data);
+void applications_menu_append (GtkWidget *main_menu);
 G_END_DECLS
/jds/bin/diff -uprN gnome-panel-2.27.92.old/gnome-panel/panel-menu-items.c gnome-panel-2.27.92/gnome-panel/panel-menu-items.c
--- gnome-panel-2.27.92.old/gnome-panel/panel-menu-items.c    2009-09-14 13:54:27.547045000 +0100
+++ gnome-panel-2.27.92/gnome-panel/panel-menu-items.c    2009-09-14 13:55:13.788961000 +0100
@@ -1173,6 +1173,7 @@ panel_desktop_menu_item_append_menu (Gtk
        add_menu_separator (menu);
    panel_menu_items_append_from_desktop (menu, "yelp.desktop", NULL, FALSE);
         add_menu_separator (menu);
     panel_menu_items_append_from_desktop (menu, "yelp.desktop", NULL, FALSE);
+    panel_menu_items_append_from_desktop (menu, "openindiana-about.desktop", NULL, FALSE);
    panel_menu_items_append_from_desktop (menu, "gnome-about.desktop", NULL, FALSE);
    if (parent->priv->append_lock_logout)
     panel_menu_items_append_from_desktop (menu, "gnome-about.desktop", NULL, FALSE);
     if (parent->priv->append_lock_logout)
/jds/bin/diff -uprN gnome-panel-2.27.92.old/gnome-panel/panel-menu-bar.c gnome-panel-2.27.92/gnome-panel/panel-menu-bar.c
--- gnome-panel-2.27.92.old/gnome-panel/panel-menu-bar.c    2009-09-22 14:37:48.346822883 +0100
+++ gnome-panel-2.27.92/gnome-panel/panel-menu-bar.c    2009-09-22 14:51:43.685055758 +0100
@@ -154,13 +154,33 @@ panel_menubar_recreate_menus (PanelMenuB
                                                (PanelDesktopMenuItem *)menubar->priv->desktop_item);
                panel_menu_bar_parent_set ((GtkWidget *)menubar, NULL);
+               g_object_set_data (G_OBJECT (menubar->priv->applications_menu),
+                       "panel-menu-needs-appending", TRUE);
        }
 }
 static void
+panel_menu_bar_handle_gmenu_change(GMenuTree *tree,
+               GtkWidget *menu)
@@ -110,15 +110,15 @@
+static void
 panel_menu_bar_init (PanelMenuBar *menubar)
 {
    GtkWidget *image;
     GtkWidget *image;
+    GMenuTree *tree;
    menubar->priv = PANEL_MENU_BAR_GET_PRIVATE (menubar);
     menubar->priv = PANEL_MENU_BAR_GET_PRIVATE (menubar);
@@ -168,6 +188,20 @@ panel_menu_bar_init (PanelMenuBar *menub
    menubar->priv->applications_menu = create_applications_menu ("applications.menu", NULL, TRUE);
     menubar->priv->applications_menu = create_applications_menu ("applications.menu", NULL, TRUE);
+    tree = gmenu_tree_lookup ("applications.menu", GMENU_TREE_FLAGS_NONE);
+
+    gmenu_tree_add_monitor (tree,
@@ -133,6 +133,6 @@
+    g_signal_connect (menubar->priv->applications_menu, "show",
+            G_CALLBACK(applications_menu_append), NULL);
+
    menubar->priv->applications_item = panel_image_menu_item_new ();
    gtk_menu_item_set_label (GTK_MENU_ITEM (menubar->priv->applications_item),
                 _("Applications"));
     menubar->priv->applications_item = panel_image_menu_item_new ();
     gtk_menu_item_set_label (GTK_MENU_ITEM (menubar->priv->applications_item),
                  _("Applications"));
components/desktop/gnome2/gnome-panel/patches/gnome-panel-13-tooltip.patch
@@ -1,55 +1,55 @@
/jds/bin/diff -uprN gnome-panel-2.26.3.old/gnome-panel/panel-menu-items.c gnome-panel-2.26.3/gnome-panel/panel-menu-items.c
--- gnome-panel-2.26.3.old/gnome-panel/panel-menu-items.c    2009-07-01 20:43:32.816700000 +0100
+++ gnome-panel-2.26.3/gnome-panel/panel-menu-items.c    2009-07-01 20:45:37.780403000 +0100
@@ -604,7 +604,8 @@ panel_menu_item_append_drive (GtkWidget
                   title);
    g_object_unref (icon);
@@ -604,7 +604,8 @@ panel_menu_item_append_drive (GtkWidget
                    title);
     g_object_unref (icon);
-    tooltip = g_strdup_printf (_("Rescan %s"), title);
+    /* SUN_BRANDING tooltip */
+    tooltip = g_strdup_printf (_("Open %s"), title);
    panel_util_set_tooltip_text (item, tooltip);
    g_free (tooltip);
     panel_util_set_tooltip_text (item, tooltip);
     g_free (tooltip);
@@ -704,7 +705,8 @@ panel_menu_item_append_volume (GtkWidget
                   title);
    g_object_unref (icon);
                    title);
     g_object_unref (icon);
-    tooltip = g_strdup_printf (_("Mount %s"), title);
+    /* SUN_BRANDING tooltip */
+    tooltip = g_strdup_printf (_("Open %s"), title);
    panel_util_set_tooltip_text (item, tooltip);
    g_free (tooltip);
@@ -729,6 +731,7 @@ panel_menu_item_append_mount (GtkWidget
    GIcon  *icon;
    char   *display_name;
    char   *activation_uri;
     panel_util_set_tooltip_text (item, tooltip);
     g_free (tooltip);
@@ -729,6 +731,7 @@ panel_menu_item_append_mount (GtkWidget
     GIcon  *icon;
     char   *display_name;
     char   *activation_uri;
+    char   *tooltip;
    icon = g_mount_get_icon (mount);
    display_name = g_mount_get_name (mount);
@@ -737,12 +740,15 @@ panel_menu_item_append_mount (GtkWidget
    activation_uri = g_file_get_uri (root);
    g_object_unref (root);
     icon = g_mount_get_icon (mount);
     display_name = g_mount_get_name (mount);
@@ -737,12 +740,15 @@ panel_menu_item_append_mount (GtkWidget
     activation_uri = g_file_get_uri (root);
     g_object_unref (root);
+    /* SUN_BRANDING tooltip */
+    tooltip = g_strdup_printf (_("Open %s"), display_name);
    panel_menu_items_append_place_item (NULL, icon,
                        display_name,
     panel_menu_items_append_place_item (NULL, icon,
                         display_name,
-                        display_name, //FIXME tooltip
+                        tooltip,
                        menu,
                        G_CALLBACK (activate_uri),
                        activation_uri);
                         menu,
                         G_CALLBACK (activate_uri),
                         activation_uri);
+    g_free (tooltip);
    g_object_unref (icon);
    g_free (display_name);
     g_object_unref (icon);
     g_free (display_name);
@@ -1566,9 +1572,10 @@ panel_menu_items_append_lock_logout (Gtk
                     g_get_user_name ());
        /* Translators: this string is used ONLY if you translated
         * "1" (msgctxt: "panel:showusername") to "1" */
                      g_get_user_name ());
         /* Translators: this string is used ONLY if you translated
          * "1" (msgctxt: "panel:showusername") to "1" */
-        tooltip = g_strdup_printf (_("Log out %s of this session to "
-                         "log in as a different user"),
-                       user_name);
@@ -57,6 +57,6 @@
+        tooltip = g_strdup_printf (_("Log out %s from this session and "
+                         "return to log in screen"),
+                       g_get_user_name ());
    } else {
        label   = NULL;
        tooltip = NULL;
     } else {
         label   = NULL;
         tooltip = NULL;
components/desktop/gnome2/gnome-panel/patches/gnome-panel-14-hide-show-weather.patch
@@ -2,26 +2,26 @@
--- gnome-panel-2.27.91.old/applets/clock/clock.c    2009-08-27 18:45:22.763599000 +0100
+++ gnome-panel-2.27.91/applets/clock/clock.c    2009-08-27 18:57:31.552271000 +0100
@@ -146,6 +146,8 @@ struct _ClockData {
    GtkWidget *minutes_spin;
    GtkWidget *seconds_spin;
    GtkWidget *set_time_button;
     GtkWidget *minutes_spin;
     GtkWidget *seconds_spin;
     GtkWidget *set_time_button;
+    GtkWidget *show_weather_toggle;
+    GtkWidget *show_temperature_toggle;
    GtkListStore *cities_store;
     GtkListStore *cities_store;
         GtkWidget *cities_section;
@@ -234,6 +236,7 @@ static void applet_change_orient (PanelA
                  ClockData         *cd);
                   ClockData         *cd);
 static void edit_hide (GtkWidget *unused, ClockData *cd);
+static void update_show_weather_toggles (ClockData *cd);
 static gboolean edit_delete (GtkWidget *unused, GdkEvent *event, ClockData *cd);
 static void save_cities_store (ClockData *cd);
@@ -1975,11 +1978,38 @@ update_panel_weather (ClockData *cd)
                 gtk_widget_hide (cd->panel_temperature_label);
    if ((cd->show_weather || cd->show_temperature) &&
     if ((cd->show_weather || cd->show_temperature) &&
-        g_list_length (cd->locations) > 0)
-                gtk_widget_show (cd->weather_obox);
-        else
@@ -30,7 +30,7 @@
+        ClockLocation *loc = NULL;
+        GList *locations, *l;
+        gboolean current_found = FALSE;
+        /* need to process locations, if there is no current
+           location then hide the weather/temperature on panel */
+        locations = cd->locations;
@@ -50,7 +50,7 @@
+    } else {
+        gtk_widget_hide (cd->weather_obox);
+    }
+
+
+    if (g_list_length (cd->locations) <= 0) {
+        if (cd->panel_weather_icon)
+            gtk_image_set_from_pixbuf (GTK_IMAGE (cd->panel_weather_icon),
@@ -58,13 +58,13 @@
+        if (cd->panel_temperature_label)
+            gtk_label_set_text (GTK_LABEL (cd->panel_temperature_label), "");
+    }
    gtk_widget_queue_resize (cd->applet);
     gtk_widget_queue_resize (cd->applet);
 }
@@ -2074,19 +2104,7 @@ locations_changed (ClockData *cd)
    ClockLocation *loc;
    glong id;
     ClockLocation *loc;
     glong id;
-    if (!cd->locations) {
-        if (cd->weather_obox)
-            gtk_widget_hide (cd->weather_obox);
@@ -79,12 +79,12 @@
-            gtk_widget_show (cd->weather_obox);
-    }
+    update_panel_weather (cd);
    for (l = cd->locations; l; l = l->next) {
        loc = l->data;
     for (l = cd->locations; l; l = l->next) {
         loc = l->data;
@@ -3121,12 +3139,25 @@ edit_clear (ClockData *cd)
 }
 static void
+update_show_weather_toggles(ClockData *cd)
+{
@@ -101,26 +101,26 @@
 edit_hide (GtkWidget *unused, ClockData *cd)
 {
         GtkWidget *edit_window = _clock_get_widget (cd, "edit-location-window");
         gtk_widget_hide (edit_window);
         edit_clear (cd);
+        update_show_weather_toggles (cd);
 }
 static gboolean
@@ -3197,6 +3228,8 @@ run_prefs_locations_remove (GtkButton *b
         GtkTreeSelection *sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (cd->prefs_locations));
         gtk_tree_selection_selected_foreach (sel, remove_tree_row, cd);
+        update_panel_weather (cd);
+        update_show_weather_toggles (cd);
 }
 static void
@@ -3413,17 +3446,22 @@ fill_prefs_window (ClockData *cd)
                           G_CALLBACK (set_show_seconds_cb), cd);
    /* Set the "Show weather" checkbox */
     /* Set the "Show weather" checkbox */
-    widget = _clock_get_widget (cd, "weather_check");
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), cd->show_weather);
-    g_signal_connect (widget, "toggled",
@@ -129,8 +129,8 @@
+                                  cd->show_weather);
+    g_signal_connect (cd->show_weather_toggle, "toggled",
                           G_CALLBACK (set_show_weather_cb), cd);
    /* Set the "Show temperature" checkbox */
     /* Set the "Show temperature" checkbox */
-    widget = _clock_get_widget (cd, "temperature_check");
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), cd->show_temperature);
-    g_signal_connect (widget, "toggled",
@@ -139,21 +139,22 @@
+        GTK_TOGGLE_BUTTON (cd->show_temperature_toggle), cd->show_temperature);
+    g_signal_connect (cd->show_temperature_toggle, "toggled",
                           G_CALLBACK (set_show_temperature_cb), cd);
+    /* If no Locations then cannot show/hide weather/temperature */
+    update_show_weather_toggles (cd);
+
    /* Fill the Cities list */
    widget = _clock_get_widget (cd, "cities_list");
     /* Fill the Cities list */
     widget = _clock_get_widget (cd, "cities_list");
@@ -3490,8 +3528,10 @@ ensure_prefs_window_is_created (ClockDat
         GtkTreeSelection *selection;
         GWeatherLocation *world;
-        if (cd->prefs_window)
+        if (cd->prefs_window) {
+                update_show_weather_toggles (cd);
                 return;
+        }
         cd->prefs_window = _clock_get_widget (cd, "prefs-window");
components/desktop/gnome2/gnome-panel/patches/gnome-panel-15-use-vp-time.patch
@@ -6,21 +6,21 @@
 #include <math.h>
 #include <locale.h>
+#include <stdlib.h>
 #include <panel-applet.h>
 #include <panel-applet-gconf.h>
@@ -1647,7 +1648,10 @@
    can_set = can_set_system_time ();
    if (cd->time_settings_button)
     can_set = can_set_system_time ();
     if (cd->time_settings_button)
-        gtk_widget_set_sensitive (cd->time_settings_button, can_set);
+        if (can_set)
+            gtk_widget_set_sensitive (cd->time_settings_button, can_set);
+        else // hide widget rather than make it insensitive
+            gtk_widget_hide (cd->time_settings_button);
    if (cd->set_time_button) {
        gtk_widget_set_sensitive (cd->set_time_button, can_set != 0);
     if (cd->set_time_button) {
         gtk_widget_set_sensitive (cd->set_time_button, can_set != 0);
@@ -1848,14 +1852,12 @@
 static void
 run_time_settings (GtkWidget *unused, ClockData *cd)
@@ -40,5 +40,5 @@
+    }
+    refresh_clock_timeout (cd);
 }
 static void
components/desktop/gnome2/gnome-panel/patches/gnome-panel-16-clock.patch
@@ -1,11 +1,11 @@
--- gnome-panel-2.32.1/configure.ac.~2~    2015-01-05 19:15:39.730833689 +0300
+++ gnome-panel-2.32.1/configure.ac    2015-01-05 19:17:46.889390083 +0300
@@ -279,7 +279,7 @@
   if test "x$HAVE_BONOBO" = "xyes"; then
     PKG_CHECK_MODULES(PANEL_MODULE_BONOBO, ORBit-2.0 >= $ORBIT_REQUIRED libbonoboui-2.0 >= $LIBBONOBOUI_REQUIRED)
-    PKG_CHECK_MODULES(LIBPANEL_APPLET_BONOBO, ORBit-2.0 >= $ORBIT_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libbonoboui-2.0 >= $LIBBONOBOUI_REQUIRED gconf-2.0 >= $GCONF_REQUIRED)
+    PKG_CHECK_MODULES(LIBPANEL_APPLET_BONOBO, ORBit-2.0 >= $ORBIT_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libbonoboui-2.0 >= $LIBBONOBOUI_REQUIRED gconf-2.0 >= $GCONF_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED)
     dnl IDL directories
     ORBIT_IDL="`$PKG_CONFIG --variable=orbit_idl ORBit-2.0`"
components/desktop/gnome2/gnome-panel/patches/gnome-panel-17-gmodules.patch
@@ -1,10 +1,11 @@
--- gnome-panel-2.32.1/configure.ac.~1~    2010-11-17 14:22:15.000000000 +0300
+++ gnome-panel-2.32.1/configure.ac    2015-03-27 19:13:32.855312420 +0300
@@ -76,7 +76,7 @@
 PKG_CHECK_MODULES(EGG_SMCLIENT, ice sm gtk+-2.0)
-PKG_CHECK_MODULES(PANEL, gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED pango >= $PANGO_REQUIRED gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED gio-2.0 >= $GLIB_REQUIRED gio-unix-2.0 >= $GLIB_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED gconf-2.0 >= $GCONF_REQUIRED libgnome-menu >= $LIBGNOME_MENU_REQUIRED libcanberra-gtk dbus-glib-1 >= $DBUS_GLIB_REQUIRED)
+PKG_CHECK_MODULES(PANEL, gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED pango >= $PANGO_REQUIRED gtk+-2.0 >= $GTK_REQUIRED glib-2.0 >= $GLIB_REQUIRED gio-2.0 >= $GLIB_REQUIRED gio-unix-2.0 >= $GLIB_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED gconf-2.0 >= $GCONF_REQUIRED libgnome-menu >= $LIBGNOME_MENU_REQUIRED libcanberra-gtk dbus-glib-1 >= $DBUS_GLIB_REQUIRED gmodule-2.0)
 AC_SUBST(PANEL_CFLAGS)
 AC_SUBST(PANEL_LIBS)
components/desktop/gnome2/gnome-panel/patches/gnome-panel-18-container_child_background_set_crash.patch
@@ -3,12 +3,12 @@
--- gnome-panel-2.32.1/gnome-panel/libpanel-applet-private/panel-applet-frame-dbus.c.1    2015-12-02 10:24:02.082165842 +0300
+++ gnome-panel-2.32.1/gnome-panel/libpanel-applet-private/panel-applet-frame-dbus.c    2015-12-02 10:24:21.328460414 +0300
@@ -329,8 +329,7 @@
    PanelAppletFrameDBus *frame = PANEL_APPLET_FRAME_DBUS (object);
    if (frame->priv->bg_cancellable)
     PanelAppletFrameDBus *frame = PANEL_APPLET_FRAME_DBUS (object);
     if (frame->priv->bg_cancellable)
-        g_object_unref (frame->priv->bg_cancellable);
-    frame->priv->bg_cancellable = NULL;
+        g_cancellable_cancel (frame->priv->bg_cancellable);
    G_OBJECT_CLASS (panel_applet_frame_dbus_parent_class)->finalize (object);
     G_OBJECT_CLASS (panel_applet_frame_dbus_parent_class)->finalize (object);
 }
components/developer/gtk-doc/Makefile
@@ -32,6 +32,7 @@
CONFIGURE_OPTIONS+=    --sysconfdir=/etc
CONFIGURE_ENV+=        PYTHON=$(PYTHON)
CONFIGURE_ENV+=        PERL=$(PERL)
# common targets
build:        $(BUILD_32)
components/editor/gedit/patches/02-py_ssize_t.patch
@@ -3,7 +3,7 @@
@@ -4,6 +4,12 @@
 #include <gedit/gedit-message-bus.h>
 #include <gedit/gedit-message.h>
+#if PY_VERSION_HEX < 0x02050000
+typedef int Py_ssize_t;
+#define PY_SSIZE_T_MAX INT_MAX
components/editor/gedit/patches/03-clipboard-editability.patch
@@ -1,36 +1,36 @@
--- gedit-2.26.3.orig/gedit/gedit-view.c    2009-07-08 12:39:39.441938100 +0530
+++ gedit-2.26.3/gedit/gedit-view.c    2009-07-08 12:46:28.261536300 +0530
@@ -523,9 +523,8 @@ gedit_view_cut_clipboard (GeditView *vie
    /* FIXME: what is default editability of a buffer? */
    gtk_text_buffer_cut_clipboard (buffer,
                       clipboard,
     /* FIXME: what is default editability of a buffer? */
       gtk_text_buffer_cut_clipboard (buffer,
                          clipboard,
-                       !gedit_document_get_readonly (
-                               GEDIT_DOCUMENT (buffer)));
-
-
+                         TRUE); /* Fix Bug 6601741 */
+
    gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
                      gtk_text_buffer_get_insert (buffer),
                      GEDIT_VIEW_SCROLL_MARGIN,
+
     gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
                       gtk_text_buffer_get_insert (buffer),
                       GEDIT_VIEW_SCROLL_MARGIN,
@@ -575,8 +574,7 @@ gedit_view_paste_clipboard (GeditView *v
    gtk_text_buffer_paste_clipboard (buffer,
                     clipboard,
                     NULL,
       gtk_text_buffer_paste_clipboard (buffer,
                      clipboard,
                      NULL,
-                     !gedit_document_get_readonly (
-                        GEDIT_DOCUMENT (buffer)));
+                     TRUE); /* Fix Bug 6601741 */
    gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
                      gtk_text_buffer_get_insert (buffer),
     gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
                       gtk_text_buffer_get_insert (buffer),
@@ -608,9 +606,8 @@ gedit_view_delete_selection (GeditView *
    /* FIXME: what is default editability of a buffer? */
    gtk_text_buffer_delete_selection (buffer,
                      TRUE,
     /* FIXME: what is default editability of a buffer? */
     gtk_text_buffer_delete_selection (buffer,
                       TRUE,
-                      !gedit_document_get_readonly (
-                        GEDIT_DOCUMENT (buffer)));
-
-
+                      TRUE);  /* Fix Bug 6601741 */
+
    gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
                      gtk_text_buffer_get_insert (buffer),
                      GEDIT_VIEW_SCROLL_MARGIN,
+
     gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
                       gtk_text_buffer_get_insert (buffer),
                       GEDIT_VIEW_SCROLL_MARGIN,
components/editor/gedit/patches/04-autoconf-version.patch
@@ -3,10 +3,10 @@
+++ gedit-2.30.2/configure.ac    2010-04-23 12:38:34.586073252 +0100
@@ -1,6 +1,6 @@
 dnl Process this file with autoconf to produce a configure script.
-AC_PREREQ(2.63.2)
+#AC_PREREQ(2.63.2)
 m4_define(gedit_major_version,  2)
 m4_define(gedit_minor_version, 30)
diff -ruN gedit-2.30.2.orig/configure.ac gedit-2.30.2/configure.ac
@@ -15,7 +15,7 @@
@@ -24,6 +24,8 @@
 AM_MAINTAINER_MODE
 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
+AC_PROG_LIBTOOL
+
 # Checks for programs
components/editor/gedit/patches/05-lt-init.patch
@@ -3,13 +3,13 @@
+++ gedit-2.30.2/configure.ac   2010-04-22 15:41:53.799049461 +0100
@@ -36,8 +36,8 @@
 AC_PROG_OBJC
 # Initialize libtool
-LT_PREREQ([2.2.6])
-LT_INIT(disable-static)
+#LT_PREREQ([2.2.6])
+#LT_INIT(disable-static)
 GEDIT_API_VERSION=2.20
 AC_SUBST(GEDIT_API_VERSION)
diff -ruN gedit-2.30.2.orig/Makefile.am gedit-2.30.2/Makefile.am
@@ -18,9 +18,9 @@
@@ -1,7 +1,7 @@
 ## Process this file with automake to produce Makefile.in
 ACLOCAL_AMFLAGS = -I m4
-SUBDIRS = gedit pixmaps po data plugin-loaders plugins docs tests win32 osx
+SUBDIRS = gedit pixmaps po data plugin-loaders plugins docs win32 osx
 if !OS_OSX
 SUBDIRS += help
components/editor/gedit/patches/06-time-plugin.patch
@@ -3,38 +3,38 @@
+++ b/plugins/time/gedit-time-plugin.c    Thu May 27 15:34:14 2010 +0800
@@ -359,12 +359,6 @@
 {
    const gchar * str;
     const gchar * str;
-    if (!gconf_client_key_is_writable (plugin->priv->gconf_client,
-                       PROMPT_TYPE_KEY,
-                       NULL))
-    {
-        return;
-    }
    switch (prompt_type)
    {
     switch (prompt_type)
     {
@@ -406,12 +400,6 @@
 {
    g_return_if_fail (format != NULL);
     g_return_if_fail (format != NULL);
-    if (!gconf_client_key_is_writable (plugin->priv->gconf_client,
-                       SELECTED_FORMAT_KEY,
-                       NULL))
-    {
-        return;
-    }
    gconf_client_set_string (plugin->priv->gconf_client,
                 SELECTED_FORMAT_KEY,
     gconf_client_set_string (plugin->priv->gconf_client,
                  SELECTED_FORMAT_KEY,
@@ -438,10 +426,6 @@
 {
    g_return_if_fail (format != NULL);
     g_return_if_fail (format != NULL);
-    if (!gconf_client_key_is_writable (plugin->priv->gconf_client,
-                       CUSTOM_FORMAT_KEY,
-                       NULL))
-        return;
    gconf_client_set_string (plugin->priv->gconf_client,
                 CUSTOM_FORMAT_KEY,
     gconf_client_set_string (plugin->priv->gconf_client,
                  CUSTOM_FORMAT_KEY,
components/editor/gedit/patches/08-link-ice.patch
@@ -3,9 +3,9 @@
+++ ../SUNWgnome-text-editor-2.30.4.link/gedit-2.30.4/configure.ac    2011-06-01 16:10:02.560925030 +0000
@@ -322,6 +322,7 @@
    test "$os_win32" = "no"; then
    PKG_CHECK_MODULES(EGG_SMCLIENT, [
        sm >= 1.0.0
     PKG_CHECK_MODULES(EGG_SMCLIENT, [
         sm >= 1.0.0
+        ice
    ])
     ])
 else
    EGG_SMCLIENT_CFLAGS=
     EGG_SMCLIENT_CFLAGS=
components/editor/gedit/patches/10-fix-socket-exploit.patch
@@ -1,23 +1,23 @@
--- gedit-2.30.4.original/gedit/bacon-message-connection.c    2010-09-27 21:23:51.000000000 +0200
+++ gedit-2.30.4/gedit/bacon-message-connection.c    2012-05-09 06:40:48.923548188 +0200
@@ -39,6 +39,7 @@
    gboolean is_server;
    /* The socket path itself */
     gboolean is_server;
     /* The socket path itself */
+    char *socketdir;
    char *path;
    /* File descriptor of the socket */
     char *path;
     /* File descriptor of the socket */
@@ -222,18 +223,39 @@
 }
 static char *
-socket_filename (const char *prefix)
+socket_tempdir(const char *prefix)
 {
-    char *pattern, *newfile, *path, *filename;
+    struct stat s;
    const char *tmpdir;
     const char *tmpdir;
+    tmpdir = g_strdup_printf("%s/%s-%s", g_get_tmp_dir (), prefix, g_get_user_name ());
+
+    if (stat (tmpdir, &s) == -1)
@@ -42,42 +42,42 @@
+    char *pattern, *newfile, *path, *filename;
+
+    pattern = g_strdup_printf ("socket.*");
-    pattern = g_strdup_printf ("%s.%s.*", prefix, g_get_user_name ());
-    tmpdir = g_get_tmp_dir ();
    filename = find_file_with_pattern (tmpdir, pattern);
    if (filename == NULL)
    {
     filename = find_file_with_pattern (tmpdir, pattern);
     if (filename == NULL)
     {
-        newfile = g_strdup_printf ("%s.%s.%u", prefix,
-                g_get_user_name (), g_random_int ());
+        newfile = g_strdup_printf ("socket.%u", g_random_int ());
        path = g_build_filename (tmpdir, newfile, NULL);
        g_free (newfile);
    } else {
         path = g_build_filename (tmpdir, newfile, NULL);
         g_free (newfile);
     } else {
@@ -293,7 +315,9 @@
    g_return_val_if_fail (prefix != NULL, NULL);
    conn = g_new0 (BaconMessageConnection, 1);
     g_return_val_if_fail (prefix != NULL, NULL);
     conn = g_new0 (BaconMessageConnection, 1);
-    conn->path = socket_filename (prefix);
+
+    conn->socketdir = socket_tempdir(prefix);
+    conn->path = socket_filename (conn->socketdir, prefix);
    if (test_is_socket (conn->path) == FALSE)
    {
     if (test_is_socket (conn->path) == FALSE)
     {
@@ -310,6 +334,7 @@
    if (try_client (conn) == FALSE)
    {
        unlink (conn->path);
     if (try_client (conn) == FALSE)
     {
         unlink (conn->path);
+        rmdir (conn->socketdir);
        try_server (conn);
        if (conn->fd == -1)
        {
         try_server (conn);
         if (conn->fd == -1)
         {
@@ -353,6 +378,7 @@
    if (conn->is_server != FALSE) {
        unlink (conn->path);
     if (conn->is_server != FALSE) {
         unlink (conn->path);
+        rmdir (conn->socketdir);
    }
    if (conn->fd != -1) {
        close (conn->fd);
     }
     if (conn->fd != -1) {
         close (conn->fd);
components/editor/gedit/patches/11-fix-gmodule.patch
@@ -1,10 +1,10 @@
--- gedit-2.30.4/configure.ac.1    2015-03-27 17:50:14.967768934 +0300
+++ gedit-2.30.4/configure.ac    2015-03-27 17:51:11.541911646 +0300
@@ -277,6 +277,7 @@
    gtk+-2.0 >= 2.16.0
    gtksourceview-2.0 >= 2.9.7
    gconf-2.0 >= 1.1.11
     gtk+-2.0 >= 2.16.0
     gtksourceview-2.0 >= 2.9.7
     gconf-2.0 >= 1.1.11
+    gmodule-2.0 >= 0.28
 ])
 if test "$os_osx" = "no" &&
components/library/gamin/patches/01-all.patch
@@ -1,9 +1,9 @@
--- gamin-0.1.10/configure.in.~1~    2008-11-24 18:23:06.000000000 +0300
+++ gamin-0.1.10/configure.in    2015-03-21 00:38:51.710928100 +0300
@@ -42,6 +42,12 @@
    CFLAGS=""
     CFLAGS=""
 fi
+dnl If the user set no CFLAGS, then don't assume the autotools defaults of
+dnl "-g -O2". We set default CFLAGS later based on the --disable-debug flag.
+if test -z "$ENV_CFLAGS"; then
@@ -14,9 +14,9 @@
 RELDATE=`date +'%a %b %e %Y'`
 AC_SUBST(RELDATE)
@@ -279,6 +285,43 @@
    backends="${backends}, kqueue"
     backends="${backends}, kqueue"
 fi
+case "$os" in
+    solaris*)
+    AM_CONDITIONAL(ON_SOLARIS, true)
@@ -60,7 +60,7 @@
@@ -385,6 +428,14 @@
     AC_DEFINE(HAVE_CMSGCRED,1,[Have cmsgcred structure])
 fi
+dnl Check for getpeerucred support - Solaris
+
+AC_CHECK_HEADER(ucred.h,
@@ -70,33 +70,33 @@
+
+
 #### Abstract sockets
 AC_MSG_CHECKING(abstract socket namespace)
@@ -484,20 +535,20 @@
     if test "$PYTHON_VERSION" != ""
     then
    if test -r $with_python/include/python$PYTHON_VERSION/Python.h -a \
     if test -r $with_python/include/python$PYTHON_VERSION/Python.h -a \
-       -d $with_python/lib/python$PYTHON_VERSION/site-packages
+       -d $with_python/lib/python$PYTHON_VERSION/vendor-packages
    then
        PYTHON_INCLUDES=$with_python/include/python$PYTHON_VERSION
     then
         PYTHON_INCLUDES=$with_python/include/python$PYTHON_VERSION
-        PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages
+        PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/vendor-packages
    else
        if test -r $prefix/include/python$PYTHON_VERSION/Python.h
        then
            PYTHON_INCLUDES=$prefix/include/python$PYTHON_VERSION
     else
         if test -r $prefix/include/python$PYTHON_VERSION/Python.h
         then
             PYTHON_INCLUDES=$prefix/include/python$PYTHON_VERSION
-            PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages
+            PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/vendor-packages
        else
        if test -r /usr/include/python$PYTHON_VERSION/Python.h
        then
            PYTHON_INCLUDES=/usr/include/python$PYTHON_VERSION
         else
         if test -r /usr/include/python$PYTHON_VERSION/Python.h
         then
             PYTHON_INCLUDES=/usr/include/python$PYTHON_VERSION
-                PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages
+                PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/vendor-packages
        else
            echo could not find python$PYTHON_VERSION/Python.h
        fi
         else
             echo could not find python$PYTHON_VERSION/Python.h
         fi
@@ -512,7 +563,7 @@
     then
         pythondir='$(PYTHON_SITE_PACKAGES)'
@@ -109,7 +109,7 @@
@@ -529,6 +580,16 @@
 AC_SUBST(PYTHON_INCLUDES)
 AC_SUBST(PYTHON_SITE_PACKAGES)
+dnl Check for -lsocket -lnsl
+
+AC_CHECK_FUNC(gethostent, , AC_CHECK_LIB(nsl, gethostent))
@@ -121,16 +121,16 @@
+    AC_DEFINE([HAVE_SYS_MNTTAB_H], [], [Define if <sys/mnttab.h> is there]))
+
 dnl After all config-related tweaking of CFLAGS, set it to its "build" value
 AC_MSG_CHECKING(for more compiler warnings)
diff --git a/libgamin/Makefile.am b/libgamin/Makefile.am
index 35aa740..4f725a2 100644
--- a/libgamin/Makefile.am
+++ b/libgamin/Makefile.am
@@ -39,13 +39,24 @@ CLEANFILES=gam_error.c gam_event.c
 libgamin_1_la_LIBADD =
+if ON_SOLARIS
+libgamin_1_la_LDFLAGS = -Wl,-M$(srcdir)/gamin_sym.version \
+                        -version-info @GAMIN_VERSION_INFO@ @THREAD_LIBS@
@@ -138,7 +138,7 @@
 libgamin_1_la_LDFLAGS = -Wl,--version-script=$(srcdir)/gamin_sym.version \
                         -version-info @GAMIN_VERSION_INFO@ @THREAD_LIBS@
+endif
 libfam_la_SOURCES = $(libgamin_1_la_SOURCES)
 libfam_la_LIBADD = $(libgamin_1_la_LIBADD)
-libfam_la_LDFLAGS = -Wl,--version-script=$(srcdir)/gamin_sym.version    \
@@ -150,7 +150,7 @@
+libfam_la_LDFLAGS = -Wl,--version-script=$(srcdir)/gamin_sym.version   \
+                    -version-info @FAM_VERSION_INFO@ @THREAD_LIBS@
+endif
 #
 # Compile a program locally to check
diff --git a/libgamin/gam_api.c b/libgamin/gam_api.c
@@ -173,13 +173,13 @@
@@ -660,6 +666,10 @@ gamin_check_cred(GAMDataPtr conn, int fd)
     } cmsg;
 #endif
+#if defined(HAVE_GETPEERUCRED)
+    ucred_t *creds;
+#endif
+
     s_uid = getuid();
 #if defined(LOCAL_CREDS) && defined(HAVE_CMSGCRED)
@@ -726,11 +736,25 @@ retry:
                       fd, cr_len, (int) sizeof(cr));
@@ -226,18 +226,18 @@
--- a/server/Makefile.am
+++ b/server/Makefile.am
@@ -10,7 +10,7 @@ INCLUDES =                        \
    -DG_DISABLE_DEPRECATED
     -DG_DISABLE_DEPRECATED
 if GAMIN_DEBUG
-INCLUDES += -DGAM_DEBUG_ENABLED
+INCLUDES += -DGAM_DEBUG_ENABLED -g
 endif
@@ -68,6 +68,18 @@ if ENABLE_KQUEUE
 gam_server_SOURCES += gam_kqueue.c gam_kqueue.h
 endif
+if ENABLE_FEN
+gam_server_SOURCES += gam_fen.c gam_fen.h        \
+    fen-dump.c        \
@@ -252,7 +252,7 @@
+
 if ENABLE_HURD_MACH_NOTIFY
 gam_server_SOURCES += gam_hurd_mach_notify.c gam_hurd_mach_notify.h
diff --git a/server/fen-dump.c b/server/fen-dump.c
new file mode 100644
index 0000000..98d20eb
@@ -261,7 +261,7 @@
@@ -0,0 +1,77 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim:set expandtab ts=4 shiftwidth=4: */
+/*
+/*
+ * Copyright (c) 2008, 2010 Oracle and/or its affiliates, Inc. All rights
+ * reserved.
+ *
@@ -344,7 +344,7 @@
@@ -0,0 +1,29 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim:set expandtab ts=4 shiftwidth=4: */
+/*
+/*
+ * Copyright (c) 2008, 2010 Oracle and/or its affiliates, Inc. All rights
+ * reserved.
+ *
@@ -379,7 +379,7 @@
@@ -0,0 +1,197 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim:set expandtab ts=4 shiftwidth=4: */
+/*
+/*
+ * Copyright (c) 2008, 2010 Oracle and/or its affiliates, Inc. All rights
+ * reserved.
+ *
@@ -464,7 +464,7 @@
+
+/**
+ * fen_add
+ *
+ *
+ * Won't hold a ref, we have a timout callback to clean unused node_t.
+ * If there is no value for a key, add it and return it; else return the old
+ * one.
@@ -494,7 +494,7 @@
+    } else {
+        f->subs = g_list_prepend(f->subs, sub);
+    }
+
+
+    if (NODE_HAS_STATE(f, NODE_STATE_ASSOCIATED) ||
+      (node_lstat(f) == 0 && port_add(f) == 0)) {
+#ifndef GIO_COMPILATION
@@ -522,7 +522,7 @@
+fen_remove (const gchar *filename, gpointer sub, gboolean is_mondir)
+{
+    node_t* f;
+
+
+    g_assert (filename);
+    g_assert (sub);
+
@@ -546,7 +546,7 @@
+
+/**
+ * fen_init:
+ *
+ *
+ * FEN subsystem initializing.
+ */
+gboolean
@@ -582,7 +582,7 @@
@@ -0,0 +1,33 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim:set expandtab ts=4 shiftwidth=4: */
+/*
+/*
+ * Copyright (c) 2008, 2010 Oracle and/or its affiliates, Inc. All rights
+ * reserved.
+ *
@@ -621,7 +621,7 @@
@@ -0,0 +1,557 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim:set expandtab ts=4 shiftwidth=4: */
+/*
+/*
+ * Copyright (c) 2008, 2010 Oracle and/or its affiliates, Inc. All rights
+ * reserved.
+ *
@@ -713,7 +713,7 @@
+{
+    PSource *pn = (PSource *)source;
+    uint_t nget;
+
+
+    if (pn->pending) {
+        pn->pending = FALSE;
+        g_source_add_poll(source, PGPFD(source));
@@ -822,7 +822,7 @@
+port_events_process_cb(gpointer user_data)
+{
+    node_event_t *ev;
+
+
+    G_LOCK (fen_lock);
+
+    /* Processing g_eventq */
@@ -860,7 +860,7 @@
+            }
+        }
+#endif
+
+
+#if 0
+        node_add_event(ev->user_data, ev);
+#else
@@ -1184,7 +1184,7 @@
@@ -0,0 +1,43 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim:set expandtab ts=4 shiftwidth=4: */
+/*
+/*
+ * Copyright (c) 2008, 2010 Oracle and/or its affiliates, Inc. All rights
+ * reserved.
+ *
@@ -1233,7 +1233,7 @@
@@ -0,0 +1,642 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim:set expandtab ts=4 shiftwidth=4: */
+/*
+/*
+ * Copyright (c) 2008, 2010 Oracle and/or its affiliates, Inc. All rights
+ * reserved.
+ *
@@ -1323,14 +1323,14 @@
+{
+    if (val1->tv_sec < val2->tv_sec)
+        return TRUE;
+
+
+    if (val1->tv_sec > val2->tv_sec)
+        return FALSE;
+
+
+    /* val1->tv_sec == val2->tv_sec */
+    if (val1->tv_usec < val2->tv_usec)
+        return TRUE;
+
+
+    return FALSE;
+}
+
@@ -1363,18 +1363,18 @@
+    gchar* lasts;
+    node_t* parent;
+    node_t* child;
+
+
+    g_assert (filename && filename[0] == '/');
+
+    if (node == NULL) {
+        node = ROOT;
+    }
+
+
+    FN_W ("%s %s\n", __func__, filename);
+
+    parent = child = node;
+    str = g_strdup (filename);
+
+
+    for (token = strtok_r (str, G_DIR_SEPARATOR_S, &lasts);
+         token != NULL && child != NULL;
+         token = strtok_r (NULL, G_DIR_SEPARATOR_S, &lasts)) {
@@ -1395,7 +1395,7 @@
+            break;
+        }
+    }
+
+
+    g_free (str);
+    return child;
+}
@@ -1426,14 +1426,14 @@
+{
+    GDir *dir;
+    GError *err = NULL;
+
+
+    FN_W ("%s %s [0x%p]\n", __func__, NODE_NAME(f), f);
+
+    dir = g_dir_open (NODE_NAME(f), 0, &err);
+    if (dir) {
+        const char *basename;
+        node_t *child = NULL;
+
+
+        while ((basename = g_dir_read_name (dir))) {
+            node_t* data;
+            GList *idx;
@@ -1441,7 +1441,7 @@
+            child = node_get_child (f, basename);
+            if (child == NULL) {
+                gchar *filename;
+
+
+                child = node_new (f, basename);
+                children_add (f, child);
+            }
@@ -1480,13 +1480,13 @@
+ * If all active children nodes are ported, then cancel monitor the parent
+ * node. If we know how many children are created, then we can stop accordingly.
+ *
+ * Unsafe, need lock.
+ * Unsafe, need lock.
+ */
+static void
+foreach_known_children_scan(gpointer key, gpointer value, gpointer user_data)
+{
+    node_t* f = (node_t*)value;
+
+
+    FN_W ("%s 0x%p %s\n", __func__, f, NODE_NAME(f));
+
+    if (!NODE_HAS_STATE(f, NODE_STATE_ASSOCIATED)) {
@@ -1756,7 +1756,7 @@
+
+        /* Send events to clients. */
+        node_emit_events (f, ev);
+
+
+    } else {
+        /* Send events to clients. */
+        node_emit_events (f, ev);
@@ -1784,7 +1784,7 @@
+node_emit_one_event(node_t *f, GList *subs, node_t *other, int event)
+{
+    GList* idx;
+
+
+    FN_W ("%s %s %d\n", __func__, NODE_NAME(f), event);
+
+#ifdef GIO_COMPILATION
@@ -1854,7 +1854,7 @@
+node_event_new (int event, gpointer user_data)
+{
+    node_event_t *ev;
+
+
+    if ((ev = g_new (node_event_t, 1)) != NULL) {
+        g_assert (ev);
+        ev->e = event;
@@ -1881,7 +1881,7 @@
@@ -0,0 +1,104 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim:set expandtab ts=4 shiftwidth=4: */
+/*
+/*
+ * Copyright (c) 2008, 2010 Oracle and/or its affiliates, Inc. All rights
+ * reserved.
+ *
@@ -1993,7 +1993,7 @@
 #include <sys/uio.h>
+#if defined(sun)
+#include <string.h>
+#endif
+#endif
+#if defined(HAVE_UCRED_H)
+#include <ucred.h>
+#endif defined(HAVE_UCRED_H)
@@ -2003,13 +2003,13 @@
@@ -101,6 +107,10 @@ gam_client_conn_check_cred(GIOChannel * source, int fd,
     } cmsg;
 #endif
+#if defined(HAVE_GETPEERUCRED)
+    ucred_t *creds;
+#endif
+
     s_uid = getuid();
 #if defined(LOCAL_CREDS) && defined(HAVE_CMSGCRED)
@@ -167,11 +177,25 @@ gam_client_conn_check_cred(GIOChannel * source, int fd,
                       fd, cr_len, (int) sizeof(cr));
@@ -2018,7 +2018,7 @@
+#elif defined(HAVE_GETPEERUCRED)
+    if ((creds = (ucred_t *)malloc(ucred_size()))==(ucred_t *)NULL){
+            GAM_DEBUG(DEBUG_INFO,"Malloc failed for ucreds");
+        goto failed;
+        goto failed;
+    }
+
+    if (getpeerucred(fd, &creds)!=0){
@@ -2030,9 +2030,9 @@
+    c_pid = ucred_getpid(creds);
+    ucred_free(creds);
 #elif defined(HAVE_CMSGCRED)
    c_pid = cmsg.cred.cmcred_pid;
    c_uid = cmsg.cred.cmcred_euid;
    c_gid = cmsg.cred.cmcred_groups[0];
     c_pid = cmsg.cred.cmcred_pid;
     c_uid = cmsg.cred.cmcred_euid;
     c_gid = cmsg.cred.cmcred_groups[0];
-#else /* !SO_PEERCRED && !HAVE_CMSGCRED */
+#else /* !SO_PEERCRED && !HAVE_CMSGCRED && !HAVE_GETPEERUCRED */
         GAM_DEBUG(DEBUG_INFO,
@@ -2046,7 +2046,7 @@
@@ -0,0 +1,140 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim:set expandtab ts=4 shiftwidth=4: */
+/*
+/*
+ * Copyright (C) 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ *
@@ -2069,7 +2069,7 @@
+ */
+/*
+ * Design:
+ * A Solaris port has a resource limit of events (port_max_events) which
+ * A Solaris port has a resource limit of events (port_max_events) which
+ * limits the number of objects (fds) that can be actively associated objects
+ * whith the port. The default is (65536), but can be changed.
+ *
@@ -2102,7 +2102,7 @@
+{
+    if (!fen_init ())
+        return FALSE;
+
+
+    gam_server_install_kernel_hooks (GAMIN_K_FEN,
+      gam_fen_add_subscription,
+      gam_fen_remove_subscription,
@@ -2164,9 +2164,9 @@
+    GList *subs;
+    GList *idx;
+    gboolean success = TRUE;
+
+
+    subs = gam_listener_get_subscriptions (listener);
+
+
+    if (subs == NULL)
+        return FALSE;
+
@@ -2176,7 +2176,7 @@
+        if (!gam_fen_remove_subscription (sub))
+            success = FALSE;
+    }
+
+
+    if (subs) {
+        g_list_free (subs);
+        return TRUE;
@@ -2192,7 +2192,7 @@
@@ -0,0 +1,40 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* vim:set expandtab ts=4 shiftwidth=4: */
+/*
+/*
+ * Copyright (C) 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ *
@@ -2243,7 +2243,7 @@
+#endif
 #include "gam_error.h"
 #include "gam_fs.h"
+#ifdef HAVE_SYS_MNTTAB_H
+#define MTAB    MNTTAB
+#define MTABDEL    "\t"
@@ -2253,56 +2253,56 @@
+#endif
+
 #define DEFAULT_POLL_TIMEOUT 0
 typedef struct _gam_fs_properties {
@@ -119,7 +130,7 @@ gam_fs_scan_mtab (void)
    gam_fs *fs = NULL;
    int i;
     gam_fs *fs = NULL;
     int i;
-    g_file_get_contents ("/etc/mtab", &contents, &len, NULL);
+    g_file_get_contents (MTAB, &contents, &len, NULL);
    if (contents == NULL)
        return;
     if (contents == NULL)
         return;
@@ -133,7 +144,7 @@ gam_fs_scan_mtab (void)
            if (line[0] == '\0')
                continue;
             if (line[0] == '\0')
                 continue;
-            words = g_strsplit (line, " ", 0);
+            words = g_strsplit (line, MTABDEL, 0);
            if (words == NULL)
                continue;
             if (words == NULL)
                 continue;
@@ -176,19 +187,25 @@ gam_fs_init (void)
        gam_fs_set ("ext2", GFS_MT_DEFAULT, 0);
        gam_fs_set ("reiser4", GFS_MT_DEFAULT, 0);
        gam_fs_set ("reiserfs", GFS_MT_DEFAULT, 0);
         gam_fs_set ("ext2", GFS_MT_DEFAULT, 0);
         gam_fs_set ("reiser4", GFS_MT_DEFAULT, 0);
         gam_fs_set ("reiserfs", GFS_MT_DEFAULT, 0);
+        gam_fs_set ("zfs", GFS_MT_DEFAULT, 0);
+        gam_fs_set ("ufs", GFS_MT_DEFAULT, 0);
        gam_fs_set ("novfs", GFS_MT_POLL, 30);
         gam_fs_set ("novfs", GFS_MT_POLL, 30);
+#ifdef ENABLE_FEN
+        gam_fs_set ("nfs", GFS_MT_DEFAULT, 0);
+#else
        gam_fs_set ("nfs", GFS_MT_POLL, 5);
         gam_fs_set ("nfs", GFS_MT_POLL, 5);
-        if (stat("/etc/mtab", &mtab_sbuf) != 0)
+#endif
+        if (stat(MTAB, &mtab_sbuf) != 0)
        {
         {
-            GAM_DEBUG(DEBUG_INFO, "Could not stat /etc/mtab\n");
+            GAM_DEBUG(DEBUG_INFO, "Could not stat %s\n",MTAB);
        }
        gam_fs_scan_mtab ();
    } else {
        struct stat sbuf;
         }
         gam_fs_scan_mtab ();
     } else {
         struct stat sbuf;
-        if (stat("/etc/mtab", &sbuf) != 0)
+        if (stat(MTAB, &sbuf) != 0)
        {
         {
-            GAM_DEBUG(DEBUG_INFO, "Could not stat /etc/mtab\n");
+            GAM_DEBUG(DEBUG_INFO, "Could not stat %s\n",MTAB);
        }
        /* /etc/mtab has changed */
         }
         /* /etc/mtab has changed */
diff --git a/server/gam_fs.h b/server/gam_fs.h
index bc2d538..94e70fd 100644
--- a/server/gam_fs.h
@@ -2313,7 +2313,7 @@
     !defined(ENABLE_KQUEUE) && \
+    !defined(ENABLE_FEN) && \
     !defined(ENABLE_HURD_MACH_NOTIFY)
    GFS_MT_DEFAULT = GFS_MT_POLL,
     GFS_MT_DEFAULT = GFS_MT_POLL,
 #else
diff --git a/server/gam_server.c b/server/gam_server.c
index f92a691..e5da29f 100644
@@ -2328,20 +2328,20 @@
+#endif
 #include "gam_excludes.h"
 #include "gam_fs.h"
 #include "gam_conf.h"
 #include "gam_conf.h"
@@ -162,6 +165,12 @@ gam_init_subscriptions(void)
            return(TRUE);
        }
 #endif
             return(TRUE);
         }
 #endif
+#ifdef ENABLE_FEN
+        if (gam_fen_init()) {
+            GAM_DEBUG(DEBUG_INFO, "Using fen as backend\n");
+            return(TRUE);
+        }
+#endif
    }
    if (gam_poll_basic_init()) {
     }
     if (gam_poll_basic_init()) {
@@ -627,6 +636,10 @@ main(int argc, const char *argv[])
     signal(SIGQUIT, gam_exit);
     signal(SIGTERM, gam_exit);
@@ -2350,22 +2350,22 @@
+    signal(SIGUSR1, SIG_IGN);
+    signal(SIGUSR2, SIG_IGN);
+#endif
     if (!gam_init_subscriptions()) {
    GAM_DEBUG(DEBUG_INFO, "Could not initialize the subscription system.\n");
     GAM_DEBUG(DEBUG_INFO, "Could not initialize the subscription system.\n");
diff --git a/server/gam_server.h b/server/gam_server.h
index bc99e09..313dd84 100644
--- a/server/gam_server.h
+++ b/server/gam_server.h
@@ -16,7 +16,8 @@ typedef enum {
    GAMIN_K_INOTIFY = 2,
    GAMIN_K_KQUEUE = 3,
    GAMIN_K_MACH = 4,
     GAMIN_K_INOTIFY = 2,
     GAMIN_K_KQUEUE = 3,
     GAMIN_K_MACH = 4,
-    GAMIN_K_INOTIFY2 = 5
+    GAMIN_K_INOTIFY2 = 5,
+    GAMIN_K_FEN = 6
 } GamKernelHandler;
 typedef enum {
diff --git a/tests/testing.c b/tests/testing.c
index 9926c0a..4c08740 100644
@@ -2377,7 +2377,7 @@
 #include <stdlib.h>
 #include <unistd.h>
@@ -31,6 +32,11 @@ static struct testState {
 #define IS_BLANK(p) ((*(p) == ' ') || (*(p) == '\t') ||        \
                      (*(p) == '\n') || (*(p) == '\r'))
+#ifdef ENABLE_FEN
@@ -2385,7 +2385,7 @@
+#else
+#define KILLCMD    "killall"
+#endif
 static int
 scanCommand(char *line, char **command, char **arg, char **arg2)
@@ -268,7 +274,7 @@ processCommand(char *line, int no)
components/library/gamin/patches/02-py27.patch
@@ -3,6 +3,6 @@
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python2.7
 import _gamin
 import os.path
components/library/gamin/patches/03-const.patch
@@ -15,13 +15,13 @@
+++ gamin-0.1.10/server/gam_node.h    Mon Aug 26 15:25:54 2013
@@ -58,7 +58,7 @@
 void                  gam_node_set_is_dir          (GamNode         *node,
                           gboolean        is_dir);
                            gboolean        is_dir);
-G_CONST_RETURN char  *gam_node_get_path            (GamNode         *node);
+const char  *gam_node_get_path            (GamNode         *node);
 GList                *gam_node_get_subscriptions   (GamNode         *node);
diff -ur gamin-0.1.10/server.orig/gam_subscription.c gamin-0.1.10/server/gam_subscription.c
--- gamin-0.1.10/server.orig/gam_subscription.c    Mon Aug 26 15:25:22 2013
+++ gamin-0.1.10/server/gam_subscription.c    Mon Aug 26 15:25:54 2013
@@ -38,10 +38,11 @@
--- gamin-0.1.10/server.orig/gam_subscription.h    Mon Aug 26 15:25:22 2013
+++ gamin-0.1.10/server/gam_subscription.h    Mon Aug 26 15:25:54 2013
@@ -21,7 +21,7 @@
 int                  gam_subscription_get_reqno    (GamSubscription *sub);
-G_CONST_RETURN char *gam_subscription_get_path     (GamSubscription *sub);
+const char *gam_subscription_get_path     (GamSubscription *sub);
 GamListener         *gam_subscription_get_listener (GamSubscription *sub);
components/library/gamin/patches/04-allow-override-pythondir.patch
@@ -9,15 +9,15 @@
     if test -x "$with_python/bin/python"
     then
@@ -559,11 +558,13 @@
        fi
    fi
         fi
     fi
     fi
-    if test "$with_python" != ""
-    then
-        pythondir='$(PYTHON_SITE_PACKAGES)'
-    else
-        pythondir='$(libdir)/python$(PYTHON_VERSION)/vendor-packages'
+    if test -z "$pythondir"; then
+    if test -z "$pythondir"; then
+        if test "$with_python" != ""
+        then
+            pythondir='$(PYTHON_SITE_PACKAGES)'
components/library/grails/patches/CVE-2012-1833.patch
@@ -14,7 +14,7 @@
@@ -473,13 +473,18 @@
                                     }
                                 }
+                def newCommandObject = false;
                                 if (!commandObject) {
                                     commandObject = paramType.newInstance()
@@ -39,51 +39,52 @@
         setAllowedFields(ALL_OTHER_FIELDS_ALLOWED_BY_DEFAULT);
+        setIgnoreInvalidFields(true);
     }
     /**
--- grails-1.0.3/src/web/org/codehaus/groovy/grails/web/metaclass/DataBindingDynamicConstructor.java    2008-06-06 10:25:10.000000000 +0000
+++ grails-1.0.3/src/web/org/codehaus/groovy/grails/web/metaclass/DataBindingDynamicConstructor.java    2014-02-12 16:22:04.259197011 +0000
@@ -25,6 +25,7 @@
 import org.codehaus.groovy.grails.exceptions.GrailsDomainException;
 import org.codehaus.groovy.grails.web.binding.DataBindingUtils;
 import org.springframework.context.ApplicationContext;
+import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
 import javax.servlet.http.HttpServletRequest;
 import java.util.Iterator;
 import org.codehaus.groovy.grails.exceptions.GrailsDomainException;
 import org.codehaus.groovy.grails.web.binding.DataBindingUtils;
 import org.springframework.context.ApplicationContext;
+import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
 import javax.servlet.http.HttpServletRequest;
 import java.util.Iterator;
@@ -63,18 +64,13 @@
    public Object invoke(Class clazz, Object[] args) {
        Object map = args.length > 0 ? args[0] : null;
         Object instance;
-        if(applicationContext!=null && applicationContext.containsBean(clazz.getName())) {
-            instance = applicationContext.getBean(clazz.getName());
-        }
-        else {
-            try {
-                instance = clazz.newInstance();
-            } catch (InstantiationException e1) {
-                throw new GrailsDomainException("Error instantiated class [" + clazz + "]: " + e1.getMessage(),e1);
-            } catch (IllegalAccessException e1) {
-                throw new GrailsDomainException("Illegal access instantiated class [" + clazz + "]: " + e1.getMessage(),e1);
-            }
+        try {
+            instance = clazz.newInstance();
+        } catch (InstantiationException e1) {
+            throw new GrailsDomainException("Error instantiated class [" + clazz + "]: " + e1.getMessage(),e1);
+        } catch (IllegalAccessException e1) {
+            throw new GrailsDomainException("Illegal access instantiated class [" + clazz + "]: " + e1.getMessage(),e1);
         }
     public Object invoke(Class clazz, Object[] args) {
         Object map = args.length > 0 ? args[0] : null;
         Object instance;
-        if(applicationContext!=null && applicationContext.containsBean(clazz.getName())) {
-            instance = applicationContext.getBean(clazz.getName());
-        }
-        else {
-            try {
-                instance = clazz.newInstance();
-            } catch (InstantiationException e1) {
-                throw new GrailsDomainException("Error instantiated class [" + clazz + "]: " + e1.getMessage(),e1);
-            } catch (IllegalAccessException e1) {
-                throw new GrailsDomainException("Illegal access instantiated class [" + clazz + "]: " + e1.getMessage(),e1);
-            }
+        try {
+            instance = clazz.newInstance();
+        } catch (InstantiationException e1) {
+            throw new GrailsDomainException("Error instantiated class [" + clazz + "]: " + e1.getMessage(),e1);
+        } catch (IllegalAccessException e1) {
+            throw new GrailsDomainException("Illegal access instantiated class [" + clazz + "]: " + e1.getMessage(),e1);
         }
@@ -113,6 +109,11 @@
             }
         }
+        if (applicationContext != null) {
             }
         }
+        if (applicationContext != null) {
+            applicationContext.getAutowireCapableBeanFactory().autowireBeanProperties(
+                instance, AutowireCapableBeanFactory.AUTOWIRE_BY_NAME, false);
+        }
+
         return instance;
    }
+                instance, AutowireCapableBeanFactory.AUTOWIRE_BY_NAME, false);
+        }
+
         return instance;
     }
components/library/grails/patches/javadoc.xml.patch
@@ -2,20 +2,20 @@
--- grails-1.0.3/ant/build/javadoc.xml    Fri Jul  8 09:07:59 2011
***************
*** 24,32 ****
                <include name="org/codehaus/groovy/grails/**"/>
                <include name="grails/**"/>
            </packageset>
                  <include name="org/codehaus/groovy/grails/**"/>
                  <include name="grails/**"/>
              </packageset>
!             <link href="http://java.sun.com/j2ee/1.4/docs/api"/>
!             <link href="http://java.sun.com/j2se/1.4.2/docs/api"/>
!             <link href="http://static.springframework.org/spring/docs/2.5.x/api"/>
            <tag name="todo" description="To do:" />
        </javadoc>
    </target>
              <tag name="todo" description="To do:" />
          </javadoc>
      </target>
--- 24,30 ----
                <include name="org/codehaus/groovy/grails/**"/>
                <include name="grails/**"/>
            </packageset>
                  <include name="org/codehaus/groovy/grails/**"/>
                  <include name="grails/**"/>
              </packageset>
!             <arg value="-notimestamp" />
            <tag name="todo" description="To do:" />
        </javadoc>
    </target>
              <tag name="todo" description="To do:" />
          </javadoc>
      </target>
components/library/grails/patches/skip-tests.patch
@@ -3,9 +3,9 @@
@@ -124,7 +124,7 @@
         </tar>
     </target>
-    <target name="package" depends="clean,test,jar,javadoc" description="Create the release archives for Grails.">
+    <target name="package" depends="clean,jar,javadoc" description="Create the release archives for Grails.">
    <delete failonerror="true">
            <fileset dir="${grails.dist}">
         <delete failonerror="true">
             <fileset dir="${grails.dist}">
                 <include name="*.zip"/>
components/multimedia/rhythmbox/patches/no-ulong.patch
@@ -1,11 +1,11 @@
--- rhythmbox-0.13.3/plugins/mpris/rb-mpris-plugin.c.orig    2013-12-19 14:31:57.196366478 +0400
+++ rhythmbox-0.13.3/plugins/mpris/rb-mpris-plugin.c    2013-12-19 14:30:59.371273081 +0400
@@ -412,7 +412,7 @@
            int scale,
            gboolean zero_is_valid)
             int scale,
             gboolean zero_is_valid)
 {
-    ulong v;
+    gulong v;
    v = rhythmdb_entry_get_ulong (entry, prop);
    if (zero_is_valid || v != 0) {
        rb_debug ("adding %s = %lu", name, v);
     v = rhythmdb_entry_get_ulong (entry, prop);
     if (zero_is_valid || v != 0) {
         rb_debug ("adding %s = %lu", name, v);
components/multimedia/rhythmbox/patches/rhythmbox-01-playcd.patch
@@ -1,13 +1,13 @@
--- rhythmbox-0.11.2/plugins/audiocd/rb-audiocd-source.c.bak    2007-12-07 13:57:27.000000000 +0800
+++ rhythmbox-0.11.2/plugins/audiocd/rb-audiocd-source.c    2007-06-17 11:20:32.000000000 +0800
@@ -664,6 +664,10 @@
    }
    rb_debug ("cdda longname: %s", gst_element_factory_get_longname (gst_element_get_factory (priv->cdda)));
     }
     rb_debug ("cdda longname: %s", gst_element_factory_get_longname (gst_element_get_factory (priv->cdda)));
+
+#ifdef __sun
+       priv->device_path = g_strdup_printf ("/dev/rdsk/%s", priv->device_path + strlen ("/dev/dsk/"));
+#endif
    g_object_set (G_OBJECT (priv->cdda), "device", priv->device_path, NULL);
    priv->pipeline = gst_pipeline_new ("pipeline");
    priv->fakesink = gst_element_factory_make ("fakesink", "fakesink");
     g_object_set (G_OBJECT (priv->cdda), "device", priv->device_path, NULL);
     priv->pipeline = gst_pipeline_new ("pipeline");
     priv->fakesink = gst_element_factory_make ("fakesink", "fakesink");
components/multimedia/rhythmbox/patches/rhythmbox-02-gvfs.patch
@@ -10,5 +10,5 @@
   return g_strdup_printf ("cdda://%s", device + strlen ("/dev/"));
+#endif
 }
 static GList *
components/multimedia/rhythmbox/patches/rhythmbox-04-libmtp.patch
@@ -13,29 +13,30 @@
+++ b/plugins/mtpdevice/rb-mtp-plugin.c
@@ -49,6 +49,7 @@
 #endif
 #include "rb-source.h"
+#include "rb-display-page-group.h"
 #include "rb-display-page-tree.h"
 #include "rb-mtp-source.h"
 #include "rb-plugin.h"
@@ -421,7 +422,7 @@ rb_mtp_plugin_maybe_add_source (RBMtpPlugin *plugin, const char *udi, LIBMTP_raw
            rb_debug ("device matched, creating a source");
            source = RB_SOURCE (rb_mtp_source_new (plugin->shell, RB_PLUGIN (plugin), udi, &raw_devices[i]));
             rb_debug ("device matched, creating a source");
             source = RB_SOURCE (rb_mtp_source_new (plugin->shell, RB_PLUGIN (plugin), udi, &raw_devices[i]));
-            rb_shell_append_source (plugin->shell, source, RB_DISPLAY_PAGE_GROUP_DEVICES);
+            rb_shell_append_display_page (plugin->shell, RB_DISPLAY_PAGE (source), RB_DISPLAY_PAGE_GROUP_DEVICES);
            plugin->mtp_sources = g_list_prepend (plugin->mtp_sources, source);
            g_signal_connect_object (source,
                        "deleted", G_CALLBACK (source_deleted_cb),
             plugin->mtp_sources = g_list_prepend (plugin->mtp_sources, source);
             g_signal_connect_object (source,
                         "deleted", G_CALLBACK (source_deleted_cb),
@@ -459,7 +460,7 @@ rb_mtp_plugin_device_removed (LibHalContext *context, const char *udi)
        if (strcmp (udi, source_udi) == 0) {
            rb_debug ("removing device %s, %p", udi, source);
            plugin->mtp_sources = g_list_remove (plugin->mtp_sources, source);
         if (strcmp (udi, source_udi) == 0) {
             rb_debug ("removing device %s, %p", udi, source);
             plugin->mtp_sources = g_list_remove (plugin->mtp_sources, source);
-            rb_source_delete_thyself (source);
+            rb_display_page_delete_thyself (RB_DISPLAY_PAGE (source));
        }
        g_free (source_udi);
    }
--
         }
         g_free (source_udi);
     }
--
1.7.2.3
components/print/hplip/patches/01_build.patch
@@ -3,11 +3,11 @@
--- a/prnt/hpijs/hpijsfax.cpp    2014-04-04 03:39:55.000000000 -0700
+++ hplip-3.14.4/prnt/hpijs/hpijsfax.cpp    2014-04-11 09:25:59.404997356 -0700
@@ -598,7 +598,7 @@
        ijs_server_done (ctx);
    }
         ijs_server_done (ctx);
     }
-    exit(status);
+    return(status);
 }
 // GrayLevel = (5/16)R + (9/16)G + (2/16)B
components/print/hplip/patches/02_HPCupsFilter.cpp.patch
@@ -5,20 +5,20 @@
@@ -37,6 +37,8 @@
 #include <time.h>
 #include "utils.h"
+extern "C" int getdomainname(char*, int);
+
 #define HP_FILE_VERSION_STR    "03.09.08.0"
 static HPCupsFilter    filter;
@@ -597,7 +599,7 @@
     char hpPreProcessedRasterFile[MAX_FILE_PATH_LEN]; //temp file needed to store raster data with swaped pages.
-    sprintf(hpPreProcessedRasterFile, "%s/hp_%s_cups_SwapedPagesXXXXXX",CUPS_TMP_DIR, m_JA.user_name);
+    snprintf(hpPreProcessedRasterFile, sizeof(hpPreProcessedRasterFile), "%s/hp_%s_cups_SwapedPagesXXXXXX", CUPS_TMP_DIR, m_JA.user_name);
     while (cupsRasterReadHeader2(cups_raster, &cups_header))
--- a/prnt/hpcups/CommonDefinitions.h    2014-04-04 03:39:07.000000000 -0700
+++ hplip-3.14.4/prnt/hpcups/CommonDefinitions.h    2014-04-11 12:03:54.025798599 -0700
@@ -28,9 +28,9 @@
 /* 0x6A */    ZJI_BITMAP_BPP,
-/* 0x6B */    ZJI_BITMAP_STRIDE,
+/* 0x6B */    ZJI_BITMAP_STRIDE
 } ZJ_ITEM;
--- a/io/hpmud/hpmud.h    2014-04-04 03:42:17.000000000 -0700
+++ hplip-3.14.4/io/hpmud/hpmud.h    2014-04-11 12:12:13.756537138 -0700
@@ -46,7 +46,7 @@
@@ -40,7 +40,7 @@
-   HPMUD_R_INVALID_MDNS = 50,
+   HPMUD_R_INVALID_MDNS = 50
 };
 enum HPMUD_IO_MODE
@@ -57,7 +57,7 @@
    HPMUD_DOT4_PHOENIX_MODE=4,  /* (ie: clj2550, clj2840, lj3050, lj3055, clj4730mfp) */
@@ -49,7 +49,7 @@
-   HPMUD_MLC_MISER_MODE=7,  /* old stuff */
+   HPMUD_MLC_MISER_MODE=7  /* old stuff */
 };
 enum HPMUD_BUS_ID
@@ -78,7 +78,7 @@
    HPMUD_SCANTYPE_SOAPHT = 5,   /* HorseThief (ie: ljm1522) */
@@ -58,7 +58,7 @@
-   HPMUD_SCANTYPE_MARVELL2 = 8,     /* (Tsunami lj 1212  and series) */
+   HPMUD_SCANTYPE_MARVELL2 = 8     /* (Tsunami lj 1212  and series) */
 };
 enum HPMUD_SCANSRC
@@ -86,7 +86,7 @@
    HPMUD_SCANSRC_NA = 0,
@@ -67,7 +67,7 @@
-   HPMUD_SCANSRC_CAMERA = 0x4,
+   HPMUD_SCANSRC_CAMERA = 0x4
 };
 enum HPMUD_STATUSTYPE
@@ -97,21 +97,21 @@
    HPMUD_STATUSTYPE_PML = 3,      /* laserjet pml */
@@ -76,7 +76,7 @@
-   HPMUD_STATUSTYPE_PJLPML = 9,   /* laserjet pjl and pml */
+   HPMUD_STATUSTYPE_PJLPML = 9    /* laserjet pjl and pml */
 };
 enum HPMUD_SUPPORT_TYPE
 {
    HPMUD_SUPPORT_TYPE_NONE = 0,   /* not supported */
@@ -84,7 +84,7 @@
-   HPMUD_SUPPORT_TYPE_HPLIP = 2,   /* supported by hpijs and "hp" backend */
+   HPMUD_SUPPORT_TYPE_HPLIP = 2   /* supported by hpijs and "hp" backend */
 };
 enum HPMUD_PLUGIN_TYPE
 {
    HPMUD_PLUGIN_TYPE_NONE = 0,
@@ -92,18 +92,18 @@
-   HPMUD_PLUGIN_TYPE_OPTIONAL = 2,
+   HPMUD_PLUGIN_TYPE_OPTIONAL = 2
 };
--- a/common/utils.h    2014-04-04 03:42:15.000000000 -0700
+++ hplip-3.14.4/common/utils.h    2014-04-11 12:49:00.832008556 -0700
@@ -22,7 +22,8 @@
 #define SCAN_PLUGIN_SOAPHT "bb_soapht.so"
 #define HPLIP_PLUGIN_STATE  "/var/lib/hp/hplip.state"
-#define CUPS_TMP_DIR   getenv("TMPDIR") ? : getenv("HOME") ?:"/tmp"
+//#define CUPS_TMP_DIR   getenv("TMPDIR") ? : getenv("HOME") ?:"/tmp"
+#define CUPS_TMP_DIR   "/tmp"
 enum UTILS_CONF_RESULT
 {
@@ -30,7 +31,7 @@
@@ -113,8 +113,8 @@
-   UTILS_CONF_DATFILE_ERROR,        // = 4,
+   UTILS_CONF_DATFILE_ERROR         // = 4,
 };
@@ -38,14 +39,14 @@
 {
    UTILS_PLUGIN_STATUS_OK = 0,
@@ -122,12 +122,13 @@
-   UTILS_PLUGIN_STATUS_NOT_INSTALLED,   // = 2,
+   UTILS_PLUGIN_STATUS_NOT_INSTALLED    // = 2,
 };
 enum UTILS_PLUGIN_LIBRARY_TYPE
 {
    UTILS_PRINT_PLUGIN_LIBRARY = 0,          // = 0,
    UTILS_SCAN_PLUGIN_LIBRARY,           // =1,
-   UTILS_FAX_PLUGIN_LIBRARY,            // =2,
+   UTILS_FAX_PLUGIN_LIBRARY//,            // =2,
 //   UTILS_GENERAL_PLUGIN_LIBRARY         //=4,     // Future use..
 //   UTILS_GENERAL_PLUGIN_LIBRARY         //=4,     // Future use..
 };
components/print/hplip/patches/03_ErnieFilter.cpp.patch
@@ -4,9 +4,10 @@
+++ b/prnt/hpcups/ErnieFilter.cpp    2014-04-11 09:23:38.197875441 -0700
@@ -50,7 +50,7 @@
 #include "ErnieFilter.h"
-#if defined(__APPLE__) || defined(__linux) || defined(__GLIBC__) || defined(__NetBSD__)
+#if defined(__APPLE__) || defined(__linux) || defined(__GLIBC__) || defined(__NetBSD__) || defined (__sun) || defined (__sun__)
 #include <math.h>
 #endif
components/print/hplip/patches/04_pstotiff.patch
@@ -5,6 +5,6 @@
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python2.7
 import os
 import os.path
components/print/hplip/patches/07_facls.detect.patch
@@ -4,10 +4,10 @@
+++ hplip-3.15.4/installer/core_install.py    2015-04-28 08:39:29.723499471 +0300
@@ -345,7 +345,7 @@
             'scanimage':        (False, ['scan'], SCANIMAGE_STR, self.check_scanimage, DEPENDENCY_RUN_TIME, '1.0','scanimage --version', EXTERNALDEP),
             # Required fax packages
-            'dbus':             (True,  ['fax'], DBUS_STR, self.check_dbus, DEPENDENCY_RUN_AND_COMPILE_TIME, '-','dbus-daemon --version', EXTERNALDEP),
+            'dbus':             (True,  ['fax'], DBUS_STR, self.check_dbus, DEPENDENCY_RUN_AND_COMPILE_TIME, '-','/usr/lib/dbus-daemon --version', EXTERNALDEP),
             # Required and optional qt4 GUI packages
             'policykit':        (False, ['gui_qt4'], POLKIT_STR, self.check_policykit, DEPENDENCY_RUN_TIME,'-','pkexec --version', EXTERNALDEP), # optional for non-sudo behavior of plugins (only optional for Qt4 option)
components/print/hplip/patches/08_posix.ps.patch
@@ -3,7 +3,7 @@
--- a/base/utils.py    2014-06-02 23:33:10.000000000 -0700
+++ hplip-3.14.6/base/utils.py    2014-07-01 13:44:00.526366599 -0700
@@ -2214,7 +2214,7 @@
     try:
         process = {}
-        p1 = Popen(["ps", "-w", "-w", "aux"], stdout=PIPE)
components/print/hplip/patches/09_nonGNUlibc.patch
@@ -17,6 +17,6 @@
+            return LIBC.gnu_get_libc_version()
+        except:
+            return '-'
 def get_python_xml_version():
     try:
components/python/pywbem/patches/01-CVE-2013-6418-CVE-2013-6444.patch
@@ -35,13 +35,13 @@
-# published by the Free Software Foundation; either version 2 of the
-# License.
+# published by the Free Software Foundation; version 2 of the License.
 #
 #
 # This program is distributed in the hope that it will be useful, but
 # WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -29,7 +28,8 @@ being transferred is XML.  It is up to t
 data and interpret the result.
 '''
-import sys, string, re, os, socket, pwd
+from M2Crypto import SSL, Err
+import sys, string, re, os, socket, getpass
@@ -51,7 +51,7 @@
@@ -59,6 +59,15 @@ def parse_url(url):
     if m:
         host = url[len(m.group(0)):]
+    # IPv6 with/without port
+    m = re.match("^\[?([0-9A-Fa-f:]*)\]?(:([0-9]*))?$", host)
+    if m:
@@ -65,9 +65,9 @@
     if len(s) != 1:
         host = s[0]
@@ -66,8 +75,26 @@ def parse_url(url):
     return host, port, ssl
+def get_default_ca_certs():
+    """
+    Try to find out system path with ca certificates. This path is cached and
@@ -93,12 +93,12 @@
     response in XML.  Uses Python's build-in httplib.  x509 may be a
     dictionary containing the location of the SSL certificate and key
@@ -97,9 +124,48 @@ def wbem_request(url, data, creds, heade
     class HTTPSConnection(HTTPBaseConnection, httplib.HTTPSConnection):
         def __init__(self, host, port=None, key_file=None, cert_file=None,
         def __init__(self, host, port=None, key_file=None, cert_file=None,
-                     strict=None):
+                     strict=None, ca_certs=None, verify_callback=None):
             httplib.HTTPSConnection.__init__(self, host, port, key_file,
             httplib.HTTPSConnection.__init__(self, host, port, key_file,
                                              cert_file, strict)
+            self.ca_certs = ca_certs
+            self.verify_callback = verify_callback
@@ -139,26 +139,26 @@
+            except ( Err.SSLError, SSL.SSLError, SSL.SSLTimeoutError
+                   , SSL.Checker.WrongHost), arg:
+                raise Error("SSL error: %s" % arg)
     class FileHTTPConnection(HTTPBaseConnection, httplib.HTTPConnection):
         def __init__(self, uds_path):
@@ -109,47 +175,36 @@ def wbem_request(url, data, creds, heade
             self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
             self.sock.connect(self.uds_path)
-    host, port, ssl = parse_url(url)
+    host, port, use_ssl = parse_url(url)
     key_file = None
     cert_file = None
-    if ssl:
-
-        if x509 is not None:
+    if use_ssl and x509 is not None:
             cert_file = x509.get('cert_file')
             key_file = x509.get('key_file')
-        if verify_callback is not None:
-            try:
-                from OpenSSL import SSL
@@ -182,11 +182,11 @@
     numTries = 0
     localAuthHeader = None
     tryLimit = 5
+    if isinstance(data, unicode):
+        data = data.encode('utf-8')
     data = '<?xml version="1.0" encoding="utf-8" ?>\n' + data
+    if not no_verification and ca_certs is None:
+        ca_certs = get_default_ca_certs()
+    elif no_verification:
@@ -208,7 +208,7 @@
             h = HTTPConnection(host, port = port)
@@ -167,12 +222,12 @@ def wbem_request(url, data, creds, heade
                 raise Error('Invalid URL')
     locallogin = None
-    if host in ('localhost', '127.0.0.1'):
+    if host in ('localhost', 'localhost6', '127.0.0.1', '::1'):
@@ -223,13 +223,13 @@
     while numTries < tryLimit:
@@ -191,6 +246,8 @@ def wbem_request(url, data, creds, heade
             h.putheader('PegasusAuthorization', 'Local "%s"' % locallogin)
         for hdr in headers:
+            if isinstance(hdr, unicode):
+                hdr = hdr.encode('utf-8')
             s = map(lambda x: string.strip(x), string.split(hdr, ":", 1))
             h.putheader(urllib.quote(s[0]), urllib.quote(s[1]))
--- pywbem-0.7.0/cim_operations.py.orig       2008-12-12 09:40:22.000000000 -0800
+++ pywbem-0.7.0/cim_operations.py 2014-01-17 06:11:05.000000000 -0800
@@ -240,7 +240,7 @@
-# published by the Free Software Foundation; either version 2 of the
-# License.
+# published by the Free Software Foundation; version 2 of the License.
 #
 #
 # This program is distributed in the hope that it will be useful, but
 # WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -28,7 +27,7 @@ import sys, string
@@ -256,11 +256,11 @@
     the request before it is sent, and the reply before it is
     unpacked.
-    verify_callback is used to verify the server certificate.
-    verify_callback is used to verify the server certificate.
-    It is passed to OpenSSL.SSL.set_verify, and is called during the SSL
-    handshake.  verify_callback should take five arguments: A Connection
-    object, an X509 object, and three integer variables, which are in turn
-    potential error number, error depth and return code. verify_callback
-    handshake.  verify_callback should take five arguments: A Connection
-    object, an X509 object, and three integer variables, which are in turn
-    potential error number, error depth and return code. verify_callback
-    should return True if verification passes and False otherwise.
+    verify_callback is used to verify the server certificate.  It is passed to
+    M2Crypto.SSL.Context.set_verify, and is called during the SSL handshake.
@@ -270,11 +270,11 @@
+    verification passes and False otherwise.
     The value of the x509 argument is used only when the url contains
     'https'. x509 must be a dictionary containing the keys 'cert_file'
     'https'. x509 must be a dictionary containing the keys 'cert_file'
@@ -92,14 +91,27 @@ class WBEMConnection(object):
     filename of an certificate and the value of 'key_file' must consist
     of a filename containing the private key belonging to the public key
     that is part of the certificate in cert_file.
     filename of an certificate and the value of 'key_file' must consist
     of a filename containing the private key belonging to the public key
     that is part of the certificate in cert_file.
+
+    ca_certs specifies where CA certificates for verification purposes are
+    located. These are trusted certificates. Note that the certificates have to
@@ -286,7 +286,7 @@
+    should be avoided. If True, peer's certificate is not verified and ca_certs
+    argument is ignored.
     """
     def __init__(self, url, creds = None, default_namespace = DEFAULT_NAMESPACE,
-                 x509 = None, verify_callback = None):
+                 x509 = None, verify_callback = None, ca_certs = None,
@@ -331,3 +331,4 @@
         for p in result:
             if p[1] == 'reference':