Skip to Content

Contributors

Re: 14.0 branches

On Tue, Oct 13, 2020 at 11:11 AM Jairo Llopis
<jairo.llopis@tecnativa.com> wrote:

> There's one thing that's true, Stéphane, and it's that you asked nobody... I'm sad but you have to admit that. 🤷‍ Actually in the template, the default value was "OCA", so this was a total surprise. I don't agree with the flamewar itself, but I guess you should have expected it...

As I said earlier:


> in the past the only arguments I had received were of the general class "I don't like it", but nothing really concrete.

> So yeah, I guess I'm pushing a little bit in the hope of getting solid feedback.

I honestly did not expect a flamewar on this but it probably
illustrates why the topic was stuck before.
But we are now making progress, so that's good :)
And I repeat this was and still is totally revertible, and it has had
zero impact on anyone's workflow in practice yet.


> What happens when the module name differs from the package name? Or when several packages provide modules with the same name? How do we specify that in the manifest? AFAIK, until today only the module name is used there...

Since v13 we can and should use the PyPI package name in manifest
external dependencies.


> Do we need to create the setup folder on all PRs? Or does the bot do it?

There is a pre-commit hook that does it for you, it's part of the template.


> If pip dependencies can be expressed through git, have you considered dropping the wheelhouse and using always git as dep system (with pip)?

The problem is then locating the repo in the first place. Having a
flat space with all OCA addons easily installable is a simplification,
IMO.


> If the wheelhouse is meant to be used as a playground before real packages are pushed to pypi, have you considered using https://test.pypi.org? These might be dumb questions, but if it speeds up OCA workflow and removes the maintenance burden, it can be good.

The wheelhouse predates the decision to push to PyPI, it's not really
been a maintenance burden so far (especially compared to all the rest
of the OCA infra :). I think it still has value as an OCA only source.


> Where can we find docs about all of this? If none, then may you add them please?

The OCA infrastructure lacks documentation in general. I'm trying to
organize my slides of Thursday in a format that we can use as a
reference in the future.
Now I think I'll mute this thread otherwise said slides are never
going to materialize :)


> Finally a word for PSCs that want to disable this behavior in some specific repos: instead of directly writting to .travis.yml, please use copier instead: copier update -fd dependency_installation_mode=OCA

+1

-sbi

by Stéphane Bidoul - 11:46 - 13 Oct 2020

Reference

  • 14.0 branches
    Dear fellow contributors,

    The 14.0 branches are being created as I post this message.

    They are initialized from our new template repository that was created during the OCA Days sprint back in May [1]. This template is essentially a refreshed version of the linter configurations we have in 13.0. This new mechanism should make it easier to apply improvements across all repos in the future.

    Special thanks to Jairo Llopis for his work on this topic.

    I plan to provide a detailed walkthrough of all this during my OCA Days talk next week [6]. In the meantime, here are a few important things to note.

    1. The project description in README.md must be updated manually by PSCs.

    Since our project-level README were manually maintained and updated over a long period, it is difficult to reliably extract the variable content from them. So they are created afresh, and PSC are invited to update the repo description within the dedicated section of README.md. Please do not change the header and footer manually.

    2. Travis installs dependencies with pip, including addons of other repos

    This mechanism (activated by MQT_DEP=PIP in .travis.yml) does not use oca_dependencies.txt nor requirement.txt. It relies on __manifest__.py to discover dependencies from the 'depends' and 'external_dependencies' keys. Dependent addons are installed from the OCA wheelhouse [3], and python libraries are installed from PyPI.

    The main expected benefits are:
    - less redundancy (the manifests are enough to discover dependencies)
    - reduce rippling effects to unrelated repos when an addon or python library does not install or misbehaves, since only the dependencies really needed by a repo are installed

    If a PR depends on an unmerged addon or PR, create a file named test-requirements.txt at the repo root containing a line like this:


    This mechanism has been tested on several repos in 13.0 and should be reliable. In case of problem, mention me in the PR and/or create an issue in OCA/maintainer-quality-tools repo. Alternatively, you can restore the old behaviour by removing the MQT_DEP=PIP line from .travis.yml. For the curious, the code of the new mechanism is in the OCA/m-q-t repo [4]

    3. If you need local changes to the dotfiles let's discuss them

    There are variables in the dot files, including .travis.yml [2]. To update them, the best way is to install copier [5], run "copier update" from the repo root, and answer the questions.

    If you need other changes, you can apply them locally to resolve urgent situations, but that may make updates harder. So please open an issue in [1] to discuss if changes need to be made to the template.

    As usual, don't hesitate to let me know of any issue.

    That's all for now, folks. Happy migration!

    -sbi


    --
    Stéphane Bidoul | @SBidoul
    Acsone sa/nv | http://acsone.eu/ | +32 2 888 3120

    by Stéphane Bidoul - 09:21 - 8 Oct 2020