tech-pkg archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Constantly recurring package issue



John Klos <john%klos.com@localhost> writes:

>>> Why does this happen with pkg_rolling-replace? This is after pkg_admin
>>> rebuild{,-tree}, all work directories are clean...
>>
>> Are you running "pkg_rolling-replace -uv"?
>
> pkg_rolling-replace -suv, specifically. Yes, all of the work
> directories are verified to be gone, too.
>
>> As the man page says, all pkg_rr does is call 'make replace' in the
>> right order.  You left out all the useful logs about that.
>
> I have them, but I'm not sure how useful they'll be:
>
> https://www.klos.com/~john/rolling.log

They are very useful.

What seems wrong in your case is that a package is being chosen for
'make replace' when a dependency is outdated.

This could happen because of a pkg_rr bug.  It could be because of the
current strategy of checking for new build-depends and that not
recursing properly.


Not what you are talking about, but pkg_chk, and hence pkg_rr, do not
deal well multiversion packages that are not the default.  You are using
python 3.14, and if you've changed the default, that's fine.

>> Do you have "DEPENDS_TARGET?= bin-install clean"?  I find that
>> bin-install will install an old version if there is a binary, which
>> isa
>> bug, not yet really proven and not fixed.
>
> I've had that in other places, and yes, it's a good idea.

Yes, but I think there is a failure mode where a package that is out of
date with respect to pkgsrc can be bin-installed.

I would therefore suggest that you look at the log to find out how the
package that is out of date and causing trouble came to be installed,
specifically if it was installed before you started, in which case the
question is why pkg_chk didn't flag it, or if it was detected but not
tsorted correctly.

Or, if it was not installed, and it got bin-installed, and if so, which
version.

Generally, you can clean all the workdirs and rerun pkg_rr.  Often this
second run will detect packages that are now out of date but weren't
present.

Also, you can use -k, and that will almost always result in a lot of
progress, often replacing things that arguably should have been replaced
before.

I am concluding that I should change the logic to always compute the
build depends, not just redoing it per package.  I don't remember why it
is the way it is, but I suspect there isn't a good reason and it is the
result of figuring out the build depends issue.

Looking at your log, the replace order is

  RR> Replacing fftw-3.3.10nb2
  RR> Replacing p5-CPAN-Meta-Requirements-2.143nb2
  RR> Replacing libopus-1.6
  RR> Replacing mtr-0.95nb12
  RR> Replacing p5-CPAN-Requirements-Dynamic-0.002nb1
  RR> Replacing cmake-4.2.1nb1
  RR> Replacing bind-9.18.43nb1
  RR> Replacing libsndfile-1.2.2nb2
  RR> Replacing libsamplerate-0.2.2nb5
  RR> Replacing p5-Module-Build-Tiny-0.052nb1
  RR> Replacing py314-pyparsing-3.3.1
  RR> Replacing py314-packaging-25.0
  RR> Replacing py314-build-1.4.0
  RR> Replacing py314-setuptools-80.9.0
  RR> Replacing py314-pathspec-1.0.3
  RR> Replacing rust-1.90.0nb1
  RR> Replacing cbindgen-0.29.2
  RR> Replacing py314-setuptools_scm-9.2.2
  RR> Replacing py314-markdown-3.10
  RR> Replacing meson-1.10.0
  RR> Replacing py314-trove-classifiers-2025.12.1.14
  RR> Replacing gdbus-codegen-2.86.3
  RR> Replacing py314-hatchling-1.28.0
  RR> Replacing p11-kit-0.25.10
  RR> Replacing gnutls-3.8.11nb2
  RR> Replacing SDL2-2.32.10nb2
  RR> Replacing spice-server-0.15.2nb2
  RR> Replacing py314-gi-docgen-2025.5

on the last build (last because it errors), a some deps are missing and
are recursed into.

