author | tille <tille> | 2002-07-05 12:05:38 (UTC) |
---|---|---|
committer | tille <tille> | 2002-07-05 12:05:38 (UTC) |
commit | a332e5e111b0c9ef8eb0836876a4ff386c660514 (patch) (unidiff) | |
tree | fe327e0daace261a53d69a28c99355d63ce9012a | |
parent | 1ba879b2be7ad4ae390a351922bd476474d5dce7 (diff) | |
download | opie-a332e5e111b0c9ef8eb0836876a4ff386c660514.zip opie-a332e5e111b0c9ef8eb0836876a4ff386c660514.tar.gz opie-a332e5e111b0c9ef8eb0836876a4ff386c660514.tar.bz2 |
fixed linking bug
-rw-r--r-- | noncore/unsupported/oipkg/pmipkg.cpp | 5 |
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 | ||
57 | PmIpkg::~PmIpkg() | 57 | PmIpkg::~PmIpkg() |
58 | { | 58 | { |
59 | #ifdef OPROCESS | 59 | #ifdef OPROCESS |
60 | delete ipkgProcess; | 60 | delete ipkgProcess; |
61 | #endif | 61 | #endif |
62 | } | 62 | } |
63 | 63 | ||
64 | bool PmIpkg::runIpkg(const QString& args, const QString& dest ) | 64 | bool 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 | ||
165 | void PmIpkg::makeLinks(Package *pack) | 165 | void 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 | ||
172 | QStringList* PmIpkg::getList( QString packFileName, QString d ) | 172 | QStringList* 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 | ||
206 | void PmIpkg::linkPackage( QString packFileName, QString dest ) | 209 | void 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 | ||
214 | void PmIpkg::processFileList( QStringList *fileList, QString d ) | 217 | void 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 | ||
226 | void PmIpkg::processLinkDir( QString file, QString dest ) | 229 | void 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 | ||
278 | void PmIpkg::loadList( PackageList *pl ) | 281 | void 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 | ||
292 | void PmIpkg::commit() | 295 | void 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.")); |