diff --git a/talimatname/genel/isodumper/header.png b/talimatname/genel/isodumper/header.png
new file mode 100644
index 000000000..e80cb783a
Binary files /dev/null and b/talimatname/genel/isodumper/header.png differ
diff --git a/talimatname/genel/isodumper/header.svg b/talimatname/genel/isodumper/header.svg
new file mode 100644
index 000000000..958308603
--- /dev/null
+++ b/talimatname/genel/isodumper/header.svg
@@ -0,0 +1,435 @@
+
+
+
+
diff --git a/talimatname/genel/isodumper/talimat b/talimatname/genel/isodumper/talimat
new file mode 100644
index 000000000..5a3956406
--- /dev/null
+++ b/talimatname/genel/isodumper/talimat
@@ -0,0 +1,20 @@
+# Description: A tool for writing ISO images on a USB stick. It's a fork of usb-imagewriter.
+# URL: https://github.com/papoteur-mga/isodumper
+# Packager: alihan-ozturk28@hotmail.com
+# Depends on: intltool imagemagick coreutils pango polkit procps-ng python-gtk python-cairo python-gobject2 libglade python dbus-python python-parted udisks2 xorg-term
+
+name=isodumper
+version=0.48
+release=1
+
+source=( http://gitweb.mageia.org/software/isodumper/snapshot/$name-$version.tar.gz
+ header.png
+ header.svg)
+
+build() {
+cd $name-$version
+make
+make DESTDIR=$PKG install
+cp $SRC/header.png $PKG/usr/share/isodumper
+cp $SRC/header.svg $PKG/usr/share/isodumper
+}
diff --git a/talimatname/genel/python-gobject2/pygobject-2.28.6-fixes-1.patch b/talimatname/genel/python-gobject2/pygobject-2.28.6-fixes-1.patch
new file mode 100644
index 000000000..58845c399
--- /dev/null
+++ b/talimatname/genel/python-gobject2/pygobject-2.28.6-fixes-1.patch
@@ -0,0 +1,720 @@
+Submitted By: Andrew Benton (gobject-introspection) and Armin K. , after thomas kaedin (git)
+Date: 2012-03-29 (gobject-introspection) and 2014-03-04 (git)
+Initial Package Version: 2.28.6
+Upstream Status: not submitted (gobject-introspection) and committed (git)
+Origin: Andrew Benton (gobject-introspection) and upstream (git)
+Description: Fixes compiling with recent versions of gobject-introspection; and upstream fixes
+
+diff -Naur pygobject-2.28.6.orig/configure.ac pygobject-2.28.6/configure.ac
+--- pygobject-2.28.6.orig/configure.ac 2011-06-13 13:33:56.000000000 -0300
++++ pygobject-2.28.6/configure.ac 2014-03-04 18:36:07.947079909 -0300
+@@ -85,7 +85,7 @@
+ AM_PROG_CC_STDC
+ AM_PROG_CC_C_O
+
+-# check that we have the minimum version of python necisary to build
++# check that we have the minimum version of python necessary to build
+ JD_PATH_PYTHON(python_min_ver)
+
+ # check if we are building for python 3
+@@ -236,7 +236,7 @@
+ AC_ARG_ENABLE(introspection,
+ AC_HELP_STRING([--enable-introspection], [Use introspection information]),
+ enable_introspection=$enableval,
+- enable_introspection=yes)
++ enable_introspection=no)
+ if test "$enable_introspection" != no; then
+ AC_DEFINE(ENABLE_INTROSPECTION,1,Use introspection information)
+ PKG_CHECK_MODULES(GI,
+@@ -262,6 +262,9 @@
+ AC_SUBST(INTROSPECTION_SCANNER)
+ AC_SUBST(INTROSPECTION_COMPILER)
+
++dnl Do not install codegen for Python 3.
++AM_CONDITIONAL(ENABLE_CODEGEN, test $build_py3k = false)
++
+ dnl add required cflags ...
+ if test "x$GCC" = "xyes"; then
+ JH_ADD_CFLAG([-Wall])
+@@ -281,8 +284,6 @@
+ Makefile
+ pygobject-2.0.pc
+ pygobject-2.0-uninstalled.pc
+- codegen/Makefile
+- codegen/pygobject-codegen-2.0
+ docs/Makefile
+ docs/reference/entities.docbook
+ docs/xsl/fixxref.py
+@@ -295,6 +296,13 @@
+ examples/Makefile
+ tests/Makefile
+ PKG-INFO)
++
++if test $build_py3k = false; then
++ AC_CONFIG_FILES(
++ codegen/Makefile
++ codegen/pygobject-codegen-2.0)
++fi
++
+ AC_OUTPUT
+
+ echo
+diff -Naur pygobject-2.28.6.orig/gi/module.py pygobject-2.28.6/gi/module.py
+--- pygobject-2.28.6.orig/gi/module.py 2011-06-13 13:30:25.000000000 -0300
++++ pygobject-2.28.6/gi/module.py 2014-03-04 18:36:07.947079909 -0300
+@@ -24,7 +24,11 @@
+
+ import os
+ import gobject
+-import string
++try:
++ maketrans = ''.maketrans
++except AttributeError:
++ # fallback for Python 2
++ from string import maketrans
+
+ import gi
+ from .overrides import registry
+@@ -124,7 +128,7 @@
+ # Don't use upper() here to avoid locale specific
+ # identifier conversion (e. g. in Turkish 'i'.upper() == 'i')
+ # see https://bugzilla.gnome.org/show_bug.cgi?id=649165
+- ascii_upper_trans = string.maketrans(
++ ascii_upper_trans = maketrans(
+ 'abcdefgjhijklmnopqrstuvwxyz',
+ 'ABCDEFGJHIJKLMNOPQRSTUVWXYZ')
+ for value_info in info.get_values():
+diff -Naur pygobject-2.28.6.orig/gi/overrides/Gtk.py pygobject-2.28.6/gi/overrides/Gtk.py
+--- pygobject-2.28.6.orig/gi/overrides/Gtk.py 2011-06-13 13:33:49.000000000 -0300
++++ pygobject-2.28.6/gi/overrides/Gtk.py 2014-03-04 18:36:07.949079863 -0300
+@@ -35,6 +35,18 @@
+ Gtk = modules['Gtk']._introspection_module
+ __all__ = []
+
++if Gtk._version == '2.0':
++ import warnings
++ warn_msg = "You have imported the Gtk 2.0 module. Because Gtk 2.0 \
++was not designed for use with introspection some of the \
++interfaces and API will fail. As such this is not supported \
++by the pygobject development team and we encourage you to \
++port your app to Gtk 3 or greater. PyGTK is the recomended \
++python module to use with Gtk 2.0"
++
++ warnings.warn(warn_msg, RuntimeWarning)
++
++
+ class Widget(Gtk.Widget):
+
+ def translate_coordinates(self, dest_widget, src_x, src_y):
+@@ -401,16 +413,22 @@
+ def __init__(self,
+ parent=None,
+ flags=0,
+- type=Gtk.MessageType.INFO,
++ message_type=Gtk.MessageType.INFO,
+ buttons=Gtk.ButtonsType.NONE,
+ message_format=None,
+ **kwds):
+
+ if message_format != None:
+ kwds['text'] = message_format
++
++ if 'type' in kwds:
++ import warnings
++ warnings.warn("The use of the keyword type as a parameter of the Gtk.MessageDialog constructor has been depricated. Please use message_type instead.", DeprecationWarning)
++ message_type = kwds['type']
++
+ Gtk.MessageDialog.__init__(self,
+ _buttons_property=buttons,
+- message_type=type,
++ message_type=message_type,
+ **kwds)
+ Dialog.__init__(self, parent=parent, flags=flags)
+
+@@ -619,12 +637,18 @@
+ def forward_search(self, string, flags, limit):
+ success, match_start, match_end = super(TextIter, self).forward_search(string,
+ flags, limit)
+- return (match_start, match_end,)
++ if success:
++ return (match_start, match_end)
++ else:
++ return None
+
+ def backward_search(self, string, flags, limit):
+ success, match_start, match_end = super(TextIter, self).backward_search(string,
+ flags, limit)
+- return (match_start, match_end,)
++ if success:
++ return (match_start, match_end)
++ else:
++ return None
+
+ def begins_tag(self, tag=None):
+ return super(TextIter, self).begins_tag(tag)
+diff -Naur pygobject-2.28.6.orig/gi/pygi-foreign-cairo.c pygobject-2.28.6/gi/pygi-foreign-cairo.c
+--- pygobject-2.28.6.orig/gi/pygi-foreign-cairo.c 2011-06-13 13:33:49.000000000 -0300
++++ pygobject-2.28.6/gi/pygi-foreign-cairo.c 2014-03-04 18:36:07.949079863 -0300
+@@ -30,7 +30,7 @@
+ #include
+ #endif
+
+-Pycairo_CAPI_t *Pycairo_CAPI;
++static Pycairo_CAPI_t *Pycairo_CAPI;
+
+ #include "pygi-foreign.h"
+
+@@ -114,10 +114,15 @@
+ Py_RETURN_NONE;
+ }
+
+-static PyMethodDef _gi_cairo_functions[] = {};
++static PyMethodDef _gi_cairo_functions[] = {0,};
+ PYGLIB_MODULE_START(_gi_cairo, "_gi_cairo")
+ {
++#if PY_VERSION_HEX < 0x03000000
+ Pycairo_IMPORT;
++#else
++ Pycairo_CAPI = (Pycairo_CAPI_t*) PyCObject_Import("cairo", "CAPI");
++#endif
++
+ if (Pycairo_CAPI == NULL)
+ return PYGLIB_MODULE_ERROR_RETURN;
+
+diff -Naur pygobject-2.28.6.orig/gi/pygi-info.c pygobject-2.28.6/gi/pygi-info.c
+--- pygobject-2.28.6.orig/gi/pygi-info.c 2011-06-13 13:30:25.000000000 -0300
++++ pygobject-2.28.6/gi/pygi-info.c 2014-03-04 18:35:32.473899924 -0300
+@@ -162,9 +162,6 @@
+ case GI_INFO_TYPE_CONSTANT:
+ type = &PyGIConstantInfo_Type;
+ break;
+- case GI_INFO_TYPE_ERROR_DOMAIN:
+- type = &PyGIErrorDomainInfo_Type;
+- break;
+ case GI_INFO_TYPE_UNION:
+ type = &PyGIUnionInfo_Type;
+ break;
+@@ -481,7 +478,6 @@
+ case GI_INFO_TYPE_INVALID:
+ case GI_INFO_TYPE_FUNCTION:
+ case GI_INFO_TYPE_CONSTANT:
+- case GI_INFO_TYPE_ERROR_DOMAIN:
+ case GI_INFO_TYPE_VALUE:
+ case GI_INFO_TYPE_SIGNAL:
+ case GI_INFO_TYPE_PROPERTY:
+@@ -860,7 +856,6 @@
+ case GI_INFO_TYPE_INVALID:
+ case GI_INFO_TYPE_FUNCTION:
+ case GI_INFO_TYPE_CONSTANT:
+- case GI_INFO_TYPE_ERROR_DOMAIN:
+ case GI_INFO_TYPE_VALUE:
+ case GI_INFO_TYPE_SIGNAL:
+ case GI_INFO_TYPE_PROPERTY:
+diff -Naur pygobject-2.28.6.orig/gio/gio-types.defs pygobject-2.28.6/gio/gio-types.defs
+--- pygobject-2.28.6.orig/gio/gio-types.defs 2011-06-13 13:33:49.000000000 -0300
++++ pygobject-2.28.6/gio/gio-types.defs 2014-03-04 18:36:07.950079840 -0300
+@@ -526,7 +526,7 @@
+ )
+ )
+
+-(define-enum MountMountFlags
++(define-flags MountMountFlags
+ (in-module "gio")
+ (c-name "GMountMountFlags")
+ (gtype-id "G_TYPE_MOUNT_MOUNT_FLAGS")
+@@ -545,7 +545,7 @@
+ )
+ )
+
+-(define-enum DriveStartFlags
++(define-flags DriveStartFlags
+ (in-module "gio")
+ (c-name "GDriveStartFlags")
+ (gtype-id "G_TYPE_DRIVE_START_FLAGS")
+@@ -770,7 +770,7 @@
+ )
+ )
+
+-(define-enum SocketMsgFlags
++(define-flags SocketMsgFlags
+ (in-module "gio")
+ (c-name "GSocketMsgFlags")
+ (gtype-id "G_TYPE_SOCKET_MSG_FLAGS")
+diff -Naur pygobject-2.28.6.orig/gobject/gobjectmodule.c pygobject-2.28.6/gobject/gobjectmodule.c
+--- pygobject-2.28.6.orig/gobject/gobjectmodule.c 2011-06-13 13:33:49.000000000 -0300
++++ pygobject-2.28.6/gobject/gobjectmodule.c 2014-03-04 18:36:07.952079793 -0300
+@@ -312,13 +312,6 @@
+ pyglib_gil_state_release(state);
+ }
+
+-static void
+-pyg_object_class_init(GObjectClass *class, PyObject *py_class)
+-{
+- class->set_property = pyg_object_set_property;
+- class->get_property = pyg_object_get_property;
+-}
+-
+ typedef struct _PyGSignalAccumulatorData {
+ PyObject *callable;
+ PyObject *user_data;
+@@ -484,15 +477,14 @@
+ }
+
+ static PyObject *
+-add_signals (GType instance_type, PyObject *signals)
++add_signals (GObjectClass *klass, PyObject *signals)
+ {
+ gboolean ret = TRUE;
+- GObjectClass *oclass;
+ Py_ssize_t pos = 0;
+ PyObject *key, *value, *overridden_signals = NULL;
++ GType instance_type = G_OBJECT_CLASS_TYPE (klass);
+
+ overridden_signals = PyDict_New();
+- oclass = g_type_class_ref(instance_type);
+ while (PyDict_Next(signals, &pos, &key, &value)) {
+ const gchar *signal_name;
+ gchar *signal_name_canon, *c;
+@@ -530,7 +522,6 @@
+ if (!ret)
+ break;
+ }
+- g_type_class_unref(oclass);
+ if (ret)
+ return overridden_signals;
+ else {
+@@ -800,14 +791,12 @@
+ }
+
+ static gboolean
+-add_properties (GType instance_type, PyObject *properties)
++add_properties (GObjectClass *klass, PyObject *properties)
+ {
+ gboolean ret = TRUE;
+- GObjectClass *oclass;
+ Py_ssize_t pos = 0;
+ PyObject *key, *value;
+
+- oclass = g_type_class_ref(instance_type);
+ while (PyDict_Next(properties, &pos, &key, &value)) {
+ const gchar *prop_name;
+ GType prop_type;
+@@ -873,7 +862,7 @@
+ Py_DECREF(slice);
+
+ if (pspec) {
+- g_object_class_install_property(oclass, 1, pspec);
++ g_object_class_install_property(klass, 1, pspec);
+ } else {
+ PyObject *type, *value, *traceback;
+ ret = FALSE;
+@@ -883,7 +872,7 @@
+ g_snprintf(msg, 256,
+ "%s (while registering property '%s' for GType '%s')",
+ PYGLIB_PyUnicode_AsString(value),
+- prop_name, g_type_name(instance_type));
++ prop_name, G_OBJECT_CLASS_NAME(klass));
+ Py_DECREF(value);
+ value = PYGLIB_PyUnicode_FromString(msg);
+ }
+@@ -892,11 +881,63 @@
+ }
+ }
+
+- g_type_class_unref(oclass);
+ return ret;
+ }
+
+ static void
++pyg_object_class_init(GObjectClass *class, PyObject *py_class)
++{
++ PyObject *gproperties, *gsignals, *overridden_signals;
++ PyObject *class_dict = ((PyTypeObject*) py_class)->tp_dict;
++
++ class->set_property = pyg_object_set_property;
++ class->get_property = pyg_object_get_property;
++
++ /* install signals */
++ /* we look this up in the instance dictionary, so we don't
++ * accidentally get a parent type's __gsignals__ attribute. */
++ gsignals = PyDict_GetItemString(class_dict, "__gsignals__");
++ if (gsignals) {
++ if (!PyDict_Check(gsignals)) {
++ PyErr_SetString(PyExc_TypeError,
++ "__gsignals__ attribute not a dict!");
++ return;
++ }
++ if (!(overridden_signals = add_signals(class, gsignals))) {
++ return;
++ }
++ if (PyDict_SetItemString(class_dict, "__gsignals__",
++ overridden_signals)) {
++ return;
++ }
++ Py_DECREF(overridden_signals);
++
++ PyDict_DelItemString(class_dict, "__gsignals__");
++ } else {
++ PyErr_Clear();
++ }
++
++ /* install properties */
++ /* we look this up in the instance dictionary, so we don't
++ * accidentally get a parent type's __gproperties__ attribute. */
++ gproperties = PyDict_GetItemString(class_dict, "__gproperties__");
++ if (gproperties) {
++ if (!PyDict_Check(gproperties)) {
++ PyErr_SetString(PyExc_TypeError,
++ "__gproperties__ attribute not a dict!");
++ return;
++ }
++ if (!add_properties(class, gproperties)) {
++ return;
++ }
++ PyDict_DelItemString(class_dict, "__gproperties__");
++ /* Borrowed reference. Py_DECREF(gproperties); */
++ } else {
++ PyErr_Clear();
++ }
++}
++
++static void
+ pyg_register_class_init(GType gtype, PyGClassInitFunc class_init)
+ {
+ GSList *list;
+@@ -1068,7 +1109,7 @@
+ */
+ static void
+ pyg_type_add_interfaces(PyTypeObject *class, GType instance_type,
+- PyObject *bases, gboolean new_interfaces,
++ PyObject *bases,
+ GType *parent_interfaces, guint n_parent_interfaces)
+ {
+ int i;
+@@ -1082,7 +1123,6 @@
+ guint k;
+ PyObject *base = PyTuple_GET_ITEM(bases, i);
+ GType itype;
+- gboolean is_new = TRUE;
+ const GInterfaceInfo *iinfo;
+ GInterfaceInfo iinfo_copy;
+
+@@ -1099,16 +1139,6 @@
+ if (!G_TYPE_IS_INTERFACE(itype))
+ continue;
+
+- for (k = 0; k < n_parent_interfaces; ++k) {
+- if (parent_interfaces[k] == itype) {
+- is_new = FALSE;
+- break;
+- }
+- }
+-
+- if ((new_interfaces && !is_new) || (!new_interfaces && is_new))
+- continue;
+-
+ iinfo = pyg_lookup_interface_info(itype);
+ if (!iinfo) {
+ gchar *error;
+@@ -1129,7 +1159,7 @@
+ int
+ pyg_type_register(PyTypeObject *class, const char *type_name)
+ {
+- PyObject *gtype, *gsignals, *gproperties, *overridden_signals;
++ PyObject *gtype;
+ GType parent_type, instance_type;
+ GType *parent_interfaces;
+ guint n_parent_interfaces;
+@@ -1216,88 +1246,22 @@
+ }
+
+ /*
+- * Note: Interfaces to be implemented are searched twice. First
+- * we register interfaces that are already implemented by a parent
+- * type. The second time, the remaining interfaces are
+- * registered, i.e. the ones that are not implemented by a parent
+- * type. In between these two loops, properties and signals are
+- * registered. It has to be done this way, in two steps,
+- * otherwise glib will complain. If registering all interfaces
+- * always before properties, you get an error like:
+- *
+- * ../gobject:121: Warning: Object class
+- * test_interface+MyObject doesn't implement property
+- * 'some-property' from interface 'TestInterface'
+- *
+- * If, on the other hand, you register interfaces after
+- * registering the properties, you get something like:
+- *
+- * ../gobject:121: Warning: cannot add interface type
+- * `TestInterface' to type `test_interface+MyUnknown', since
+- * type `test_interface+MyUnknown' already conforms to
+- * interface
+- *
+- * This looks like a GLib quirk, but no bug has been filed
+- * upstream. However we have a unit test for this particular
+- * problem, which can be found in test_interfaces.py, class
+- * TestInterfaceImpl.
++ * Note, all interfaces need to be registered before the first
++ * g_type_class_ref(), see bug #686149.
+ *
+ * See also comment above pyg_type_add_interfaces().
+ */
+- pyg_type_add_interfaces(class, instance_type, class->tp_bases, FALSE,
++ pyg_type_add_interfaces(class, instance_type, class->tp_bases,
+ parent_interfaces, n_parent_interfaces);
+
+- /* we look this up in the instance dictionary, so we don't
+- * accidentally get a parent type's __gsignals__ attribute. */
+- gsignals = PyDict_GetItemString(class->tp_dict, "__gsignals__");
+- if (gsignals) {
+- if (!PyDict_Check(gsignals)) {
+- PyErr_SetString(PyExc_TypeError,
+- "__gsignals__ attribute not a dict!");
+- g_free(parent_interfaces);
+- return -1;
+- }
+- if (!(overridden_signals = add_signals(instance_type, gsignals))) {
+- g_free(parent_interfaces);
+- return -1;
+- }
+- if (PyDict_SetItemString(class->tp_dict, "__gsignals__",
+- overridden_signals)) {
+- g_free(parent_interfaces);
+- return -1;
+- }
+- Py_DECREF(overridden_signals);
+- } else {
+- PyErr_Clear();
+- }
+
+- /* we look this up in the instance dictionary, so we don't
+- * accidentally get a parent type's __gsignals__ attribute. */
+- gproperties = PyDict_GetItemString(class->tp_dict, "__gproperties__");
+- if (gproperties) {
+- if (!PyDict_Check(gproperties)) {
+- PyErr_SetString(PyExc_TypeError,
+- "__gproperties__ attribute not a dict!");
+- g_free(parent_interfaces);
+- return -1;
+- }
+- if (!add_properties(instance_type, gproperties)) {
+- g_free(parent_interfaces);
+- return -1;
+- }
+- PyDict_DelItemString(class->tp_dict, "__gproperties__");
+- /* Borrowed reference. Py_DECREF(gproperties); */
+- } else {
+- PyErr_Clear();
++ gclass = g_type_class_ref(instance_type);
++ if (PyErr_Occurred() != NULL) {
++ g_type_class_unref(gclass);
++ g_free(parent_interfaces);
++ return -1;
+ }
+
+- /* Register new interfaces, that are _not_ already defined by
+- * the parent type. FIXME: See above.
+- */
+- pyg_type_add_interfaces(class, instance_type, class->tp_bases, TRUE,
+- parent_interfaces, n_parent_interfaces);
+-
+- gclass = g_type_class_ref(instance_type);
+ if (pyg_run_class_init(instance_type, gclass, class)) {
+ g_type_class_unref(gclass);
+ g_free(parent_interfaces);
+@@ -1306,9 +1270,8 @@
+ g_type_class_unref(gclass);
+ g_free(parent_interfaces);
+
+- if (gsignals)
+- PyDict_DelItemString(class->tp_dict, "__gsignals__");
+-
++ if (PyErr_Occurred() != NULL)
++ return -1;
+ return 0;
+ }
+
+diff -Naur pygobject-2.28.6.orig/gobject/propertyhelper.py pygobject-2.28.6/gobject/propertyhelper.py
+--- pygobject-2.28.6.orig/gobject/propertyhelper.py 2011-06-13 13:30:25.000000000 -0300
++++ pygobject-2.28.6/gobject/propertyhelper.py 2014-03-04 18:36:07.953079770 -0300
+@@ -188,14 +188,16 @@
+ return TYPE_STRING
+ elif type_ == object:
+ return TYPE_PYOBJECT
+- elif isinstance(type_, type) and issubclass(type_, _gobject.GObject):
++ elif (isinstance(type_, type) and
++ issubclass(type_, (_gobject.GObject,
++ _gobject.GEnum))):
+ return type_.__gtype__
+ elif type_ in [TYPE_NONE, TYPE_INTERFACE, TYPE_CHAR, TYPE_UCHAR,
+- TYPE_INT, TYPE_UINT, TYPE_BOOLEAN, TYPE_LONG,
+- TYPE_ULONG, TYPE_INT64, TYPE_UINT64, TYPE_ENUM,
+- TYPE_FLAGS, TYPE_FLOAT, TYPE_DOUBLE, TYPE_POINTER,
+- TYPE_BOXED, TYPE_PARAM, TYPE_OBJECT, TYPE_STRING,
+- TYPE_PYOBJECT]:
++ TYPE_INT, TYPE_UINT, TYPE_BOOLEAN, TYPE_LONG,
++ TYPE_ULONG, TYPE_INT64, TYPE_UINT64,
++ TYPE_FLOAT, TYPE_DOUBLE, TYPE_POINTER,
++ TYPE_BOXED, TYPE_PARAM, TYPE_OBJECT, TYPE_STRING,
++ TYPE_PYOBJECT]:
+ return type_
+ else:
+ raise TypeError("Unsupported type: %r" % (type_,))
+@@ -224,6 +226,12 @@
+ elif ptype == TYPE_PYOBJECT:
+ if default is not None:
+ raise TypeError("object types does not have default values")
++ elif gobject.type_is_a(ptype, TYPE_ENUM):
++ if default is None:
++ raise TypeError("enum properties needs a default value")
++ elif not gobject.type_is_a(default, ptype):
++ raise TypeError("enum value %s must be an instance of %r" %
++ (default, ptype))
+
+ def _get_minimum(self):
+ ptype = self.type
+@@ -291,7 +299,8 @@
+ if ptype in [TYPE_INT, TYPE_UINT, TYPE_LONG, TYPE_ULONG,
+ TYPE_INT64, TYPE_UINT64, TYPE_FLOAT, TYPE_DOUBLE]:
+ args = self._get_minimum(), self._get_maximum(), self.default
+- elif ptype == TYPE_STRING or ptype == TYPE_BOOLEAN:
++ elif (ptype == TYPE_STRING or ptype == TYPE_BOOLEAN or
++ ptype.is_a(TYPE_ENUM)):
+ args = (self.default,)
+ elif ptype == TYPE_PYOBJECT:
+ args = ()
+diff -Naur pygobject-2.28.6.orig/gobject/pygobject.c pygobject-2.28.6/gobject/pygobject.c
+--- pygobject-2.28.6.orig/gobject/pygobject.c 2011-06-13 13:33:49.000000000 -0300
++++ pygobject-2.28.6/gobject/pygobject.c 2014-03-04 18:36:07.954079747 -0300
+@@ -991,7 +991,9 @@
+ PyObject *
+ pygobject_new_sunk(GObject *obj)
+ {
+- g_object_set_qdata (obj, pygobject_ref_sunk_key, GINT_TO_POINTER (1));
++ if (obj)
++ g_object_set_qdata (obj, pygobject_ref_sunk_key, GINT_TO_POINTER (1));
++
+ return pygobject_new_full(obj, TRUE, NULL);
+ }
+
+diff -Naur pygobject-2.28.6.orig/Makefile.am pygobject-2.28.6/Makefile.am
+--- pygobject-2.28.6.orig/Makefile.am 2011-06-13 13:33:49.000000000 -0300
++++ pygobject-2.28.6/Makefile.am 2014-03-04 18:36:07.954079747 -0300
+@@ -1,7 +1,11 @@
+ ACLOCAL_AMFLAGS = -I m4
+ AUTOMAKE_OPTIONS = 1.7
+
+-SUBDIRS = docs codegen glib gobject gio examples
++SUBDIRS = docs glib gobject gio examples
++
++if ENABLE_CODEGEN
++SUBDIRS += codegen
++endif
+
+ if ENABLE_INTROSPECTION
+ SUBDIRS += gi
+diff -Naur pygobject-2.28.6.orig/tests/Makefile.am pygobject-2.28.6/tests/Makefile.am
+--- pygobject-2.28.6.orig/tests/Makefile.am 2011-06-13 13:33:49.000000000 -0300
++++ pygobject-2.28.6/tests/Makefile.am 2014-03-04 18:36:07.955079724 -0300
+@@ -104,6 +104,7 @@
+ test-floating.h \
+ test-thread.h \
+ test-unknown.h \
++ te_ST@nouppera \
+ org.gnome.test.gschema.xml
+
+ EXTRA_DIST += $(TEST_FILES_STATIC) $(TEST_FILES_GI) $(TEST_FILES_GIO)
+diff -Naur pygobject-2.28.6.orig/tests/test_gdbus.py pygobject-2.28.6/tests/test_gdbus.py
+--- pygobject-2.28.6.orig/tests/test_gdbus.py 2011-06-13 13:33:49.000000000 -0300
++++ pygobject-2.28.6/tests/test_gdbus.py 2014-03-04 18:36:07.956079701 -0300
+@@ -67,8 +67,10 @@
+
+ def test_native_calls_async(self):
+ def call_done(obj, result, user_data):
+- user_data['result'] = obj.call_finish(result)
+- user_data['main_loop'].quit()
++ try:
++ user_data['result'] = obj.call_finish(result)
++ finally:
++ user_data['main_loop'].quit()
+
+ main_loop = gobject.MainLoop()
+ data = {'main_loop': main_loop}
+diff -Naur pygobject-2.28.6.orig/tests/test_properties.py pygobject-2.28.6/tests/test_properties.py
+--- pygobject-2.28.6.orig/tests/test_properties.py 2011-06-13 13:30:25.000000000 -0300
++++ pygobject-2.28.6/tests/test_properties.py 2014-03-04 18:36:07.956079701 -0300
+@@ -14,6 +14,8 @@
+ G_MININT, G_MAXINT, G_MAXUINT, G_MINLONG, G_MAXLONG, \
+ G_MAXULONG
+
++from gi.repository import Gio
++
+ if sys.version_info < (3, 0):
+ TEST_UTF8 = "\xe2\x99\xa5"
+ UNICODE_UTF8 = unicode(TEST_UTF8, 'UTF-8')
+@@ -34,6 +36,9 @@
+ uint64 = gobject.property(
+ type=TYPE_UINT64, flags=PARAM_READWRITE|PARAM_CONSTRUCT)
+
++ enum = gobject.property(
++ type=Gio.SocketType, default=Gio.SocketType.STREAM)
++
+ class TestProperties(unittest.TestCase):
+ def testGetSet(self):
+ obj = PropertyObject()
+@@ -61,8 +66,9 @@
+ self.failUnless(pspec.name in ['normal',
+ 'construct',
+ 'construct-only',
+- 'uint64'])
+- self.assertEqual(len(obj), 4)
++ 'uint64',
++ 'enum'])
++ self.assertEqual(len(obj), 5)
+
+ def testNormal(self):
+ obj = new(PropertyObject, normal="123")
+@@ -127,6 +133,34 @@
+ (etype, ex) = sys.exc_info()[2:]
+ self.fail(str(ex))
+
++ def testEnum(self):
++ obj = new(PropertyObject)
++ self.assertEqual(obj.props.enum, Gio.SocketType.STREAM)
++ self.assertEqual(obj.enum, Gio.SocketType.STREAM)
++ obj.enum = Gio.SocketType.DATAGRAM
++ self.assertEqual(obj.props.enum, Gio.SocketType.DATAGRAM)
++ self.assertEqual(obj.enum, Gio.SocketType.DATAGRAM)
++ obj.props.enum = Gio.SocketType.STREAM
++ self.assertEqual(obj.props.enum, Gio.SocketType.STREAM)
++ self.assertEqual(obj.enum, Gio.SocketType.STREAM)
++ obj.props.enum = 2
++ self.assertEqual(obj.props.enum, Gio.SocketType.DATAGRAM)
++ self.assertEqual(obj.enum, Gio.SocketType.DATAGRAM)
++ obj.enum = 1
++ self.assertEqual(obj.props.enum, Gio.SocketType.STREAM)
++ self.assertEqual(obj.enum, Gio.SocketType.STREAM)
++
++ self.assertRaises(TypeError, setattr, obj, 'enum', 'foo')
++ self.assertRaises(TypeError, setattr, obj, 'enum', object())
++
++ self.assertRaises(TypeError, gobject.property, type=Gio.SocketType)
++ self.assertRaises(TypeError, gobject.property, type=Gio.SocketType,
++ default=Gio.SocketProtocol.TCP)
++ self.assertRaises(TypeError, gobject.property, type=Gio.SocketType,
++ default=object())
++ self.assertRaises(TypeError, gobject.property, type=Gio.SocketType,
++ default=1)
++
+ def testRange(self):
+ # kiwi code
+ def max(c):
+@@ -270,8 +304,6 @@
+ # self.assertRaises(TypeError, gobject.property, type=bool, default=0)
+ self.assertRaises(TypeError, gobject.property, type=bool, default='ciao mamma')
+ self.assertRaises(TypeError, gobject.property, type=bool)
+- self.assertRaises(TypeError, gobject.property, type=GEnum)
+- self.assertRaises(TypeError, gobject.property, type=GEnum, default=0)
+ self.assertRaises(TypeError, gobject.property, type=object, default=0)
+ self.assertRaises(TypeError, gobject.property, type=complex)
+ self.assertRaises(TypeError, gobject.property, flags=-10)
diff --git a/talimatname/genel/python-gobject2/talimat b/talimatname/genel/python-gobject2/talimat
index b0317f674..9484d42a9 100644
--- a/talimatname/genel/python-gobject2/talimat
+++ b/talimatname/genel/python-gobject2/talimat
@@ -1,17 +1,19 @@
# Description: provides the links of Python 2 for the class GObject of GLib.
# URL: http://www.gnome.org/
# Packager: pierre at nutyx dot org
-# Depends on: python-cairo xorg-libxxf86vm
+# Depends on: python-cairo xorg-libxxf86vm gobject-introspection
name=python-gobject2
version=2.28.6
release=1
-source=(http://ftp.gnome.org/pub/gnome/sources/pygobject/${version%.*}/pygobject-$version.tar.xz)
+source=( http://ftp.gnome.org/pub/gnome/sources/pygobject/${version%.*}/pygobject-$version.tar.xz
+ pygobject-2.28.6-fixes-1.patch)
build() {
cd pygobject-$version
-./configure --prefix=/usr --disable-introspection
+patch -Np1 -i $SRC/pygobject-2.28.6-fixes-1.patch
+./configure --prefix=/usr
make
make DESTDIR=$PKG install
}