add packaging
authorAnas Nashif <anas.nashif@intel.com>
Mon, 5 Nov 2012 15:32:00 +0000 (07:32 -0800)
committerAnas Nashif <anas.nashif@intel.com>
Tue, 18 Jun 2013 06:35:01 +0000 (02:35 -0400)
Conflicts:
common

common [deleted submodule]
packaging/baselibs.conf [new file with mode: 0644]
packaging/gstreamer-no-gtk-doc-for-reals.patch [new file with mode: 0644]
packaging/gstreamer-rpm-prov.patch [new file with mode: 0644]

diff --git a/common b/common
deleted file mode 160000 (submodule)
index 6bb6951..0000000
--- a/common
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 6bb695159bf15fe64d31b26dd2a07d1ba2bb7f1d
diff --git a/packaging/baselibs.conf b/packaging/baselibs.conf
new file mode 100644 (file)
index 0000000..10121bf
--- /dev/null
@@ -0,0 +1,2 @@
+gstreamer
+libgstreamer
diff --git a/packaging/gstreamer-no-gtk-doc-for-reals.patch b/packaging/gstreamer-no-gtk-doc-for-reals.patch
new file mode 100644 (file)
index 0000000..694c37d
--- /dev/null
@@ -0,0 +1,48 @@
+Index: gstreamer-0.10.29/docs/gst/Makefile.am
+===================================================================
+--- gstreamer-0.10.29.orig/docs/gst/Makefile.am
++++ gstreamer-0.10.29/docs/gst/Makefile.am
+@@ -1,5 +1,5 @@
+ ## Process this file with automake to produce Makefile.in
+-
++if ENABLE_GTK_DOC
+ # The name of the module, e.g. 'glib'.
+ # DOC_MODULE=gstreamer-@GST_API_VERSION@
+ DOC_MODULE=gstreamer
+@@ -106,4 +106,5 @@ include $(top_srcdir)/common/gtk-doc.mak
+ # gtk-doc.mak defines CLEANFILES
+ CLEANFILES += gst-universe.svg
++endif
+Index: gstreamer-0.10.29/docs/libs/Makefile.am
+===================================================================
+--- gstreamer-0.10.29.orig/docs/libs/Makefile.am
++++ gstreamer-0.10.29/docs/libs/Makefile.am
+@@ -1,3 +1,4 @@
++if ENABLE_GTK_DOC
+ ## Process this file with automake to produce Makefile.in
+ # The name of the module, e.g. 'glib'.
+@@ -103,3 +104,5 @@ GTKDOC_EXTRA_ENVIRONMENT= \
+ DOC_OVERRIDES = $(DOC_MODULE)-overrides.txt
+ include $(top_srcdir)/common/gtk-doc.mak
++
++endif
+\ No newline at end of file
+Index: gstreamer-0.10.29/docs/plugins/Makefile.am
+===================================================================
+--- gstreamer-0.10.29.orig/docs/plugins/Makefile.am
++++ gstreamer-0.10.29/docs/plugins/Makefile.am
+@@ -1,3 +1,4 @@
++if ENABLE_GTK_DOC
+ GST_DOC_SCANOBJ = $(top_srcdir)/common/gstdoc-scangobj
+ ## Process this file with automake to produce Makefile.in
+@@ -115,3 +116,4 @@ GTKDOC_LD=$(LIBTOOL) --tag=CC --mode=lin
+ DOC_OVERRIDES =
+ include $(top_srcdir)/common/gtk-doc-plugins.mak
++endif
+\ No newline at end of file
diff --git a/packaging/gstreamer-rpm-prov.patch b/packaging/gstreamer-rpm-prov.patch
new file mode 100644 (file)
index 0000000..06f6620
--- /dev/null
@@ -0,0 +1,377 @@
+Index: gstreamer-0.11.94/tools/gst-inspect.c
+===================================================================
+--- gstreamer-0.11.94.orig/tools/gst-inspect.c
++++ gstreamer-0.11.94/tools/gst-inspect.c
+@@ -1350,9 +1350,225 @@ print_element_info (GstElementFactory *
+   return 0;
+ }
++static void
++print_gst_structure_append_field (GList * strings, const char *field)
++{
++  GList *s;
++
++  //g_message ("adding '%s' to the string", field);
++
++  for (s = strings; s != NULL; s = s->next) {
++    g_string_append (s->data, field);
++  }
++}
+ static void
+-print_plugin_automatic_install_info_codecs (GstElementFactory * factory)
++print_gst_structure_append_field_index (GList * strings, const char *field,
++    guint num_items, guint offset)
++{
++  GList *s;
++  guint i;
++
++  //g_message ("adding '%s' to the string (num: %d offset: %d)", field, num_items, offset);
++
++  for (s = strings, i = 0; s != NULL; s = s->next, i++) {
++    if (i == offset) {
++      //g_message ("adding '%s' at '%d'", field, i);
++      g_string_append (s->data, field);
++    }
++    if (i == num_items)
++      i = 0;
++  }
++
++}
++
++static GList *
++print_gst_structure_dup_fields (GList * strings, guint num_items)
++{
++  guint new_items, i;
++
++  if (num_items == 1)
++    return strings;
++
++  //g_message ("creating %d new items", num_items);
++
++  new_items = g_list_length (strings) * (num_items - 1);
++  for (i = 0; i < new_items; i++) {
++    GString *s, *first;
++
++    first = strings->data;
++    s = g_string_new_len (first->str, first->len);
++    strings = g_list_prepend (strings, s);
++  }
++
++  return strings;
++}
++
++enum
++{
++  FIELD_VERSION = 0,
++  FIELD_LAYER,
++  FIELD_VARIANT,
++  FIELD_SYSTEMSTREAM
++};
++
++static int
++field_get_type (const char *field_name)
++{
++  if (strstr (field_name, "version") != NULL)
++    return FIELD_VERSION;
++  if (strcmp (field_name, "layer") == 0)
++    return FIELD_LAYER;
++  if (strcmp (field_name, "systemstream") == 0)
++    return FIELD_SYSTEMSTREAM;
++  if (strcmp (field_name, "variant") == 0)
++    return FIELD_VARIANT;
++
++  return -1;
++}
++
++static gint
++fields_type_compare (const char *a, const char *b)
++{
++  gint a_type, b_type;
++
++  a_type = field_get_type (a);
++  b_type = field_get_type (b);
++  if (a_type < b_type)
++    return -1;
++  if (b_type < a_type)
++    return 1;
++  return 0;
++}
++
++static void
++print_gst_structure_for_rpm (const char *type_name, GstStructure * s)
++{
++  guint i, num_fields;
++  const char *name;
++  GList *fields, *l, *strings;
++  GString *string;
++
++  name = gst_structure_get_name (s);
++  strings = NULL;
++  num_fields = gst_structure_n_fields (s);
++  fields = NULL;
++
++  for (i = 0; i < num_fields; i++) {
++    const char *field_name;
++
++    field_name = gst_structure_nth_field_name (s, i);
++    if (field_get_type (field_name) < 0) {
++      //g_message ("ignoring field named %s", field_name);
++      continue;
++    }
++
++    fields =
++        g_list_insert_sorted (fields, g_strdup (field_name),
++        (GCompareFunc) fields_type_compare);
++  }
++
++  /* Example:
++   * gstreamer1.0(decoder-video/mpeg)(mpegversion=1)()(64bit) */
++  string = g_string_new ("gstreamer1.0");
++  g_string_append_c (string, '(');
++  g_string_append (string, type_name);
++  g_string_append_c (string, '-');
++  g_string_append (string, name);
++  g_string_append_c (string, ')');
++
++  strings = g_list_append (strings, string);
++
++  for (l = fields; l != NULL; l = l->next) {
++    char *field_name;
++    GType type;
++
++    field_name = l->data;
++
++    type = gst_structure_get_field_type (s, field_name);
++    //g_message ("field is: %s, type: %s", field_name, g_type_name (type));
++
++    if (type == G_TYPE_INT) {
++      char *field;
++      int value;
++
++      gst_structure_get_int (s, field_name, &value);
++      field = g_strdup_printf ("(%s=%d)", field_name, value);
++      print_gst_structure_append_field (strings, field);
++      g_free (field);
++    } else if (type == G_TYPE_BOOLEAN) {
++      char *field;
++      int value;
++
++      gst_structure_get_boolean (s, field_name, &value);
++      field = g_strdup_printf ("(%s=%s)", field_name, value ? "true" : "false");
++      print_gst_structure_append_field (strings, field);
++      g_free (field);
++    } else if (type == GST_TYPE_INT_RANGE) {
++      const GValue *value;
++      int min, max;
++
++      value = gst_structure_get_value (s, field_name);
++      min = gst_value_get_int_range_min (value);
++      max = gst_value_get_int_range_max (value);
++
++      strings = print_gst_structure_dup_fields (strings, max - min + 1);
++
++      for (i = min; i <= max; i++) {
++        char *field;
++
++        field = g_strdup_printf ("(%s=%d)", field_name, i);
++        print_gst_structure_append_field_index (strings, field, max - min + 1,
++            i - min);
++        g_free (field);
++      }
++    } else if (type == GST_TYPE_LIST) {
++      const GValue *value;
++      int num_items;
++
++      value = gst_structure_get_value (s, field_name);
++      num_items = gst_value_list_get_size (value);
++
++      strings = print_gst_structure_dup_fields (strings, num_items);
++
++      for (i = 0; i < num_items; i++) {
++        char *field;
++        const GValue *item_value;
++
++        item_value = gst_value_list_get_value (value, i);
++        field = g_strdup_printf ("(%s=%d)", field_name,
++            g_value_get_int (item_value));
++        print_gst_structure_append_field_index (strings, field, num_items, i);
++        g_free (field);
++      }
++    } else if (type == G_TYPE_STRING) {
++      char *field;
++      const char *value;
++
++      value = gst_structure_get_string (s, field_name);
++      field = g_strdup_printf ("(%s=%s)", field_name, value);
++      print_gst_structure_append_field (strings, field);
++      g_free (field);
++    } else {
++      g_warning ("unhandled type! %s", g_type_name (type));
++    }
++
++    g_free (field_name);
++  }
++
++  g_list_free (fields);
++
++  for (l = strings; l != NULL; l = l->next) {
++    string = l->data;
++    g_print ("%s\n", string->str);
++    g_string_free (string, TRUE);
++  }
++  g_list_free (strings);
++}
++
++static void
++print_plugin_automatic_install_info_codecs (GstElementFactory * factory,
++    gboolean rpm_format)
+ {
+   GstPadDirection direction;
+   const gchar *type_name;
+@@ -1377,6 +1593,14 @@ print_plugin_automatic_install_info_code
+     return;
+   }
++#if 0
++  if (rpm_format) {
++    /* Ignore NONE ranked plugins */
++    if (GST_PLUGIN_FEATURE (factory)->rank == GST_RANK_NONE)
++      return;
++  }
++#endif
++
+   /* decoder/demuxer sink pads should always be static and there should only
+    * be one, the same applies to encoders/muxers and source pads */
+   static_templates = gst_element_factory_get_static_pad_templates (factory);
+@@ -1413,15 +1637,20 @@ print_plugin_automatic_install_info_code
+     gst_structure_remove_field (s, "rate");
+     gst_structure_remove_field (s, "depth");
+     gst_structure_remove_field (s, "clock-rate");
+-    s_str = gst_structure_to_string (s);
+-    g_print ("%s-%s\n", type_name, s_str);
+-    g_free (s_str);
++    if (!rpm_format) {
++      s_str = gst_structure_to_string (s);
++      g_print ("%s-%s\n", type_name, s_str);
++      g_free (s_str);
++    } else {
++      print_gst_structure_for_rpm (type_name, s);
++    }
+   }
+   gst_caps_unref (caps);
+ }
+ static void
+-print_plugin_automatic_install_info_protocols (GstElementFactory * factory)
++print_plugin_automatic_install_info_protocols (GstElementFactory * factory,
++    gboolean rpm_format)
+ {
+   const gchar *const *protocols;
+@@ -1430,13 +1659,19 @@ print_plugin_automatic_install_info_prot
+     switch (gst_element_factory_get_uri_type (factory)) {
+       case GST_URI_SINK:
+         while (*protocols != NULL) {
+-          g_print ("urisink-%s\n", *protocols);
++          if (!rpm_format)
++            g_print ("urisink-%s\n", *protocols);
++          else
++            g_print ("gstreamer1.0(urisink-%s)\n", *protocols);
+           ++protocols;
+         }
+         break;
+       case GST_URI_SRC:
+         while (*protocols != NULL) {
+-          g_print ("urisource-%s\n", *protocols);
++          if (!rpm_format)
++            g_print ("urisource-%s\n", *protocols);
++          else
++            g_print ("gstreamer1.0(urisource-%s)\n", *protocols);
+           ++protocols;
+         }
+         break;
+@@ -1447,7 +1682,7 @@ print_plugin_automatic_install_info_prot
+ }
+ static void
+-print_plugin_automatic_install_info (GstPlugin * plugin)
++print_plugin_automatic_install_info (GstPlugin * plugin, gboolean rpm_format)
+ {
+   GList *features, *l;
+@@ -1466,11 +1701,15 @@ print_plugin_automatic_install_info (Gst
+     if (feature_plugin == plugin) {
+       GstElementFactory *factory;
+-      g_print ("element-%s\n", gst_plugin_feature_get_name (feature));
++      if (!rpm_format)
++        g_print ("element-%s\n", gst_plugin_feature_get_name (feature));
++      else
++        g_print ("gstreamer1.0(element-%s)\n",
++            gst_plugin_feature_get_name (feature));
+       factory = GST_ELEMENT_FACTORY (feature);
+-      print_plugin_automatic_install_info_protocols (factory);
+-      print_plugin_automatic_install_info_codecs (factory);
++      print_plugin_automatic_install_info_protocols (factory, rpm_format);
++      print_plugin_automatic_install_info_codecs (factory, rpm_format);
+     }
+     if (feature_plugin)
+       gst_object_unref (feature_plugin);
+@@ -1492,7 +1731,7 @@ print_all_plugin_automatic_install_info
+     plugin = (GstPlugin *) (plugins->data);
+     plugins = g_list_next (plugins);
+-    print_plugin_automatic_install_info (plugin);
++    print_plugin_automatic_install_info (plugin, FALSE);
+   }
+   gst_plugin_list_free (orig_plugins);
+ }
+@@ -1504,6 +1743,7 @@ main (int argc, char *argv[])
+   gboolean do_print_blacklist = FALSE;
+   gboolean plugin_name = FALSE;
+   gboolean print_aii = FALSE;
++  gboolean print_aii_rpm = FALSE;
+   gboolean uri_handlers = FALSE;
+   gboolean check_exists = FALSE;
+   gchar *min_version = NULL;
+@@ -1521,6 +1761,9 @@ main (int argc, char *argv[])
+               "or all plugins provide.\n                                       "
+               "Useful in connection with external automatic plugin "
+               "installation mechanisms"), NULL},
++    {"rpm", '\0', 0, G_OPTION_ARG_NONE, &print_aii_rpm,
++        N_("Print the machine-parsable list of features of a plugin in RPM "
++              "Provides compatible-format"), NULL},
+     {"plugin", '\0', 0, G_OPTION_ARG_NONE, &plugin_name,
+         N_("List the plugin contents"), NULL},
+     {"exists", '\0', 0, G_OPTION_ARG_NONE, &check_exists,
+@@ -1650,7 +1893,7 @@ main (int argc, char *argv[])
+       /* if there is such a plugin, print out info */
+       if (plugin) {
+         if (print_aii) {
+-          print_plugin_automatic_install_info (plugin);
++          print_plugin_automatic_install_info (plugin, print_aii_rpm);
+         } else {
+           print_plugin_info (plugin);
+           print_plugin_features (plugin);
+@@ -1663,13 +1906,18 @@ main (int argc, char *argv[])
+           if (plugin) {
+             if (print_aii) {
+-              print_plugin_automatic_install_info (plugin);
++              print_plugin_automatic_install_info (plugin, print_aii_rpm);
+             } else {
+               print_plugin_info (plugin);
+               print_plugin_features (plugin);
+             }
+           } else {
+             g_printerr (_("Could not load plugin file: %s\n"), error->message);
++          if (!print_aii_rpm)
++            g_print (_("Could not load plugin file: %s\n"), error->message);
++          else
++            g_printerr (_("Could not load plugin file: %s\n"),
++              error->message);
+             g_error_free (error);
+             return -1;
+           }