summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog63
-rw-r--r--components/services/install/command-line/eazel-alt-install-corba.c34
-rw-r--r--components/services/install/command-line/eazel-package-query.c5
-rw-r--r--components/services/install/command-line/genpkg_list.example3
-rw-r--r--components/services/install/idl/trilobite-eazel-install.idl2
-rw-r--r--components/services/install/lib/eazel-install-corba-callback.c59
-rw-r--r--components/services/install/lib/eazel-install-corba-callback.h8
-rw-r--r--components/services/install/lib/eazel-install-corba-types.c6
-rw-r--r--components/services/install/lib/eazel-install-corba.c19
-rw-r--r--components/services/install/lib/eazel-install-protocols.c2
-rw-r--r--components/services/install/lib/eazel-install-query.c9
-rw-r--r--components/services/install/lib/eazel-install-query.h4
-rw-r--r--components/services/install/lib/eazel-install-rpm-glue.c107
-rw-r--r--components/services/install/lib/eazel-install-xml-package-list.c52
-rw-r--r--components/services/install/lib/makefile.staticlib.in4
-rw-r--r--nautilus-installer/src/Makefile18
-rw-r--r--nautilus-installer/src/Makefile.am6
-rw-r--r--nautilus-installer/src/installer.c185
-rw-r--r--nautilus-installer/src/interface.c40
-rwxr-xr-xnautilus-installer/src/link.sh7
-rw-r--r--nautilus-installer/src/prescript16
21 files changed, 480 insertions, 169 deletions
diff --git a/ChangeLog b/ChangeLog
index aafd0d396..c74f06384 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,66 @@
+2000-08-07 Eskil Heyn Olsen <eskil@eazel.com>
+
+ * components/services/install/command-line/eazel-alt-install-corba.c:
+ (main):
+ Added --query, to test the corba query stuff
+
+ * components/services/install/command-line/eazel-package-query.c:
+ Removed some erratic #defs.
+
+ * components/services/install/command-line/genpkg_list.example:
+ Now has an error on purpose, to test the error checking
+
+ * components/services/install/idl/trilobite-eazel-install.idl:
+ Renamed the query to simple_query
+
+ * components/services/install/lib/eazel-install-corba-callback.c:
+ (impl_install_failed), (impl_uninstall_failed),
+ (eazel_install_callback_simple_query),
+ (eazel_install_callback_revert_transaction):
+ * components/services/install/lib/eazel-install-corba-callback.h:
+ * components/services/install/lib/eazel-install-corba-types.c:
+ (corba_packagedatastruct_from_packagedata):
+ * components/services/install/lib/eazel-install-corba.c:
+ (impl_Eazel_Install_simple_query), (eazel_install_get_epv):
+ * components/services/install/lib/eazel-install-query.c:
+ (eazel_install_simple_rpm_query), (eazel_install_simple_query):
+ Finished the corbafication of simple_query and added some const's
+ to some arguments.
+
+ * components/services/install/lib/eazel-install-protocols.c:
+ (http_fetch_remote_file):
+ Fixed a bug where the first download-progress emit got called with
+ total == 0.
+
+ * components/services/install/lib/eazel-install-query.h:
+ Removed debug output.
+
+ * components/services/install/lib/eazel-install-rpm-glue.c:
+ (eazel_install_do_rpm_transaction_process_pipe),
+ (eazel_install_do_rpm_transaction_save_report),
+ (do_rpm_transaction), (eazel_install_fetch_rpm_dependencies):
+ Am tryink to fix the installer. Havink problems reading the output
+ from rpm, since it apparently gets buffered somewhere.
+
+ * components/services/install/lib/eazel-install-xml-package-list.c:
+ (generate_xml_package_list):
+ Added error checking to the :-seperated values parsing.
+
+ * components/services/install/lib/makefile.staticlib.in:
+ More static linking fun.
+
+ * nautilus-installer/src/Makefile:
+ * nautilus-installer/src/Makefile.am:
+ * nautilus-installer/src/installer.c: (eazel_install_progress),
+ (eazel_download_progress), (download_failed),
+ (eazel_install_preflight), (eazel_install_dep_check),
+ (eazel_install_delete_files), (installer):
+ * nautilus-installer/src/interface.c: (create_window):
+ * nautilus-installer/src/link.sh:
+ * nautilus-installer/src/prescript:
+ Okaeh, the installer is slight prettier, but the install progress
+ is screwed because of the problem with progress bar.
+
2000-08-07 John Sullivan <sullivan@eazel.com>
Fixed bug 1969 enough for now (search bar buttons should
diff --git a/components/services/install/command-line/eazel-alt-install-corba.c b/components/services/install/command-line/eazel-alt-install-corba.c
index e39d61c3c..39d940d50 100644
--- a/components/services/install/command-line/eazel-alt-install-corba.c
+++ b/components/services/install/command-line/eazel-alt-install-corba.c
@@ -66,7 +66,8 @@ int arg_dry_run,
arg_force,
arg_upgrade,
arg_downgrade,
- arg_erase;
+ arg_erase,
+ arg_query;
char *arg_server,
*arg_config_file,
*arg_tmp_dir;
@@ -85,6 +86,7 @@ static const struct poptOption options[] = {
{"downgrade", 'd', POPT_ARG_NONE, &arg_downgrade, 0, N_("Allow downgrades"), NULL},
{"tmp", '\0', POPT_ARG_STRING, &arg_tmp_dir, 0, N_("Set tmp dir (/tmp/eazel-install)"), NULL},
{"server", '\0', POPT_ARG_STRING, &arg_server, 0, N_("Specify server"), NULL},
+ {"query", 'q', POPT_ARG_NONE, &arg_query, 0, N_("Run Query"), NULL},
{"http", 'h', POPT_ARG_NONE, &arg_http, 0, N_("Use http"), NULL},
{"ftp", 'f', POPT_ARG_NONE, &arg_ftp, 0, N_("Use ftp"), NULL},
{"local", 'l', POPT_ARG_NONE, &arg_local, 0, N_("Use local"), NULL},
@@ -390,10 +392,13 @@ int main(int argc, char *argv[]) {
GList *packages;
GList *categories;
char *str;
+ GList *strs;
EazelInstallCallback *cb;
CORBA_exception_init (&ev);
+ strs = NULL;
+
/* Seems that bonobo_main doens't like
not having gnome_init called, dies in a
X call, yech */
@@ -411,6 +416,7 @@ int main(int argc, char *argv[]) {
/* If there are more args, get them and parse them as packages */
while ((str = poptGetArg (ctxt)) != NULL) {
packages = g_list_prepend (packages, create_package (str));
+ strs = g_list_prepend (strs, g_strdup (str));
}
if (packages) {
CategoryData *category;
@@ -422,11 +428,9 @@ int main(int argc, char *argv[]) {
}
/* Chech that we're root and on a redhat system */
- if (check_for_root_user() == FALSE) {
- fprintf (stderr, "*** This tool requires root access.\n");
- }
if (check_for_redhat () == FALSE) {
fprintf (stderr, "*** This tool can only be used on RedHat.\n");
+ exit (1);
}
orb = oaf_init (argc, argv);
@@ -456,14 +460,32 @@ int main(int argc, char *argv[]) {
gtk_signal_connect (GTK_OBJECT (cb), "delete_files", (void *)delete_files, NULL);
gtk_signal_connect (GTK_OBJECT (cb), "done", done, NULL);
+ if (arg_erase + arg_query > 1) {
+ g_error ("Only one operation at a time please.");
+ }
+
if (arg_erase) {
eazel_install_callback_uninstall_packages (cb, categories, &ev);
+ } else if (arg_query) {
+ GList *iterator;
+ for (iterator = strs; iterator; iterator = iterator->next) {
+ GList *matched_packages;
+ GList *match_it;
+ matched_packages = eazel_install_callback_simple_query (cb, (char*)iterator->data, &ev);
+ for (match_it = matched_packages; match_it; match_it = match_it->next) {
+ PackageData *p;
+ p = (PackageData*)match_it->data;
+ fprintf (stdout, "%s %s %50.50s", p->name, p->version, p->summary);
+ }
+ }
} else {
eazel_install_callback_install_packages (cb, categories, &ev);
}
- fprintf (stdout, "\nEntering main loop...\n");
- bonobo_main ();
+ if (!arg_query) {
+ fprintf (stdout, "\nEntering main loop...\n");
+ bonobo_main ();
+ }
eazel_install_callback_destroy (GTK_OBJECT (cb));
diff --git a/components/services/install/command-line/eazel-package-query.c b/components/services/install/command-line/eazel-package-query.c
index aa7e9286a..4b8b931e8 100644
--- a/components/services/install/command-line/eazel-package-query.c
+++ b/components/services/install/command-line/eazel-package-query.c
@@ -32,11 +32,6 @@
#include <libtrilobite/helixcode-utils.h>
-/* This ensure that if the arch is detected as i[3-9]86, the
- requested archtype will be set to i386 */
-#define ASSUME_ix86_IS_i386
-
-
/* Popt stuff */
char *arg_query;
int arg_owns, arg_provides, arg_requires;
diff --git a/components/services/install/command-line/genpkg_list.example b/components/services/install/command-line/genpkg_list.example
index 72c03c39b..b6e9f4f89 100644
--- a/components/services/install/command-line/genpkg_list.example
+++ b/components/services/install/command-line/genpkg_list.example
@@ -1,4 +1,5 @@
-Nautilus:GConf:0.5.EazelSourceSnapshot:1:i386::
+roev
+:GConf:0.5.EazelSourceSnapshot:1:i386::
Nautilus:GConf-devel:0.5.EazelSourceSnapshot::i386::
Nautilus:ORBit:0.5.2.EazelSourceSnapshot::i386::
Nautilus:ORBit-devel:0.5.2.EazelSourceSnapshot::i386::
diff --git a/components/services/install/idl/trilobite-eazel-install.idl b/components/services/install/idl/trilobite-eazel-install.idl
index c63d17af4..66e07b188 100644
--- a/components/services/install/idl/trilobite-eazel-install.idl
+++ b/components/services/install/idl/trilobite-eazel-install.idl
@@ -149,7 +149,7 @@ module Trilobite {
oneway void uninstall_packages (in CategoryStructList categories, in InstallCallback cb);
/* Run a query to the package sys */
- PackageDataStructList query (in string query);
+ PackageDataStructList simple_query (in string query);
/* Revert a operation */
oneway void revert_transaction (in string xml, in InstallCallback cb);
diff --git a/components/services/install/lib/eazel-install-corba-callback.c b/components/services/install/lib/eazel-install-corba-callback.c
index af161d8d6..5663bf556 100644
--- a/components/services/install/lib/eazel-install-corba-callback.c
+++ b/components/services/install/lib/eazel-install-corba-callback.c
@@ -142,11 +142,21 @@ impl_install_failed (impl_POA_Trilobite_Eazel_InstallCallback *servant,
GList *categories;
PackageData *pack;
categories = parse_memory_xml_package_list ((char*)xmlcorbapack, strlen (xmlcorbapack));
- /* FIXME bugzilla.eazel.com 1557:
- semi ugly, but assuming that the xml parse was ok, this gets the package
- in for the signal */
- pack = (PackageData*)((CategoryData*)categories->data)->packages->data;
- gtk_signal_emit (GTK_OBJECT (servant->object), signals[INSTALL_FAILED], pack);
+ if (categories==NULL) {
+ g_warning ("install_failed called with error in xml.");
+ g_warning ("XML is = \n%s", xmlcorbapack);
+ } else {
+ CategoryData *cat;
+ cat = (CategoryData*)categories->data;
+ if (cat->packages==NULL) {
+ g_warning ("install_failed called with error in xml.");
+ g_warning ("XML is = \n%s", xmlcorbapack);
+ } else {
+ PackageData *pack;
+ pack = (PackageData*)cat->packages->data;
+ gtk_signal_emit (GTK_OBJECT (servant->object), signals[INSTALL_FAILED], pack);
+ }
+ }
}
static void
@@ -157,11 +167,21 @@ impl_uninstall_failed (impl_POA_Trilobite_Eazel_InstallCallback *servant,
GList *categories;
PackageData *pack;
categories = parse_memory_xml_package_list ((char*)xmlcorbapack, strlen (xmlcorbapack));
- /* FIXME bugzilla.eazel.com 1557:
- semi ugly, but assuming that the xml parse was ok, this gets the package
- in for the signal */
- pack = (PackageData*)((CategoryData*)categories->data)->packages->data;
- gtk_signal_emit (GTK_OBJECT (servant->object), signals[UNINSTALL_FAILED], pack);
+ if (categories==NULL) {
+ g_warning ("install_failed called with error in xml.");
+ g_warning ("XML is = \n%s", xmlcorbapack);
+ } else {
+ CategoryData *cat;
+ cat = (CategoryData*)categories->data;
+ if (cat->packages==NULL) {
+ g_warning ("install_failed called with error in xml.");
+ g_warning ("XML is = \n%s", xmlcorbapack);
+ } else {
+ PackageData *pack;
+ pack = (PackageData*)cat->packages->data;
+ gtk_signal_emit (GTK_OBJECT (servant->object), signals[INSTALL_FAILED], pack);
+ }
+ }
}
static CORBA_boolean
@@ -462,24 +482,25 @@ eazel_install_callback_uninstall_packages (EazelInstallCallback *service,
}
GList*
-eazel_install_callback_query (EazelInstallCallback *service,
- char *query,
- CORBA_Environment *ev)
+eazel_install_callback_simple_query (EazelInstallCallback *service,
+ const char *query,
+ CORBA_Environment *ev)
{
GList *result;
Trilobite_Eazel_PackageDataStructList *corbares;
- /* FIXME bugzilla.eazel.com 1446: ? */
-
- corbares = Trilobite_Eazel_Install_query (service->installservice_corba,
- query,
- ev);
+ corbares = Trilobite_Eazel_Install_simple_query (service->installservice_corba,
+ query,
+ ev);
+ result = packagedata_list_from_corba_packagedatastructlist (*corbares);
+ CORBA_free (corbares);
+
return result;
}
void
eazel_install_callback_revert_transaction (EazelInstallCallback *service,
- char *xmlfile,
+ const char *xmlfile,
CORBA_Environment *ev)
{
xmlDocPtr doc;
diff --git a/components/services/install/lib/eazel-install-corba-callback.h b/components/services/install/lib/eazel-install-corba-callback.h
index 5762cda33..eb59425dd 100644
--- a/components/services/install/lib/eazel-install-corba-callback.h
+++ b/components/services/install/lib/eazel-install-corba-callback.h
@@ -110,12 +110,12 @@ void eazel_install_callback_uninstall_packages (EazelInstallCallback *service,
GList *categories,
CORBA_Environment *ev);
-GList* eazel_install_callback_query (EazelInstallCallback *service,
- char *query,
- CORBA_Environment *ev);
+GList* eazel_install_callback_simple_query (EazelInstallCallback *service,
+ const char* query,
+ CORBA_Environment *ev);
void eazel_install_callback_revert_transaction (EazelInstallCallback *service,
- char *xmlfile,
+ const char *xmlfile,
CORBA_Environment *ev);
/* Stuff */
diff --git a/components/services/install/lib/eazel-install-corba-types.c b/components/services/install/lib/eazel-install-corba-types.c
index 6d1c44b5b..c400c55ed 100644
--- a/components/services/install/lib/eazel-install-corba-types.c
+++ b/components/services/install/lib/eazel-install-corba-types.c
@@ -54,11 +54,13 @@ corba_packagedatastruct_from_packagedata (const PackageData *pack)
if (pack->distribution.name == DISTRO_UNKNOWN) {
DistributionInfo dist;
dist = trilobite_get_distribution ();
- corbapack.distribution.name = trilobite_get_distribution_name (dist, FALSE, FALSE);
+ corbapack.distribution.name =
+ CORBA_string_dup (trilobite_get_distribution_name (dist, FALSE, FALSE));
corbapack.distribution.major = dist.version_major;
corbapack.distribution.minor = dist.version_minor;
} else {
- corbapack.distribution.name = trilobite_get_distribution_name (pack->distribution, FALSE, FALSE);
+ corbapack.distribution.name =
+ CORBA_string_dup (trilobite_get_distribution_name (pack->distribution, FALSE, FALSE));
corbapack.distribution.major = pack->distribution.version_major;
corbapack.distribution.minor = pack->distribution.version_minor;
}
diff --git a/components/services/install/lib/eazel-install-corba.c b/components/services/install/lib/eazel-install-corba.c
index 0c7b5d667..02f761e0c 100644
--- a/components/services/install/lib/eazel-install-corba.c
+++ b/components/services/install/lib/eazel-install-corba.c
@@ -33,6 +33,7 @@
#include "eazel-install-public.h"
#include "eazel-install-private.h"
#include "eazel-install-corba-types.h"
+#include "eazel-install-query.h"
#define RELEASE_CB if (servant->object->callback != CORBA_OBJECT_NIL) { \
CORBA_Object_release (servant->object->callback, ev); \
@@ -323,17 +324,17 @@ impl_Eazel_Install__get_protocol (impl_POA_Trilobite_Eazel_Install *servant,
}
static Trilobite_Eazel_PackageDataStructList*
-impl_Eazel_Install_query (impl_POA_Trilobite_Eazel_Install *servant,
- const CORBA_char *query,
- CORBA_Environment *ev)
+impl_Eazel_Install_simple_query (impl_POA_Trilobite_Eazel_Install *servant,
+ const CORBA_char *query,
+ CORBA_Environment *ev)
{
Trilobite_Eazel_PackageDataStructList *result;
+ GList *tmp_result;
- /* FIXME bugzilla.eazel.com:
- Finish this, need to convert the return value to a
- corba sequence and return it.
- */
- eazel_install_query_package_system (servant->object, query, 0);
+ tmp_result = eazel_install_simple_query (servant->object, query, EI_SIMPLE_QUERY_MATCHES, 0, NULL);
+ result = Trilobite_Eazel_PackageDataStructList__alloc ();
+ (*result) = corba_packagedatastructlist_from_packagedata_list (tmp_result);
+ g_list_foreach (tmp_result, (GFunc)packagedata_destroy_foreach, NULL);
return result;
}
@@ -383,7 +384,7 @@ eazel_install_get_epv ()
epv->_set_tmp_dir = (gpointer)&impl_Eazel_Install__set_tmp_dir;
epv->_get_tmp_dir = (gpointer)&impl_Eazel_Install__get_tmp_dir;
- epv->query = (gpointer)&impl_Eazel_Install_query;
+ epv->simple_query = (gpointer)&impl_Eazel_Install_simple_query;
return epv;
};
diff --git a/components/services/install/lib/eazel-install-protocols.c b/components/services/install/lib/eazel-install-protocols.c
index d278071cc..e4a69083d 100644
--- a/components/services/install/lib/eazel-install-protocols.c
+++ b/components/services/install/lib/eazel-install-protocols.c
@@ -121,7 +121,7 @@ http_fetch_remote_file (EazelInstall *service,
ghttp_current_status curStat = ghttp_get_status (request);
total_bytes = curStat.bytes_total;
/* Ensure first emit is with amount==0 */
- if (first_emit) {
+ if (first_emit && total_bytes > 0) {
eazel_install_emit_download_progress (service, g_basename (target_file), 0, total_bytes);
first_emit = FALSE;
}
diff --git a/components/services/install/lib/eazel-install-query.c b/components/services/install/lib/eazel-install-query.c
index 64440bfb5..e466c72a5 100644
--- a/components/services/install/lib/eazel-install-query.c
+++ b/components/services/install/lib/eazel-install-query.c
@@ -88,7 +88,7 @@ eazel_install_query_package_system (EazelInstall *service,
static GList *
eazel_install_simple_rpm_query (EazelInstall *service,
- char *input,
+ const char *input,
EazelInstallSimpleQueryEnum flag)
{
dbiIndexSet matches;
@@ -104,7 +104,6 @@ eazel_install_simple_rpm_query (EazelInstall *service,
open and close at the end. That way, this
func can be used in both various enviroments */
if (db == NULL) {
- g_message ("PREPARING PACKAGE SYS");
eazel_install_prepare_package_system (service);
db = service->private->packsys.rpm.db;
close_db = TRUE;
@@ -151,7 +150,6 @@ eazel_install_simple_rpm_query (EazelInstall *service,
}
if (close_db) {
- g_message ("KILLING PACKAGE SYS");
eazel_install_free_package_system (service);
}
@@ -160,10 +158,11 @@ eazel_install_simple_rpm_query (EazelInstall *service,
GList*
-eazel_install_simple_query (EazelInstall *service, char *input,
+eazel_install_simple_query (EazelInstall *service,
+ const char *input,
EazelInstallSimpleQueryEnum flag,
int neglist_count,
- GList *neglists,...)
+ const GList *neglists,...)
{
GList *result;
GList *remove;
diff --git a/components/services/install/lib/eazel-install-query.h b/components/services/install/lib/eazel-install-query.h
index a536e4172..42f97b5b8 100644
--- a/components/services/install/lib/eazel-install-query.h
+++ b/components/services/install/lib/eazel-install-query.h
@@ -34,8 +34,8 @@ typedef enum {
} EazelInstallSimpleQueryEnum;
GList* eazel_install_simple_query (EazelInstall *service,
- char *input,
+ const char *input,
EazelInstallSimpleQueryEnum flag,
- int neglists, GList *neglist,...);
+ int neglists, const GList *neglist,...);
#endif /* EAZEL_INSTALL_QUERY_H */
diff --git a/components/services/install/lib/eazel-install-rpm-glue.c b/components/services/install/lib/eazel-install-rpm-glue.c
index 88da62e95..c2c8b0663 100644
--- a/components/services/install/lib/eazel-install-rpm-glue.c
+++ b/components/services/install/lib/eazel-install-rpm-glue.c
@@ -557,12 +557,14 @@ eazel_install_do_rpm_transaction_process_pipe (EazelInstall *service,
}
if (tmp) {
+ g_message ("READ \"%s\"", tmp);
/* Percentage output, parse and emit... */
if (tmp[0]=='%' && tmp[1]=='%') {
char *ptr;
int pct;
int amount;
+
if (pack == NULL) {
continue;
}
@@ -612,12 +614,17 @@ eazel_install_do_rpm_transaction_process_pipe (EazelInstall *service,
service->private->packsys.rpm.total_size);
}
}
+ } else {
+ if (fflush (pipe)==0) {
+ g_warning ("cannot flush");
+ }
}
}
fclose (pipe);
}
+#ifndef EAZEL_INSTALL_SLIM
static void
eazel_install_do_rpm_transaction_save_report_helper (xmlNodePtr node,
GList *packages)
@@ -654,28 +661,33 @@ eazel_install_do_rpm_transaction_save_report (EazelInstall *service)
xmlNodePtr node, root;
char *name;
- doc = xmlNewDoc ("1.0");
- root = node = xmlNewNode (NULL, "TRANSACTION");
- xmlDocSetRootElement (doc, node);
- name = g_strdup_printf ("%s/transaction.%d", eazel_install_get_transaction_dir (service), time (NULL));
- while (g_file_test (name, G_FILE_TEST_ISFILE)) {
- g_free (name);
- sleep (1);
- name = g_strdup_printf ("%s/transaction.%d", eazel_install_get_transaction_dir (service), time (NULL));
- }
-
/* Ensure the transaction dir is present */
if (! g_file_test (eazel_install_get_transaction_dir (service), G_FILE_TEST_ISDIR)) {
int retval;
retval = mkdir (eazel_install_get_transaction_dir (service), 0755);
if (retval < 0) {
if (errno != EEXIST) {
- g_error (_("*** Could not create transaction directory (%s)! ***\n"),
- eazel_install_get_transaction_dir (service));
+ g_warning (_("*** Could not create transaction directory (%s)! ***\n"),
+ eazel_install_get_transaction_dir (service));
+ return;
}
}
}
+ /* Create xml */
+ doc = xmlNewDoc ("1.0");
+ root = node = xmlNewNode (NULL, "TRANSACTION");
+ xmlDocSetRootElement (doc, node);
+
+ /* Make a unique name */
+ name = g_strdup_printf ("%s/transaction.%d", eazel_install_get_transaction_dir (service), time (NULL));
+ while (g_file_test (name, G_FILE_TEST_ISFILE)) {
+ g_free (name);
+ sleep (1);
+ name = g_strdup_printf ("%s/transaction.%d", eazel_install_get_transaction_dir (service), time (NULL));
+ }
+
+ /* Open and save */
outfile = fopen (name, "w");
xmlAddChild (root, eazel_install_packagelist_to_xml (service->private->transaction));
node = xmlAddChild (node, xmlNewNode (NULL, "DESCRIPTIONS"));
@@ -692,21 +704,19 @@ eazel_install_do_rpm_transaction_save_report (EazelInstall *service)
xmlDocDump (outfile, doc);
fclose (outfile);
- g_free (name);
-
- /* FIXME bugzilla.eazel.com 1586:
- FIXME bugzilla.eazel.com 1673:
- at this point, we could emit the transaction info, by finding the toplevel
- packages, and spewing out xml for them */
-}
+ g_free (name);}
+#endif /* EAZEL_INSTALL_SLIM */
int
do_rpm_transaction (EazelInstall *service,
GList* packages)
{
+#ifndef EAZEL_INSTALL_SLIM
TrilobiteRootHelper *root_helper;
+#endif /* EAZEL_INSTALL_SLIM */
GList *args;
int fd;
+ int res;
if (g_list_length (packages) == 0) {
return 0;
@@ -718,6 +728,7 @@ do_rpm_transaction (EazelInstall *service,
service->private->packsys.rpm.total_size = 0;
args = NULL;
+ res = 0;
eazel_install_do_rpm_transaction_fill_hash (service, packages);
eazel_install_do_rpm_transaction_get_total_size (service, packages);
@@ -726,6 +737,7 @@ do_rpm_transaction (EazelInstall *service,
eazel_install_emit_preflight_check (service,
service->private->packsys.rpm.total_size,
service->private->packsys.rpm.num_packages);
+
{
GList *iterator;
fprintf (stdout, "\nARGS: ");
@@ -735,27 +747,62 @@ do_rpm_transaction (EazelInstall *service,
fprintf (stdout, "\n");
}
- /* Fire off the helper */
+#ifdef EAZEL_INSTALL_SLIM
+ {
+ char **argv;
+ int i;
+ int flags;
+ GList *iterator;
+
+ /* Create argv list */
+ argv = g_new0 (char*, g_list_length (args) + 2);
+ argv[0] = g_strdup ("rpm");
+ i = 1;
+ for (iterator = args; iterator; iterator = iterator->next) {
+ argv[i] = g_strdup (iterator->data);
+ i++;
+ }
+ argv[i] = NULL;
+
+ if (access ("/bin/rpm", R_OK|X_OK)!=0) {
+ g_warning ("/bin/rpm missing or not executable for uid");
+ res = service->private->packsys.rpm.num_packages;
+ }
+ /* start /bin/rpm... */
+ if (res==0 && trilobite_pexec ("/bin/rpm", argv, NULL, &fd, NULL)!=0) {
+ g_warning ("Could not start rpm");
+ res = service->private->packsys.rpm.num_packages;
+ } else {
+ g_message ("rpm running...");
+ }
+ }
+#else /* EAZEL_INSTALL_SLIM */
+ /* Fire off the helper */
root_helper = gtk_object_get_data (GTK_OBJECT (service), "trilobite-root-helper");
if (trilobite_root_helper_start (root_helper) != TRILOBITE_ROOT_HELPER_SUCCESS) {
g_warning ("Error in starting trilobite_root_helper");
- return service->private->packsys.rpm.num_packages;
+ res = service->private->packsys.rpm.num_packages;
}
/* Run RPM */
- if (trilobite_root_helper_run (root_helper, TRILOBITE_ROOT_HELPER_RUN_RPM, args, &fd) !=
+ if (res==0 && trilobite_root_helper_run (root_helper, TRILOBITE_ROOT_HELPER_RUN_RPM, args, &fd) !=
TRILOBITE_ROOT_HELPER_SUCCESS) {
g_warning ("Error in running trilobite_root_helper");
- return service->private->packsys.rpm.num_packages;
+ res = service->private->packsys.rpm.num_packages;
+ }
+
+#endif /* EAZEL_INSTALL_SLIM */
+ if (res==0) {
+ eazel_install_do_rpm_transaction_process_pipe (service, fd);
+#ifndef EAZEL_INSTALL_SLIM
+ eazel_install_do_rpm_transaction_save_report (service);
+#endif /* EAZEL_INSTALL_SLIM */
}
-
- eazel_install_do_rpm_transaction_process_pipe (service, fd);
- eazel_install_do_rpm_transaction_save_report (service);
g_list_foreach (args, (GFunc)g_free, NULL);
g_list_free (args);
- return 0;
+ return res;
} /* end do_rpm_transaction */
/*
@@ -1243,6 +1290,12 @@ eazel_install_fetch_rpm_dependencies (EazelInstall *service,
pack_entry = g_list_find_custom (*packages,
(gpointer)conflict.needsName,
(GCompareFunc)eazel_install_package_name_compare);
+ if (pack_entry==NULL) {
+ /* FIXME: bugzilla.eazel.com
+ Argh, if a lib*.so breaks a package,
+ we end up here */
+ continue;
+ }
dep = packagedata_new_from_rpm_conflict_reversed (conflict);
pack = (PackageData*)(pack_entry->data);
dep->archtype = g_strdup (pack->archtype);
diff --git a/components/services/install/lib/eazel-install-xml-package-list.c b/components/services/install/lib/eazel-install-xml-package-list.c
index 31e79cd00..45c37bc6b 100644
--- a/components/services/install/lib/eazel-install-xml-package-list.c
+++ b/components/services/install/lib/eazel-install-xml-package-list.c
@@ -272,15 +272,13 @@ generate_xml_package_list (const char* pkg_template_file,
*/
xmlDocPtr doc;
- xmlNodePtr category;
- xmlNodePtr packages;
- xmlNodePtr package;
- xmlNodePtr data;
char* retbuf;
int index;
char** entry_array;
char** package_array;
- gint lines;
+ char *tags[] = {"NAME", "VERSION", "MINOR", "ARCH", "BYTESIZE", "SUMMARY", NULL};
+ int num_tags = 6;
+ int lines;
doc = xmlNewDoc ("1.0");
doc->root = xmlNewDocNode (doc, NULL, "CATEGORIES", NULL);
@@ -297,25 +295,35 @@ generate_xml_package_list (const char* pkg_template_file,
break;
}
- package_array = g_strsplit (entry_array[index], ":", 7);
-
- /* FIXME bugzilla.eazel.com 1283: this has no error control right now. It needs to be improved alot. */
-
- if ((doc->root->childs == NULL) ||
- (xmlGetProp (doc->root->childs, package_array[0]))) {
- category = xmlNewChild (doc->root, NULL, "CATEGORY", NULL);
- xmlSetProp (category, "name", package_array[0]);
- packages = xmlNewChild (category, NULL, "PACKAGES", NULL);
+ package_array = g_strsplit (entry_array[index], ":", num_tags+1);
+
+ if (package_array && package_array[0]) {
+ xmlNodePtr packages;
+ xmlNodePtr category;
+ xmlNodePtr package;
+ xmlNodePtr data;
+ int i;
+
+ if ((doc->root->childs == NULL) ||
+ (xmlGetProp (doc->root->childs, package_array[0]))) {
+ category = xmlNewChild (doc->root, NULL, "CATEGORY", NULL);
+ xmlSetProp (category, "name", package_array[0]);
+ packages = xmlNewChild (category, NULL, "PACKAGES", NULL);
+ }
+
+ package = xmlNewChild (packages, NULL, "PACKAGE", NULL);
+
+ for (i = 1; i <= num_tags; i++) {
+ if (package_array[i]) {
+ data = xmlNewChild (package, NULL, tags[i], package_array[i]);
+ } else {
+ g_error ("line %d, tag %d (%s) is missing", index+1, i+1, tags[i]);
+ }
+ }
+ g_strfreev (package_array);
}
- package = xmlNewChild (packages, NULL, "PACKAGE", NULL);
- data = xmlNewChild (package, NULL, "NAME", package_array[1]);
- data = xmlNewChild (package, NULL, "VERSION", package_array[2]);
- data = xmlNewChild (package, NULL, "MINOR", package_array[3]);
- data = xmlNewChild (package, NULL, "ARCH", package_array[4]);
- data = xmlNewChild (package, NULL, "BYTESIZE", package_array[5]);
- data = xmlNewChild (package, NULL, "SUMMARY", package_array[6]);
}
-
+
if (doc == NULL) {
g_warning (_("*** Error generating xml package list! ***\n"));
xmlFreeDoc (doc);
diff --git a/components/services/install/lib/makefile.staticlib.in b/components/services/install/lib/makefile.staticlib.in
index e3a0afe8c..163102a67 100644
--- a/components/services/install/lib/makefile.staticlib.in
+++ b/components/services/install/lib/makefile.staticlib.in
@@ -4,11 +4,10 @@ OBJS=\
eazel-install-protocols.o \
eazel-install-rpm-glue.o \
eazel-install-query.o \
- eazel-install-tests.o \
eazel-install-xml-package-list.o \
eazel-install-object.o
-DEFINES=-DEAZEL_INSTALL_NO_CORBA
+DEFINES=-DEAZEL_INSTALL_NO_CORBA -DEAZEL_INSTALL_SLIM
INCLUDES=\
-I. \
-I@top_srcdir@ \
@@ -25,6 +24,7 @@ LIB=libeazelinstall_minimal.a
CC=gcc
CPPFLAGS=$(INCLUDES) $(DEFINES)
CFLAGS=-O -Werror
+#CFLAGS=-g -Werror
all: $(LIB)
diff --git a/nautilus-installer/src/Makefile b/nautilus-installer/src/Makefile
index 59cdc3b43..7ea749c24 100644
--- a/nautilus-installer/src/Makefile
+++ b/nautilus-installer/src/Makefile
@@ -60,9 +60,13 @@ POST_UNINSTALL = :
host_alias = i686-pc-linux-gnu
host_triplet = i686-pc-linux-gnu
AS = @AS@
+BONOBOX_CFLAGS = -I/gnome/include -DNEED_GNOMESUPPORT_H -I/gnome/lib/gnome-libs/include -I/gnome/lib/glib/include -I/usr/X11R6/include -I/gnome/include/gnome-xml
+BONOBOX_LIBS = -rdynamic -L/gnome/lib -L/usr/X11R6/lib -L/usr/lib -lbonobo -lgdk_pixbuf -ltiff -ljpeg -lpng -lgnomeprint -lgnomeui -lart_lgpl -lgdk_imlib -lSM -lICE -lgtk -lgdk -lgmodule -lXext -lX11 -lgnome -lgnomesupport -lesd -laudiofile -ldb1 -ldl -lxml -lz -loaf -lORBitCosNaming -lORBit -lIIOP -lORBitutil -lglib -lnsl -lm -lbonobox
BONOBO_CFLAGS = -I/gnome/include -DNEED_GNOMESUPPORT_H -I/gnome/lib/gnome-libs/include -I/gnome/lib/glib/include -I/usr/X11R6/include -I/gnome/include/gnome-xml
BONOBO_LIBS = -rdynamic -L/gnome/lib -L/usr/X11R6/lib -L/usr/lib -lbonobo -lgdk_pixbuf -ltiff -ljpeg -lpng -lgnomeprint -lgnomeui -lart_lgpl -lgdk_imlib -lSM -lICE -lgtk -lgdk -lgmodule -lXext -lX11 -lgnome -lgnomesupport -lesd -laudiofile -ldb1 -ldl -lxml -lz -loaf -lORBitCosNaming -lORBit -lIIOP -lORBitutil -lglib -lnsl -lm
-CATALOGS = da.gmo de.gmo fr.gmo gl.gmo ja.gmo ko.gmo no.gmo ru.gmo sv.gmo tr.gmo
+BONOBO_PRINT_CFLAGS =
+BONOBO_PRINT_LIBS =
+CATALOGS = da.gmo de.gmo fr.gmo gl.gmo ja.gmo ko.gmo no.gmo ru.gmo sv.gmo tr.gmo zh_TW.Big5.gmo
CATOBJEXT = .gmo
CC = gcc
CPP = gcc -E
@@ -83,7 +87,7 @@ GHTTP_LIBS = -L/gnome/lib -lghttp
GLIB_CFLAGS = -I/gnome/lib/glib/include -I/gnome/include
GLIB_CONFIG = /gnome/bin/glib-config
GLIB_LIBS = -L/gnome/lib -lglib
-GMOFILES = da.gmo de.gmo fr.gmo gl.gmo ja.gmo ko.gmo no.gmo ru.gmo sv.gmo tr.gmo
+GMOFILES = da.gmo de.gmo fr.gmo gl.gmo ja.gmo ko.gmo no.gmo ru.gmo sv.gmo tr.gmo zh_TW.Big5.gmo
GMSGFMT = /usr/bin/msgfmt
GNOMECANVASPIXBUF_INCLUDEDIR =
GNOMECANVASPIXBUF_LIBS = -rdynamic -L/gnome/lib -L/usr/X11R6/lib -lgdk_pixbuf -ltiff -ljpeg -lpng -lz -lgtk -lgdk -lgmodule -lglib -ldl -lXext -lX11 -lm -lgnomecanvaspixbuf
@@ -132,7 +136,7 @@ ORBIT_IDL = /gnome/bin/orbit-idl
ORBIT_LIBS = -L/gnome/lib -lORBit -lIIOP -lORBitutil -lglib -lnsl -lm
PACKAGE = nautilus
PAM_LIBS = -ldl -lpam -lpam_misc
-POFILES = da.po de.po fr.po gl.po ja.po ko.po no.po ru.po sv.po tr.po
+POFILES = da.po de.po fr.po gl.po ja.po ko.po no.po ru.po sv.po tr.po zh_TW.Big5.po
POSUB = po
RANLIB = ranlib
RPM_LIBS = -lrpm -lz -lbz2 -lpopt -ldb
@@ -165,7 +169,7 @@ nautilus_installer_SOURCES = main.c support.c support.h interface.c interfac
nautilus_installer_LDFLAGS = -static
-nautilus_installer_LDADD = $(top_builddir)/components/services/trilobite/libtrilobite/helixcode-utils.o $(top_builddir)/components/services/trilobite/libtrilobite/trilobite-core-distribution.o $(top_builddir)/components/services/install/lib/libeazelinstall_minimal.a $(top_builddir)/components/services/trilobite/libtrilobite/trilobite-root-helper.o $(top_builddir)/components/services/trilobite/libtrilobite/trilobite-core-utils.o -L/gnome/lib -lgnomeui -lgnome -lart_lgpl -lgdk_imlib -lgtk -lgdk -lgmodule -lglib -L/usr/X11R6/lib -ldl -lXext -lX11 -lm -lSM -lICE /usr/lib/libesd.a /usr/lib/libaudiofile.a -lghttp -L/usr/lib -lrpm -lz -ldb1 -lpopt -lxml
+nautilus_installer_LDADD = $(top_builddir)/components/services/trilobite/libtrilobite/helixcode-utils.o $(top_builddir)/components/services/trilobite/libtrilobite/trilobite-core-distribution.o $(top_builddir)/components/services/install/lib/libeazelinstall_minimal.a $(top_builddir)/components/services/trilobite/libtrilobite/trilobite-root-helper.o $(top_builddir)/components/services/trilobite/libtrilobite/trilobite-core-utils.o -L/gnome/lib -lgnomeui -lgnome -lart_lgpl -lgdk_imlib -lgtk -lgdk -lgmodule -lglib -L/usr/X11R6/lib -ldl -lXext -lX11 -lm -lSM -lICE -lghttp -L/usr/lib -lrpm -lz -ldb1 -lpopt -lxml
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ../../config.h
@@ -183,8 +187,7 @@ $(top_builddir)/components/services/trilobite/libtrilobite/helixcode-utils.o \
$(top_builddir)/components/services/trilobite/libtrilobite/trilobite-core-distribution.o \
$(top_builddir)/components/services/install/lib/libeazelinstall_minimal.a \
$(top_builddir)/components/services/trilobite/libtrilobite/trilobite-root-helper.o \
-$(top_builddir)/components/services/trilobite/libtrilobite/trilobite-core-utils.o \
-/usr/lib/libesd.a /usr/lib/libaudiofile.a
+$(top_builddir)/components/services/trilobite/libtrilobite/trilobite-core-utils.o
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
@@ -432,6 +435,9 @@ distclean-generic clean-generic maintainer-clean-generic clean \
mostlyclean distclean maintainer-clean
+# /usr/lib/libesd.a \
+# /usr/lib/libaudiofile.a \
+
#
# /gnome-source/nautilus/components/services/trilobite/libtrilobite/helixcode-utils.o \
# /gnome-source/nautilus/components/services/install/lib/libinstall.a \
diff --git a/nautilus-installer/src/Makefile.am b/nautilus-installer/src/Makefile.am
index aec444954..78758bf40 100644
--- a/nautilus-installer/src/Makefile.am
+++ b/nautilus-installer/src/Makefile.am
@@ -46,13 +46,15 @@ nautilus_installer_LDADD = \
-lgmodule \
-lglib \
-L/usr/X11R6/lib -ldl -lXext -lX11 -lm -lSM -lICE \
- /usr/lib/libesd.a \
- /usr/lib/libaudiofile.a \
-lghttp \
-L/usr/lib -lrpm -lz -ldb1 \
-lpopt \
-lxml
+# /usr/lib/libesd.a \
+# /usr/lib/libaudiofile.a \
+
+
#
# /gnome-source/nautilus/components/services/trilobite/libtrilobite/helixcode-utils.o \
# /gnome-source/nautilus/components/services/install/lib/libinstall.a \
diff --git a/nautilus-installer/src/installer.c b/nautilus-installer/src/installer.c
index b2b6e0694..9aecbc55a 100644
--- a/nautilus-installer/src/installer.c
+++ b/nautilus-installer/src/installer.c
@@ -46,28 +46,38 @@ eazel_install_progress (EazelInstall *service,
int total_size_completed, int total_size,
GtkWidget *widget)
{
- GtkProgressBar *progressbar;
+ GtkProgressBar *progressbar, *progress_overall;
GtkLabel *action_label;
GtkLabel *package_label;
- float pct;
-
- pct = ( (total > 0) ? ((float) ((((float) amount) / total) * 100)): 100.0);
- fprintf (stdout, "Install Progress - %s - %d %d %% %f\r", pack->name?pack->name:"(null)", amount, total, pct);
action_label = gtk_object_get_data (GTK_OBJECT (widget), "action_label");
package_label = gtk_object_get_data (GTK_OBJECT (widget), "package_label");
- progressbar = gtk_object_get_data (GTK_OBJECT (widget), "progressbar");
+ progressbar = gtk_object_get_data (GTK_OBJECT (widget), "progressbar_single");
+ progress_overall = gtk_object_get_data (GTK_OBJECT (widget), "progressbar_overall");
+
+ if (amount == 0) {
+ gtk_label_set_text (action_label, "Install :");
+ gtk_label_set_text (package_label, pack->name);
+ gtk_progress_set_format_string (GTK_PROGRESS (progressbar), "%p%% - %v kb/%u kb");
+ gtk_progress_configure (GTK_PROGRESS (progressbar), 0, 0, (float)(total/1024));
+ }
- gtk_label_set_text (action_label, "Install :");
- gtk_label_set_text (package_label, pack->name);
- gtk_progress_bar_update (progressbar, pct/100);
+ if (installer_debug) {
+ float pct;
+ pct = ( (total > 0) ? ((float) ((((float) amount) / total) * 100)): 100.0);
+ fprintf (stdout, "Install Progress - %s - %d %d %% %f\r",
+ pack->name?pack->name:"(null)", amount, total, pct);
+ }
+
+ gtk_progress_set_value (GTK_PROGRESS (progressbar), (float)(amount/1024));
+ gtk_progress_set_value (GTK_PROGRESS (progress_overall), (float)package_num-1);
+ g_main_iteration (FALSE);
fflush (stdout);
- if (amount == total) {
+ if (amount == total && installer_debug) {
fprintf (stdout, "\n");
}
- gtk_main_iteration ();
}
@@ -81,22 +91,36 @@ eazel_download_progress (EazelInstall *service,
GtkProgressBar *progressbar;
GtkLabel *action_label;
GtkLabel *package_label;
- float pct;
-
- pct = ( (total > 0) ? ((float) ((((float) amount) / total) * 100)): 100.0);
- /* fprintf (stdout, "DOWNLOAD Progress - %s - %d %d %% %f\n", name?name:"(null)", amount, total, pct); */
action_label = gtk_object_get_data (GTK_OBJECT (widget), "action_label");
package_label = gtk_object_get_data (GTK_OBJECT (widget), "package_label");
- progressbar = gtk_object_get_data (GTK_OBJECT (widget), "progressbar");
+ progressbar = gtk_object_get_data (GTK_OBJECT (widget), "progressbar_single");
- gtk_label_set_text (action_label, "Download :");
- gtk_label_set_text (package_label, name);
- gtk_progress_bar_update (progressbar, pct/100);
+ if (amount == 0) {
+ gtk_label_set_text (package_label, name);
+ gtk_label_set_text (action_label, "Download :");
+ gtk_progress_set_format_string (GTK_PROGRESS (progressbar), "%p%% - %v kb/%u kb");
+ gtk_progress_configure (GTK_PROGRESS (progressbar), 0, 0, (float)(total/1024));
+ }
- fflush (stdout);
- if (amount != total) {
- gtk_main_iteration ();
+ if (installer_debug) {
+ float pct;
+ pct = ( (total > 0) ? ((float) ((((float) amount) / total) * 100)): 100.0);
+ fprintf (stdout, "DOWNLOAD Progress - %s - %d %d %% %f\r",
+ name?name:"(null)", amount, total, pct);
+ fflush (stdout);
+ }
+
+ gtk_progress_set_value (GTK_PROGRESS (progressbar), amount/1024);
+
+ if (amount != total) {
+ g_main_iteration (FALSE);
+ /* gtk_main_iteration (); */
+ } else if (amount == total) {
+ /*
+ gtk_progress_set_format_string (GTK_OBJECT (progressbar), "done...");
+ g_main_iteration (FALSE);
+ */
}
}
@@ -181,6 +205,80 @@ install_failed (EazelInstall *service,
}
static void
+download_failed (EazelInstall *service,
+ const char *name,
+ char **output)
+{
+ (*output) = g_strdup_printf ("Download of %s failed", name);
+}
+
+static void
+eazel_install_preflight (EazelInstall *service,
+ int total_size,
+ int num_packages,
+ GtkWidget *widget)
+{
+ GtkLabel *action_label;
+ GtkLabel *package_label;
+ GtkProgressBar *progress_overall;
+ char *tmp;
+
+ action_label = gtk_object_get_data (GTK_OBJECT (widget), "action_label");
+ package_label = gtk_object_get_data (GTK_OBJECT (widget), "package_label");
+ progress_overall = gtk_object_get_data (GTK_OBJECT (widget), "progressbar_overall");
+
+ gtk_progress_set_format_string (GTK_PROGRESS (progress_overall), "%p%% - package %v of %u");
+ gtk_progress_configure (GTK_PROGRESS (progress_overall), 0, 0, (float)num_packages);
+ gtk_widget_show (GTK_WIDGET (progress_overall));
+
+ tmp = g_strdup_printf ("Preparing RPM, %d packages (%d mb)", num_packages, total_size/(1024*1024));
+
+ if (installer_debug) {
+ fprintf (stdout, "PREFLIGHT: %s\n", tmp);
+ }
+
+ gtk_label_set_text (action_label, "Install :");
+ gtk_label_set_text (package_label, tmp);
+ g_main_iteration (FALSE);
+ g_main_iteration (FALSE);
+}
+
+static void
+eazel_install_dep_check (EazelInstall *service,
+ const PackageData *pack,
+ const PackageData *needs,
+ GtkWidget *widget)
+{
+ GtkLabel *action_label;
+ GtkLabel *package_label;
+ char *tmp;
+
+ action_label = gtk_object_get_data (GTK_OBJECT (widget), "action_label");
+ package_label = gtk_object_get_data (GTK_OBJECT (widget), "package_label");
+
+ tmp = g_strdup_printf ("%s needs %d", pack->name, needs->name);
+
+ if (installer_debug) {
+ fprintf (stdout, "DEP CHECK : %s\n", tmp);
+ }
+
+ gtk_label_set_text (action_label, "Dep check :");
+ gtk_label_set_text (package_label, tmp);
+
+ g_main_iteration (FALSE);
+}
+
+static gboolean
+eazel_install_delete_files (EazelInstall *service,
+ GtkWidget *widget)
+{
+ if (installer_debug) {
+ fprintf (stdout, "Deleting rpm's\n");
+ }
+ return TRUE ;
+}
+
+static void
make_dirs ()
{
int retval;
@@ -209,6 +307,7 @@ void installer (GtkWidget *window,
EazelInstall *service;
GtkProgressBar *progressbar;
GtkLabel *package_label;
+ GtkLabel *action_label;
make_dirs ();
@@ -216,6 +315,7 @@ void installer (GtkWidget *window,
gnome_warning_dialog ("We don't do UPGRADE yet");
return;
}
+#ifndef NAUTILUS_INSTALLER_RELEASE
if (!installer_test) {
GnomeDialog *d;
d = GNOME_DIALOG (gnome_warning_dialog_parented (_("This is a warning, you're running\n"
@@ -224,17 +324,19 @@ void installer (GtkWidget *window,
GTK_WINDOW (window)));
gnome_dialog_run_and_close (d);
}
-
+#endif
+
+ /* We set force, update and downgrade to true. */
service = EAZEL_INSTALL (gtk_object_new (TYPE_EAZEL_INSTALL,
"verbose", TRUE,
"silent", FALSE,
"debug", TRUE,
- "test", TRUE, //installer_test () ? FALSE : TRUE,
+ "test", installer_test ? TRUE : FALSE,
"force", TRUE,
"depend", FALSE,
"update", TRUE,
"uninstall", method==UNINSTALL ? TRUE : FALSE,
- "downgrade", FALSE,
+ "downgrade", TRUE,
"protocol", PROTOCOL,
"tmp_dir", TMP_DIR,
"rpmrc_file", RPMRC,
@@ -258,10 +360,20 @@ void installer (GtkWidget *window,
g_assert (service != NULL);
- gtk_signal_connect (GTK_OBJECT (service), "download_progress", eazel_download_progress, window);
- gtk_signal_connect (GTK_OBJECT (service), "install_progress", eazel_install_progress, window);
- /* gtk_signal_connect (GTK_OBJECT (service), "download_failed", download_failed, window); */
- gtk_signal_connect (GTK_OBJECT (service), "install_failed", install_failed, &failure_info);
+ gtk_signal_connect (GTK_OBJECT (service), "download_progress",
+ GTK_SIGNAL_FUNC (eazel_download_progress), window);
+ gtk_signal_connect (GTK_OBJECT (service), "install_progress",
+ GTK_SIGNAL_FUNC (eazel_install_progress), window);
+ gtk_signal_connect (GTK_OBJECT (service), "preflight_check",
+ GTK_SIGNAL_FUNC (eazel_install_preflight), window);
+ gtk_signal_connect (GTK_OBJECT (service), "dependency_check",
+ GTK_SIGNAL_FUNC (eazel_install_dep_check), window);
+ gtk_signal_connect (GTK_OBJECT (service), "delete_files",
+ GTK_SIGNAL_FUNC (eazel_install_delete_files), window);
+ gtk_signal_connect (GTK_OBJECT (service), "download_failed",
+ GTK_SIGNAL_FUNC (download_failed), &failure_info);
+ gtk_signal_connect (GTK_OBJECT (service), "install_failed",
+ GTK_SIGNAL_FUNC (install_failed), &failure_info);
failure_info = g_new0 (char, 8192);
@@ -276,16 +388,23 @@ void installer (GtkWidget *window,
eazel_install_uninstall_packages (service, NULL);
break;
};
+
eazel_install_destroy (GTK_OBJECT (service));
package_label = gtk_object_get_data (GTK_OBJECT (window), "package_label");
- progressbar = gtk_object_get_data (GTK_OBJECT (window), "progressbar");
-
- gtk_label_set_text (package_label, "Completed :");
- gtk_progress_bar_update (progressbar, 1);
+ progressbar = gtk_object_get_data (GTK_OBJECT (window), "progressbar_single");
+ gtk_progress_set_format_string (GTK_PROGRESS (progressbar), "done");
+ progressbar = gtk_object_get_data (GTK_OBJECT (window), "progressbar_overall");
+ gtk_progress_set_format_string (GTK_PROGRESS (progressbar), "done");
if (strlen (failure_info)>1) {
+ gtk_label_set_text (package_label, "Failed");
+ if (installer_debug) {
+ fprintf (stdout, "ERROR :\n%s", failure_info);
+ }
gnome_error_dialog_parented (failure_info, GTK_WINDOW (window));
+ } else {
+ gtk_label_set_text (package_label, "Completed");
}
}
diff --git a/nautilus-installer/src/interface.c b/nautilus-installer/src/interface.c
index 8070ecbf8..2d13c6bc0 100644
--- a/nautilus-installer/src/interface.c
+++ b/nautilus-installer/src/interface.c
@@ -51,7 +51,8 @@ create_window (void)
GtkWidget *table2;
GtkWidget *label12;
GtkWidget *action_label;
- GtkWidget *progressbar;
+ GtkWidget *progressbar1;
+ GtkWidget *progressbar2;
GtkWidget *package_label;
GtkWidget *fixed1;
GtkWidget *begin_button;
@@ -233,14 +234,14 @@ create_window (void)
gtk_widget_show (label11);
gtk_box_pack_start (GTK_BOX (vbox5), label11, TRUE, FALSE, 0);
- table2 = gtk_table_new (2, 2, FALSE);
+ table2 = gtk_table_new (3, 2, FALSE);
set_white_stuff (GTK_WIDGET (table2));
gtk_widget_set_name (table2, "table2");
gtk_widget_ref (table2);
gtk_object_set_data_full (GTK_OBJECT (window), "table2", table2,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (table2);
- gtk_box_pack_start (GTK_BOX (vbox5), table2, FALSE, FALSE, 16);
+ gtk_box_pack_start (GTK_BOX (vbox5), table2, FALSE, TRUE, 16);
gtk_table_set_row_spacings (GTK_TABLE (table2), 16);
label12 = gtk_label_new (_("Package :"));
@@ -250,8 +251,9 @@ create_window (void)
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (label12);
gtk_table_attach (GTK_TABLE (table2), label12, 0, 1, 0, 1,
- (GtkAttachOptions) (0),
- (GtkAttachOptions) (0), 0, 0);
+ (GtkAttachOptions) 0,
+ (GtkAttachOptions) 0,
+ 0, 0);
action_label = gtk_label_new (_(""));
gtk_widget_set_name (action_label, "");
@@ -263,15 +265,27 @@ create_window (void)
(GtkAttachOptions) (0),
(GtkAttachOptions) (0), 0, 0);
- progressbar = gtk_progress_bar_new ();
- gtk_widget_set_name (progressbar, "progressbar");
- gtk_widget_ref (progressbar);
- gtk_object_set_data_full (GTK_OBJECT (window), "progressbar", progressbar,
+ progressbar1 = gtk_progress_bar_new ();
+ gtk_widget_set_name (progressbar1, "progressbar_single");
+ gtk_widget_ref (progressbar1);
+ gtk_object_set_data_full (GTK_OBJECT (window), "progressbar_single", progressbar1,
+ (GtkDestroyNotify) gtk_widget_unref);
+ gtk_progress_set_show_text (GTK_PROGRESS (progressbar1), TRUE);
+ gtk_widget_show (progressbar1);
+ gtk_table_attach (GTK_TABLE (table2), progressbar1, 1, 2, 1, 2,
+ GTK_EXPAND,
+ GTK_EXPAND,
+ 0, 0);
+
+ progressbar2 = gtk_progress_bar_new ();
+ gtk_widget_set_name (progressbar2, "progressbar_overall");
+ gtk_widget_ref (progressbar2);
+ gtk_object_set_data_full (GTK_OBJECT (window), "progressbar_overall", progressbar2,
(GtkDestroyNotify) gtk_widget_unref);
- gtk_widget_show (progressbar);
- gtk_table_attach (GTK_TABLE (table2), progressbar, 1, 2, 1, 2,
- GTK_FILL,
- GTK_FILL,
+ gtk_progress_set_show_text (GTK_PROGRESS (progressbar2), TRUE);
+ gtk_table_attach (GTK_TABLE (table2), progressbar2, 1, 2, 2, 3,
+ GTK_EXPAND,
+ GTK_EXPAND,
0, 0);
package_label = gtk_label_new (_(""));
diff --git a/nautilus-installer/src/link.sh b/nautilus-installer/src/link.sh
index 68ad9ae2b..749c3d9cb 100755
--- a/nautilus-installer/src/link.sh
+++ b/nautilus-installer/src/link.sh
@@ -7,19 +7,18 @@ make -f makefile.staticlib
popd
make clean
-make CFLAGS="-O -Werror" LDFLAGS="-static"
+make CFLAGS="-O -Werror $*" LDFLAGS="-static"
gcc -static -O -Werror -o nautilus-installer main.o support.o interface.o callbacks.o installer.o \
../../components/services/install/lib/libeazelinstall_minimal.a \
../../components/services/trilobite/libtrilobite/helixcode-utils.o \
../../components/services/trilobite/libtrilobite/trilobite-core-distribution.o \
-../../components/services/trilobite/libtrilobite/trilobite-root-helper.o \
../../components/services/trilobite/libtrilobite/trilobite-core-utils.o \
-L/gnome/lib -lgnomeui -lgnome -lart_lgpl -lgdk_imlib -lgtk -lgdk -lgmodule -lglib \
-L/usr/X11R6/lib -ldl -lXext -lX11 -lm -lSM -lICE /usr/lib/libesd.a /usr/lib/libaudiofile.a -lghttp \
-L/usr/lib -lrpm -lbz2 -lz -ldb1 -lpopt -lxml
-echo Stripping...
-strip nautilus-installer
+#echo Stripping...
+#strip nautilus-installer
echo Packing...
gzexe nautilus-installer
diff --git a/nautilus-installer/src/prescript b/nautilus-installer/src/prescript
index 5dbf10ed0..16f1fcf49 100644
--- a/nautilus-installer/src/prescript
+++ b/nautilus-installer/src/prescript
@@ -1,12 +1,14 @@
if test x$DISPLAY = x; then
echo "The Nautilus-Installer requires X"
fi
-if ! test -d /var/eazel/services; then
+if test $UID -ne 0; then
echo ""
- echo "Nautilus-Installer v 0.1d"
+ echo "Nautilus-Installer v 0.2"
echo ""
echo "argle bargle glob glyf muhainapuniua bork bork bork"
echo "fisk er dumme og heste er grimme"
+ echo "To maend, gik ud i en skov, tog bukserne af, til de begge"
+ echo "blev flove. Gravballemanden blev min skaebne"
echo ""
echo "The Nautilus-Installer requires superuser access to prepare the system"
echo "It needs to create a few administrative directories on in /var and"
@@ -14,8 +16,12 @@ if ! test -d /var/eazel/services; then
echo "we would never hurt a fly arglebargle."
echo ""
echo "Please enter root password at the prompt"
- su - -c "mkdir /var/eazel && mkdir /var/eazel/services"
- echo Uncompressing...
- sh $0 $* $USER
+ xhost + localhost
+ su - -c "export DISPLAY=$DISPLAY && cd $PWD && echo Uncompressing... && sh $0 $* $USER"
+ xhost - localhost
exit
fi
+if ! test -d /var/eazel/services; then
+ mkdir /var/eazel
+ mkdir /var/eazel/services
+fi