Re: Constantly recurring package issue
Greg Troxel <[email protected]>
| Newsgroups | gmane.os.netbsd.devel.packages |
|---|---|
| Message-ID | <[email protected]> |
John Klos <[email protected]> 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.