=> Full dependency py314-markdown>=3.2: found py314-markdown-3.10.1
=> Full dependency py314-markupsafe>=1: found py314-markupsafe-3.0.3
=> Full dependency py314-packaging>=0: found py314-packaging-26.0
=> Full dependency py314-pygments>=2: found py314-pygments-2.19.2
=> Full dependency py314-jinja2>=2: found py314-jinja2-3.1.6
=> Full dependency py314-typogrify>=2: found py314-typogrify-2.1.0
=> Full dependency graphviz-[0-9]*: NOT found
 => Full dependency urw-fonts-[0-9]*: NOT found
 => Creating binary package /usr/pkgsrc/packages/All/urw-fonts-2.0nb1.tgz
 => Full dependency fontconfig>=2.17.0: found fontconfig-2.17.1nb1
 => Full dependency freetype2>=2.13.2nb1: found freetype2-2.14.1
 => Full dependency gd>=2.3.3nb17: NOT found
  => Full dependency perl>=5.0: found perl-5.42.0nb1
  => Full dependency fontconfig>=2.14.2nb3: found fontconfig-2.17.1nb1
  => Full dependency freetype2>=2.13.2nb1: found freetype2-2.14.1
  => Full dependency libimagequant>=4.2.0: NOT found
  => Creating binary package /usr/pkgsrc/packages/All/cargo-c-0.10.20.tgz
  => Creating binary package /usr/pkgsrc/packages/All/libimagequant-4.4.1.tgz
  => Full dependency libjpeg-turbo>=1.1.0: found libjpeg-turbo-3.1.3
  => Full dependency libwebp>=0.6.0: found libwebp-1.6.0nb1
  => Full dependency png>=1.6.0nb1: found png-1.6.54
  => Full dependency raqm>=0.10.3nb1: NOT found
  => Full dependency freetype2>=2.13.2nb1: found freetype2-2.14.1
  => Full dependency fribidi>=0.19.1: found fribidi-1.0.16
  => Full dependency harfbuzz>=12.1.0nb1: found harfbuzz-12.3.0nb1
  => Creating binary package /usr/pkgsrc/packages/All/raqm-0.10.3nb1.tgz
  => Full dependency tiff>=4.7.0nb3: found tiff-4.7.1
  => Creating binary package /usr/pkgsrc/packages/All/gd-2.3.3nb17.tgz
 => Full dependency gts>=0.7.6nb7: NOT found
  => Full dependency glib2>=2.84.4nb1: found glib2-2.86.3
  => Full dependency netpbm>=11.02.09nb7: NOT found
  => Full dependency libjpeg-turbo>=1.1.0: found libjpeg-turbo-3.1.3
  => Full dependency libxml2>=2.14.6nb2: found libxml2-2.14.6nb2
  => Full dependency png>=1.6.0nb1: found png-1.6.54
  => Full dependency tiff>=4.7.0nb3: found tiff-4.7.1
  => Creating binary package /usr/pkgsrc/packages/All/netpbm-11.02.09nb8.tgz
  => Creating binary package /usr/pkgsrc/packages/All/gts-0.7.6nb7.tgz
 => Full dependency libltdl>=2.4.2: NOT found
  => Creating binary package /usr/pkgsrc/packages/All/libltdl-2.4.7.tgz
 => Full dependency libwebp>=0.6.0: found libwebp-1.6.0nb1
 => Full dependency pango>=1.57.0nb2: NOT found
  => Full dependency cairo>=1.18.4nb3: NOT found
   => Full dependency fontconfig>=2.14.2nb3: found fontconfig-2.17.1nb1
   => Full dependency freetype2>=2.13.2nb1: found freetype2-2.14.1
   => Full dependency glib2>=2.84.4nb1: found glib2-2.86.3
   => Full dependency lzo>=2.01: found lzo-2.10
   => Full dependency png>=1.6.0nb1: found png-1.6.54
   => Creating binary package /usr/pkgsrc/packages/All/cairo-1.18.4nb3.tgz

The chain is py314-gi-docgen graphviz pango cairo.
The error is

  pkg_add: A different version of cairo-1.18.4nb3 is already installed: cairo-1.18.4nb2

so here the problem is that pkg_rr only checked py314-gi-docgen's build
depends, and didn't check the rest.


If you want to just get things fixed, simply make replace clean in cairo
and re-run.

Another fix would be to let dependencies do make replace when hitting
this install mismatch.  But surely that's controversial, and likely
causes trouble, and I don't want to go there (but don't mind if somebody
else does).


I will, not sure exactly when, see about fixing this.  I think it's
prety easy, but things never really are.





Home | Main Index | Thread Index | Old Index