[Pkg-javascript-devel] Plan for legacy rollup plugins in bullseye (was Re: node-rollup-plugin-inject 4.0.2+~3.0.2-1 MIGRATED to testing)

Xavier yadd at debian.org
Tue Oct 27 16:58:43 GMT 2020


Le 27/10/2020 à 17:38, Jonas Smedegaard a écrit :
> Quoting Xavier (2020-10-27 14:45:40)
>> Le 25/10/2020 à 11:57, Jonas Smedegaard a écrit :
>>> Quoting Xavier (2020-10-25 11:27:55)
>>>> Le 25/10/2020 à 09:06, Pirate Praveen a écrit :
>>>>> On 2020, ഒക്‌ടോബർ 25 10:09:13 AM IST, Debian testing watch <noreply at release.debian.org> wrote:
>>>>>> FYI: The status of the node-rollup-plugin-inject source package
>>>>>> in Debian's testing distribution has changed.
>>>>>>
>>>>>>  Previous version: (not in testing)
>>>>>>  Current version:  4.0.2+~3.0.2-1
>>>>>
>>>>> Are we going to maintain legacy versions of these plugins in 
>>>>> bullseye? I agree adding them makes the transition easier, but 
>>>>> removing the legacy copies should also be part of the plan to 
>>>>> avoid maintaining multiple versions of these plugins.
>>>>
>>>> Hi,
>>>>
>>>> you're right, however there are a lot of outdated modules in JS 
>>>> Team packages, and these rollup plugins have no known 
>>>> vulnerabilities.
>>>>
>>>> We can also facilitate transition using this way (using 
>>>> experimental of course):
>>>>  * remove legacy module from any node-rollup-plugin-*
>>>>  * insert our own legacy modules in them including just:
>>>>    * /usr/share/nodejs/rollup-plugin-foo/package.json
>>>>
>>>>      { "name":"rollup-plugin-foo",
>>>>        "main":"index.js",
>>>>        "dependencies":{
>>>>          "@rollup/plugin-foo": "*"
>>>>        }
>>>>      }
>>>>
>>>>    * /usr/share/nodejs/rollup-plugin-foo/index.js
>>>>
>>>>      module.export = require("@rollup/plugin-foo");
>>>>
>>>> Note that transition of node-rollup-plugin-commonjs won't be easy 
>>>> (remember 10.0.1+really.9.2.0). Same for 
>>>> node-rollup-plugin-node-resolve
>>>
>>> Do I understand you correctly that you propose to ship legacy 
>>> library embedded with consuming packages?
>>>
>>> That seems backwards to me - what would be the benefit?
>>
>> Upstream chose to rename its rollup-plugin-foo to @rollup/plugin-foo. 
>> For now, I modified all of them: I embedded in node-rollup-plugin-foo 
>> both libraries:
>>  * main source is @rollup/plugin-foo
>>  * a component named "legacy" that embeds old node-rollup-plugin-foo
>>
>> Most of them have non breaking changes. Then instead of keeping an 
>> outdated library, I propose to install only @rollup/plugin-foo and add 
>> a very simple /usr/share/nodejs/rollup-plugin-foo that returns 
>> @rollup/plugin-foo (see above). This permits legacy removal and avoids 
>> to maintain a lot of patches in nodejs packages that uses them. No 
>> urgency for now since there are no security issues.
>>
>> Some of @rollup/plugin-foo *have* breaking changes, at least 
>> @rollup/plugin-commonjs and @rollup/plugin-node-resolve //(our legacy 
>> node-rollup-plugin-{commonjs,node-resolve} are already outdated)//. 
>> Propositions:
>>  1. keep packages with both libraries
>>  2. try to patch all packages that uses them, then remove "legacy"
>>     component (no urgency for now since there are no security issues)
>>
>>> I think it is better to ship legacy library with non-legacy library, 
>>> to ease tracking of its continued need and maintain it where there 
>>> is most knowledge about the library, but I may be missing 
>>> something...
>>
>> Sorry, I didn't understand, would you like to keep current situation 
>> (I'm OK with this) or remove legacy component (I'm OK too)?
>>
>> I'm so sorry, my poor English (neither the help of Google Translator) 
>> makes me unable to understand the meaning of "to ship" here (send in 
>> package or send outside package?).
> 
> Sorry for my sloppy language - "to ship" means "to include in our 
> shipment" a.k.a. "to distribute".
> 
> Let me try again:
> 
> In my previous email I worried that your proposal was to _only_ include 
> modern code in rollup plugin packages, and include a copy of old plugin 
> code into each package that needed old code.  I.e. this:
> 
>  * pkg:node-rollup-plugin-foo
>    + include modern @rollup/plugin-foo
> 
>  * pkg:node-bar-depending-on-old-foo
>    + include old rollup-plugin-foo
> 
>  * pkg:node-baz-depending-on-old-foo
>    + include old rollup-plugin-foo

Thanks ;-)

> I would prefer - and now think that this was your proposal (both now and 
> before - that I simply misunderstood you before) - that we instead do 
> this:
> 
>  * pkg:node-rollup-plugin-foo
>    + include modern @rollup/plugin-foo
>    + include old rollup-plugin-foo
>    + Provides: node-rollup-plugin-foo (= $OLD)
> 
>  * pkg:node-bar-depending-on-old-foo
>    + Depends: node-rollup-plugin-foo (= $OLD)
> 
>  * pkg:node-baz-depending-on-old-foo
>    + Depends: node-rollup-plugin-foo (= $OLD)

Right, that's what I did for all @rollup/plugin-*

Both @rollup/plugin-foo and rollup-plugin-foo have the same Debian name.
I tried "Provides: ${nodejs:Provides}", and Debian tools looks to accept
it (both build and local install with `dpkg -i`) :

  Package: node-rollup-plugin-alias
  Version: 3.1.1+~2.2.0-4
  Provides: node-rollup-plugin-alias (= 2.2.0)

Do you think this is an acceptable way?



More information about the Pkg-javascript-devel mailing list