app-manager/setup.c
author J. Ali Harlow <ali@juiblex.co.uk>
Tue Jul 14 13:17:21 2020 +0100 (2020-07-14)
changeset 95 212150407fcc
parent 24 2b9f54d14cc2
child 98 71127797ca73
permissions -rw-r--r--
Add support to pre-inst for %REPOSITORY%
     1 /*
     2  * Copyright (C) 2014, 2016  J. Ali Harlow <ali@juiblex.co.uk>
     3  *
     4  * This program is free software; you can redistribute it and/or modify
     5  * it under the terms of the GNU General Public License as published by
     6  * the Free Software Foundation; either version 2 of the License, or
     7  * (at your option) any later version.
     8  *
     9  * This program is distributed in the hope that it will be useful,
    10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    12  * GNU General Public License for more details.
    13  *
    14  * You should have received a copy of the GNU General Public License along
    15  * with this program; if not, write to the Free Software Foundation, Inc.,
    16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
    17  */
    18 
    19 #include "config.h"
    20 #include <stdlib.h>
    21 #include <string.h>
    22 #include <errno.h>
    23 #include <glib.h>
    24 #include <gio/gio.h>
    25 #include <gtk/gtk.h>
    26 #include <plover/plover.h>
    27 #include <plover/transaction.h>
    28 #include <plover/packageset.h>
    29 #include <plover-gtk/transactionhelper.h>
    30 #include "app-manager.h"
    31 
    32 gboolean setup(const char *base)
    33 {
    34     gchar *s;
    35     const char *prefix;
    36     GError *error=NULL;
    37     static PloverTransactionHelper *helper=NULL;
    38     if (!helper)
    39     {
    40 	helper=plover_transaction_helper_new(ui);
    41 	plover_transaction_helper_set_base(helper,base);
    42 	prefix=plover_transaction_helper_get_prefix(helper,&error);
    43 	if (error)
    44 	    g_clear_error(&error);
    45 	else
    46 	{
    47 	    s=g_strconcat(prefix?prefix:"","/var/log/setup",NULL);
    48 	    plover_log_open(s);
    49 	    g_free(s);
    50 	}
    51 	plover_transaction_helper_set_check_vendor(helper,TRUE);
    52 	g_signal_connect(helper,"close",G_CALLBACK(gtk_main_quit),NULL);
    53     }
    54     if (!plover_transaction_helper_get_visible(helper))
    55     {
    56 	if (!plover_transaction_helper_install_group(helper,"base",&error))
    57 	{
    58 	    if (g_error_matches(error,PLOVER_GENERAL_ERROR,
    59 	      PLOVER_GENERAL_ERROR_NO_WORK))
    60 	    {
    61 		g_error_free(error);
    62 		error=g_error_new_literal(PLOVER_GENERAL_ERROR,
    63 		  PLOVER_GENERAL_ERROR_NO_WORK,
    64 		  "All packages already installed");
    65 		plover_transaction_helper_set_error(helper,error,
    66 		  "Software installation");
    67 	    }
    68 	    else if (g_error_matches(error,PLOVER_GENERAL_ERROR,
    69 	      PLOVER_GENERAL_ERROR_REQUIREMENTS_NOT_MET))
    70 	    {
    71 		g_error_free(error);
    72 		error=g_error_new_literal(PLOVER_GENERAL_ERROR,
    73 		  PLOVER_GENERAL_ERROR_REQUIREMENTS_NOT_MET,
    74 		  "Software cannot be installed because of missing updates. "
    75 		  "Installing all updates first should resolve this problem");
    76 		plover_transaction_helper_set_error(helper,error,
    77 		  "Software installation failed");
    78 	    }
    79 	    else
    80 		plover_transaction_helper_set_error(helper,error,
    81 		  "Software installation failed");
    82 	    g_error_free(error);
    83 	}
    84     }
    85     plover_transaction_helper_present(helper);
    86     return TRUE;
    87 }