diff options
author | Robey Pointer <robey@src.gnome.org> | 2001-02-03 03:12:16 +0000 |
---|---|---|
committer | Robey Pointer <robey@src.gnome.org> | 2001-02-03 03:12:16 +0000 |
commit | 7efb1e493e84a04b1a5e2c9965073a209befe7ad (patch) | |
tree | 2d188473ae2c1bbfa0ba836bf85ecfe4934723fd | |
parent | 0605af887027901f7ffbbda5361712ed0ae9d0e9 (diff) | |
download | nautilus-7efb1e493e84a04b1a5e2c9965073a209befe7ad.tar.gz |
Fix small bug in the package tree inflater that caused break structs to be
* components/services/install/lib/eazel-install-corba-types.c:
(packagedata_tree_from_corba_packagedatastructlist):
Fix small bug in the package tree inflater that caused break
structs to be messed up.
* components/services/install/lib/eazel-softcat.c:
(get_search_url_for_package):
* components/services/install/nautilus-view/nautilus-service-instal
l-view.c: (create_package),
(nautilus_service_install_view_update_from_uri_finish):
Encode and decode suite_id/suite_name/product_id/product_name from
eazel-install: urls and pass through to softcat queries. They are
all treated like variant flavors of suite_id internally (group of
packages with a single id).
* nautilus-installer/src/Makefile:
* nautilus-installer/src/installer.c:
(get_detailed_errors_foreach), (get_detailed_errors),
(eazel_install_preflight), (eazel_installer_set_default_texts),
(eazel_installer_initialize):
Remove eazel-hacking uninstall, since experts claim we no longer
need it. Some changes to sync up with the new world order where
PackageData is now a GTK object.
* nautilus-installer/src/package-tree.c:
(find_package_parents_int), (find_package_parents),
(get_errant_children_int), (get_errant_children),
(package_customizer_fill_dep), (package_customizer_fill),
(jump_to_package_tree_page):
Fix the package customizer to cope with the new world order, where
the package tree is sent across as a directed graph (instead of
tree) and the deps are in 'depends' not 'soft_depends'.
* nautilus-installer/src/prescript:
Up version to 1.0.
-rw-r--r-- | ChangeLog | 43 | ||||
-rw-r--r-- | components/services/install-view/nautilus-service-install-view.c | 18 | ||||
-rw-r--r-- | components/services/install/lib/eazel-install-corba-types.c | 2 | ||||
-rw-r--r-- | components/services/install/lib/eazel-softcat.c | 15 | ||||
-rw-r--r-- | components/services/install/nautilus-view/nautilus-service-install-view.c | 18 | ||||
-rw-r--r-- | nautilus-installer/src/Makefile | 19 | ||||
-rw-r--r-- | nautilus-installer/src/installer.c | 85 | ||||
-rw-r--r-- | nautilus-installer/src/package-tree.c | 112 | ||||
-rw-r--r-- | nautilus-installer/src/prescript | 2 |
9 files changed, 185 insertions, 129 deletions
@@ -1,3 +1,46 @@ +2001-02-02 Robey Pointer <robey@eazel.com> + + * components/services/install/lib/eazel-install-corba-types.c: + (packagedata_tree_from_corba_packagedatastructlist): + + Fix small bug in the package tree inflater that caused break + structs to be messed up. + + * components/services/install/lib/eazel-softcat.c: + (get_search_url_for_package): + * components/services/install/nautilus-view/nautilus-service-instal + l-view.c: (create_package), + (nautilus_service_install_view_update_from_uri_finish): + + Encode and decode suite_id/suite_name/product_id/product_name from + eazel-install: urls and pass through to softcat queries. They are + all treated like variant flavors of suite_id internally (group of + packages with a single id). + + * nautilus-installer/src/Makefile: + * nautilus-installer/src/installer.c: + (get_detailed_errors_foreach), (get_detailed_errors), + (eazel_install_preflight), (eazel_installer_set_default_texts), + (eazel_installer_initialize): + + Remove eazel-hacking uninstall, since experts claim we no longer + need it. Some changes to sync up with the new world order where + PackageData is now a GTK object. + + * nautilus-installer/src/package-tree.c: + (find_package_parents_int), (find_package_parents), + (get_errant_children_int), (get_errant_children), + (package_customizer_fill_dep), (package_customizer_fill), + (jump_to_package_tree_page): + + Fix the package customizer to cope with the new world order, where + the package tree is sent across as a directed graph (instead of + tree) and the deps are in 'depends' not 'soft_depends'. + + * nautilus-installer/src/prescript: + + Up version to 1.0. + 2001-02-02 Darin Adler <darin@eazel.com> reviewed by: John Sullivan <sullivan@eazel.com> diff --git a/components/services/install-view/nautilus-service-install-view.c b/components/services/install-view/nautilus-service-install-view.c index 259bd9145..0d3887430 100644 --- a/components/services/install-view/nautilus-service-install-view.c +++ b/components/services/install-view/nautilus-service-install-view.c @@ -482,6 +482,22 @@ create_package (char *name, int local_file) pack->eazel_id = g_strdup (name+9); } else if (strncmp (name, "rpm_id=", 7) == 0) { pack->eazel_id = g_strdup (name+7); + } else if (strncmp (name, "product_id%3D", 13) == 0) { + pack->suite_id = g_strdup_printf ("P:%s", name+13); + } else if (strncmp (name, "product_id=", 11) == 0) { + pack->suite_id = g_strdup_printf ("P:%s", name+11); + } else if (strncmp (name, "suite_id%3D", 11) == 0) { + pack->suite_id = g_strdup_printf ("S:%s", name+11); + } else if (strncmp (name, "suite_id=", 9) == 0) { + pack->suite_id = g_strdup_printf ("S:%s", name+9); + } else if (strncmp (name, "product_name%3D", 15) == 0) { + pack->suite_id = g_strdup_printf ("N:%s", name+15); + } else if (strncmp (name, "product_name=", 13) == 0) { + pack->suite_id = g_strdup_printf ("N:%s", name+13); + } else if (strncmp (name, "suite_name%3D", 13) == 0) { + pack->suite_id = g_strdup_printf ("X:%s", name+13); + } else if (strncmp (name, "suite_name=", 11) == 0) { + pack->suite_id = g_strdup_printf ("X:%s", name+11); } else { pack->name = g_strdup (name); } @@ -1580,7 +1596,7 @@ nautilus_service_install_view_update_from_uri_finish (NautilusServiceInstallView gtk_object_set_data (GTK_OBJECT (view), "packagedata", pack); - if (pack->eazel_id != NULL) { + if ((pack->eazel_id != NULL) || (pack->suite_id != NULL)) { out = g_strdup_printf (_("Downloading remote package")); } else if (pack->name != NULL) { out = g_strdup_printf (_("Downloading \"%s\""), pack->name); diff --git a/components/services/install/lib/eazel-install-corba-types.c b/components/services/install/lib/eazel-install-corba-types.c index a32f34216..ac0199d70 100644 --- a/components/services/install/lib/eazel-install-corba-types.c +++ b/components/services/install/lib/eazel-install-corba-types.c @@ -486,12 +486,14 @@ packagedata_tree_from_corba_packagedatastructlist (const GNOME_Trilobite_Eazel_P pbreakfile->files = corba_string_sequence_to_glist (&(corbapack->breaks._buffer[j].u._u.files)); packagedata_add_to_breaks (pack, PACKAGEBREAKS (pbreakfile)); gtk_object_unref (GTK_OBJECT (pbreakfile)); + break; case GNOME_Trilobite_Eazel_PACKAGE_FEATURE_MISSING: pbreakfeature = packagefeaturemissing_new (); packagebreaks_set_package (PACKAGEBREAKS (pbreakfeature), subpack); pbreakfeature->features = corba_string_sequence_to_glist (&(corbapack->breaks._buffer[j].u._u.features)); packagedata_add_to_breaks (pack, PACKAGEBREAKS (pbreakfeature)); gtk_object_unref (GTK_OBJECT (pbreakfeature)); + break; default: g_assert_not_reached (); } diff --git a/components/services/install/lib/eazel-softcat.c b/components/services/install/lib/eazel-softcat.c index df2c7de1c..31b5282d5 100644 --- a/components/services/install/lib/eazel-softcat.c +++ b/components/services/install/lib/eazel-softcat.c @@ -507,8 +507,21 @@ get_search_url_for_package (EazelSoftCat *softcat, const PackageData *package, i g_free (arch); } else if (package->suite_id != NULL) { /* find by suite-id! */ + /* this devolves into several different cases. softcat cares + * about the differences between them, but we don't. + */ + if (package->suite_id[0] == 'P') { + add_to_url (url, "?product_id=", package->suite_id+2); + } else if (package->suite_id[0] == 'S') { + add_to_url (url, "?suite_id=", package->suite_id+2); + } else if (package->suite_id[0] == 'N') { + add_to_url (url, "?product_name=", package->suite_id+2); + } else if (package->suite_id[0] == 'X') { + add_to_url (url, "?suite_name=", package->suite_id+2); + } else { + g_assert_not_reached (); + } arch = trilobite_get_distribution_arch (); - add_to_url (url, "?suite_id=", package->eazel_id); add_to_url (url, "&arch=", arch); g_free (arch); } else if (package->name == NULL) { diff --git a/components/services/install/nautilus-view/nautilus-service-install-view.c b/components/services/install/nautilus-view/nautilus-service-install-view.c index 259bd9145..0d3887430 100644 --- a/components/services/install/nautilus-view/nautilus-service-install-view.c +++ b/components/services/install/nautilus-view/nautilus-service-install-view.c @@ -482,6 +482,22 @@ create_package (char *name, int local_file) pack->eazel_id = g_strdup (name+9); } else if (strncmp (name, "rpm_id=", 7) == 0) { pack->eazel_id = g_strdup (name+7); + } else if (strncmp (name, "product_id%3D", 13) == 0) { + pack->suite_id = g_strdup_printf ("P:%s", name+13); + } else if (strncmp (name, "product_id=", 11) == 0) { + pack->suite_id = g_strdup_printf ("P:%s", name+11); + } else if (strncmp (name, "suite_id%3D", 11) == 0) { + pack->suite_id = g_strdup_printf ("S:%s", name+11); + } else if (strncmp (name, "suite_id=", 9) == 0) { + pack->suite_id = g_strdup_printf ("S:%s", name+9); + } else if (strncmp (name, "product_name%3D", 15) == 0) { + pack->suite_id = g_strdup_printf ("N:%s", name+15); + } else if (strncmp (name, "product_name=", 13) == 0) { + pack->suite_id = g_strdup_printf ("N:%s", name+13); + } else if (strncmp (name, "suite_name%3D", 13) == 0) { + pack->suite_id = g_strdup_printf ("X:%s", name+13); + } else if (strncmp (name, "suite_name=", 11) == 0) { + pack->suite_id = g_strdup_printf ("X:%s", name+11); } else { pack->name = g_strdup (name); } @@ -1580,7 +1596,7 @@ nautilus_service_install_view_update_from_uri_finish (NautilusServiceInstallView gtk_object_set_data (GTK_OBJECT (view), "packagedata", pack); - if (pack->eazel_id != NULL) { + if ((pack->eazel_id != NULL) || (pack->suite_id != NULL)) { out = g_strdup_printf (_("Downloading remote package")); } else if (pack->name != NULL) { out = g_strdup_printf (_("Downloading \"%s\""), pack->name); diff --git a/nautilus-installer/src/Makefile b/nautilus-installer/src/Makefile index 7b325a777..805f25d3b 100644 --- a/nautilus-installer/src/Makefile +++ b/nautilus-installer/src/Makefile @@ -70,7 +70,7 @@ BONOBO_CFLAGS = -I/gnome/include -DNEED_GNOMESUPPORT_H -I/gnome/lib/gnome-libs/i BONOBO_LIBS = -rdynamic -L/gnome/lib -L/usr/X11R6/lib -lbonobo -lgnomeui -lart_lgpl -lgdk_imlib -lSM -lICE -lgnome -lgnomesupport -lesd -laudiofile -ldb1 -lgdk_pixbuf -lgtk -lgdk -lgmodule -ldl -lXext -lX11 -loaf -lORBitCosNaming -lORBit -lIIOP -lORBitutil -lglib -lnsl -lm BONOBO_PRINT_CFLAGS = BONOBO_PRINT_LIBS = -CATALOGS = ca.gmo da.gmo de.gmo en_GB.gmo fi.gmo fr.gmo ga.gmo gl.gmo hu.gmo it.gmo ja.gmo ko.gmo nl.gmo no.gmo pl.gmo pt_BR.gmo ru.gmo sv.gmo ta.gmo tr.gmo uk.gmo zh_TW.Big5.gmo +CATALOGS = az.gmo ca.gmo da.gmo de.gmo en_GB.gmo es.gmo fi.gmo fr.gmo ga.gmo gl.gmo hu.gmo it.gmo ja.gmo ko.gmo nl.gmo no.gmo pl.gmo pt_BR.gmo ru.gmo sk.gmo sv.gmo ta.gmo tr.gmo uk.gmo zh_TW.Big5.gmo CATOBJEXT = .gmo CC = gcc CPP = gcc -E @@ -92,12 +92,11 @@ GDK_PIXBUF_CONFIG = /gnome/bin/gdk-pixbuf-config GDK_PIXBUF_LIBS = -L/gnome/lib -lgdk_pixbuf -L/gnome/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -lXext -lX11 -lm GENCAT = GHTTP_CFLAGS = -I/gnome/include -GHTTP_CONFIG = /gnome/bin/gnome-config GHTTP_LIBS = -L/gnome/lib -lghttp GLIB_CFLAGS = -I/gnome/include/glib-1.2 -I/gnome/lib/glib/include GLIB_CONFIG = /gnome/bin/glib-config GLIB_LIBS = -L/gnome/lib -lglib -GMOFILES = ca.gmo da.gmo de.gmo en_GB.gmo fi.gmo fr.gmo ga.gmo gl.gmo hu.gmo it.gmo ja.gmo ko.gmo nl.gmo no.gmo pl.gmo pt_BR.gmo ru.gmo sv.gmo ta.gmo tr.gmo uk.gmo zh_TW.Big5.gmo +GMOFILES = az.gmo ca.gmo da.gmo de.gmo en_GB.gmo es.gmo fi.gmo fr.gmo ga.gmo gl.gmo hu.gmo it.gmo ja.gmo ko.gmo nl.gmo no.gmo pl.gmo pt_BR.gmo ru.gmo sk.gmo sv.gmo ta.gmo tr.gmo uk.gmo zh_TW.Big5.gmo GMSGFMT = /gnome/bin/msgfmt GNOMECANVASPIXBUF_INCLUDEDIR = GNOMECANVASPIXBUF_LIBS = -rdynamic -L/gnome/lib -L/usr/X11R6/lib -lgdk_pixbuf -lgtk -lgdk -lgmodule -lglib -ldl -lXext -lX11 -lm -lgnomecanvaspixbuf @@ -128,12 +127,12 @@ MAKEINFO = makeinfo MEDUSA_CFLAGS = -I/gnome/include -I/gnome/lib/vfs/include -I/gnome/include/glib-1.2 -I/gnome/lib/glib/include -D_REENTRANT -Wsign-promo -Wno-sign-compare MEDUSA_LIBS = -rdynamic -L/gnome/lib -lmedusa -lgnomevfs -lgmodule -lgthread -lglib -lpthread -ldl MKINSTALLDIRS = ./mkinstalldirs -MOZILLA_COMPONENT_CFLAGS = -I/usr/include/mozilla -fno-rtti -fno-exceptions +MOZILLA_COMPONENT_CFLAGS = -I/gnome-source/MOZILLA/mozilla/dist/include -fno-rtti -fno-exceptions MOZILLA_COMPONENT_DEBUG_FLAGS = MOZILLA_COMPONENT_LDFLAGS = -L/gnome-source/MOZILLA/mozilla/dist/bin MOZILLA_COMPONENT_LIBS = -lgtkembedmoz -lgtksuperwin -lxpcom -lnspr4 -lplc4 -lplds4 MOZILLA_COMPONENT_RPATH_FLAGS = -Wl,-rpath=/gnome-source/MOZILLA/mozilla/dist/bin -MOZILLA_MILESTONE = 18 +MOZILLA_MILESTONE = 19 OAF_CFLAGS = -I/gnome/include -I/gnome/include/glib-1.2 -I/gnome/lib/glib/include OAF_CONFIG = /gnome/bin/oaf-config OAF_LIBS = -L/gnome/lib -loaf -lORBitCosNaming -lORBit -lIIOP -lORBitutil -lglib -lnsl -lm @@ -145,21 +144,21 @@ ORBIT_LIBS = -L/gnome/lib -lORBit -lIIOP -lORBitutil -lglib -lnsl -lm PACKAGE = nautilus PACKAGESYSTEM = libeazelpackagesystem-rpm3.la PAM_LIBS = -ldl -lpam -lpam_misc -POFILES = ca.po da.po de.po en_GB.po fi.po fr.po ga.po gl.po hu.po it.po ja.po ko.po nl.po no.po pl.po pt_BR.po ru.po sv.po ta.po tr.po uk.po zh_TW.Big5.po +POFILES = az.po ca.po da.po de.po en_GB.po es.po fi.po fr.po ga.po gl.po hu.po it.po ja.po ko.po nl.po no.po pl.po pt_BR.po ru.po sk.po sv.po ta.po tr.po uk.po zh_TW.Big5.po POSUB = po RANLIB = ranlib RPM_LIBS = -lrpm -lz -lbz2 -lpopt -ldb1 RPM_VERSION = 3.0.5 USE_INCLUDED_LIBINTL = no USE_NLS = yes -VERSION = 0.5.0 +VERSION = 0.8.1 VFS_CFLAGS = -I/gnome/include -I/gnome/lib/vfs/include -I/gnome/include/glib-1.2 -I/gnome/lib/glib/include -D_REENTRANT -Wsign-promo -Wno-sign-compare VFS_LIBS = -rdynamic -L/gnome/lib -lgnomevfs -lgmodule -lgthread -lglib -lpthread -ldl XML_CFLAGS = -I/gnome/include/gnome-xml XML_CONFIG = /gnome/bin/xml-config -XML_I18N_EXTRACT = $(top_builddir)/xml-i18n-extract -XML_I18N_MERGE = $(top_builddir)/xml-i18n-merge -XML_I18N_UPDATE = $(top_builddir)/xml-i18n-update +XML_I18N_EXTRACT = $(top_srcdir)/xml-i18n-extract +XML_I18N_MERGE = $(top_srcdir)/xml-i18n-merge +XML_I18N_UPDATE = $(top_srcdir)/xml-i18n-update XML_LIBS = -L/gnome/lib -lxml -lz ZVT_LIBS = Z_LIBS = -lz diff --git a/nautilus-installer/src/installer.c b/nautilus-installer/src/installer.c index c078afc22..894960cb5 100644 --- a/nautilus-installer/src/installer.c +++ b/nautilus-installer/src/installer.c @@ -119,16 +119,6 @@ static const char untranslated_error_title[] = N_("An error has occurred"); static const char untranslated_splash_title[] = N_("Welcome to the Eazel Installer!"); static const char untranslated_finished_title[] = N_("Congratulations!"); -static const char untranslated_eazel_hacking_title[] = N_("Eazel-Hacking"); -static const char untranslated_eazel_hacking_text[] = - N_("You have the eazel-hacking environment installed.\n" - "That does not mix well with Nautilus PR2, so I'm\n" - "going to remove the eazel-hacking enviroment for you.\n" - "Do note, that there will be leftovers in\n" - " \xB7 /gnome\n" - " \xB7 /gnome-source\n" - "that you should manually remove."); - static const char untranslated_what_to_install_label[] = N_("What would you like to install?"); static const char untranslated_what_to_install_label_single[] = N_("What we'll install..."); @@ -155,8 +145,6 @@ static const char untranslated_error_Red_Hat_7_not_supported[] = #define D_ERROR_TITLE _(untranslated_error_title) #define D_SPLASH_TITLE _(untranslated_splash_title) #define D_FINISHED_TITLE _(untranslated_finished_title) -#define D_INFO_EAZEL_HACKING_TITLE _(untranslated_eazel_hacking_title) -#define D_INFO_EAZEL_HACKING_TEXT _(untranslated_eazel_hacking_text) #define D_WHAT_TO_INSTALL_LABEL _(untranslated_what_to_install_label) #define D_WHAT_TO_INSTALL_LABEL_SINGLE _(untranslated_what_to_install_label_single) #define D_ERROR_RPM_4_NOT_SUPPORTED _(untranslated_error_RPM_4_not_supported) @@ -176,9 +164,6 @@ enum { ERROR_UNTESTED_RPM_BASED_SYSTEM_TITLE, ERROR_UNTESTED_RPM_BASED_SYSTEM_TEXT, - INFO_EAZEL_HACKING_TITLE, - INFO_EAZEL_HACKING_TEXT, - WAIT_LABEL, WAIT_LABEL_2, ERROR_LABEL, @@ -881,6 +866,8 @@ eazel_download_progress (EazelInstall *service, } } +#if 0 +/* used to be used by eazel-hacking force remove */ static void create_initial_force_remove_category (EazelInstaller *installer) { @@ -904,6 +891,7 @@ add_force_remove (EazelInstaller *installer, cat = (CategoryData*)installer->force_remove_categories->data; cat->packages = g_list_prepend (cat->packages, pack); } +#endif static void get_detailed_errors_foreach (PackageData *pack, GetErrorsForEachData *data) @@ -916,7 +904,7 @@ get_detailed_errors_foreach (PackageData *pack, GetErrorsForEachData *data) GList *iter, *iter2; if (data->path) { - previous_pack = (PackageData*)(data->path->data); + previous_pack = PACKAGEDATA (data->path->data); } log_debug ("pack->name = %s, pack->status = %d", pack->name, pack->status); @@ -930,7 +918,7 @@ get_detailed_errors_foreach (PackageData *pack, GetErrorsForEachData *data) for (iter = installer->categories; iter; iter = g_list_next (iter)) { cat = (CategoryData *)iter->data; for (iter2 = cat->packages; iter2 ; iter2 = g_list_next (iter2)) { - pack_in = (PackageData *)iter2->data; + pack_in = PACKAGEDATA (iter2->data); log_debug ("pack->name = %s, pack_in->name = %s", pack->name, pack_in->name); if (strcmp (pack->name, pack_in->name) == 0) { g_message ("bad mojo: cannot open package %s", pack->name); @@ -962,7 +950,6 @@ get_detailed_errors_foreach (PackageData *pack, GetErrorsForEachData *data) data->path = g_list_prepend (data->path, pack); g_list_foreach (pack->soft_depends, (GFunc)get_detailed_errors_foreach, data); - g_list_foreach (pack->hard_depends, (GFunc)get_detailed_errors_foreach, data); g_list_foreach (pack->modifies, (GFunc)get_detailed_errors_foreach, data); g_list_foreach (pack->breaks, (GFunc)get_detailed_errors_foreach, data); @@ -993,7 +980,7 @@ get_detailed_errors (const PackageData *pack, EazelInstaller *installer) log_debug ("getting detailed errors"); get_detailed_errors_foreach (non_const_pack, &data); log_debug ("destroying copy"); - packagedata_destroy (non_const_pack, TRUE); + gtk_object_unref (GTK_OBJECT (non_const_pack)); } @@ -1076,12 +1063,10 @@ eazel_install_preflight (EazelInstall *service, char *temp; int total_mb; -#if 0 - if (strcmp (((PackageData *)(packages->data))->name, "eazel-hacking") != 0) { + if (1) { jump_to_package_tree_page (installer, (GList *)packages); while (1) { while (gtk_events_pending ()) { gtk_main_iteration (); } } } -#endif label_single = gtk_object_get_data (GTK_OBJECT (installer->window), "download_label"); label_single_2 = gtk_object_get_data (GTK_OBJECT (installer->window), "download_label_2"); @@ -1496,56 +1481,6 @@ check_system (EazelInstaller *installer) return TRUE; } -static void -more_check_system (EazelInstaller *installer) -{ - EazelPackageSystem *packsys; - GList *matches = NULL; - - packsys = eazel_package_system_new (NULL); - matches = eazel_package_system_query (packsys, NULL, "eazel-hacking", - EAZEL_PACKAGE_SYSTEM_QUERY_MATCHES, - PACKAGE_FILL_MINIMAL); - if (matches && 0) { - PackageData *pack = packagedata_new (); - - pack->name = g_strdup ("eazel-hacking"); - add_force_remove (installer, pack); - - insert_info_page (installer, - text_labels [INFO_EAZEL_HACKING_TITLE], - text_labels [INFO_EAZEL_HACKING_TEXT]); - - g_list_foreach (matches, (GFunc)packagedata_destroy, GINT_TO_POINTER (TRUE)); - matches = NULL; - } - - matches = eazel_package_system_query (packsys, NULL, "rpm", - EAZEL_PACKAGE_SYSTEM_QUERY_MATCHES, - PACKAGE_FILL_MINIMAL); - if (matches) { - PackageData *pack = (PackageData*)matches->data; - - log_debug ("** installed rpm has version %s", pack->version); -#if 0 - if (rpmvercmp (pack->version, "4")>0) { - jump_to_error_page (installer, - NULL, - D_ERROR_RPM_4_NOT_SUPPORTED, - NULL); - } -#endif - - g_list_foreach (matches, (GFunc)packagedata_destroy, GINT_TO_POINTER (TRUE)); - matches = NULL; - } else { - log_debug ("** rpm not installed!"); - } - - /* NEEDED: eazel_package_system_unref (packsys); */ - gtk_object_unref (GTK_OBJECT (packsys)); -} - #if 0 void revert_nautilus_install (EazelInstall *service) @@ -1750,8 +1685,6 @@ eazel_installer_set_default_texts (EazelInstaller *installer) text_labels [FINISHED_TITLE] = g_strdup (D_FINISHED_TITLE); text_labels [WHAT_TO_INSTALL_LABEL] = g_strdup (D_WHAT_TO_INSTALL_LABEL); text_labels [WHAT_TO_INSTALL_LABEL_SINGLE] = g_strdup (D_WHAT_TO_INSTALL_LABEL_SINGLE); - text_labels [INFO_EAZEL_HACKING_TEXT] = g_strdup (D_INFO_EAZEL_HACKING_TEXT); - text_labels [INFO_EAZEL_HACKING_TITLE] = g_strdup (D_INFO_EAZEL_HACKING_TITLE); } static gboolean @@ -2158,8 +2091,8 @@ eazel_installer_initialize (EazelInstaller *object) gtk_main_iteration (); } - if (installer_package==NULL) { - more_check_system (installer); + if (installer_package == NULL) { + /* used to do RPM4 and eazel-hacking checks here... no point anymore (both should work) */ } installer->problem = eazel_install_problem_new (); diff --git a/nautilus-installer/src/package-tree.c b/nautilus-installer/src/package-tree.c index 548adea85..9939f18ba 100644 --- a/nautilus-installer/src/package-tree.c +++ b/nautilus-installer/src/package-tree.c @@ -220,32 +220,47 @@ find_package_group (PackageData *package, char **version) return INSTALL_GROUP; } - -/* build up a list of the packagedata's that reference this one */ + +/* build up a list of the PackageDatas that reference this one */ static GList * -find_package_parents_int (PackageData *package, PackageData *top, GList *packlist, GList *sofar) +find_package_parents_int (PackageData *package, PackageData *top, PackageData *subpack, GList *sofar) { - GList *iter; - PackageData *subpack; + PackageDependency *dep; + GList *iter; - for (iter = g_list_first (packlist); iter != NULL; iter = g_list_next (iter)) { - subpack = (PackageData *)(iter->data); - if (subpack == package) { - if (top != NULL) { - sofar = g_list_prepend (sofar, top); - } - } else { - sofar = find_package_parents_int (package, subpack, subpack->soft_depends, sofar); - sofar = find_package_parents_int (package, subpack, subpack->hard_depends, sofar); - } - } - return sofar; + if (subpack == package) { + /* be careful -- it's really a directed graph now, not a tree */ + if ((top != NULL) && (g_list_find (sofar, top) == NULL)) { + sofar = g_list_prepend (sofar, top); + } + } else { + for (iter = g_list_first (subpack->depends); iter != NULL; iter = g_list_next (iter)) { + dep = (PackageDependency *)(iter->data); + sofar = find_package_parents_int (package, subpack, dep->package, sofar); + } + } + + return sofar; } static GList * find_package_parents (PackageData *package, GList *packlist, GList *sofar) { - return find_package_parents_int (package, NULL, packlist, sofar); + PackageData *subpack; + GList *iter; + + for (iter = g_list_first (packlist); iter != NULL; iter = g_list_next (iter)) { + subpack = PACKAGEDATA (iter->data); + sofar = find_package_parents_int (package, NULL, subpack, sofar); + } + +#if 0 + printf ("parents of %s:\n", packagedata_get_readable_name (package)); + for (iter = g_list_first (sofar); iter != NULL; iter = g_list_next (iter)) { + printf ("\t%s\n", packagedata_get_readable_name (PACKAGEDATA (iter->data))); + } +#endif + return sofar; } static int @@ -269,21 +284,28 @@ package_customizer_find_package (PackageCustomizer *table, PackageData *package) } static GList * -get_errant_children_list (GList *bad, PackageInfo *info, GList *list) +get_errant_children_int (GList *bad, PackageInfo *info, PackageData *subpack) { - GList *iter; - PackageInfo *sub_info; + PackageDependency *dep; + PackageInfo *sub_info; + GList *iter; + + if (subpack != NULL) { + sub_info = package_customizer_find_package (info->table, subpack); + if ((! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (sub_info->checkbox))) && + (g_list_find (bad, sub_info) == NULL)) { + /* unchecked dependency: you are an errant child! */ + bad = g_list_prepend (bad, sub_info); + } + } else { + subpack = info->package; + } - for (iter = g_list_first (list); iter != NULL; iter = g_list_next (iter)) { - sub_info = package_customizer_find_package (info->table, (PackageData *)(iter->data)); - if (! gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (sub_info->checkbox))) { - /* unchecked dependency: you are an errant child! */ - bad = g_list_prepend (bad, sub_info); - } - bad = get_errant_children_list (bad, info, sub_info->package->soft_depends); - bad = get_errant_children_list (bad, info, sub_info->package->hard_depends); - } - return bad; + for (iter = g_list_first (subpack->depends); iter != NULL; iter = g_list_next (iter)) { + dep = (PackageDependency *)(iter->data); + bad = get_errant_children_int (bad, info, dep->package); + } + return bad; } /* return a list of PackageInfo's for packages needed by this package, but unchecked */ @@ -291,11 +313,7 @@ get_errant_children_list (GList *bad, PackageInfo *info, GList *list) static GList * get_errant_children (PackageInfo *info) { - GList *bad = NULL; - - bad = get_errant_children_list (bad, info, info->package->soft_depends); - bad = get_errant_children_list (bad, info, info->package->hard_depends); - return bad; + return get_errant_children_int (NULL, info, NULL); } /* display info about a package */ @@ -453,6 +471,14 @@ package_toggled (GtkToggleButton *button, PackageInfo *info) package_customizer_recompute_bongs (info->table->private); } +static void package_customizer_fill (PackageData *package, PackageCustomizer *table); + +static void +package_customizer_fill_dep (PackageDependency *dep, PackageCustomizer *table) +{ + package_customizer_fill (dep->package, table); +} + static void package_customizer_fill (PackageData *package, PackageCustomizer *table) { @@ -549,8 +575,7 @@ package_customizer_fill (PackageData *package, PackageCustomizer *table) gtk_box_pack_start (GTK_BOX (gtk_box_nth (hbox_group, 2)), info->checkbox, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (gtk_box_nth (hbox_group, 3)), info->info_button, FALSE, FALSE, 0); - g_list_foreach (package->soft_depends, (GFunc)package_customizer_fill, table); - g_list_foreach (package->hard_depends, (GFunc)package_customizer_fill, table); + g_list_foreach (package->depends, (GFunc)package_customizer_fill_dep, table); } static GtkWidget * @@ -782,6 +807,7 @@ jump_to_package_tree_page (EazelInstaller *installer, GList *packages) GtkWidget *pane; GtkWidget *hbox; GtkWidget *table_widget; + GtkWidget *viewport; page = nautilus_druid_page_eazel_new_with_vals (NAUTILUS_DRUID_PAGE_EAZEL_OTHER, NULL, NULL, NULL, NULL, @@ -800,7 +826,15 @@ jump_to_package_tree_page (EazelInstaller *installer, GList *packages) pane = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (pane), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); - gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (pane), hbox); + viewport = gtk_viewport_new (NULL, NULL); + /* bug in gtk viewport causes this not to work. ramiro's nautilus viewport + * would probably fix this, if it ever becomes important. + gtk_viewport_set_shadow_type (GTK_VIEWPORT (viewport), GTK_SHADOW_NONE); + */ + gtk_container_add (GTK_CONTAINER (pane), viewport); + gtk_widget_show (viewport); + gtk_container_add (GTK_CONTAINER (viewport), hbox); + gtk_widget_show (hbox); gtk_widget_show (pane); /* gtk_window_set_focus (window, widget); */ nautilus_druid_page_eazel_put_widget (NAUTILUS_DRUID_PAGE_EAZEL (page), pane); diff --git a/nautilus-installer/src/prescript b/nautilus-installer/src/prescript index 66c75f225..34778b380 100644 --- a/nautilus-installer/src/prescript +++ b/nautilus-installer/src/prescript @@ -28,7 +28,7 @@ fi if test "x$botan_rice_candy" = "x" -a "x$QUICK" '!=' "xyes"; then # blurp echo "" - echo "Eazel Installer 0.9" + echo "Eazel Installer 1.0" echo "" if test "x$PR1_TO_PR2" = "xyes"; then echo "Your PR1 setttings will be moved to ~/.nautilus.pr2.backup..." |