On Tue, Sep 15, 2020 at 10:19, Paolo Greppi <paolo.gre...@libpf.com> wrote:
Hi Pravi, see below

Il 14/09/20 19:01, Pirate Praveen ha scritto:


On Mon, Sep 14, 2020 at 17:12, Paolo Greppi <paolo.gre...@libpf.com> wrote:
#960120 is keeping yarnpkg out of testing; there are two ways to resolve this:

1. work with upstream to fix this mess (not likely to happen as upstream seems unresponsive)

2. revert the changes that caused the issue; the last successful salsa CI pipeline I can find is this one: https://salsa.debian.org/js-team/node-yarnpkg/-/commit/877478d5ef3f8a7564cdea211e5cd794fdfb97b5 so just revert all changes to this repo and the build deps to this status

 I urge those who caused the mess fix it.

 Hi Paolo,

We discussed about plan to remove babel 6 from bullseye from the very beginning as upstream won't be supporting it for the life time of bullseye. You can look at the list archive for those mails. I think it is only normal to move to new upstream versions of libraries. We also sent list of affected packages frequently to the list. No one suggested to keep babel 6 in testing at that time. You had a chance to request keeping babel 6 before it was removed as well. Marking for autoremoval was also a warning (node-yarnpkg was also marked for auto removal when I filed rc bug against node-babel), you could have requested keeping babel 6 for longer, though eventually it has to be removed from bullseye if no one steps up to maintain it.

If someone wants to keep babel 6, they have to step in and take up maintenance. Or you could even embed babel 6 in yarnpkg as it is the only package currently in the archive that does not work without babel 7. Introducing babel 6 back in testing means supporting babel 6 and 7 for the life time of bullseye. Are you prepared to do that? If someone volunteers to maintain babel 6 in bullseye, we can still introduce it back, though my preference would be to fix yarnpkg or wait for yarnpkg 2 (which supports babel 7 already), even if it means missing bullseye and getting it in bullseye-backports.

This is nothing specific to yarnpkg here, that is how every library transition works. For example in ruby team, we moved to rails 6 and the packages that did not support rails 6 were removed from testing (applications like redmine, open-build-system and diaspora were not compatible with rails 6). We cannot expect old versions of libraries will be supported forever in debian.

 Thanks
 Praveen

Probably we don't need babel.

I made a test in the clean upstream source tree, with a bin/yarn.mjs binary tweaked to load the source from ../src rather than the transpiled & bundled stuff from ../lib:

    #!/usr/bin/env node
    import * as cli from '../src/cli/index.mjs';
    cli.default().catch(function(error) {
      console.error(error.stack || error.message || error);
      process.exitCode = 1;
    });

For my test, I manually removed all type annotations from src/cli/index.js and saved it to src/cli/index.mjs

I can run this both in nodejs 12 (there is the "ExperimentalWarning: The ESM module loader is experimental.") and node 14 from experimental (no warning). It parses that first file OK, but does not find the modules in /usr/share/nodejs/:

Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'commander' imported from /root/yarn/src/cli/index.mjs

This and the similar errors can be addressed like this:

    7c7
    < import commander from 'commander';
    ---
    > import commander from '/usr/share/nodejs/commander/index.js';

Of course we need an automated tool to strip the type annotations and fix the module lookups.

The typescript transform from this babel replacement should do the first job:
https://github.com/alangpierce/sucrase
And probably webpack can do the second.

In any case I attach the patched src/cli/index.mjs file.

What do you think, is this a viable route, or do we have an alternative ?


This could work, we have deviated from upstream build system in the past. We once did a manual esm to cjs module format conversion with a patch to avoid self build dependency of rollup, then we just used typescript directly without using rollup-plugin-typescript when rollup switched to typescript.

https://babeljs.io/docs/en/babel-plugin-transform-flow-strip-types/ this could be used to remove types (only babel 6 we want to remove, we can still use babel 7). Then rollup or webpack (rollup may be lighter, but either should work) could be used to generate umd.



--
Pkg-javascript-devel mailing list
Pkg-javascript-devel@alioth-lists.debian.net
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/pkg-javascript-devel

Reply via email to