[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: policy 2.3 para 2



On Tue, Feb 12, 2002 at 10:17:16PM +0000, Julian Gilbey wrote:
> On Mon, Feb 11, 2002 at 10:19:56PM +1100, Donovan Baarda wrote:
> > > > Why not take the emacsen-common method and code and use this for
> > > > python?  It probably won't work for C-extension modules, but it could
> > > > make life easier for pure Python ones.
> > 
> > Just a thought; since we already have a database of packages in the form of
> > the dpkg database, is it possible to do something simple using it instead of
> > introducing some other database? As an example, can a python package call
> > "dpkg-reconfigure" for all installed packages that depend on "python" in
> > its postinst script?
> 
> You have two cases to consider:
> 
> (1) Installing/removing pythonX.Y package
> 
> (2) Installing/removing a python-depending package
> 
> Your suggestion will perhaps work for the former but not for the
> latter: every python package which wishes to use this scheme will have
> to have postinst code anyway.
[...]

This was just an off-the cuff suggestion intended to prompt some thinking...

Since doing some more thinking about it, I think I can see a way that it can
be done for both cases, but not easily or efficiently. 

The trick is to have multi-version python modules have "Depends:
(pythonX.Y | pythonX.Y+1 | ...)" including every version of python they are
compatible with. This can be used to indicate what versions of python the
module should be sym-linked and compiled for when/if they are installed.

When a new python-<foo> is installed/removed, it's .post(inst/rm) script
calles a python-central style "register-python-package" to
symlink+compile/remove its .py's for all the currently installed versions of
pythonX.Y.

When a new pythonX.Y is installed/removed, it must find every package with a
pythonX.Y dependancy and symlink+compile/remove all files matching
/usr/lib/python/site-packages/*.py.

Perhaps something like;

# get_modules <python version>
# return all packages that have multi-version python modules that work for 
# the specified <python version>
get_modules() {
    VER=$1
    RET=""
    for p in dpkg -S /usr/lib/python/site-packages | sed 's#,##g; s#:.*$##'; do
        if `dpkg -s $p | grep "^Depends:.*python$VER" >/dev/null 2>&1`; then
            RET="$RET $p"
        fi
    done
}

> It may be that as python is simpler, we can simply have a script in a
> python-common package which does something like (pardon me if I get
[... sample scripts...]

It's funny how minds think alike... did you write these before or after
python-central, or did you base them on it. There is a lot in common :-)

-- 
----------------------------------------------------------------------
ABO: finger abo@minkirri.apana.org.au for more info, including pgp key
----------------------------------------------------------------------



Reply to: