Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

What's the deal with the mpfr versioning? libmpfr4 vs. libmpfr6

96 views
Skip to first unread message

Anders Andersson

unread,
Jul 30, 2018, 6:40:04 PM7/30/18
to
I just noticed that there are two packages for libmpfr:

https://packages.debian.org/sid/libmpfr4

https://packages.debian.org/sid/libmpfr6


Funny thing is, this is what the versioning says on those pages:
Package: libmpfr4 (3.1.6-1)
Package: libmpfr6 (4.0.1-1)

...ok, that's strange. Even weirder, they are both built from the same
sources: mpfr-4.0.1-1.

I feel like I'm missing something. For example, what does the
"3.1.6-1" mean in libmpfr4? I assumed it was the underlying version
but it can't be if it's built from the 4.0.1 sources?

And why libmpfr6 when it's actually version 4 (there's no version 6 of mpfr).

David Wright

unread,
Jul 30, 2018, 8:30:04 PM7/30/18
to
The numbers in parentheses are the Debian versions of the package.
That's how apt would upgrade a package if a bug was fixed within it.
They're not related to the upstream version.

The two packages have different names, I would guess, so that you
can install both on the same system. You can't install two packages
with the same name.

As for the "6", I'm guessing that they chose that because the library
version (yes, another versioning sequence) is 6.0.1 as opposed to 4.1.5.

Cheers,
David.

Stefan Monnier

unread,
Jul 31, 2018, 10:10:04 AM7/31/18
to
>> Funny thing is, this is what the versioning says on those pages:
>> Package: libmpfr4 (3.1.6-1)
>> Package: libmpfr6 (4.0.1-1)
>>
>> ...ok, that's strange. Even weirder, they are both built from the same
>> sources: mpfr-4.0.1-1.

Indeed, I find that odd.

I suspect that the "3.1.6-1" in the "title" and the "4.0.1-1" in the
"download from source" refer to different versions of the package
(normally, those two are identical).

Not sure how/why this happens. Maybe the source package has been
upgraded, but the build of the corresponding binaries is still
in-progress?

>> I feel like I'm missing something. For example, what does the
>> "3.1.6-1" mean in libmpfr4?

Usually it means "built from the upstream version 3.1.6 with some local
patches" and the "-1" is a Debian-local sub-version, in case Debian
builds several different versions of the package from the same upstream
versions (e.g. because Debian's own patches are modified, a typical
example being when Debian's security team backports a security patch to
3.1.6).

> The numbers in parentheses are the Debian versions of the package.
> That's how apt would upgrade a package if a bug was fixed within it.
> They're not related to the upstream version.

Doesn't explain why one says "Package: libmpfr4 (3.1.6-1)" and the other
says "[mpfr4_4.0.1-1.dsc]": both "3.1.6-1" and "4.0.1-1" are Debian
version numbers and they are usually the same.

> As for the "6", I'm guessing that they chose that because the library
> version (yes, another versioning sequence) is 6.0.1 as opposed to 4.1.5.

That's right, this is an "API version", so I guess it means that the
4.0.1 upstream code can be used to build both the API version 4 and
the API version 6.


Stefan

David Wright

unread,
Jul 31, 2018, 12:20:04 PM7/31/18
to
On Tue 31 Jul 2018 at 10:01:00 (-0400), Stefan Monnier wrote:
> >> Funny thing is, this is what the versioning says on those pages:
> >> Package: libmpfr4 (3.1.6-1)
> >> Package: libmpfr6 (4.0.1-1)
> >>
> >> ...ok, that's strange. Even weirder, they are both built from the same
> >> sources: mpfr-4.0.1-1.
>
> Indeed, I find that odd.

I can't find any evidence for that without being told where to look.

> I suspect that the "3.1.6-1" in the "title" and the "4.0.1-1" in the
> "download from source" refer to different versions of the package
> (normally, those two are identical).
>
> Not sure how/why this happens. Maybe the source package has been
> upgraded, but the build of the corresponding binaries is still
> in-progress?
>
> >> I feel like I'm missing something. For example, what does the
> >> "3.1.6-1" mean in libmpfr4?
>
> Usually it means "built from the upstream version 3.1.6 with some local
> patches" and the "-1" is a Debian-local sub-version, in case Debian
> builds several different versions of the package from the same upstream
> versions (e.g. because Debian's own patches are modified, a typical
> example being when Debian's security team backports a security patch to
> 3.1.6).

Usually they are, but you can't always rely on it; eg Grub2 had
Debian version numbers 1.x in the days of wheezy. You have to check a
little deeper: that was my point.

> > The numbers in parentheses are the Debian versions of the package.
> > That's how apt would upgrade a package if a bug was fixed within it.
> > They're not related to the upstream version.
>
> Doesn't explain why one says "Package: libmpfr4 (3.1.6-1)" and the other
> says "[mpfr4_4.0.1-1.dsc]": both "3.1.6-1" and "4.0.1-1" are Debian
> version numbers and they are usually the same.

I'm not sure you're quoting from here.

> > As for the "6", I'm guessing that they chose that because the library
> > version (yes, another versioning sequence) is 6.0.1 as opposed to 4.1.5.
>
> That's right, this is an "API version", so I guess it means that the
> 4.0.1 upstream code can be used to build both the API version 4 and
> the API version 6.

That seems unlikely to me. I'm not going to bother to download the
source to find out, but I suspect that the 4 in Packages's "Source:
mpfr4" line is spurious, accidentally introduced between lenny and
squeeze. I think that is the only mystery here, and the rest of the
"problem" is built on jumping to false conclusions (or assumptions).

Cheers,
David.

Stefan Monnier

