[prev in list] [next in list] [prev in thread] [next in thread]
List: gentoo-dev
Subject: Re: [gentoo-dev] RFC: new feature to disable merging into stray locations
From: Ulrich Mueller <ulm () gentoo ! org>
Date: 2012-04-30 13:36:17
Message-ID: 20382.38225.587502.685943 () a1i15 ! kph ! uni-mainz ! de
[Download RAW message or body]
>>>>> On Mon, 30 Apr 2012, Thomas Sachau wrote:
> Krzysztof Pawlik schrieb:
>> On 30/04/12 10:39, Ulrich Mueller wrote:
>>>>> If the eclass doesn't work with FEATURES="collision-protect"
>>>>> then it needs to be fixed.
>>>
>>>> Long story short: older eclass compiled Python byte code in live
>>>> file system, new one does it in src_install so .pyo/.pyc gets
>>>> properly recorded, so the package *has to overwrite* files that
>>>> are not owned by anyone (no package owns them).
>>>
>>> The usual approach to this problem was to have some cleanup code
>>> in pkg_setup or pkg_preinst that would remove the old files.
>>
>> Interesting idea - I see two problems:
>> - how I would get the list of files for already installed version
>> (the file list can (and will) differ between versions)
> Simple workaround in pkg_preinst (just example code, nothing to
> copy/paste):
> if has_version < first_good_version ; then
> for i in $(find ${D} -name *.{pyc,pyo}) ; do
> [[ -e ${i/${D}/${ROOT}/} ]] && rm ${i/${D}/${ROOT}/}
> done
> fi
This wouldn't work, because collision protection runs _before_
pkg_preinst.
However, one could imagine a (somewhat dirty) workaround:
- At the end of src_install, rename all *.pyc and *.pyo in ${D} to
names that don't collide with the ones in ${ROOT}, so that collision
protection won't be triggered.
- At the beginning of pkg_preinst, rename them back to their original
names.
- Run above code.
> Alternatively, you could take all .py files of the installed
> versions and blindly remove the pyo/pyc files for them in
> pkg_preinst (this should also prevent leaving dead files around).
s/preinst/setup/ otherwise the same argument as above would apply.
Ulrich
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic