Did I say I wrote it on the fly? :) <br>We can store into the temporary dict for each plugin the higher <br>version number instead of the path, it's surely better.<br><br>Cheers<br><br><div class="gmail_quote">2010/6/5 Giuseppe Sucameli <span dir="ltr"><<a href="mailto:brush.tyler@gmail.com">brush.tyler@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div><div></div><div class="h5"><div class="gmail_quote">On Sat, Jun 5, 2010 at 12:05 AM, Borys Jurgiel <span dir="ltr"><<a href="mailto:borysiasty@aster.pl" target="_blank">borysiasty@aster.pl</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Dnia piątek, 4 czerwca 2010 o 23:32:15 Giuseppe Sucameli napisał(a):<br>
<div>> Solved... The issue is the one I described in the previous mail.<br>
><br>
> However, if I install the experimental GdalTools (v.1.2.3) and<br>
> I restart QGis as required, the plugin doesn't replace the one in trunk.<br>
><br>
> Is it the correct behaviour?<br>
> If it is, maintaining the experimental one make no sense!<br>
<br>
</div>It should replace it. Otherwise there were no possibility to upgrade plugins.<br>
<br>
As you probably know, plugins bundled with qgis are installed in the<br>
/usr/share/qgis/python/plugins (or similar), while plugins installed by the<br>
installer go to ~/.qgis/python/plugins.<br>
<br>
Now, plugins in the home directory *always* cover the ones in /usr (even<br>
regardless of the version - if the instance in the home directory is older,<br>
qgis only displays a warning message and suggest to uninstall it).<br>
</blockquote></div></div></div>I tried and re-tried but the GdalTools experimental (local) doesn't replace the <br>GdalTools in trunk (system). <br><br>I guess that the plugin_installer works well. The issue may be in <br>
python/utils.py in updateAvailablePlugins function: <br>
there are no tests to check if the local plugin is newer then the system one.<br><br>I make some changes to the file above, lines 89:98<br><br><b>from:</b><br><br><span style="font-family: courier new,monospace;"> for pluginpath in plugindirs:</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;"> newplugins = findPlugins(pluginpath)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;"> if len(newplugins) > 0:</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;"> if pluginpath not in sys.path:</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;"> sys.path.append(pluginpath)</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;"> for p in newplugins:</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;"> if p not in plugins: </span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;"> plugins.append(p)</span><br><br><b>to:</b><br><i><br><span style="font-family: arial narrow,sans-serif;"> <b><span style="font-family: courier new,monospace;">plugin2path = {}</span></b></span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;"> </span></i><span style="font-family: courier new,monospace;">for pluginpath in plugindirs:</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;"> newplugins = findPlugins(pluginpath)</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;"> if len(newplugins) > 0:</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;"> if pluginpath not in sys.path:</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;"> sys.path.append(pluginpath)</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;"> for p in newplugins:</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;"> if p not in plugins: </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;"> plugins.append(p)</span><i style="font-family: courier new,monospace;"><br>
<b> plugin2path[p] = pluginpath<br> else:<br> exec( "from %s.__init__ import version " % p )<br> newvers = version()[8:]<br> newvers = map(int, newvers.split("."))<br>
<br> oldpath = sys.path<br> sys.path.append( plugin2path[p] )<br> exec( "from %s.__init__ import version " % p )<br> oldvers = version()[8:]<br>
oldvers = map(int, oldvers.split("."))<br> sys.path = oldpath<br><br> if newvers > oldvers:<br> plugins.append(p)<br> plugin2path[p] = pluginpath<br>
<br> del plugin2path</b></i><br style="font-family: arial narrow,sans-serif;" clear="all"><br>I wrote this code on the fly, so I'm not sure it's very good, but it seems to <br>resolve this problem. <br><br>The installation works as expected: therefore I can replace the GdalTools <br>
in trunk with the experimental one.<br><br>Uninstalling the plugin the Raster menu is removed (because QGis unload it)<br>but restarting QGis I can see again the Raster menu with GdalTools in trunk.<br><br>What do you think about?<br>
<br>-- <br><font color="#888888">Giuseppe Sucameli<br>
</font></blockquote></div><br><br clear="all"><br>-- <br>Giuseppe Sucameli<br>