Changeset 2851 for soft


Ignore:
Timestamp:
Jul 21, 2010, 3:42:50 PM (10 years ago)
Author:
tiago.marques
Message:

Applied patch urpmi-to-cm-install

Location:
soft/cm-install/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • soft/cm-install/trunk/cm-install-script

    r2840 r2851  
    2525#   da linha. Temos pena. Mas não muita.
    2626#
    27 
    2827export LANG="en"
    2928export LANGUAGE="en"
     
    3837    SIMULATE_ONLY="no"
    3938
    40 ################################################################################
    41 #
    42 #   TODO
    43 #       * usar uma pasta independente para cache das listagens de pacotes
    44 #           => ATENÇÃO: Isto pode interferir com o rollback
    45 #       * sanear nomes de pacotes
    46 #
    47 
    48 ##
    49 #   Processamento de argumentos da linha de comandos
    50 #
    51 [ "${DEBUG}" != "no" ] &&
    52     echo " * $0 chamado com os argumentos '$@'"                 >&2
    53 
    54 if [ ! "$#" -gt 0 ]
    55 then
    56     echo "Nenhum ficheiro fornecido na linha de comandos."      >&2
    57     exit 1
    58 fi
    59 
    60 for file in "$@"
    61 do
    62     if [ ! -e "$file" -o ! -r "$file" ]
    63     then
    64         echo "Não foi possível ler o ficheiro '${file}'."       >&2
    65         exit 1
    66     fi
    67 done
     39function trata_ponto_cm {
    6840
    6941##
     
    12799    echo "Não há pacotes para instalar."
    128100else
    129     apt-get update                                                              \
    130         -o "Dir::State=${APT_DIR_STATE}"                                        \
    131         -o "Dir::Etc::sourcelist=${SOURCES_LIST}"                               \
    132         -o "Dir::Etc::sourceparts=${SOURCES_LIST_D}"            2>&1
    133 
    134     if [ "$?" != "0" ]
     101    GREP_SOURCE=`grep "cdrom" "${SOURCES_LIST}"`
     102    if [ ! -z "${GREP_SOURCE}" ]
    135103    then
    136         echo "Não foi possível actualizar a lista de pacotes dos repositórios"  \
     104            umount /dev/sr0
     105            mount /dev/sr0 /media/cdrom
     106            if [ "$?" != "0" ]
     107            then
     108                echo " Não existe nenhum dvd inserido na drive..."  \
     109                                                                    2>&1
     110                exit 1
     111            fi
     112            apt-cdrom -a -m add
     113            if [ "$?" != "0" ]
     114            then
     115                echo "Não foi possível adicionar o dvd aos repositórios"  \
     116                                                                    2>&1
     117                exit 2
     118            fi
     119            apt-get update -o "Dir::Etc::sourcelist=${SOURCES_LIST}"
     120            if [ "$?" != "0" ]
     121            then
     122                echo "Não foi possível actualizar a lista de pacotes dos repositórios"  \
     123                                                                    >&2
     124                exit 3
     125            fi
     126            apt-get install --assume-yes -o "Dir::Etc::sourcelist=${SOURCES_LIST}" ${PACKAGE_NAMES}
     127            if [ "$?" != "0" ]
     128            then
     129                echo "Ocorreram erros durante a instalação de pacotes"  >&2
     130                exit 4
     131            fi
     132    else
     133        apt-get update                                                              \
     134            -o "Dir::State=${APT_DIR_STATE}"                                        \
     135            -o "Dir::Etc::sourcelist=${SOURCES_LIST}"                               \
     136            -o "Dir::Etc::sourceparts=${SOURCES_LIST_D}"            2>&1
     137   
     138        if [ "$?" != "0" ]
     139        then
     140            echo "Não foi possível actualizar a lista de pacotes dos repositórios"  \
    137141                                                                >&2
    138         exit 3
     142            exit 3
     143        fi
     144
     145        apt-get install --assume-yes ${SIMULATE}                                    \
     146            -o "Dir::State=${APT_DIR_STATE}"                                        \
     147            -o "Dir::Etc::sourcelist=${SOURCES_LIST}"                               \
     148            -o "Dir::Etc::sourceparts=${SOURCES_LIST_D}"                            \
     149            ${PACKAGE_NAMES}                                        2>&1
     150
     151        if [ "$?" != "0" ]
     152        then
     153            echo "Ocorreram erros durante a instalação de pacotes"  >&2
     154            exit 4
     155        fi
    139156    fi
    140157
    141     apt-get install --assume-yes ${SIMULATE}                                    \
    142         -o "Dir::State=${APT_DIR_STATE}"                                        \
    143         -o "Dir::Etc::sourcelist=${SOURCES_LIST}"                               \
    144         -o "Dir::Etc::sourceparts=${SOURCES_LIST_D}"                            \
    145         ${PACKAGE_NAMES}                                        2>&1
    146 
    147     if [ "$?" != "0" ]
     158fi
     159}
     160
     161function trata_pacote {
     162apt-get update                                                   2>&1
     163if [ "$?" != "0" ]
     164then
     165    echo "Não foi possível actualizar a lista de pacotes dos repositórios"  \
     166                                                                >&2
     167    exit 3
     168fi
     169
     170apt-get install --assume-yes $@                                  2>&1
     171
     172if [ "$?" != "0" ]
     173then
     174    echo "Ocorreram erros durante a instalação de pacotes"  >&2
     175    exit 4
     176fi
     177
     178}
     179################################################################################
     180#
     181#   TODO
     182#       * usar uma pasta independente para cache das listagens de pacotes
     183#           => ATENÇÃO: Isto pode interferir com o rollback
     184#       * sanear nomes de pacotes
     185#
     186
     187##
     188#   Processamento de argumentos da linha de comandos
     189#
     190[ "${DEBUG}" != "no" ] &&
     191    echo " * $0 chamado com os argumentos '$@'"                 >&2
     192
     193if [ ! "$#" -gt 0 ]
     194then
     195    echo "Nenhum ficheiro fornecido na linha de comandos."      >&2
     196    exit 1
     197fi
     198
     199
     200#for file in "$@"
     201#do
     202        if [ `expr "$1" : '.*\(.cm\)'` ]
    148203    then
    149         echo "Ocorreram erros durante a instalação de pacotes"  >&2
    150         exit 4
     204            trata_ponto_cm $1
     205    else
     206            #neste caso os repositorios vao ser tratados pela aplicação que chamar o cm-install.
     207            trata_pacote $@
     208
    151209    fi
    152 
    153 fi
    154 
     210#done
  • soft/cm-install/trunk/cm-install.c

    r2840 r2851  
    3838#include <ctype.h>
    3939#include <fcntl.h>
     40#include <stdio.h>
     41#include <stdlib.h>
     42
     43#define MAX_FILENAME 30
    4044
    4145GtkWidget *mainwindow;
     
    6872
    6973int percentagem_progresso;
     74int state=0;
    7075
    7176gdouble avanco_pacote;
     
    8994gchar *pacote = NULL;
    9095
    91 char *pacote_a_instalar;
     96gchar * pacote_a_instalar = NULL;
    9297
    9398enum estados_parsing
     
    484489            enviaMensagemAviso
    485490                ("Ocorreu um erro durante a instalação.\nA instalação foi abortada");
     491            state=1;
    486492        }
    487493        else
     
    531537}
    532538
     539void retError()
     540{
     541        gtk_main_quit();
     542        exit(1);
     543}
     544
     545void retError2()
     546{
     547        gtk_main_quit();
     548        if (state != 0){
     549        exit(1);}
     550}
     551
    533552int main(int argc, char *argv[])
    534553{
    535554    gtk_init(&argc, &argv);
    536555
    537     if (argc != 2)
    538     {
    539         enviaMensagemErro("Não foi possível abrir o ficheiro");
    540         return 1;
     556   if (argc < 2)
     557   {
     558           enviaMensagemErro("Não foi possível abrir o ficheiro");
     559           return 1;
     560   }
     561
     562   int aux = argc - 1;
     563   int ij = 0;
     564   int pos = 0;
     565   pacote_a_instalar = "";
     566   for(ij = 1; ij <= aux; ij++){
     567            gchar * text = malloc(sizeof(gchar) * (strlen(argv[ij]) + 1));
     568            strncpy(text, argv[ij], strlen(argv[ij])+1);
     569            pacote_a_instalar = g_strconcat(pacote_a_instalar, text, NULL);
     570            if (aux > 1 && ij != aux){
     571                    pacote_a_instalar = g_strconcat(pacote_a_instalar, " ", NULL);
     572            }
    541573    }
    542     pacote_a_instalar = argv[1];
    543574
    544575    mainwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
     
    642673    gtk_box_pack_start(GTK_BOX(vbox), button_box, FALSE, FALSE, 0);
    643674
    644     g_signal_connect(botao_fechar, "clicked", gtk_main_quit, NULL);
     675    //if (state == 0) {g_signal_connect(botao_fechar, "clicked", gtk_main_quit, NULL);}
     676    g_signal_connect(botao_fechar, "clicked", G_CALLBACK(retError2), NULL);
    645677
    646678    g_signal_connect(mainwindow, "delete-event", gtk_main_quit, NULL);
     
    732764
    733765    GIOStatus status_rpm_repositorios = G_IO_STATUS_NORMAL;
    734     GIOChannel *channel_repositorios =
    735         g_io_channel_new_file(pacote_a_instalar, "r", NULL);
     766    GIOChannel *channel_repositorios = NULL;
     767    if (g_str_has_suffix(pacote_a_instalar,".cm")){
     768        channel_repositorios = g_io_channel_new_file(pacote_a_instalar, "r", NULL);
     769    } else {
     770        pacote = g_string_new("");
     771        pacote = pacote_a_instalar;
     772        //pacote = g_strconcat(pacote, pacote_a_instalar, NULL);
     773        channel_repositorios = g_io_channel_new_file("/etc/apt/sources.list", "r", NULL);
     774    }
    736775
    737776    if (!channel_repositorios)
     
    753792        {
    754793            /* if (g_strrstr(linha_rpm_repositorios, "rpm")) */
    755             if (g_strrstr(linha_rpm_repositorios, "urpm"))
     794            if (g_strrstr(linha_rpm_repositorios, "urpm") && !g_strrstr(linha_rpm_repositorios, "#"))
    756795            {
    757796                gchar *conteudo_old_school;
     
    783822                }
    784823
    785                 pacote = g_strdup(linha_rpm_repositorios);
     824                if (g_str_has_suffix(pacote_a_instalar,".cm")){
     825                        pacote = g_strdup(linha_rpm_repositorios);
     826                }
    786827                gchar *string_da_label =
    787828                    g_strconcat("O pacote " "", pacote, NULL);
     
    795836    }
    796837
    797     g_signal_connect(botao_cancelar, "clicked", gtk_main_quit, NULL);
     838    g_signal_connect(botao_cancelar, "clicked", G_CALLBACK(retError), NULL);
    798839
    799840    g_signal_connect(botao_confirmar, "clicked", G_CALLBACK(iniciaProgresso),
  • soft/cm-install/trunk/configure.ac

    r2840 r2851  
    11AC_PREREQ(2.63)
    2 AC_INIT([cm-install],[0.5.0],[luis.medinas@caixamagica.pt])
     2AC_INIT([cm-install],[0.5.0],[tiago.marques@caixamagica.pt])
    33AC_CONFIG_MACRO_DIR([m4])
    44
Note: See TracChangeset for help on using the changeset viewer.