Changeset f5897a1


Ignore:
Timestamp:
12/09/13 13:35:22 (10 months ago)
Author:
Kris Moore <kris@…>
Branches:
master, releng/10.0, releng/10.0.1, releng/10.0.2, releng/10.0.3
Children:
d04f1ac8
Parents:
cd20ca3 (diff), 229435e (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of github.com:pcbsd/pcbsd

Files:
3 edited
1 moved

Legend:

Unmodified
Added
Removed
  • src-qt4/EasyPBI-devel/PBIModule.cpp

    r3038c71 rd236dbd  
    1414  scriptValues << "pre-pbicreate.sh" << "pre-install.sh" << "post-install.sh" << "pre-remove.sh"; 
    1515  //valid XDG values 
    16   xdgValues << 
     16  xdgTextValues << "Value" << "Type" << "Name" << "GenericName" << "Exec" << "Path" << "Icon" << "Categories" << "MimeType"; 
     17  xdgBoolValues << "StartupNotify" << "Terminal" << "NoDisplay"; 
    1718  //valid MIME values 
    18   mimeValues <<  
     19  mimeValues << "xmlns" << "type" << "pattern"; 
    1920         
    2021  HASH.clear(); //Make sure the hash is currently empty 
     
    256257//           XDG 
    257258// ============= 
    258  
     259QStringList PBIModule::validXdgText(){ 
     260  return xdgTextValues; 
     261} 
     262 
     263QString PBIModule::xdgText(QString var){ 
     264  QString out; 
     265  if(xdgTextValues.contains(var) && HASH.contains("XDG_"+var){ 
     266    out = HASH["XDG_"+var].toString(); 
     267  } 
     268  return out; 
     269} 
     270 
     271QStringList PBIModule::xdgTextL(QStringList vars){ 
     272  QStringList out; 
     273  for(int i=0; i<vars.length(); i++){ 
     274    out << xdgText(vars[i]); 
     275  } 
     276  return out; 
     277} 
     278 
     279void PBIModule::setXdgText(QString var, QString val){ 
     280  if(xdgTextValues.contains(var)){ 
     281    HASH.insert("XDG_"+var, val); 
     282  } 
     283} 
     284 
     285void PBIModule::setXdgTextL(QStringList vars, QStringList vals){ 
     286  if(vars.length() != vals.length()){  
     287    qDebug() << "Error: XDG text inputs are unequal lengths:" << vars << vals; 
     288    return;  
     289  } 
     290  for(int i=0; i<vars.length(); i++){ 
     291    setXdgText(vars[i], vals[i]); 
     292  } 
     293} 
     294 
     295         
     296QStringList PBIModule::validXdgEnables(){ 
     297  return xdgBoolValues; 
     298} 
     299 
     300void PBIModule::xdgEnabled(QString var){ 
     301  bool out = false; 
     302  if(xdgBoolValues.contains(var) && HASH.contains("XDG_"+var)){ 
     303    out = HASH["XDG_"+var].toBool(); 
     304  } 
     305  return out; 
     306} 
     307 
     308void PBIModule::setXdgEnabled(QString var, bool val){ 
     309  if(xdgBoolValues.contains(var) ){ 
     310    HASH.insert("XDG_"+var, val); 
     311  } 
     312} 
     313 
     314         
     315QStringList PBIModule::listXdgDesktopFiles(){ 
     316  QStringList out; 
     317  QDir dir(basePath+"/xdg-desktop"); 
     318  if(dir.exists()){ 
     319    out = dir.entryList(QStringList() << "*.desktop", QDir::Files | QDir::NoDotAndDotDot, QDir::Name); 
     320  } 
     321  return out; 
     322} 
     323 
     324QStringList PBIModule::listXdgMenuFiles(){ 
     325  QStringList out; 
     326  QDir dir(basePath+"/xdg-desktop"); 
     327  if(dir.exists()){ 
     328    out = dir.entryList(QStringList() << "*.desktop", QDir::Files | QDir::NoDotAndDotDot, QDir::Name); 
     329  } 
     330  return out;    
     331} 
     332 
     333bool PBIModule::saveXdgDesktop(QString fileName){ 
     334  if(fileName.isEmpty()){ return false; } 
     335  if(!fileName.endsWith(".desktop")){ fileName.append(".desktop"); } 
     336  QStringList contents; 
     337  contents << "#!/bin/sh"; 
     338  contents << "[Desktop Entry]";         
     339  for(int i=0; i<xdgTextValues.length(); i++){ 
     340    if(HASH.contains("XDG_"+xdgTextValues[i])){ 
     341      contents << xdgTextValues[i]+"="+HASH["XDG_"+xdgTextValues[i]].toString(); 
     342    } 
     343  } 
     344  for(int i=0; i<xdgBoolValues.length(); i++){ 
     345    if(HASH.contains("XDG_"+xdgBoolValues[i])){ 
     346      QString val = "false"; 
     347      if(HASH["XDG_"+xdgBoolValues[i]].toBool()){ val = "true"; } 
     348      contents << xdgBoolValues[i]+"="+val; 
     349    } 
     350  } 
     351  return createFile(basePath+"/xdg-desktop/"+fileName, contents); 
     352} 
     353 
     354bool PBIModule::saveXdgMenu(QString fileName){ 
     355  if(fileName.isEmpty()){ return false; } 
     356  if(!fileName.endsWith(".desktop")){ fileName.append(".desktop"); } 
     357  QStringList contents; 
     358  contents << "#!/bin/sh"; 
     359  contents << "[Desktop Entry]";         
     360  for(int i=0; i<xdgTextValues.length(); i++){ 
     361    if(HASH.contains("XDG_"+xdgTextValues[i])){ 
     362      contents << xdgTextValues[i]+"="+HASH["XDG_"+xdgTextValues[i]].toString(); 
     363    } 
     364  } 
     365  for(int i=0; i<xdgBoolValues.length(); i++){ 
     366    if(HASH.contains("XDG_"+xdgBoolValues[i])){ 
     367      if(HASH["XDG_"+xdgBoolValues[i]].toBool()){ 
     368        contents << xdgBoolValues[i]+"=true"; 
     369      } 
     370    } 
     371  } 
     372  return createFile(basePath+"/xdg-menu/"+fileName, contents);   
     373} 
     374 
     375bool PBIModule::removeXdgDesktop(QString fileName){ 
     376  createFile(basePath+"/xdg-desktop/"+fileName, QStringList() ); 
     377} 
     378 
     379bool PBIModule::removeXdgMenu(QString fileName){ 
     380  createFile(basePath+"/xdg-menu/"+fileName, QStringList() );    
     381} 
     382 
     383bool PBIModule::loadXdgDesktop(QString fileName){ 
     384  clearXdgData(); 
     385  QStringList contents = readFile(basePath+"/xdg-desktop/"+fileName); 
     386  if(contents.isEmpty()){ return false; } 
     387  for(int i=0; i<contents.length(); i++){ 
     388    //Ignore specific/special lines 
     389    if(contents[i].startsWith("#!/bin/sh") || contents[i].startsWith("[Desktop Entry]") || contents[i].isEmpty() ){ continue; } 
     390    //Now check for known variables 
     391    QString var = contents[i].section("=",0,0).simplified(); 
     392    QString val = contents[i].section("=",1,50).simplified(); 
     393    if(xdgTextValues.contains(var)){ 
     394      HASH.insert("XDG_"+var, val); 
     395    }else if(xdgBoolValues.contains(var)){ 
     396      HASH.insert("XDG_"+var, var.toLower() == "true" ); 
     397    }else{ 
     398      extraLines << contents[i]; 
     399    } 
     400  } 
     401  if( !extraLines.isEmpty() ){ 
     402    HASH.insert("XDG_EXTRALINES",extraLines.join("\n")); 
     403  } 
     404  return true; 
     405} 
     406 
     407bool PBIModule::loadXdgMenu(QString filename){ 
     408  clearXdgData(); 
     409  QStringList contents = readFile(basePath+"/xdg-menu/"+fileName); 
     410  if(contents.isEmpty()){ return false; } 
     411  for(int i=0; i<contents.length(); i++){ 
     412    //Ignore specific/special lines 
     413    if(contents[i].startsWith("#!/bin/sh") || contents[i].startsWith("[Desktop Entry]") || contents[i].isEmpty() ){ continue; } 
     414    //Now check for known variables 
     415    QString var = contents[i].section("=",0,0).simplified(); 
     416    QString val = contents[i].section("=",1,50).simplified(); 
     417    if(xdgTextValues.contains(var)){ 
     418      HASH.insert("XDG_"+var, val); 
     419    }else if(xdgBoolValues.contains(var)){ 
     420      HASH.insert("XDG_"+var, var.toLower() == "true" ); 
     421    }else{ 
     422      extraLines << contents[i]; 
     423    } 
     424  } 
     425  if( !extraLines.isEmpty() ){ 
     426    HASH.insert("XDG_EXTRALINES",extraLines.join("\n")); 
     427  } 
     428  return true;   
     429} 
     430 
     431         
     432QStringList PBIModule::listMimeFiles(){ 
     433  QStringList out; 
     434  QDir dir(basePath+"/xdg-mime"); 
     435  if(dir.exists()){ 
     436    out = dir.entryList(QStringList() << "*.xml", QDir::Files | QDir::NoDotAndDotDot, QDir::Name); 
     437  } 
     438  return out;    
     439} 
     440 
     441QStringList PBIModule::validMimeValues(){ 
     442  return mimeValues; 
     443} 
     444 
     445QString PBIModule::mimeText(QString var){ 
     446  QString out; 
     447  if(mimeValues.contains(var) && HASH.contains("MIME_"+var)){ 
     448    out = HASH["MIME_"+var].toString(); 
     449  } 
     450  return out; 
     451} 
     452 
     453QStringList PBIModule::mimeTextL(QStringList vars){ 
     454  QStringList out; 
     455  for(int i=0; i<vars.length(); i++){ 
     456    out << mimeText(vars[i]); 
     457  } 
     458  return out; 
     459} 
     460 
     461void PBIModule::setMimeText(QString var, QString val){ 
     462  if(mimeValues.contains(var)){ 
     463    HASH.insert("MIME_"+var, val); 
     464  } 
     465} 
     466 
     467void PBIModule::setMimeTextL(QStringList vars, QStringList vals){ 
     468  if(vars.length() != vals.length()){ return; } 
     469  for(int i=0; i<vars.length(); i++){ 
     470    setMimeText(vars[i], vals[i]); 
     471  } 
     472} 
     473 
     474bool PBIModule::saveMimeFile(QString fileName){ 
     475  if(fileName.isEmpty()){ return false; } 
     476  if(!fileName.endsWith(".xml")){ fileName.append(".xml"); } 
     477  //Check for type/pattern(s) first 
     478  if( !HASH.contains("MIME_type") || !HASH.contains("MIME_pattern") ){ 
     479    qDebug() << "Error: Not enough information to create MIME file:" << fileName; 
     480    return false; 
     481  } 
     482  //Now create the file contents 
     483  QStringList contents; 
     484  contents << "<?xml version=\"1.0\"?>" 
     485  QString xmlns = "http://www.freedesktop.org/standards/shared-mime-info"; 
     486  if(HASH.contains("MIME_xmlns")){ xmlns = HASH["MIME_xmlns"].toString(); } 
     487  contents <<"<mime-info xmlns=\'"+xmlns+"\'>"; 
     488  contents <<" <mime-type type=\""+HASH["MIME_type"].toString()+"\">"; 
     489  QStringList patterns = HASH["MIME_pattern"].toString().split(" "); 
     490  for(int i=0; i<patterns.length(); i++){ 
     491    contents << "  <glob weight=\"100\" pattern=\""+patterns[i]+"\"/>"; 
     492  } 
     493  contents << " </mime-type>"; 
     494  contents << "</mime-info>"; 
     495  //Now create the file 
     496  return createFile(basePath+"/xdg-mime/"+fileName, contents); 
     497} 
     498 
     499bool PBIModule::removeMimeFile(QString fileName){ 
     500  return createFile(basePath+"/xdg-mime/"+fileName, QStringList() ); 
     501} 
     502 
     503bool PBIModule::loadMimeFile(QString fileName){ 
     504  QStringList contents = readFile(basePath+"/xdg-mime/"+fileName); 
     505  if(contents.isEmpty()){ return false; } 
     506  QStringList patterns; 
     507  for(int i=0; i<contents.length(); i++){ 
     508    if(contents[i].contains("xml version=")){ 
     509      continue; //ignore this line 
     510    }else if(contents[i].contains("<mime-info xmlns=\'")){ 
     511      HASH.insert("MIME_xmlns", contents[i].section("=",1,1).section(">",0,0).remove("\'").remove("\"") ); 
     512    }else if(contents[i].contains("<mime-type type=")){ 
     513      HASH.insert("MIME_type", contents[i].section("=",1,1).section(">",0,0).remove("\'").remove("\"") ); 
     514    }else if(contents[i].contains("<glob ")){ 
     515      patterns << contents[i].section("=",2,2).section("/>",0,0).remove("\'").remove("\""); 
     516    } 
     517  } 
     518  if(!patterns.isEmpty()){ 
     519    HASH.insert("MIME_pattern", patterns.join(" ") ); 
     520  } 
     521  return true; 
     522} 
     523 
     524         
    259525// ============= 
    260526//  EXTERNAL-LINKS 
     
    275541    } 
    276542    return good; 
     543  }else if(contents.isEmpty()){ 
     544    return true; //File to delete already does not exist  
    277545  } 
    278546   
     
    356624} 
    357625 
    358 QStringList PBIModule::generateXDGFileContents(QString name, QString gName, QString exec, \ 
    359                 QString iconResourcePath, QString mimetype, bool runAsRoot, bool invisible, \ 
    360                 bool useTerminal){ 
    361   QStringList contents; 
    362   contents << "#!/usr/bin/env"; 
    363   contents << "[Desktop Entry]"; 
    364   contents << "Value=1.0"; 
    365   contents << "Type=Application"; 
    366   contents << "Name="+name; 
    367   contents << "GenericName="+gName; 
    368   if(runAsRoot){ 
    369     contents << "Exec=pc-su %%PBI_EXEDIR%%/"+exec; 
    370   }else{ 
    371     contents << "Exec=%%PBI_EXEDIR%%/"+exec; 
    372   } 
    373   contents << "Path=%%PBI_APPDIR%%"; 
    374   contents << "Icon=%%PBI_APPDIR%%/"+iconResourcePath; 
    375   contents << "StartupNotify=true"; 
    376   if(invisible){ 
    377     contents << "NoDisplay=true"; 
    378   } 
    379   if(useTerminal){ 
    380     contents << "Terminal=true"; 
    381   } 
    382   if(!mimetype.isEmpty()){ 
    383     contents << "MimeType="+mimetype; 
    384   } 
    385   return contents; 
    386 } 
     626void PBIModule::clearXdgData(){ 
     627  for(int i=0; i<xdgTextValues.length(); i++){ 
     628    if(HASH.contains("XDG_"+xdgTextValues[i])){ 
     629      HASH.removeAll("XDG_"+xdgTextValues[i]); 
     630    } 
     631  } 
     632  for(int i=0; i<xdgBoolValues.length(); i++){ 
     633    if(HASH.contains("XDG_"+xdgBoolValues[i])){ 
     634      HASH.removeAll("XDG_"+xdgBoolValues[i]); 
     635    } 
     636  } 
     637  if(HASH.contains("XDG_EXTRALINES")){ 
     638    HASH.removeAll("XDG_EXTRALINES"); 
     639  } 
     640} 
     641 
     642void PBIModule::clearMimeData(){ 
     643  for(int i=0; i<mimeValues.length(); i++){ 
     644    if(HASH.contains("MIME_"+mimeValues[i])){ 
     645      HASH.remove("MIME_"+mimeValues[i]); 
     646    } 
     647  }        
     648} 
  • src-qt4/EasyPBI-devel/PBIModule.h

    r3038c71 rd236dbd  
    7272        void setMimeText(QString, QString); 
    7373        void setMimeTextL(QStringList, QStringList); 
     74        bool saveMimeFile(QString fileName); 
     75        bool removeMimeFile(QString fileName); 
     76        bool loadMimeFile(QString fileName); 
     77         
    7478         
    7579        //External Links 
     
    7983        static QStringList readFile(QString); 
    8084        static QStringList filesInDir(QString); 
    81         static QStringList generateXDGFileContents(QString,QString,QString,QString,QString, bool, bool, bool); 
    82  
     85        void clearXdgData(); 
     86        void clearMimeData(); 
     87         
    8388private: 
    8489        QHash<QString, QVariant> HASH; 
    85         QStringList CTextValues, CBoolValues, CIntValues, scriptValues, xdgValues, mimeValues; 
     90        QStringList CTextValues, CBoolValues, CIntValues, scriptValues, mimeValues; 
     91        QStringList xdgTextValues, xdgBoolValues; 
    8692        QString basePath, version; 
    8793 
  • src-sh/pbi-manager/pbi-manager

    r7ff5d68 rcd20ca3  
    71927192                mkdir -p ${PBI_CHROOTDIR}/usr/local/etc 2>/dev/null 
    71937193                cp /usr/local/etc/pkg.conf ${PBI_CHROOTDIR}/usr/local/etc/pkg.conf 
    7194                 # Make sure we change pkgng ARCH to what we are building 
    7195                 sed -i '' "s|amd64|$ARCH|g" ${PBI_CHROOTDIR}/usr/local/etc/pkg.conf      
    7196                 sed -i '' "s|i386|$ARCH|g" ${PBI_CHROOTDIR}/usr/local/etc/pkg.conf       
    7197                 # Now make sure to copy over the pubkey 
    7198                 local pubKey=`cat /usr/local/etc/pkg.conf | grep "^PUBKEY:" | awk '{print $2}'` 
    7199                 if [ -n "$pubKey" ] ; then 
    7200                         if [ ! -d "${PBI_CHROOTDIR}/`dirname $pubKey`" ] ; then 
    7201                                 mkdir "${PBI_CHROOTDIR}/`dirname $pubKey`" 
    7202                         fi 
    7203                         cp $pubKey ${PBI_CHROOTDIR}/$pubKey 
    7204                 fi 
     7194                # Copy over the pkg/repo and friends 
     7195                cp -r /usr/local/etc/pkg ${PBI_CHROOTDIR}/usr/local/etc/ 
    72057196 
    72067197                # Install pkgng into the chroot 
Note: See TracChangeset for help on using the changeset viewer.