Changeset 1ba44be


Ignore:
Timestamp:
12/17/13 06:26:27 (7 months ago)
Author:
Kris Moore <kris@…>
Branches:
9.2-release
Children:
876ed39
Parents:
200d959
Message:

Backport some fixes to the package manager GUI to 9.2

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src-qt4/pc-pkgmanager/mainWin.cpp

    ra6c8b4a r1ba44be  
    226226     QCoreApplication::processEvents(); 
    227227 
     228  if ( p.exitCode() != 0 ) 
     229    QMessageBox::warning(this, tr("Package Check"), tr("Unable to check for package updates!")); 
     230 
    228231  while (p.canReadLine()) { 
    229232    line = p.readLine().simplified(); 
     
    353356 
    354357  qDebug() << cmd + " " + flags.join(" "); 
    355    
     358 
     359  system("rm /tmp/pkg-fifo 2>/dev/null"); 
     360 
     361  // Create the EVENT_PIPE 
     362  if ( wDir.isEmpty() ) 
     363    system("mkfifo /tmp/pkg-fifo ; sleep 1"); 
     364  else 
     365    system("mkfifo " + wDir.toLatin1() + "/tmp/pkg-fifo ; sleep 1"); 
     366 
     367  // Open and connect the EVENT_PIPE 
     368  eP = new QProcess(); 
     369  eP->setProcessChannelMode(QProcess::MergedChannels); 
     370  connect( eP, SIGNAL(readyRead()), this, SLOT(slotReadEventPipe()) ); 
     371  connect( eP, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(slotReadEventPipe()) ); 
     372  eP->start(QString("cat"), QStringList() << "-u" << wDir + "/tmp/pkg-fifo"); 
     373  qDebug() << "Starting EVENT_PIPE"; 
     374  eP->waitForStarted(); 
     375 
    356376  // Setup the first process 
    357377  uProc = new QProcess(); 
    358378  QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); 
    359379  env.insert("PCFETCHGUI", "YES"); 
     380  env.insert("EVENT_PIPE", "/tmp/pkg-fifo"); 
    360381  uProc->setProcessEnvironment(env); 
    361382  uProc->setProcessChannelMode(QProcess::MergedChannels); 
     
    528549    pkgHasFailed=true; 
    529550 
     551  // Close the event pipe 
     552  eP->kill(); 
     553  qDebug() << "Stopping EVENT_PIPE"; 
     554  system("rm " + wDir.toLatin1() + "/tmp/pkg-fifo"); 
     555 
    530556  // Run the next command on the stack if necessary 
    531557  if (  pkgCmdList.size() > 1 ) { 
     
    924950  pCmds.clear(); 
    925951 
     952  // Adding packages 
    926953  if ( ! pkgAddList.isEmpty() ) { 
     954 
     955    // Look for conflicts first 
     956    if ( wDir.isEmpty() ) 
     957      pCmds << "pc-pkg" << "check-conflict" << pkgAddList.join(" "); 
     958    else 
     959      pCmds << "chroot" << wDir << "pc-pkg" << "check-conflict" << pkgAddList.join(" "); 
     960    pkgCmdList << pCmds; 
     961    pCmds.clear(); 
     962 
     963    // Now spin up the install process 
    927964    if ( wDir.isEmpty() ) 
    928965      pCmds << "pc-pkg" << "install" << "-y" << pkgAddList.join(" "); 
    929966    else 
    930967      pCmds << "chroot" << wDir << "pc-pkg" << "install" << "-y" << pkgAddList.join(" "); 
     968 
    931969    pkgCmdList << pCmds; 
    932970  } 
     
    12021240            // See if any packages status have changed 
    12031241            if ( ( (*it)->text(0) == metaPkgList.at(z).at(0) && metaPkgList.at(z).at(5) == "NO" && (*it)->checkState(0) == Qt::Checked ) || \ 
    1204                  ( (*it)->text(0) == metaPkgList.at(z).at(0) && metaPkgList.at(z).at(5) == "NO" && (*it)->checkState(0) == Qt::PartiallyChecked ) ) 
    1205                 if ( tmp.isEmpty() ) 
     1242                 ( (*it)->text(0) == metaPkgList.at(z).at(0) && metaPkgList.at(z).at(5) == "NO" && (*it)->checkState(0) == Qt::PartiallyChecked ) ){ 
     1243                if ( tmp.isEmpty() ){ 
    12061244                        tmp = (*it)->text(0); 
    1207                 else 
     1245                }else{ 
    12081246                        tmp = tmp + "," + (*it)->text(0); 
     1247                } 
     1248            } 
    12091249         ++it; 
    12101250        } 
     
    12201260          for (int z=0; z < metaPkgList.count(); ++z) 
    12211261            // See if any packages status have changed 
    1222             if ( (*it)->text(0) == metaPkgList.at(z).at(0) && metaPkgList.at(z).at(5) == "YES" && (*it)->checkState(0) == Qt::Unchecked ) 
    1223                 if ( tmp.isEmpty() ) 
     1262            if ( (*it)->text(0) == metaPkgList.at(z).at(0) && metaPkgList.at(z).at(5) == "YES" && (*it)->checkState(0) == Qt::Unchecked ) { 
     1263                if ( tmp.isEmpty() ){ 
    12241264                        tmp = (*it)->text(0); 
    1225                 else 
     1265                }else{ 
    12261266                        tmp = tmp + "," + (*it)->text(0); 
     1267                } 
     1268            } 
    12271269         ++it; 
    12281270        } 
     
    12481290 
    12491291        if (aItem->childCount() == 0) { 
    1250                 if (aItem->checkState(0) == Qt::Checked && aItem->parent() ) 
    1251                         if ( allChildrenPkgsChecked(aItem->parent()->text(0))) 
     1292                if (aItem->checkState(0) == Qt::Checked && aItem->parent() ){ 
     1293                        if ( allChildrenPkgsChecked(aItem->parent()->text(0))){ 
    12521294                                aItem->parent()->setCheckState(0, Qt::Checked);  
    1253                         else 
     1295                        }else{ 
    12541296                                aItem->parent()->setCheckState(0, Qt::PartiallyChecked);         
    1255                 if (aItem->checkState(0) == Qt::Unchecked && aItem->parent() ) 
     1297                        } 
     1298                } 
     1299                if (aItem->checkState(0) == Qt::Unchecked && aItem->parent() ){ 
    12561300                        if ( ! allChildrenPkgsUnchecked(aItem->parent()->text(0))) 
    12571301                                aItem->parent()->setCheckState(0, Qt::PartiallyChecked);         
    1258  
     1302                } 
    12591303 
    12601304        } else { 
    1261                 if (aItem->checkState(0) == Qt::Checked ) 
     1305                if (aItem->checkState(0) == Qt::Checked ){ 
    12621306                        checkAllChildrenPkgs(aItem->text(0)); 
    1263                 else 
     1307                }else{ 
    12641308                        uncheckAllChildrenPkgs(aItem->text(0)); 
     1309                } 
    12651310        } 
    12661311         
     
    14681513} 
    14691514 
     1515 
     1516void mainWin::slotReadEventPipe() 
     1517{ 
     1518   QString line, tmp, file, dl, tot; 
     1519   bool ok, ok2; 
     1520 
     1521   while (eP->canReadLine()) { 
     1522     line = eP->readLine().simplified(); 
     1523     //qDebug() << line; 
     1524 
     1525     // KPM!! 
     1526     // TODO 12-12-2013 
     1527     // No JSON in Qt4, once we move to Qt5, replace this hack 
     1528     // with the new JSON parser 
     1529 
     1530     // Look for any "msg" lines 
     1531     if ( line.indexOf("\"msg") != -1 ) { 
     1532          line.remove(0, line.indexOf("\"msg") + 8); 
     1533          line.truncate(line.lastIndexOf("\"")); 
     1534          qDebug() << line; 
     1535          textStatus->setText(line); 
     1536          continue; 
     1537     } 
     1538 
     1539     // Look for a download status update 
     1540     if ( line.indexOf("\"INFO_FETCH") != -1 && line.indexOf("\"url\"") != -1 ) { 
     1541          line.remove(0, line.indexOf("\"url") + 8); 
     1542          line.truncate(line.lastIndexOf("}")); 
     1543 
     1544          // Get the file basename 
     1545          file = line; 
     1546          file.truncate(line.indexOf("\"")); 
     1547          QFileInfo tFile; 
     1548          tFile.setFile(file); 
     1549          file = tFile.baseName(); 
     1550 
     1551          // Get the download / total 
     1552          dl = line.section(":", 2, 2).section(",", 0, 0); 
     1553          tot = line.section(":", 3, 3).section("}", 0, 0); 
     1554          dl = dl.simplified(); 
     1555          tot = tot.simplified(); 
     1556 
     1557          dl.toLongLong(&ok); 
     1558          tot.toLongLong(&ok2); 
     1559          if ( ok && ok2) { 
     1560            progressUpdate->setRange(0, tot.toLongLong(&ok) / 1024); 
     1561            progressUpdate->setValue(dl.toLongLong(&ok) / 1024 ); 
     1562          } 
     1563 
     1564          // Set the status update 
     1565          textStatus->setText(tr("Downloading") + " " + file + " (" + dl + " / " + tot + ")" ); 
     1566     } 
     1567 
     1568   } // End of while canReadLine() 
     1569 
     1570} 
  • src-qt4/pc-pkgmanager/mainWin.h

    r426313b r1ba44be  
    7878    void slotNGReadInfo(); 
    7979 
     80    void slotReadEventPipe(); 
     81 
    8082private: 
    8183    // Generic pkg process handlers 
     
    156158    QActionGroup *viewGroup; 
    157159 
     160    // Event pipe process 
     161    QProcess *eP; 
     162 
    158163signals: 
    159164 
  • src-sh/pc-metapkgmanager/pc-metapkgmanager

    rc8fc43e r1ba44be  
    8181        fi 
    8282 
     83        # Don't need this anymore 
     84        unset EVENT_PIPE 
     85 
    8386        # Time to run pkgng and let it install packages! 
    8487        pkg install -yUf "$pkgName" 
     
    279282} 
    280283 
     284do_pkg_conflicts() 
     285{ 
     286   fullopts="`echo $@ | sed 's|check-conflict||g'`" 
     287 
     288   echo "install -FUy $fullopts" > /tmp/err 
     289   # Lets check for any conflicts doing this install 
     290   check_pkg_conflicts "install -FUy $fullopts" 
     291   exit $? 
     292} 
     293 
    281294intercept_pkg_dl() 
    282295{ 
    283    local count=0; 
    284    fullopts="$@" 
    285    op="$1" 
    286     
    287    # Make sure we insert some flags we need 
    288    while [ $# -gt 0 ]; do 
    289      if [ $count -gt 0 ] ; then 
    290         # If we are already using -n, we can skip downloading anything 
    291         if [ "$1" = "-n" ] ; then 
    292            pkg $fullopts 
    293            exit $? 
    294         fi 
    295         flags="$flags $1" 
    296      else 
    297         flags="-U -n" 
    298      fi 
    299      count=`expr $count + 1` 
    300      shift 
    301    done 
    302  
    303    # Lets check for any conflicts doing this install 
    304    check_pkg_conflicts "${op} -FUy $flags" 
    305    if [ $? -ne 0 ] ; then 
    306         exit 1 
    307    fi 
    308  
    309296   # Time to run pkgng and let it do its thing 
    310    pkg $fullopts  
     297   pkg $@ 
    311298   result=$? 
    312299 
     
    347334{ 
    348335   case $1 in 
    349  install|upgrade) intercept_pkg_dl ${@} ;; 
     336         install) intercept_pkg_dl ${@} ;; 
     337  check-conflict) do_pkg_conflicts ${@} ;; 
    350338         getfile) get_file_dl ${@} ;; 
    351339               *) pkg ${@}  
Note: See TracChangeset for help on using the changeset viewer.