/** * asb_context_disable_multiarch_pkgs: **/ static void asb_context_disable_multiarch_pkgs (AsbContext *ctx) { AsbContextPrivate *priv = GET_PRIVATE (ctx); AsbPackage *pkg; const gchar *arch; gboolean found_arch = FALSE; guint i; /* are there any 64-bit packages in the repo? */ for (i = 0; i < priv->packages->len; i++) { pkg = ASB_PACKAGE (g_ptr_array_index (priv->packages, i)); if (g_strcmp0 (asb_package_get_arch (pkg), "x86_64") == 0) { found_arch = TRUE; break; } } if (!found_arch) return; /* disable any alternate-arch packages */ for (i = 0; i < priv->packages->len; i++) { pkg = ASB_PACKAGE (g_ptr_array_index (priv->packages, i)); arch = asb_package_get_arch (pkg); if (arch == NULL) continue; if (g_strcmp0 (arch, "x86_64") != 0 && g_strcmp0 (arch, "noarch") != 0) { g_debug ("disabling alternate-arch %s", asb_package_get_filename (pkg)); asb_package_set_enabled (pkg, FALSE); } } }
static void asb_package_finalize (GObject *object) { AsbPackage *pkg = ASB_PACKAGE (object); AsbPackagePrivate *priv = GET_PRIVATE (pkg); g_mutex_clear (&priv->mutex_log); g_strfreev (priv->filelist); g_ptr_array_unref (priv->deps); g_free (priv->filename); g_free (priv->basename); g_free (priv->name); g_free (priv->version); g_free (priv->release); g_free (priv->arch); g_free (priv->url); g_free (priv->nevr); g_free (priv->nevra); g_free (priv->evr); g_free (priv->license); g_free (priv->vcs); g_free (priv->source_nevra); g_free (priv->source_pkgname); g_string_free (priv->log, TRUE); g_timer_destroy (priv->timer); g_hash_table_unref (priv->configs); g_ptr_array_unref (priv->releases); g_hash_table_unref (priv->releases_hash); G_OBJECT_CLASS (asb_package_parent_class)->finalize (object); }
/** * asb_package_deb_new: * * Creates a new DEB package. * * Returns: a package * * Since: 0.1.0 **/ AsbPackage * asb_package_deb_new (void) { AsbPackage *pkg; pkg = g_object_new (ASB_TYPE_PACKAGE_DEB, NULL); return ASB_PACKAGE (pkg); }
AsbPackage * asb_package_alpm_new (void) { AsbPackage *pkg; pkg = g_object_new (ASB_TYPE_PACKAGE_ALPM, NULL); return ASB_PACKAGE (pkg); }
/** * asb_context_disable_older_pkgs: **/ static void asb_context_disable_older_pkgs (AsbContext *ctx) { AsbContextPrivate *priv = GET_PRIVATE (ctx); AsbPackage *found; AsbPackage *pkg; const gchar *key; guint i; g_autoptr(GHashTable) newest = NULL; newest = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_object_unref); for (i = 0; i < priv->packages->len; i++) { pkg = ASB_PACKAGE (g_ptr_array_index (priv->packages, i)); if (!asb_package_get_enabled (pkg)) continue; key = asb_package_get_name (pkg); if (key == NULL) continue; switch (asb_package_get_kind (pkg)) { case ASB_PACKAGE_KIND_DEFAULT: case ASB_PACKAGE_KIND_BUNDLE: found = g_hash_table_lookup (newest, key); if (found != NULL) { if (asb_package_compare (pkg, found) <= 0) { asb_package_set_enabled (pkg, FALSE); continue; } asb_package_set_enabled (found, FALSE); } break; default: /* allow multiple versions */ break; } g_hash_table_insert (newest, g_strdup (key), g_object_ref (pkg)); } }