summaryrefslogtreecommitdiff
authortille <tille>2002-07-05 12:05:38 (UTC)
committer tille <tille>2002-07-05 12:05:38 (UTC)
commita332e5e111b0c9ef8eb0836876a4ff386c660514 (patch) (unidiff)
treefe327e0daace261a53d69a28c99355d63ce9012a
parent1ba879b2be7ad4ae390a351922bd476474d5dce7 (diff)
downloadopie-a332e5e111b0c9ef8eb0836876a4ff386c660514.zip
opie-a332e5e111b0c9ef8eb0836876a4ff386c660514.tar.gz
opie-a332e5e111b0c9ef8eb0836876a4ff386c660514.tar.bz2
fixed linking bug
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/unsupported/oipkg/pmipkg.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/noncore/unsupported/oipkg/pmipkg.cpp b/noncore/unsupported/oipkg/pmipkg.cpp
index 4a8a389..d29036b 100644
--- a/noncore/unsupported/oipkg/pmipkg.cpp
+++ b/noncore/unsupported/oipkg/pmipkg.cpp
@@ -55,267 +55,270 @@ PmIpkg::PmIpkg( PackageManagerSettings* s, QWidget* p, const char * name, WFlag
55} 55}
56 56
57PmIpkg::~PmIpkg() 57PmIpkg::~PmIpkg()
58{ 58{
59#ifdef OPROCESS 59#ifdef OPROCESS
60 delete ipkgProcess; 60 delete ipkgProcess;
61#endif 61#endif
62} 62}
63 63
64bool PmIpkg::runIpkg(const QString& args, const QString& dest ) 64bool PmIpkg::runIpkg(const QString& args, const QString& dest )
65{ 65{
66 bool ret=false; 66 bool ret=false;
67 QDir::setCurrent("/tmp"); 67 QDir::setCurrent("/tmp");
68 QString cmd = "/usr/bin/ipkg "; 68 QString cmd = "/usr/bin/ipkg ";
69#ifdef OPROCESS 69#ifdef OPROCESS
70 ipkgProcess->kill(); 70 ipkgProcess->kill();
71 ipkgProcess->clearArguments(); 71 ipkgProcess->clearArguments();
72 *ipkgProcess << "/usr/bin/ipkg "; 72 *ipkgProcess << "/usr/bin/ipkg ";
73 cmd = ""; 73 cmd = "";
74#endif 74#endif
75 pvDebug( 3,"PmIpkg::runIpkg got dest="+dest); 75 pvDebug( 3,"PmIpkg::runIpkg got dest="+dest);
76 if ( dest == "" ) 76 if ( dest == "" )
77 cmd += " -dest "+settings->getDestinationName(); 77 cmd += " -dest "+settings->getDestinationName();
78 else 78 else
79 cmd += " -dest "+ dest; 79 cmd += " -dest "+ dest;
80 80
81 cmd += " -force-defaults "; 81 cmd += " -force-defaults ";
82 82
83 if (installDialog && installDialog->_force_depends) 83 if (installDialog && installDialog->_force_depends)
84 { 84 {
85 if (installDialog->_force_depends->isChecked()) 85 if (installDialog->_force_depends->isChecked())
86 cmd += " -force-depends "; 86 cmd += " -force-depends ";
87 if (installDialog->_force_reinstall->isChecked()) 87 if (installDialog->_force_reinstall->isChecked())
88 cmd += " -force-reinstall "; 88 cmd += " -force-reinstall ";
89 if (installDialog->_force_remove->isChecked()) 89 if (installDialog->_force_remove->isChecked())
90 cmd += " -force-removal-of-essential-packages "; 90 cmd += " -force-removal-of-essential-packages ";
91 } 91 }
92 92
93 out( "Starting to "+ args+"\n"); 93 out( "Starting to "+ args+"\n");
94 cmd += args; 94 cmd += args;
95 out( "running:\n"+cmd+"\n" ); 95 out( "running:\n"+cmd+"\n" );
96 pvDebug(2,"running:"+cmd); 96 pvDebug(2,"running:"+cmd);
97#ifdef OPROCESS 97#ifdef OPROCESS
98 *ipkgProcess << args; 98 *ipkgProcess << args;
99 out( "running:\n" + cmd); 99 out( "running:\n" + cmd);
100 *ipkgProcess << cmd; 100 *ipkgProcess << cmd;
101 101
102//debug 102//debug
103 delete ipkgProcess; 103 delete ipkgProcess;
104 ipkgProcess = new OProcess(); 104 ipkgProcess = new OProcess();
105 ipkgProcess->clearArguments(); 105 ipkgProcess->clearArguments();
106 *ipkgProcess << "/bin/ls "; 106 *ipkgProcess << "/bin/ls ";
107//debug 107//debug
108 QValueList<QCString> a = ipkgProcess->args(); 108 QValueList<QCString> a = ipkgProcess->args();
109 QValueList<QCString>::Iterator it; 109 QValueList<QCString>::Iterator it;
110 for( it = a.begin(); it != a.end(); ++it ) 110 for( it = a.begin(); it != a.end(); ++it )
111 { 111 {
112 out( *it ); 112 out( *it );
113 cmd += *it; 113 cmd += *it;
114 } 114 }
115 115
116 pvDebug(2,"running:"+cmd); 116 pvDebug(2,"running:"+cmd);
117 qApp->processEvents(); 117 qApp->processEvents();
118// sleep(1); 118// sleep(1);
119 ret = ipkgProcess->start(OProcess::NotifyOnExit,OProcess::AllOutput); 119 ret = ipkgProcess->start(OProcess::NotifyOnExit,OProcess::AllOutput);
120 if ( !ret ) { 120 if ( !ret ) {
121 pvDebug(2,"Could not execute '" + cmd); 121 pvDebug(2,"Could not execute '" + cmd);
122 out("\nError while executing "+ cmd+"\n\n"); 122 out("\nError while executing "+ cmd+"\n\n");
123 out("\nError while executing\n\n"); 123 out("\nError while executing\n\n");
124 // return false; 124 // return false;
125 } 125 }
126 126
127 while ( ipkgProcess->isRunning() ) 127 while ( ipkgProcess->isRunning() )
128 { 128 {
129 out("."); 129 out(".");
130 pvDebug(7,"wait for oprocess to terminate"); 130 pvDebug(7,"wait for oprocess to terminate");
131 qApp->processEvents(); 131 qApp->processEvents();
132 }; 132 };
133#else 133#else
134 qApp->processEvents(); 134 qApp->processEvents();
135 FILE *fp; 135 FILE *fp;
136 char line[130]; 136 char line[130];
137 QString lineStr, lineStrOld; 137 QString lineStr, lineStrOld;
138 sleep(1); 138 sleep(1);
139 cmd +=" 2>&1"; 139 cmd +=" 2>&1";
140 fp = popen( (const char *) cmd, "r"); 140 fp = popen( (const char *) cmd, "r");
141 if ( fp == NULL ) { 141 if ( fp == NULL ) {
142 qDebug("Could not execute '" + cmd + "'! err=%d", fp); 142 qDebug("Could not execute '" + cmd + "'! err=%d", fp);
143 out("\nError while executing "+ cmd+"\n\n"); 143 out("\nError while executing "+ cmd+"\n\n");
144 ret = false; 144 ret = false;
145 } else { 145 } else {
146 while ( fgets( line, sizeof line, fp) != NULL) 146 while ( fgets( line, sizeof line, fp) != NULL)
147 { 147 {
148 lineStr = line; 148 lineStr = line;
149 lineStr=lineStr.left(lineStr.length()-1); 149 lineStr=lineStr.left(lineStr.length()-1);
150 //Configuring opie-oipkg...Done 150 //Configuring opie-oipkg...Done
151 if (lineStr.contains("Done")) ret = true; 151 if (lineStr.contains("Done")) ret = true;
152 if (lineStr!=lineStrOld) 152 if (lineStr!=lineStrOld)
153 out(lineStr); 153 out(lineStr);
154 lineStrOld = lineStr; 154 lineStrOld = lineStr;
155 qApp->processEvents(); 155 qApp->processEvents();
156 } 156 }
157 } 157 }
158 pclose(fp); 158 pclose(fp);
159#endif 159#endif
160 //out( "Finished!"); 160 //out( "Finished!");
161 pvDebug(2,QString(ret?"success\n":"failure\n")); 161 pvDebug(2,QString(ret?"success\n":"failure\n"));
162 return ret; 162 return ret;
163} 163}
164 164
165void PmIpkg::makeLinks(Package *pack) 165void PmIpkg::makeLinks(Package *pack)
166{ 166{
167 pvDebug( 2, "PmIpkg::makeLinks "+ pack->name()); 167 pvDebug( 2, "PmIpkg::makeLinks "+ pack->name());
168 QString pn = pack->name(); 168 QString pn = pack->name();
169 linkPackage( pack->packageName(), pack->dest() ); 169 linkPackage( pack->packageName(), pack->dest() );
170} 170}
171 171
172QStringList* PmIpkg::getList( QString packFileName, QString d ) 172QStringList* PmIpkg::getList( QString packFileName, QString d )
173{ 173{
174 QString dest = settings->getDestinationUrlByName( d ); 174 QString dest = settings->getDestinationUrlByName( d );
175 dest = dest==""?d:dest; 175 dest = dest==""?d:dest;
176 // if (dest == "/" ) return 0; 176 // if (dest == "/" ) return 0;
177 { 177 {
178 Config cfg( "oipkg", Config::User ); 178 Config cfg( "oipkg", Config::User );
179 cfg.setGroup( "Common" ); 179 cfg.setGroup( "Common" );
180 QString statusDir = cfg.readEntry( "statusDir", "" ); 180 QString statusDir = cfg.readEntry( "statusDir", "" );
181 } 181 }
182 QString packFileDir = dest+"/"+statusDir+"/info/"+packFileName+".list"; 182 QString packFileDir = dest+"/"+statusDir+"/info/"+packFileName+".list";
183 QFile f( packFileName ); 183 QFile f( packFileDir );
184 qDebug("Try to open %s", packFileDir.latin1());
184 if ( ! f.open(IO_ReadOnly) ) 185 if ( ! f.open(IO_ReadOnly) )
185 { 186 {
186 out( "Could not open:\n"+packFileDir ); 187 out( "Could not open:\n"+packFileDir );
187 f.close(); 188 f.close();
188 packFileDir = "/"+statusDir+"/info/"+packFileName+".list"; 189 packFileDir = "/"+statusDir+"/info/"+packFileName+".list";
189 f.setName( packFileDir ); 190 f.setName( packFileDir );
191 qDebug("Try to open %s", packFileDir.latin1());
190 if ( ! f.open(IO_ReadOnly) ) 192 if ( ! f.open(IO_ReadOnly) )
191 { 193 {
192 qDebug(" Panik! Could not open"+packFileDir); 194 qDebug(" Panik! Could not open"+packFileDir);
193 out( "Could not open:\n"+packFileDir+"\n Panik!" ); 195 out( "Could not open:\n"+packFileDir+"\n Panik!" );
196 return (QStringList*)0;
194 } 197 }
195 } 198 }
196 QStringList *fileList = new QStringList(); 199 QStringList *fileList = new QStringList();
197 QTextStream t( &f ); 200 QTextStream t( &f );
198 while ( !t.eof() ) 201 while ( !t.eof() )
199 { 202 {
200 *fileList += t.readLine(); 203 *fileList += t.readLine();
201 } 204 }
202 f.close(); 205 f.close();
203 return fileList; 206 return fileList;
204} 207}
205 208
206void PmIpkg::linkPackage( QString packFileName, QString dest ) 209void PmIpkg::linkPackage( QString packFileName, QString dest )
207{ 210{
208 if (dest == "root" || dest == "/" ) return; 211 if (dest == "root" || dest == "/" ) return;
209 QStringList *fileList = getList( packFileName, dest ); 212 QStringList *fileList = getList( packFileName, dest );
210 processFileList( fileList, dest ); 213 processFileList( fileList, dest );
211 delete fileList; 214 delete fileList;
212} 215}
213 216
214void PmIpkg::processFileList( QStringList *fileList, QString d ) 217void PmIpkg::processFileList( QStringList *fileList, QString d )
215{ 218{
216 if (!fileList) return; 219 if (!fileList) return;
217 for (uint i=0; i < fileList->count(); i++) 220 for (uint i=0; i < fileList->count(); i++)
218 { 221 {
219 QString dest = settings->getDestinationUrlByName( d ); 222 QString dest = settings->getDestinationUrlByName( d );
220 dest = dest==""?d:dest; 223 dest = dest==""?d:dest;
221 processLinkDir( (*fileList)[i], dest ); 224 processLinkDir( (*fileList)[i], dest );
222 } 225 }
223} 226}
224 227
225 228
226void PmIpkg::processLinkDir( QString file, QString dest ) 229void PmIpkg::processLinkDir( QString file, QString dest )
227{ 230{
228 pvDebug( 4,"PmIpkg::processLinkDir "+file+" to "+ dest); 231 pvDebug( 4,"PmIpkg::processLinkDir "+file+" to "+ dest);
229 if (linkOpp==createLink) pvDebug( 4,"opp: createLink"); 232 if (linkOpp==createLink) pvDebug( 4,"opp: createLink");
230 if (linkOpp==removeLink) pvDebug( 4,"opp: removeLink"); 233 if (linkOpp==removeLink) pvDebug( 4,"opp: removeLink");
231 if ( dest == "???" || dest == "" ) return; 234 if ( dest == "???" || dest == "" ) return;
232 QString destFile = file; 235 QString destFile = file;
233 file = dest+"/"+file; 236 file = dest+"/"+file;
234 if (file == dest) return; 237 if (file == dest) return;
235// if (linkOpp==createLink) out( "\ncreating links\n" ); 238// if (linkOpp==createLink) out( "\ncreating links\n" );
236 // if (linkOpp==removeLink) out( "\nremoving links\n" ); 239 // if (linkOpp==removeLink) out( "\nremoving links\n" );
237 QFileInfo fileInfo( file ); 240 QFileInfo fileInfo( file );
238 if ( fileInfo.isDir() ) 241 if ( fileInfo.isDir() )
239 { 242 {
240 pvDebug(4, "process dir "+file); 243 pvDebug(4, "process dir "+file);
241 QDir destDir( destFile ); 244 QDir destDir( destFile );
242 if (linkOpp==createLink) destDir.mkdir( destFile, true ); 245 if (linkOpp==createLink) destDir.mkdir( destFile, true );
243 QDir d( file ); 246 QDir d( file );
244// d.setFilter( QDir::Files | QDir::Hidden | QDir::NoSymLinks ); 247// d.setFilter( QDir::Files | QDir::Hidden | QDir::NoSymLinks );
245 const QFileInfoList *list = d.entryInfoList(); 248 const QFileInfoList *list = d.entryInfoList();
246 QFileInfoListIterator it( *list ); 249 QFileInfoListIterator it( *list );
247 QFileInfo *fi; 250 QFileInfo *fi;
248 while ( (fi=it.current()) ) 251 while ( (fi=it.current()) )
249 { 252 {
250 pvDebug(4, "processLinkDir "+fi->absFilePath()); 253 pvDebug(4, "processLinkDir "+fi->absFilePath());
251 processLinkDir( fi->absFilePath(), dest ); 254 processLinkDir( fi->absFilePath(), dest );
252 ++it; 255 ++it;
253 } 256 }
254 } else 257 } else
255 if ( fileInfo.isFile() ) 258 if ( fileInfo.isFile() )
256 { 259 {
257 const char *instFile = strdup( (file).latin1() ); 260 const char *instFile = strdup( (file).latin1() );
258 const char *linkFile = strdup( (destFile).latin1()); 261 const char *linkFile = strdup( (destFile).latin1());
259 if( linkOpp==createLink ) 262 if( linkOpp==createLink )
260 { 263 {
261 pvDebug(4, "linking: "+file+" -> "+destFile ); 264 pvDebug(4, "linking: "+file+" -> "+destFile );
262 symlink( instFile, linkFile ); 265 symlink( instFile, linkFile );
263 } 266 }
264 } else { 267 } else {
265 const char *linkFile = strdup( (destFile).latin1()); 268 const char *linkFile = strdup( (destFile).latin1());
266 if( linkOpp==removeLink ) 269 if( linkOpp==removeLink )
267 { 270 {
268 QFileInfo toRemoveLink( destFile ); 271 QFileInfo toRemoveLink( destFile );
269 if ( !QFile::exists( file ) && toRemoveLink.isSymLink() ) 272 if ( !QFile::exists( file ) && toRemoveLink.isSymLink() )
270 { 273 {
271 pvDebug(4,"removing "+destFile+" no "+file); 274 pvDebug(4,"removing "+destFile+" no "+file);
272 unlink( linkFile ); 275 unlink( linkFile );
273 } 276 }
274 } 277 }
275 } 278 }
276} 279}
277 280
278void PmIpkg::loadList( PackageList *pl ) 281void PmIpkg::loadList( PackageList *pl )
279 { 282 {
280 for( Package *pack = pl->first();pack ; (pack = pl->next()) ) 283 for( Package *pack = pl->first();pack ; (pack = pl->next()) )
281 { 284 {
282 if ( pack && (pack->name() != "") && pack) 285 if ( pack && (pack->name() != "") && pack)
283 { 286 {
284 if ( pack->toInstall() ) 287 if ( pack->toInstall() )
285 to_install.append( pack ); 288 to_install.append( pack );
286 if ( pack->toRemove() ) 289 if ( pack->toRemove() )
287 to_remove.append( pack ); 290 to_remove.append( pack );
288 } 291 }
289 } 292 }
290} 293}
291 294
292void PmIpkg::commit() 295void PmIpkg::commit()
293 { 296 {
294 int sizecount = 0; 297 int sizecount = 0;
295 installDialog = new InstallDialog(settings,0,0,true); 298 installDialog = new InstallDialog(settings,0,0,true);
296 installDialog->toRemoveItem->setOpen( true ); 299 installDialog->toRemoveItem->setOpen( true );
297 installDialog->toInstallItem->setOpen( true ); 300 installDialog->toInstallItem->setOpen( true );
298 for (uint i=0; i < to_remove.count(); i++) 301 for (uint i=0; i < to_remove.count(); i++)
299 { 302 {
300 sizecount += 1; 303 sizecount += 1;
301 installDialog->toRemoveItem->insertItem( new PackageListItem(installDialog->ListViewPackages, to_remove.at(i),settings) ); 304 installDialog->toRemoveItem->insertItem( new PackageListItem(installDialog->ListViewPackages, to_remove.at(i),settings) );
302 } 305 }
303 for (uint i=0; i < to_install.count(); i++) 306 for (uint i=0; i < to_install.count(); i++)
304 { 307 {
305 sizecount += to_install.at(i)->size().toInt(); 308 sizecount += to_install.at(i)->size().toInt();
306 installDialog->toInstallItem->insertItem( new PackageListItem(installDialog->ListViewPackages, to_install.at(i),settings) ); 309 installDialog->toInstallItem->insertItem( new PackageListItem(installDialog->ListViewPackages, to_install.at(i),settings) );
307 } 310 }
308 runwindow->progress->setTotalSteps(sizecount); 311 runwindow->progress->setTotalSteps(sizecount);
309 qDebug("Install size %i",sizecount); 312 qDebug("Install size %i",sizecount);
310 installDialog->showMaximized(); 313 installDialog->showMaximized();
311 installDialog->show(); 314 installDialog->show();
312 if ( installDialog->exec() ) 315 if ( installDialog->exec() )
313 { 316 {
314 doIt(); 317 doIt();
315 runwindow->showMaximized(); 318 runwindow->showMaximized();
316 runwindow->show(); 319 runwindow->show();
317 } 320 }
318 installDialog->close(); 321 installDialog->close();
319 delete installDialog; 322 delete installDialog;
320 installDialog = 0; 323 installDialog = 0;
321 out(tr("\nAll done.")); 324 out(tr("\nAll done."));