unread,
Jul 31, 2018, 4:30:03 PM7/31/18
to
> I can't find any evidence for that without being told where to look.

It was in the previous message:

https://packages.debian.org/sid/libmpfr4
https://packages.debian.org/sid/libmpfr6

>> Doesn't explain why one says "Package: libmpfr4 (3.1.6-1)" and the other
>> says "[mpfr4_4.0.1-1.dsc]": both "3.1.6-1" and "4.0.1-1" are Debian
>> version numbers and they are usually the same.
>
> I'm not sure you're quoting from here.

>From https://packages.debian.org/sid/libmpfr4

> That seems unlikely to me. I'm not going to bother to download the
> source to find out, but I suspect that the 4 in Packages's "Source:
> mpfr4" line is spurious,

Agreed, I hadn't noticed this little "4" in there. I have no idea what
it means. I was only looking at (and talking about) the Debian
version numbers and the "4" and "6" of "libmpfr4" and "libmpfr6".


Stefan

David Wright

unread,
Aug 1, 2018, 2:50:04 PM8/1/18
to
On Tue 31 Jul 2018 at 16:27:27 (-0400), Stefan Monnier wrote:
> > I can't find any evidence for that without being told where to look.
>
> It was in the previous message:
>
> https://packages.debian.org/sid/libmpfr4
> https://packages.debian.org/sid/libmpfr6
>
> >> Doesn't explain why one says "Package: libmpfr4 (3.1.6-1)" and the other
> >> says "[mpfr4_4.0.1-1.dsc]": both "3.1.6-1" and "4.0.1-1" are Debian
> >> version numbers and they are usually the same.
> >
> > I'm not sure you're quoting from here.
>
> >From https://packages.debian.org/sid/libmpfr4

Oh, OK. I don't know how they maintain the links to sources on the
web page. It looks like they're out of kilter, so it's probably
bug-filing time.

The OP appeared to assert that two different binary packages were
built from the same source, but I could find no *evidence* for
that, ie in the packages themselves.

But just right click on any package, copy and paste its address
into the address bar, rubout the actual filename and you can get to
http://ftp.us.debian.org/debian/pool/main/m/mpfr4/
At the bottom of that page there are sources for 3.1.0-5 (debian),
3.1.0 (original), 3.1.2-2 (debian), 3.1.2 (original), 3.1.5-1 (debian),
3.1.5 (original), 3.1.6-1 (debian), 3.1.6 (original), 4.0.1-1 (debian)
and 4.0.1 (original).

> > That
[the 4.0.1 source code can build both versions under discussion]
> > seems unlikely to me. I'm not going to bother to download the
> > source to find out, but I suspect that the 4 in Packages's "Source:
> > mpfr4" line is spurious,
>
> Agreed, I hadn't noticed this little "4" in there. I have no idea what
> it means. I was only looking at (and talking about) the Debian
> version numbers and the "4" and "6" of "libmpfr4" and "libmpfr6".

It seems plausible that someone thought it should be in there if and
when versions 1 and 4 were being simultaneously supported around the
time of squeeze≡testing. Just speculation.

Cheers,
David.

Vincent Lefevre

unread,
Aug 3, 2018, 1:20:04 AM8/3/18
to
On 2018-07-31 00:37:38 +0200, Anders Andersson wrote:
> I just noticed that there are two packages for libmpfr:
>
> https://packages.debian.org/sid/libmpfr4
>
> https://packages.debian.org/sid/libmpfr6
>
>
> Funny thing is, this is what the versioning says on those pages:
> Package: libmpfr4 (3.1.6-1)
> Package: libmpfr6 (4.0.1-1)
>
> ...ok, that's strange. Even weirder, they are both built from the same
> sources: mpfr-4.0.1-1.

No. libmpfr4 3.1.6-1 was built from mpfr4 3.1.6-1 and
libmpfr6 4.0.1-1 was built from mpfr4 4.0.1-1.

The package names are different due to ABI incompatibility
between MPFR 3.1 (which implements interfaces 4 and 5) and
MPFR 4.0 (which implements interface 6).

--
Vincent Lefèvre <vin...@vinc17.net> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)

Vincent Lefevre

unread,
Aug 3, 2018, 1:30:04 AM8/3/18
to
On 2018-07-31 10:01:00 -0400, Stefan Monnier wrote:
> > As for the "6", I'm guessing that they chose that because the library
> > version (yes, another versioning sequence) is 6.0.1 as opposed to 4.1.5.
>
> That's right, this is an "API version", so I guess it means that the
> 4.0.1 upstream code can be used to build both the API version 4 and
> the API version 6.

This is related to the ABI versions, not API.

Vincent Lefevre

unread,
Aug 3, 2018, 1:40:04 AM8/3/18
to
On 2018-08-01 13:41:32 -0500, David Wright wrote:
> > > That
> [the 4.0.1 source code can build both versions under discussion]
> > > seems unlikely to me. I'm not going to bother to download the
> > > source to find out, but I suspect that the 4 in Packages's "Source:
> > > mpfr4" line is spurious,
> >
> > Agreed, I hadn't noticed this little "4" in there. I have no idea what
> > it means. I was only looking at (and talking about) the Debian
> > version numbers and the "4" and "6" of "libmpfr4" and "libmpfr6".
>
> It seems plausible that someone thought it should be in there if and
> when versions 1 and 4 were being simultaneously supported around the
> time of squeeze≡testing. Just speculation.

Yes, in the past, one goal was to have the source for both MPFR
versions 2.4 (mpfr) and 3.0 (mpfr4) at the same time in sid.
IIRC, this kind of things was common at that time.
0 new messages