AcademySoftwareFoundation / rez

An integrated package configuration, build and deployment system for software
https://rez.readthedocs.io
Apache License 2.0
936 stars 332 forks source link

ScopeContext not behaving as expected #498

Open arubertoson opened 6 years ago

arubertoson commented 6 years ago

I've encountered a situation where I need to release packages over both unix and windows based machines. The release process is just unpacking and does not involve any building. But as the context resolves I'm encountering (not unexpected) that if my platform variant does not match my system it won't let me continue.

From what I've gathered I'm supposed to be able to use the scope context to do an override by:

#package.py

with scope('config') as c:
    c.implicit_packages = []

I'm still getting:

Resolving build environment: platform-windows arch-x86_64
The context failed to resolve:
The following package conflicts occurred: (platform-windows <--!--> ~platform==linux)

The way I've worked around this at the moment is having a rezconfig.py that I've removed the implicit_packages in.

REZ_CONFIG_FILE=/path/to/reznoimplicitconfig.py rez build

I feel a bit dirty doing it this way and feel I might have missed something. But it might be the wanted and expected behavior.

nerdvegas commented 6 years ago

Hi Marcus,

What is almost certainly happening here is that package override of implicit_packages isn't being taken into account. The code isn't structured such that package config overrides become globally visible during a package build - but perhaps that's how it should be, which would fix issues like the one you've noted here.

I will keep this in mind when I have a chance to look at this. Could you submit a ticket? I would consider this a bug.

Thx A

On Fri, Mar 9, 2018 at 10:40 PM, Marcus Albertsson <notifications@github.com

wrote:

I've encountered a situation where I need to release packages over both unix and windows based machines. The release process is just unpacking and does not involve any building. But as the context resolves I'm encountering (not unexpected) that if my platform variant does not match my system it won't let me continue.

From what I've gathered I'm supposed to be able to use the scope context to do an override by:

package.py

with scope('config') as c: c.implicit_packages = []

I'm still getting:

Resolving build environment: platform-windows arch-x86_64 The context failed to resolve: The following package conflicts occurred: (platform-windows <--!--> ~platform==linux)

The way I've worked around this at the moment is having a rezconfig.py that I've removed the implicit_packages in.

REZ_CONFIG_FILE=/path/to/reznoimplicitconfig.py rez build

I feel a bit dirty doing it this way and feel I might have missed something. But it might be the wanted and expected behavior.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/nerdvegas/rez/issues/498, or mute the thread https://github.com/notifications/unsubscribe-auth/ABjqSm-VUy-Her-qQw86p_hR0FYuQbxxks5tcmoogaJpZM4SkJOO .

arubertoson commented 6 years ago

Sorry for the delay - how would I go about submitting a ticket?

nerdvegas commented 6 years ago

Ah no worries, just leave as-is, this existing ticket is fine.