[Installit-dev] setup.py installation
Jannis Pohlmann
jannis at xfce.org
Thu Sep 21 11:46:30 CEST 2006
On Sun, 30 Apr 2006 22:55:36 +0200, Stefan Stuhr wrote:
> søn, 30 04 2006 kl. 22:36 +0200, skrev Jannis Pohlmann:
> > On Sun, 30 Apr 2006 22:27:03 +0200, Stefan Stuhr wrote:
> > > Regarding icons, what about using GtkIconTheme? I have experience
> > > with a lot of memory leaks with PyGTK and pixbufs[1], however, so
> > > don't overdo it.
> >
> > You still need to define the icon (and its path) you want to
> > register to the icon theme in order to be able to look it up later.
> >
> > > And regarding other resources, you could put them in
> > > share/installit/, e.g. share/installit/xml/. It shouldn't be too
> > > hard to find them again, it seems that the binary always is in
> > > bin/.
> >
> > Well, of course they would be put into share/i2t/, but the problem
> > is *which* share/ we have put it. We can't search the whole
> > filesystem for a share/i2t. So we have to remember the data dir
> > during the setup in order to access it directly later.
>
> Here's the smart thing. If $prefix is /usr/local, then the main
> "binary", i2t, will be in /usr/local/bin/. In that case, share/i2t/
> will be in /usr/local/share/i2t/.
> On the other hand, if $prefix is /opt/xfce, then the i2t "binary" will
> be in /opt/xfce/bin. And share/i2t/ will be in /opt/xfce/share/i2t/.
>
> So, all you have to do is to have som mechanism in i2t to resolve
> symbolic links in a safe way. Something like this:
> ---------- 8< ----------
> # Return the real path if possible
> def GetRealPath(filepath):
> history = []
> filepath = os.path.normcase(os.path.abspath(filepath))
> while os.path.islink(filepath):
> history.append(filepath)
> old_filepath = filepath
> filepath = os.readlink(filepath)
> filepath = \
> os.path.normcase(os.path.normpath(os.path.join(os.path.dirname
> (old_filepath), filepath))) if filepath in history:
> return history[0]
> return filepath
> ---------- >8 ----------
> It may not be necessary with the "history"-part, but you can use it
> just in case.
>
> Then you can use
> GetRealPath(sys.argv[0])
> to get the real path to the i2t file, that you know is in $prefix/bin.
> It shouldn't be too hard to find $prefix/share/i2t/ from there.
This has been a long-time issue but it has been solved about two weeks
ago. All files are installed to the default Python path (e.g.
/usr/lib/python2.4/site-packages/i2t/). It's the easiest way, I think.
Regards,
Jannis
More information about the Installit-dev
mailing list