Guess the 3rd possibility is what's most likely - unfortunately there doesn't seem much interest upstream for the way oe builds things, so it might be fight against windmills.

option a) could be doable in the long run (but would at least require upstream to acknowledge the oe way of doing things)

the more I think about it the more option b becomes likely, as there isn't actually a real world consumer of any of these in core - so all the needed quality control remains somewhere else.

for the tooling part, I think we need to enable devtool to create recipes and source definitions separately, even for a whole dependency tree - but I admit I have no idea if that is doable, as the devtool sources has grown over the time into something very hard to read and refactor (and if you would ask me, the above mentioned idea sounds like a full rewrite of devtool, more or less from scratch). (I remember there was an exchange about this idea in late December on some of the lists)

my idea would be to

- drop npm/go support and move it to another place, one where there's actually a consumer of them - get in contact with upstream nodejs/go to discuss ways to build things with the project's definition of reproducibility - start a devtool refactor enabling the creation of multiple source/recipe definitions out of a dependency tree
- refactor go and npm support before moving them back into core
- add real life consumers to core to avoid future regressions

No idea what that would mean in terms of work and if that is even doable

On 14.01.22 12:16, Alexander Kanavin wrote:
Three possible solutions, please:

c) improve npm and go tooling in collaboration with respective upstreams so that it fulfils our use cases.

Both a and b are not tenable in my opinion.

Alex

On Fri, 14 Jan 2022 at 11:09, Stefan Herbrechtsmeier <[email protected] <mailto:[email protected]>> wrote:

    Hi,

    the npm and go integration doesn’t support a lot of common OE
    feature like:
    * Download proxy
    * Minimize image size (packet split, single copy, dead code removal, …)
    * Software version management
    * Dependency management
    * License compliance
    * Vulnerability scanner
    * SBOM generator

    Even the `Download proxy` is only partly supported. The npm packages
    could download artifacts during compile and Go projects without vendor
    directory download dependencies during compile.

    The current state of npm and Go in OE aren’t complete, and a user need
    to setup a DevOps chain outside of OE to take over the missing parts.
    Furthermore, the DevOps chain needs its own download proxy, and npm and
    Go supports cross compile by itself, so the advantage of the OE
    integration is minimal.

    Based on my work on a npm improvement in the last months I see two
    possible solutions:
    a) Handle npm and Go projects like C/C++ or Python projects and
    create a
    recipe per project.
    b) Remove npm and Go support from OE and build artifacts via external
    DevOps chain.

    I think the best solution would be a) because it avoids user specific
    solution and allows collaboration. A solution between a) and b) isn’t
    reasonable because it doesn’t solve the problem of an additional DevOps
    chain and introduce a two-class society for languages.

    Does somebody use npm and Go and cares about the missing features?

    Any feedback, opinions or interests would be helpful.

    Regards
        Stefan







-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#1411): 
https://lists.openembedded.org/g/openembedded-architecture/message/1411
Mute This Topic: https://lists.openembedded.org/mt/88417908/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-architecture/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to