You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Following the instructions for use of this package in the knowledge base results in packages that also depends on the microarchitecture level of the host machine if the recipe includes a requirements/host section.
Notice that all of the packages have a dependency on the host microarch-level (>=4). This is a result of the strong run_export in the _x86_64-microarch-level package being applied from the host section after it is added as a requirement by the strong run_export from the x86_64-microarch-level package in the build section. Strong run_exports from the build section do apply transitively in the host section (or at least have for the last ~7 years).
Rendering microarch_level 1 gives a good look at what is happening:
First the strong run_export on _x86_64-microarch-level >=1 is added to the host and run section from x86_64-microarch-level 1 in the build section.
Then the host section is evaluated. The solver selects the _x86_64-microarch-level=4=1_zen4 package and applies the _x86_64-microarch-level >=4 strong run_export to the run section.
I see a few option:
This is bug in conda-build, transitive run_exports should not propagate from the build section to the host section. That said this bug has existed for considerable time and may be a "feature" as this point.
Remove the all run_exports from the _x86_64-microarch-level package. Rely on the x86_64-microarch-level to add them to the run section.
Introduce a new package with no run_exports that the x86_64-microarch-level package specifies as a strong run_export. This package would have a run dependency on the appropriate _x86_64-microarch-level package.
The run_export is added by the <family>-microarch-level package.
The _<family>-microarch-level package is used only to select packages
during a solve.
closesconda-forge#6
Remove the all run_exports from the _x86_64-microarch-level package. Rely on the x86_64-microarch-level to add them to the run section.
Sounds good to me.
I agree. I removed the run export in #7. Are there concerns about the existing packages (build numbers 0 and 1 ) being selected during a build and including the run_export? If so should these packages be moved off the main label?
Comment:
Following the instructions for use of this package in the knowledge base results in packages that also depends on the microarchitecture level of the host machine if the recipe includes a requirements/host section.
For example:
meta.yaml
conda_build_config.yaml
Building this on host with a Zen4 cpu:
Notice that all of the packages have a dependency on the host microarch-level (>=4). This is a result of the strong run_export in the
_x86_64-microarch-level
package being applied from thehost
section after it is added as a requirement by the strong run_export from thex86_64-microarch-level
package in thebuild
section. Strong run_exports from thebuild
section do apply transitively in thehost
section (or at least have for the last ~7 years).Rendering microarch_level 1 gives a good look at what is happening:
First the strong run_export on
_x86_64-microarch-level >=1
is added to thehost
andrun
section fromx86_64-microarch-level 1
in thebuild
section.Then the
host
section is evaluated. The solver selects the_x86_64-microarch-level=4=1_zen4
package and applies the_x86_64-microarch-level >=4
strong run_export to therun
section.I see a few option:
_x86_64-microarch-level
package. Rely on thex86_64-microarch-level
to add them to therun
section.x86_64-microarch-level
package specifies as a strong run_export. This package would have a run dependency on the appropriate_x86_64-microarch-level
package.cf #5 which touches on some of these points.
The text was updated successfully, but these errors were encountered: