On 03/10/2016 02:16 PM, Stephen Gallagher wrote:
On 03/10/2016 12:25 PM, Tom Hughes wrote:
> On 10/03/16 16:20, Stephen Gallagher wrote:
>
>> I've just pushed a new update to the repository that also includes Node.js
5.8.0
>> (released yesterday). Of course, since the minor version jumped, binary packages
>> may need a rebuild.
>>
>> If we're going to look into supporting the rapidly-updating 5.x branch in
F25, I
>> wonder if we should modify the automatic dependency-generation to do:
>> Requires: nodejs(abi) >= %{abi_major}.%{abi_minor}
>> Conflicts: nodejs(abi) >= %{abi_major+1}
>>
>> Of course, I have no idea how this automatic dependency is created, so I
don't
>> know how complicated it will be to fix. But I think we have to, since 5.x seems
>> to bump minor versions at least once every couple months. Assuming it's
properly
>> following semantic versioning, the rebuild shouldn't actually be needed
unless
>> we bump the major version.
>
> Oh it's easy to do - the nodejs spec file creates nodejs_native.req in the
> %install section with those rules.
>
> Why makes the second conflicts though? Why not:
>
> Requires: nodejs(abi) >= %{abi_major}.%{abi_minor}
> Requires: nodejs(abi) < %{abi_major+1}
>
> Which is what the dependency generator would do for a caret dependency on a node
> module.
>
After some discussion on #fedora-devel, we opted to change the virtual Provides: to
Provides: nodejs(abi%{nodejs_major}) = %{nodejs_major}.%{nodejs_minor}
and then the binary packages will get
Requires: nodejs(abi%{nodejs_major}) >= %{nodejs_major}.%{nodejs_minor}
(or, without the variables:)
Provides: nodejs(abi5) = 5.8
Requires: nodejs(abi5) >= 5.8
The advantage this gives us is that if Node.js ever decides to offer two ABI
versions together (such as if they have a total rewrite and thus opt to keep the
old version around for a transition period), we'd be able to have
Provides: nodejs(abiX) = X.Y
and
Provides: nodejs(abiX+1) = X+1.Z
This is now building in my COPR for 5.8. After this, we won't need to *force* a
rebuild of a package unless the major Node version changes again.
Hmm, I'm not sure why this never got build, because I definitely submitted it.
Anyway, I just started a build for 5.9.0 in my COPR, which includes this
improved ABI check. Once we do a single rebuild against these new packages, it
should work.
I'm planning to push the latest Node.js 5.x version to Fedora 25/Rawhide
sometime next week, unless there is strong opposition. I'll announce it on
Fedora devel-announce as well.