Skip to content
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

add new build format cep #53

Closed
wants to merge 1 commit into from
Closed

add new build format cep #53

wants to merge 1 commit into from

Conversation

wolfv
Copy link
Contributor

@wolfv wolfv commented May 24, 2023

This is a mashup of the boa / rattler-build and conda-build documentation for the new recipe spec.

I am not sure in how far we want to spec out things here since there are two speccable things:

  • allowed inputs
  • expected behavior

This is already a bit of both. What's missing is for example a section on run_exports, including the ignore_run_exports_from and ignore_run_exports. However, when specifying these inputs, we probably also want to specify the behavior a little bit?

I also need to expand more on the expected behavior of outputs and how "merging" works with the top-level recipe.

Todo:

  • document all build keys
  • spec out variant config files and variant evaluation
  • document all available selector variables (unix, win, ...)?
  • figure out if documenting package hash computation is part of this spec or not
  • finish jinja function docs incl. all allowed inputs
  • think more about cmp function

test:
requires:
- nose
```

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just mentioning one of my personal bugbears; if we're making changes, I think specifying test dependencies under requirements/test makes a lot more sense than special-casing them under their own top-level heading.
e.g.

requirements:
  build:
    - "{{ compiler('c') }}"
    - sel(linux): "{{ cdt('xorg-x11-proto-devel') }}"
  host:
    - python
  run:
    - python
    - sel(py26): argparse
    - six >=1.8.0
  run_constrained:
    - optional-subpackage =={{ version }}
  test:
    - nose

Comment on lines +494 to +495
Requirements section
--------------------
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Requirements section
--------------------
## Requirements section

Comment on lines +696 to +697
Outputs section
---------------
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Outputs section
---------------
## Outputs section


### Skipping builds

List conditions under which an output should be skipped.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To clarify, this behaves like any([item for item in list]) right?

Comment on lines +97 to +100
You can add selectors to any item, and the selector is evaluated in
a preprocessing stage. If a selector evaluates to `true`, the item is
flattened into the parent element. If a selector evaluates to `false`,
the item is removed.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can selectors be nested? Should they?

source:
  - sel(not win):
      url: http://path/to/unix/source
      sel(py3k):
        url: http://path/to/python3/bindings/linux/only
  - sel(win):
      url: http://path/to/windows/source
      sel(py3k):
        url: http://path/to/python3/bindings/windows/only

@wolfv
Copy link
Contributor Author

wolfv commented Jun 7, 2023

I've decided to split the proposal up into multiple sub-proposals, the first one is

  1. About the new YAML format incl. selectors, allowed Jinja, ... A new YAML based format for "conda-build" files #54
  2. The allowed keys / values in the new format (excluding outputs)
  3. Specify how variant computation is working
  4. The new specification for how outputs should behave
  5. The new test magic

If someone thinks that we should split into more parts let me know! :)

- `site-packages` folder is moved to the root of the package
- `bin/` and `Scripts/` files (that are _not_ entrypoints) are moved to `python-bin` folder in the root of the package

These are moved to the appropriate Python-version specific locations when installing.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
These are moved to the appropriate Python-version specific locations when installing.
These can be moved to the appropriate Python-version specific locations when installing.

As this spec does not dictate anything about installing right?

@wolfv
Copy link
Contributor Author

wolfv commented Dec 1, 2023

Closing because we've split this CEP into multiple smaller ones :)

@wolfv wolfv closed this Dec 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants