On Sat, Jul 6, 2019 at 1:55 PM Jakub Jelinek <jakub@xxxxxxxxxx> wrote: > There is no way around having some compatibility version, either in the same > or other rpm, at least for a short period of time, because gcc needs libmpfr > and libmpfr needs to be built with gcc, so if you upgrade incompatibly > libmpfr, you will build that package, but once it is in the buildroots, gcc > will not install anymore and so nothing that needs gcc to build will > succeed building. Right. I think James's question was about submitting a package for review that is a different version of a package owned by somebody else. The maintainer of record for mpfr is Pavel Cahyna. I see he has an mpfr COPR: https://copr.fedorainfracloud.org/coprs/pcahyna/mpfr4/ but it looks like it hasn't been touched in a long time. This is what fedora-active-user has to say about him: Last login in FAS: pcahyna 2019-05-16 Last action on koji: Fri, 11 Aug 2017 package list entry revoked: zisofs-tools in f25 by pkgdb Last package update on bodhi: 2018-02-25 21:51:52 on package mpfr-3.1.6-1.fc27 Last actions performed according to fedmsg: - joerg.schilling@xxxxxxxxxxxxxxxxxxx updated nothing on RHBZ#1648742 'wodim should not pretend to handle DL-DV...' on 2019-07-04 08:29:55 () - ekanter@xxxxxxx updated nothing on RHBZ#1648742 'wodim should not pretend to handle DL-DV...' on 2019-07-04 08:06:42 () - rgm@xxxxxxxxxxxxxxx updated nothing on RHBZ#1583845 'Cannot write to CDrom at all' on 2019-06-27 10:22:24 () - joerg.schilling@xxxxxxxxxxxxxxxxxxx updated nothing on RHBZ#1648742 'wodim should not pretend to handle DL-DV...' on 2019-06-26 06:21:01 () - ekanter@xxxxxxx updated 'cc' on RHBZ#1648742 'wodim should not pretend to handle DL-DV...' on 2019-06-26 06:02:22 () - pdupre@xxxxxxx updated 'cc' on RHBZ#1457252 'gnuplot-5.2.7 is available' on 2019-06-09 12:07:09 () - kevin@xxxxxxxxxxxxxxxx updated 'cc' on RHBZ#1583845 'Cannot write to CDrom at all' on 2019-06-05 14:27:05 () - kevin@xxxxxxxxxxxxxxxx updated 'cc' on RHBZ#1583845 'Cannot write to CDrom at all' on 2019-06-05 14:19:32 () - kevin@xxxxxxxxxxxxxxxx updated 'cc', 'dup_id', and 'resolution' on RHBZ#1580021 'wodim missing u+s will prevent usage at ...' on 2019-06-05 14:19:32 () - upstream-release-monitoring updated 'short_desc' on RHBZ#1457252 'gnuplot-5.2.7 is available' on 2019-05-29 01:05:26 () Last email on mailing list: ERROR:active-user:[Errno socket error] [Errno -2] Name or service not known Hmmm, what happened with the email on mailing list check? The current mpfr library (3.1.6) has soname "libmpfr.so.4". The new mpfr library (4.0.2) has soname "libmpfr.so.6". We want to keep both sonames available until all consumers can be switched to mpfr4, which may take awhile. We are not changing versions of libmpc, so the soname of "libmpc.so.3" is fixed. Therefore, we have to have the following packages, and their -devel subpackages, and it has to be possible to have them all installed in the same buildroot: - mpfr 3.1.6 - mpfr 4.0.2 - libmpc 1.1.0 linked with mpfr 3.1.6 - libmpc 1.1.0 linked with mpfr 4.0.2 I think it would be nice to have the "mpfr" package mean the latest version (i.e., 4.0.2), and introduce an mpfr3 package to hold 3.1.6. Likewise, it would be nice to have the "libmpc" package mean the version linked with mpfr 4.0.2, and introduce something, say "libmpc-mpfr3", to hold the version linked with mpfr 3.1.6. I can be swayed otherwise, but that would let us preserve package history, and we can hopefully drop the mpfr3 and libmpc-mpfr3 packages from the distribution someday. The tricky part, of course, is not breaking gcc while updating. Here is one way that could be accomplished. Caveat: I haven't actually tried doing this. If this seems reasonable, I would like to create a COPR and start doing these builds to make sure nothing breaks. - Alter the mpfr package to produce mpfr3, mpfr3-devel, mpfr, and mpfr-devel packages. The mpfr3 library has the old soname, the mpfr library has the new soname. The -devel packages must be installable in parallel, so the mpfr3 packages have libmpfr3.so*, /usr/include/mpfr3.h, and /usr/include/mpf2mpfr3.h. - Alter the libmpc package to produce libmpc and libmpc-mpfr3 packages. The libmpc package keeps the current soname. The libmpc-mpfr3 package gets the soname “libmpc-mpfr3.so.3”. Both are linked against mpfr3! That’s important! The -devel packages must be installable in parallel, so the libmpc-mpfr3 packages have libmpc-mpfr3.so* and /usr/include/mpc-mpfr3.h. - Build gcc with mpfr3 and libmpc-mpfr3. This means that gcc no longer depends on the mpfr and libmpc packages, so we can change them without breaking gcc. We will have to patch gcc to use the mpfr3 header file names and link with the altered library names. - Build libmpc again. Now libmpc-mpfr3 is linked with mpfr3 and libmpc is linked with mpfr. - Build gcc with mpfr and libmpc. We just drop the patch we used two steps ago and rebuild. Now gcc works with the new packages, and packages that use mpfr can be upgraded to mpfr4 at their leisure (but will FTBFS if they require mpfr 3, because of the altered header file and library names). Packages that use libmpc, however, are broken because libmpc is now linked with mpfr 4. Those packages must be moved to mpfr4 or built against libmpc-mpfr3. They are: o arm-none-eabi-gcc-cs o avr-gcc o cross-gcc o gap-pkg-float o ghdl o gnome-calculator o mingw-gcc o python-gmpy2 o sagemath I suggest this order for building packages. Each must be built against mpfr 4, or patched to continue building with mpfr 3. This order takes dependencies into account: - gawk (because it is in the default buildroot) - gdb (likewise) - All of these can be done in parallel: R-Rmpfr, arm-none-eabi-gcc-cs, avr-gcc, cross-gcc, fawkes, flint, gappa, genius, ghdl, gnome-calculator, gretl, ledger, libbytesize, libfplll, libqalculate, libscs, mingw-gcc, mpfi, ocaml-mlgmpidl, octave-interval, openscad, python-gmpy2, rasqal, sirocco - These can be done in parallel. Names in parentheses indicate dependencies: apron (ocaml-mlgmpidl), arb (flint), gap-pkg-float (mpfi), giac (mpfi), ocaml-tplib (ocaml-mlgmpidl), python-fpylll (libfplll), Singular (flint) - polymake (Singular), pynac (giac, Singular), why (apron) - sagemath (polymake, pynac) - texlive-base, just because it is a huge monster, so I want to deal with it last. It could probably be moved higher in this list. That is certainly not the only approach that can be taken. If somebody has a better idea, please share it. It is too late to attempt this for Fedora 31, but I would like to get the approach solidified and everything ready to go so this can land as early as possible in the Fedora 32 cycle. Regards, -- Jerry James http://www.jamezone.org/ _______________________________________________ devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx