-
Notifications
You must be signed in to change notification settings - Fork 428
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WIP: Build customization integration #966
Conversation
…ready added in the run requirements.
# as the tests are run by perl, we need to specify it | ||
specs += ['perl %s*' % environ.get_perl_ver()] | ||
if lua_files: | ||
need_reinstall = True | ||
if lua_files and 'python' not in test_env_pkgs: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Copy & paste typo python
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch, thanks.
…astik-customization
re pinning: I think there are multiple angles here: first one to influence the build matrix (numpy x.x) and then there is the problem that link-time requirements currently can change on rebuild which then leads to crashes when the user installs a package which fits the conda requirement but not anymore the link-time requirement (example). Fot the second part, I think that the solution to that problem is similar solution the the shlibs/SYMBOLS files in debian (description in the debian policy document). E.g.
-> The library is responsible for creating that information, not the package. If the package wants stricter requirements it has to do something manually. This could even work as |
@JanSchulz, thanks. This is exactly what I want to develop once this PR is done. However, I did not want to make the scope of this PR too large. I have a bad habit of that. Is there anything this PR specifically should include (or avoid) to ensure that pursuing what you suggest is as easy as possible? |
A dynamic configuration option is something we would also greatly appreciate. Here is an alternative (potential) approach to dynamically change or set entries in meta.yaml in general:
This will probably not work by simply concatenating the two files, but semantically that's what I have in mind. The resulting mechanism would be more flexible, because config.yaml can change, add and delete whatever it wants, without requiring jinja2 stuff in meta.yaml. The author of meta.yaml might not have thought about what someone else would like to change - with this we could still support this without changing meta.yaml at all. meta.yaml would be the author's recommended (default) configuration. Even though more flexible, this mechanism is also simpler in concept: it does not need an additional indirection (through jinja2) to think about. I have not thought about all details raised in these discussions, but in general it seems worth being considered/discussed. @msarahan Any thoughts? |
CC @ukoethe @stuarteberg @pelson @jakirkham @johanneskoester - you all have had good input on this topic. Please chime in with any thoughts you have on Frank's idea. I think Jinja2 makes naming templated regions more explicit at a finer level than overriding meta.yaml keys, and templates also are more reusable than overwriting meta.yaml (reuse of a given value) I think it's reasonable to ask and work with recipe authors to add templated regions wherever you need to add them. I don't see the necessity of overriding non-templated regions. I think that more complicated cascades of overrides are necessary to achieve a given level of nontrivial collection of modifications. I personally would be error prone and forgetful, and would spend a lot of time debugging why I wasn't getting a given value. |
Thanks for your interesting thoughts, @fschlimb.
The current PR already includes the possibility to specify a config file on the command line. At present, this file may only specify the In the lengthy discussions leading up to this PR, we found that other aspects of meta.yaml (e.g. |
Yes, I do understand that this solution comes with a different mindset. Rather than than trying to define which aspects could be modified in which manner this simply provides full freedom. At some point someone will want to change something that we have not thought of. What seems well-motivated now might seem arbitrary later. People can always mess up, there is no way to protect from this. I prefer combining 2 simple concepts in an orthogonal manner rather than linking them with a (complicated and) fixed rule-set.. My current use-case is that I want to define a different source for the source, e.g. I want to use sources from git rather than a ftp url. Or I want to add a patch that I know will not get accepted widely. |
Superseded by #1585 - I didn't want to fight git to bring that branch up to date. |
Hi there, thank you for your contribution! This pull request has been automatically locked because it has not had recent activity after being closed. Please open a new issue or pull request if needed. Thanks! |
This works towards integration of #848 with work that has occurred since (primarily the separation of rendering recipes from build.)
I am suggesting to remove --bootstrap, and instead roll its functionality into --build-config, which has dynamic behavior depending on whether a file or a folder/env name is provided.
When complete, this PR will:
I'm leaving some related stuff out of this PR. Namely, I think that we need to have conda-build be much more meticulous about recording system information, such as compiler versions, ABI tags, and anything else that may affect compatibility. I anticipate that this PR will help integrate this information into "compatible" pins, but leave that for future work.
CC @ukoethe @stuarteberg @pelson @jakirkham @mcg1969 @kalefranz