On Mon, 30 Apr 2012 11:37:53 +0200
Krzysztof Pawlik <nelch...@gentoo.org> wrote:

> On 30/04/12 11:28, Michał Górny wrote:
> > On Mon, 30 Apr 2012 10:23:03 +0200
> > Krzysztof Pawlik <nelch...@gentoo.org> wrote:
> > 
> >> On 30/04/12 10:12, Ulrich Mueller wrote:
> >>>>>>>> On Mon, 30 Apr 2012, Michał Górny wrote:
> >>>> Since lately Gentoo devs force you to replace collision-protect
> >>>> with protect-owned [1] and sometimes packages just spit out files
> >>>> randomly on the filesystem due to random errors, I thought it may
> >>>> be a good idea to provide a new feature limiting the locations
> >>>> where packages can install.
> >>>
> >>> 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). I've talked to Zac
> >> and:
> >>
> >>>>>
> >> There's not much else you can do. However,
> >> FEATURES="protect-owned" is enabled by default, and it will work
> >> fine if the .pyo and .pyc files are not owned by anything. I don't
> >> know why people use FEATURES="collision-protect", but at least you
> >> can tell them that they'll still have a reasonable level of
> >> protection from FEATURES="protect-owned" (it protect against file
> >> collisions between packages).
> >> <<<
> >>
> >> If you want to help feel free to suggest *how* to fix it, patches
> >> are especially welcomed :)
> > 
> > Just make it warn or something like that. Or even fail but only when
> > such files exist. There is no point in forcing me to disable
> > collision-protect when the ebuilds were migrated already.
> 
> Does this work for you:
> 
> $ cvs diff python-distutils-ng.eclass
> Index: python-distutils-ng.eclass
> ===================================================================
> RCS file: /var/cvsroot/gentoo-x86/eclass/python-distutils-ng.eclass,v
> retrieving revision 1.12
> diff -u -r1.12 python-distutils-ng.eclass
> --- python-distutils-ng.eclass  30 Apr 2012 08:25:31 -0000      1.12
> +++ python-distutils-ng.eclass  30 Apr 2012 09:36:48 -0000
> @@ -304,11 +304,10 @@
>  # Phase function: pkg_pretend
>  python-distutils-ng_pkg_pretend() {
>         if has "collision-protect" ${FEATURES}; then
> -               eerror "Due to previous eclass compiling Python files
> outside of src_install"
> -               eerror "(and not recording resulting .pyc and .pyo
> files as owned by any package)"
> -               eerror "merging this package with
> \"collision-protect\" in FEATURES will result"
> -               eerror "in an error, please switch to using
> \"protect-owned\" instead."
> -               die "\"collision-protect\" in FEATURES detected"
> +               ewarn "Due to previous eclass compiling Python files
> outside of src_install"
> +               ewarn "(and not recording resulting .pyc and .pyo
> files as owned by any package)"
> +               ewarn "merging this package with
> \"collision-protect\" in FEATURES may result"
> +               ewarn "in an error, please switch to using
> \"protect-owned\" instead."
>         fi
>  }
> 
> (it's s/eerror/ewarn/ & die removal).

Yes, it will let me use the eclass at all.

> I'm still wondering how many people will read this warning when they
> hit collision error.

You can make it fatal if you detect collisions yourself but that's
repeating a lot of work.

-- 
Best regards,
Michał Górny

Attachment: signature.asc
Description: PGP signature

Reply via email to