Problem with BinryPackageBase

Ralf Habacker ralf.habacker at freenet.de
Sun Feb 28 09:01:37 CET 2010


Christian Ehrlicher schrieb:
> Ralf Habacker schrieb:
>   
>> Christian Ehrlicher schrieb:
>>     
>>> Hi,
>>>
>>> BinaryPackageBase does not work as expected:
>>> When the downloaded package has a subdir this subdir is not removed
>>> although I've self.targetInstSrc correctly set.
>>>   
>>>       
>>> Please see the attached example.
>>>   
>>>       
>> Thanks for this bug report.
>>
>>     
>>> This avoids to use BinaryPackageBase and I've to use the 'old' way to
>>> unpack binary packages.
>>>   
>>>       
>> does the 'old' way unpack the files into package workdir and on install 
>> step copy the subdir set with set.targetInstSrc into the image dir ?
>>
>>     
> Yes, that's correct.
>   
>> I assume this because utils.unpackFiles() does not support unpacking a 
>> subdirectory of the zip file and class 
>> Source.ArchiveSource.ArchiveSource which performs the unpacking does not 
>> support targetInstSrc yet.
>>
>>     
> Unpacking into the image dir is ok for pre-packaged libs created by
> kdewin-packager but not for 3rd-party ones which don't follow the
> 'normal' scheme. For this kind of packages install() must move them around.
> Maybe BinaryPackageBase() is just not the correct type for such kind of
> packages?
>   
As we are dealing with binary packages I would say BinaryPackageBase is 
the right place for such a support. Also see below

> I solved it by setting self.buildSystemType to 'custom' - then
> ArchiveSource unpacks all into the workdir and the instal step can move
> around the stuff. 
yes, which is a package only solution yet.
> Another idea is to add a new property to tell
> ArchiveSource to use the workdir() and not the shortcut.
>   
I think this is a good solution.
> When that's the way to go I'll maybe can move some more
> win32libs-sources to the new buildsystem classes.
>   
you are probably refering to win32libs-bin. 
 

For converting win32libs binary package the main task will probably be 
to move/copy files with or without a specific filename pattern and 
directories with or without a directory name pattern from the source dir 
into the install dir.

A generic solution may be to predefine a src/destination file/directory 
pattern list in the package and to extend BinaryPackageBase::install() 
class with the related copy/move implementation.

The question is if it is worth to create a generic solution - i would 
say yes.

The first step into this direction coule be to add a local related 
implementation (a single method) to the vlc Package, which could be 
easily extended and tested. If this implementation works mature, it 
could be added to the BinaryPackageBase class for having a generic feature.

Just a note for writing package: in util.py there are convenience 
functions for the related shutils function with debugging support, which 
makes it easier to follow what is copied/moved .

Regards
Ralf




More information about the Kde-windows mailing list