@@ -151,6 +151,9 @@ def __init__(self, folder: str, configEnv: dict[str: str]):
151151class RezProcessEnv (ProcessEnv ):
152152 """
153153 """
154+
155+ REZ_DELIMITER_PATTERN = re .compile (r"-|==|>=|>|<=|<" )
156+
154157 def __init__ (self , folder : str , configEnv : dict [str : str ], uri : str = "" ):
155158 if not uri :
156159 raise RuntimeError ("Missing name of the Rez environment needs to be provided." )
@@ -164,34 +167,39 @@ def resolveRezSubrequires(self) -> list[str]:
164167 environment (if this package is defined).
165168 """
166169 subrequires = os .environ .get (f"{ self .uri .upper ()} _SUBREQUIRES" , "" ).split (os .pathsep )
167- packages = []
170+ if not subrequires :
171+ return []
168172
173+ packages = []
169174 # Packages that are resolved in the current environment
170175 currentEnvPackages = []
171- if "REZ_REQUEST" in os . environ :
172- resolvedPackages = os .getenv ( "REZ_RESOLVE" , "" ). split ()
173- resolvedVersions = {}
176+ resolvedVersions = {}
177+ if "REZ_USED_RESOLVE" in os .environ :
178+ resolvedPackages = os . getenv ( "REZ_USED_RESOLVE" , "" ). split ()
174179 for package in resolvedPackages :
175180 if package .startswith ("~" ):
176181 continue
177- version = package . split ( "-" )
178- resolvedVersions [ version [ 0 ]] = version [ 1 ]
179- currentEnvPackages = [ package + "-" + resolvedVersions [package ] for package in resolvedVersions . keys ()]
182+ currentEnvPackages . append ( package )
183+ name , version = self . REZ_DELIMITER_PATTERN . split ( package , maxsplit = 1 )
184+ resolvedVersions [name ] = version
180185 logging .debug ("Packages in the current environment: " + ", " .join (currentEnvPackages ))
181186
182187 # Take packages with the set versions for those which have one, and try to take packages in the current
183188 # environment (if they are resolved in it)
184189 for package in subrequires :
185- if "-" in package :
186- packages .append (package )
187- else :
188- definedInParentEnv = False
189- for p in currentEnvPackages :
190- if p .startswith (package + "-" ):
191- packages .append (p )
192- definedInParentEnv = True
193- break
194- if not definedInParentEnv :
190+ packageTuple = self .REZ_DELIMITER_PATTERN .split (package , maxsplit = 1 )
191+ match len (packageTuple ):
192+ case 1 :
193+ # Only the package name in the subrequires.
194+ # Search for a corresponding version in the parent environment.
195+ packageName = packageTuple [0 ]
196+ parentResolvedVersion = resolvedVersions .get (packageName )
197+ if parentResolvedVersion :
198+ packages .append (f"{ packageName } =={ parentResolvedVersion } " )
199+ else :
200+ packages .append (package )
201+ case 2 :
202+ # The subrequires ask for a specific version
195203 packages .append (package )
196204
197205 logging .debug ("Packages for the execution environment: " + ", " .join (packages ))
0 commit comments