diff options
-rw-r--r-- | ChangeLog | 25 | ||||
-rw-r--r-- | components/services/install/command-line/eazel-alt-install-corba.c | 26 | ||||
-rw-r--r-- | components/services/install/idl/trilobite-eazel-install.idl | 2 | ||||
-rw-r--r-- | components/services/install/lib/eazel-install-corba-types.c | 2 | ||||
-rw-r--r-- | components/services/install/lib/eazel-install-corba.c | 20 | ||||
-rw-r--r-- | components/services/install/lib/eazel-install-protocols.c | 6 | ||||
-rw-r--r-- | components/services/install/lib/eazel-install-rpm-glue.c | 10 | ||||
-rw-r--r-- | components/services/install/lib/eazel-install-xml-package-list.c | 10 | ||||
-rw-r--r-- | nautilus-installer/src/installer.c | 12 | ||||
-rw-r--r-- | nautilus-installer/src/main.c | 2 |
10 files changed, 81 insertions, 34 deletions
@@ -1,3 +1,28 @@ +2000-08-07 Eskil Heyn Olsen <eskil@eazel.com> + + * components/services/install/command-line/eazel-alt-install-corba.c: + (set_parameters_from_command_line): + * components/services/install/idl/trilobite-eazel-install.idl: + * components/services/install/lib/eazel-install-corba-types.c: + (corba_category_list_from_categorydata_list): + * components/services/install/lib/eazel-install-corba.c: + (impl_Eazel_Install__set_package_list), + (impl_Eazel_Install__get_package_list), (eazel_install_get_epv): + * components/services/install/lib/eazel-install-protocols.c: + (filename_from_url): + * components/services/install/lib/eazel-install-rpm-glue.c: + (eazel_install_do_rpm_transaction_process_pipe), + (do_rpm_transaction): + The cli tool can now read from a local xml file and if the rpm's + are present (this depends on all fields in the xml being filled) + it will use those. + + * components/services/install/lib/eazel-install-xml-package-list.c: + (generate_xml_package_list): + * nautilus-installer/src/installer.c: (installer): + * nautilus-installer/src/main.c: + Some patches for reading local files (bug#2021) + 2000-08-07 set J Shane Culpepper <pepper@eazel.com> * components/services/inventory/Makefile.am: 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 39d940d50..83e285538 100644 --- a/components/services/install/command-line/eazel-alt-install-corba.c +++ b/components/services/install/command-line/eazel-alt-install-corba.c @@ -70,28 +70,30 @@ int arg_dry_run, arg_query; char *arg_server, *arg_config_file, + *arg_package_list, *arg_tmp_dir; CORBA_ORB orb; CORBA_Environment ev; static const struct poptOption options[] = { + {"config", '\0', POPT_ARG_STRING, &arg_config_file, 0, N_("Specify config file (/var/eazel/services/eazel-services-config.xml)"), NULL}, {"debug", '0', POPT_ARG_NONE, &arg_debug, 0 , N_("Show debug output"), NULL}, {"delay", '\0', POPT_ARG_NONE, &arg_delay, 0 , N_("10 sec delay after starting service"), NULL}, - {"port", '\0', POPT_ARG_INT, &arg_port, 0 , N_("Set port numer (80)"), NULL}, - {"test", 't', POPT_ARG_NONE, &arg_dry_run, 0, N_("Test run"), NULL}, + {"downgrade", 'd', POPT_ARG_NONE, &arg_downgrade, 0, N_("Allow downgrades"), NULL}, {"erase", 'e', POPT_ARG_NONE, &arg_erase, 0, N_("Erase packages"), NULL}, + {"file",'\0', POPT_ARG_NONE, &arg_file, 0, N_("RPM args are filename"), NULL}, {"force", 'F', POPT_ARG_NONE, &arg_force, 0, N_("Force install"), NULL}, - {"upgrade", 'u', POPT_ARG_NONE, &arg_upgrade, 0, N_("Allow upgrades"), NULL}, - {"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}, - {"file",'\0', POPT_ARG_NONE, &arg_file, 0, N_("RPM args are filename"), NULL}, - {"config", '\0', POPT_ARG_STRING, &arg_config_file, 0, N_("Specify config file (/var/eazel/services/eazel-services-config.xml)"), NULL}, + {"http", 'h', POPT_ARG_NONE, &arg_http, 0, N_("Use http"), NULL}, + {"packagefile", '\0', POPT_ARG_STRING, &arg_package_list, 0, N_("Specify package file"), NULL}, + {"port", '\0', POPT_ARG_INT, &arg_port, 0 , N_("Set port numer (80)"), NULL}, + {"query", 'q', POPT_ARG_NONE, &arg_query, 0, N_("Run Query"), NULL}, + {"server", '\0', POPT_ARG_STRING, &arg_server, 0, N_("Specify server"), NULL}, + {"test", 't', POPT_ARG_NONE, &arg_dry_run, 0, N_("Test run"), NULL}, + {"tmp", '\0', POPT_ARG_STRING, &arg_tmp_dir, 0, N_("Set tmp dir (/tmp/eazel-install)"), NULL}, + {"upgrade", 'u', POPT_ARG_NONE, &arg_upgrade, 0, N_("Allow upgrades"), NULL}, {NULL, '\0', 0, NULL, 0} }; @@ -150,6 +152,10 @@ set_parameters_from_command_line (Trilobite_Eazel_Install service) if (arg_force) { Trilobite_Eazel_Install__set_force (service, TRUE, &ev); } + if (arg_package_list) { + Trilobite_Eazel_Install__set_package_list (service, arg_package_list, &ev); + check_ev ("packagelist"); + } /* Trilobite_Eazel_Install__set_rpmrc_file (service, DEFAULT_RPMRC, &ev); diff --git a/components/services/install/idl/trilobite-eazel-install.idl b/components/services/install/idl/trilobite-eazel-install.idl index 66e07b188..dc54fcae3 100644 --- a/components/services/install/idl/trilobite-eazel-install.idl +++ b/components/services/install/idl/trilobite-eazel-install.idl @@ -131,6 +131,8 @@ module Trilobite { attribute boolean force; /* force install specified package (DANGER WILL ROBINSON) */ attribute boolean update; /* enable update (default is FALSE) */ attribute boolean downgrade; /* enable update (default is FALSE) */ + attribute string package_list; /* Local package list to use, rather then download + from server */ attribute string server; /* server to use for both file and package list download */ attribute long server_port; /* */ diff --git a/components/services/install/lib/eazel-install-corba-types.c b/components/services/install/lib/eazel-install-corba-types.c index c400c55ed..90b17ea0b 100644 --- a/components/services/install/lib/eazel-install-corba-types.c +++ b/components/services/install/lib/eazel-install-corba-types.c @@ -192,8 +192,6 @@ corba_category_list_from_categorydata_list (GList *categories) GList *iterator; int i; - g_return_val_if_fail (categories != NULL, NULL); - corbacats = Trilobite_Eazel_CategoryStructList__alloc (); corbacats->_length = g_list_length (categories); corbacats->_buffer = CORBA_sequence_Trilobite_Eazel_CategoryStruct_allocbuf (corbacats->_length); diff --git a/components/services/install/lib/eazel-install-corba.c b/components/services/install/lib/eazel-install-corba.c index 02f761e0c..e39a93a2f 100644 --- a/components/services/install/lib/eazel-install-corba.c +++ b/components/services/install/lib/eazel-install-corba.c @@ -287,6 +287,23 @@ impl_Eazel_Install__get_log_file (impl_POA_Trilobite_Eazel_Install *servant, } static void +impl_Eazel_Install__set_package_list (impl_POA_Trilobite_Eazel_Install *servant, + const CORBA_char *value, + CORBA_Environment *ev) +{ + eazel_install_set_package_list (servant->object, value); +} + + +static CORBA_char* +impl_Eazel_Install__get_package_list (impl_POA_Trilobite_Eazel_Install *servant, + const CORBA_char *value, + CORBA_Environment *ev) +{ + return eazel_install_get_package_list (servant->object); +} + +static void impl_Eazel_Install__set_protocol (impl_POA_Trilobite_Eazel_Install *servant, const Trilobite_Eazel_ProtocolEnum value, CORBA_Environment *ev) @@ -381,6 +398,9 @@ eazel_install_get_epv () epv->_set_log_file = (gpointer)&impl_Eazel_Install__set_log_file; epv->_get_log_file = (gpointer)&impl_Eazel_Install__get_log_file; + epv->_set_package_list = (gpointer)&impl_Eazel_Install__set_package_list; + epv->_get_package_list = (gpointer)&impl_Eazel_Install__get_package_list; + epv->_set_tmp_dir = (gpointer)&impl_Eazel_Install__set_tmp_dir; epv->_get_tmp_dir = (gpointer)&impl_Eazel_Install__get_tmp_dir; diff --git a/components/services/install/lib/eazel-install-protocols.c b/components/services/install/lib/eazel-install-protocols.c index e4a69083d..c1472545e 100644 --- a/components/services/install/lib/eazel-install-protocols.c +++ b/components/services/install/lib/eazel-install-protocols.c @@ -232,7 +232,11 @@ filename_from_url (char *url) while ((ptr != url) && (*ptr != '/')) { ptr--; } - filename = g_strdup (ptr + 1); + if (ptr == url) { + filename = g_strdup (ptr); + } else { + filename = g_strdup (ptr + 1); + } return filename; } diff --git a/components/services/install/lib/eazel-install-rpm-glue.c b/components/services/install/lib/eazel-install-rpm-glue.c index c2c8b0663..57569b1f7 100644 --- a/components/services/install/lib/eazel-install-rpm-glue.c +++ b/components/services/install/lib/eazel-install-rpm-glue.c @@ -551,6 +551,7 @@ eazel_install_do_rpm_transaction_process_pipe (EazelInstall *service, /* while something there... */ while (!feof (pipe)) { + fflush (pipe); fgets (tmp, 1023, pipe); if (feof (pipe)) { break; @@ -614,11 +615,7 @@ 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); @@ -752,6 +749,7 @@ do_rpm_transaction (EazelInstall *service, char **argv; int i; int flags; + int useless_stderr; GList *iterator; /* Create argv list */ @@ -769,7 +767,7 @@ do_rpm_transaction (EazelInstall *service, res = service->private->packsys.rpm.num_packages; } /* start /bin/rpm... */ - if (res==0 && trilobite_pexec ("/bin/rpm", argv, NULL, &fd, NULL)!=0) { + if (res==0 && trilobite_pexec ("/bin/rpm", argv, NULL, &fd, &useless_stderr)!=0) { g_warning ("Could not start rpm"); res = service->private->packsys.rpm.num_packages; } else { 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 45c37bc6b..fbaeba333 100644 --- a/components/services/install/lib/eazel-install-xml-package-list.c +++ b/components/services/install/lib/eazel-install-xml-package-list.c @@ -277,7 +277,7 @@ generate_xml_package_list (const char* pkg_template_file, char** entry_array; char** package_array; char *tags[] = {"NAME", "VERSION", "MINOR", "ARCH", "BYTESIZE", "SUMMARY", NULL}; - int num_tags = 6; + int num_tags = 5; int lines; doc = xmlNewDoc ("1.0"); @@ -313,11 +313,11 @@ generate_xml_package_list (const char* pkg_template_file, 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]); + for (i = 0; i <= num_tags; i++) { + if (package_array[i+1]) { + data = xmlNewChild (package, NULL, tags[i], package_array[i+1]); } else { - g_error ("line %d, tag %d (%s) is missing", index+1, i+1, tags[i]); + g_warning ("line %d, tag %d (%s) is missing", index+1, i+1, tags[i]); } } g_strfreev (package_array); diff --git a/nautilus-installer/src/installer.c b/nautilus-installer/src/installer.c index 9aecbc55a..81ab3f04f 100644 --- a/nautilus-installer/src/installer.c +++ b/nautilus-installer/src/installer.c @@ -20,7 +20,6 @@ #define HOSTNAME "testmachine.eazel.com" #define PORT_NUMBER 80 -#define PROTOCOL PROTOCOL_HTTP #define TMP_DIR "/tmp/eazel-install" #define RPMRC "/usr/lib/rpm/rpmrc" #define REMOTE_RPM_DIR "/RPMS" @@ -36,7 +35,7 @@ static char *package_list[LAST] = { char *failure_info; int installer_debug; int installer_test; - +int installer_local; static void eazel_install_progress (EazelInstall *service, @@ -337,7 +336,7 @@ void installer (GtkWidget *window, "update", TRUE, "uninstall", method==UNINSTALL ? TRUE : FALSE, "downgrade", TRUE, - "protocol", PROTOCOL, + "protocol", installer_local ? PROTOCOL_LOCAL: PROTOCOL_HTTP, "tmp_dir", TMP_DIR, "rpmrc_file", RPMRC, "server", HOSTNAME, @@ -347,13 +346,6 @@ void installer (GtkWidget *window, NULL)); g_assert (service != NULL); - eazel_install_set_server (service, HOSTNAME); - eazel_install_set_rpmrc_file (service, RPMRC); - eazel_install_set_package_list_storage_path (service, "/package-list.xml"); - eazel_install_set_rpm_storage_path (service, REMOTE_RPM_DIR); - eazel_install_set_tmp_dir (service, TMP_DIR); - eazel_install_set_server_port (service, PORT_NUMBER); - eazel_install_set_protocol (service, PROTOCOL); if (!installer_debug) { eazel_install_open_log (service, "/tmp/nautilus-install.log"); } diff --git a/nautilus-installer/src/main.c b/nautilus-installer/src/main.c index d3f3a9624..5d1247de6 100644 --- a/nautilus-installer/src/main.c +++ b/nautilus-installer/src/main.c @@ -16,10 +16,12 @@ extern int installer_debug; extern int installer_test; +extern int installer_local; static const struct poptOption options[] = { {"debug", 'd', POPT_ARG_NONE, &installer_debug, 0 , N_("Show debug output"), NULL}, {"test", 't', POPT_ARG_NONE, &installer_test, 0, N_("Test run"), NULL}, + {"local", 'l', POPT_ARG_NONE, &installer_local, 0, N_("Read local rpm's."), NULL}, {NULL, '\0', 0, NULL, 0} }; |