[maemo-developers] Optification breaks package on upgrade from non-optified older version

From: Andrew Flegg andrew at bleb.org
Date: Fri Oct 16 17:06:43 EEST 2009
On Fri, Oct 16, 2009 at 14:58, Marius Vollmer <marius.vollmer at nokia.com> wrote:
> ext Thomas Perl <th.perl at gmail.com> writes:
>
>> I don't really know much about dpkg internals, but maybe it would be
>> possible for maemo-optify to add a small script to postinst that will do
>> something like this (in pseudocode):
>>
>> for each (symlinkname in the package) do
>>     if (symlinkname points to /opt) and (symlinkname is a directory) then
>>         if (symlinkname is an empty directory) then
>>             remove directory, recreate correct symlink
>>         else
>>             create symlinks inside the directory
>>         endif
>>     endif
>> endfor

So, the problem with this is removing content underneath that dir
installed by something else.

> What about a slight variation:
>
> for each (symlinkname in the package) do
>    if (symlinkname should point to /opt) and (symlinkname is a directory) then
>        cp -a symlinkname/* to /opt/maemo/symlinkname/
>        rm -rf symlinkname
>        ln -s /opt/maemo/symlinkname symlinkname
>    endif
> endfor
>
> This would migrate the existing files and would establish a symlink
> structure that matches what is in the package.

So, let's imagine:

    mygame_0.0.1        has /usr/share/mygame/
    mygame-extras_0.0.1 has /usr/share/mygame/extras.xml

    mygame_0.0.2        has /usr/share/mygame -> /opt/maemo/usr/share/mygame/

When mygame v0.0.2 is installed, what will happen when
mygame-extras_0.0.1 is uninstalled? Is dpkg clever enough to follow
the /usr/share/mygame symlink and delete
/opt/maemo/usr/share/mygame/extras.xml?

> (What a hack.)

Yeah, but not entirely unelegant ;-)

Cheers,

Andrew

-- 
Andrew Flegg -- mailto:andrew at bleb.org  |  http://www.bleb.org/
More information about the maemo-developers mailing list