[Qgis-developer] Re: GdalTools versions

Giuseppe Sucameli brush.tyler at gmail.com
Fri Jun 4 22:18:22 EDT 2010


On Sat, Jun 5, 2010 at 12:05 AM, Borys Jurgiel <borysiasty at aster.pl> wrote:

> Dnia piątek, 4 czerwca 2010 o 23:32:15 Giuseppe Sucameli napisał(a):
> > Solved... The issue is the one I described in the previous mail.
> >
> > However, if I install the experimental GdalTools (v.1.2.3) and
> > I restart QGis as required, the plugin doesn't replace the one in trunk.
> >
> > Is it the correct behaviour?
> > If it is, maintaining the experimental one make no sense!
>
> It should replace it. Otherwise there were no possibility to upgrade
> plugins.
>
> As you probably know, plugins bundled with qgis are installed in the
> /usr/share/qgis/python/plugins (or similar), while plugins installed by the
> installer go to ~/.qgis/python/plugins.
>
> Now, plugins in the home directory *always* cover the ones in /usr (even
> regardless of the version - if the instance in the home directory is older,
> qgis only displays a warning message and suggest to uninstall it).
>
I tried and re-tried but the GdalTools experimental (local) doesn't replace
the
GdalTools in trunk (system).

I guess that the plugin_installer works well. The issue may be in
python/utils.py in updateAvailablePlugins function:
there are no tests to check if the local plugin is newer then the system
one.

I make some changes to the file above, lines 89:98

*from:*

  for pluginpath in plugindirs:
      newplugins = findPlugins(pluginpath)
      if len(newplugins) > 0:
          if pluginpath not in sys.path:
              sys.path.append(pluginpath)
          for p in newplugins:
              if p not in plugins:
                  plugins.append(p)

*to:*
*
  plugin2path = {}
  *for pluginpath in plugindirs:
      newplugins = findPlugins(pluginpath)
      if len(newplugins) > 0:
          if pluginpath not in sys.path:
              sys.path.append(pluginpath)
          for p in newplugins:
              if p not in plugins:
                  plugins.append(p)*
                  plugin2path[p] = pluginpath
              else:
                  exec( "from %s.__init__ import version " % p )
                  newvers = version()[8:]
                  newvers = map(int, newvers.split("."))

                  oldpath = sys.path
                  sys.path.append( plugin2path[p] )
                  exec( "from %s.__init__ import version " % p )
                  oldvers = version()[8:]
                  oldvers = map(int, oldvers.split("."))
                  sys.path = oldpath

                  if newvers > oldvers:
                      plugins.append(p)
                      plugin2path[p] = pluginpath

  del plugin2path*

I wrote this code on the fly, so I'm not sure it's very good, but it seems
to
resolve this problem.

The installation works as expected: therefore I can replace the GdalTools
in trunk with the experimental one.

Uninstalling the plugin the Raster menu is removed (because QGis unload it)
but restarting QGis I can see again the Raster menu with GdalTools in trunk.

What do you think about?

-- 
Giuseppe Sucameli
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/qgis-developer/attachments/20100605/1ed83fb7/attachment-0001.html


More information about the Qgis-developer mailing list