pkg repositories provided by the FreeBSD project needs to grow up (sigh)

So I like having packages. But far too often I end up in situations like this:
Code:
tingo@kg-core2$ openscad
Cannot mix incompatible Qt library (5.14.2) with this library (5.15.0)
Abort trap (core dumped)
Fine, I'll just upgrade OpenSCAD then
Code:
tingo@kg-core2$ sudo pkg update -f
Updating FreeBSD repository catalogue...
Fetching meta.conf: 100%    163 B   0.2kB/s    00:01 
Fetching packagesite.txz: 100%    6 MiB   6.3MB/s    00:01 
Processing entries: 100%
FreeBSD repository update completed. 30777 packages processed.
All repositories are up to date.
tingo@kg-core2$ sudo pkg search openscad
Except that it suddenly (for no good reason, seen from a pkg user's perspective) isn't in the package repository anymore. So I can't. And I'm going to use OpenSCAD now. So do you think that I'm going to spend time trying to install openscad from ports? Hell no, this machine doesn't even have a ports tree. But I have a laptop running Debian in the other room; it has OpenSCAD installed, so I'll go and use that until the package repository gets fixed.

I repeat: FreeBSD's pkg repositories needs to grow up.

Details:
Code:
tingo@kg-core2$ uname -a
FreeBSD kg-core2.kg4.no 11.3-RELEASE-p10 FreeBSD 11.3-RELEASE-p10 #0: Tue Jun  9 08:49:05 UTC 2020     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64
tingo@kg-core2$ pkg -vv| grep url
    url             : "pkg+http://pkg.FreeBSD.org/FreeBSD:11:amd64/latest",
 

SirDice

Administrator
Staff member
Administrator
Moderator
Except that it suddenly (for no good reason, seen from a pkg user's perspective) isn't in the package repository anymore.
That has nothing to do with pkg(8) itself. If a port fails to build (for whatever reason) then a package simply cannot be created. As a consequence it disappears from the package repositories.

On the last build run 14 ports failed to build and 1318 ports were skipped (probably because a dependency failed).


Digging a little deeper: http://beefy9.nyi.freebsd.org/build.html?mastername=113amd64-default&build=542302
Looking at that openscad is one of the 1318 skipped ports. The reason it was skipped was because of qt5-network, which fails on 11.3 due to OpenSSL.
Code:
is marked as broken: Qt5 requires Openssl 1.1.1, upgrade to FreeBSD 12.x/13.x or add DEFAULT_VERSIONS+=ssl=[openssl|libressl*] to /etc/make.conf

All this has nothing to do pkg(8).
 

zirias@

Developer
You completely miss the point. This has nothing to do with pkg but with a "rolling release" package repository -- the same will happen on a Linux system as well, cause if a package currently doesn't build, you can't have it, simple as that. You explicitly chose to use "latest", and this is the tradeoff.

If you used quarterly instead, there's very little room for such breakage. It can happen exactly at the times when a new quarterly branch is built.
 

SirDice

Administrator
Staff member
Administrator
Moderator
If you used quarterly instead, there's very little room for such breakage.
There's no guarantee anything in quarterly isn't broken too. The quarterly branch is just a latest branch that's more or less frozen for 3 months.
 
/etc/pkg/FreeBSD.conf:
Code:
FreeBSD: {
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly",
  mirror_type: "srv",
  signature_type: "fingerprints",
  fingerprints: "/usr/share/keys/pkg",
  enabled: yes
}
and then wait 2 weeks in Jan/Apr/Jul/Oct before doing pkg update/upgrade
EDIT Also keep in mind that most ports are maintained by volunteers, and much of their work is to cope with all those nasty Linuxisms in today's world - not a very thrilling task. Ironically, many of those can be found in toolkits like Qt or Gtk.
 

zirias@

Developer
There's no guarantee anything in quarterly isn't broken too. The quarterly branch is just a latest branch that's more or less frozen for 3 months.
The whole purpose of quarterly is to avoid the constant changes (and possible breaks). Yes, it's "just a branch", but it receives fixes for security issues and build errors and nothing else during its lifetime. No, there's no guarantee that a package doesn't "vanish" for build breakage, but it normally only happens at times a new quarterly branch is built.
 
[...] Hell no, this machine doesn't even have a ports tree. [...]
You may want to. There are some fine little scripts in the ports tree that do not have a package equivalent.
portgrep -x -s 'NO_(ARCH|BUILD)=[[:blank:]]*yes' | cut -d / -f 1,2 -s | less Most interesting are in sysutils.
I repeat: FreeBSD's pkg needs to grow up.
As noted above by all others, it's a matter of the build process. When 150 of 30,000 ports fail to build, that's 0.5%
 
I consider the package repositories a vital part of pkg - without them the tool pkg(8) would be useless. Yes, I could set up my own packages, but that is beside the point; pkg and the packages / package repositories that FreeBSD provide needs to grow up.
As for the latest versus quarterly issue; why couldn't I just go with quarterly? At the time this machine was installed, I needed a drm-kmod package that wasn't in quarterly. So "damned if you do, damned if you don't".

Yes - I'm well aware that work for ports and packages is provided by volunteers - I've been with FreeBSD for a while now (as regulars here will know).
 

SirDice

Administrator
Staff member
Administrator
Moderator
Yes, I could set up my own packages, but that is beside the point; pkg and the packages / package repositories that FreeBSD provide needs to grow up.
It's perfectly fine if you have complaints or suggestions for improvement, but you're blaming the wrong part of the system.

The reason there's no package for openscad is because it depends on qt5-network. This dependency fails to build on 11.4 because of a change in qt5-network, it stopped supporting the version of OpenSSL that's in 11.4. This in turn causes a cascade of other ports failing too.

If you want to play the blaming game, blame qt5-network.
 

zirias@

Developer
Quarterly receives whatever it receives, including updates; this is left entirely to maintainer discretion.
You should also have a look at the associated PR: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=244212

This is a security update. These will be approved for merge of course. Quarterly will never receive any update, just because a maintainer thinks it would be a good idea. The rule is, as I said, security fixes and fixes for serious issues like broken builds.
 
Why are you worried about rolling release behavior when you're not even on 12.1? If you updated to 12.1 it sounds like this would not have been an issue.

Perhaps it's fixed in 11.4 as well, I am not sure.

I get that it's frustrating. I also use openscad. Pretty cool software.
 

zirias@

Developer
This MFH has "Approved by: portmgr (bugfix blanket)". This is for fixing a serious issue. Unfortunately, it doesn't tell what exactly the serious issue was. But it still stands, merges to quarterly are only for security fixes and fixes of serious issues. Well, there's a strange exception for browsers and related software. See also here:
https://www.freebsd.org/doc/en_US.I...rs-guide/ports.html#ports-qa-misc-request-mfh
 
the same will happen on a Linux system as well

No.
In 25 years using different Linux distributions, I've never seen such behaviors.
I've been using Void - a rolling release distribution - for 2+ years now and it never happened either.

Why do you think there are so many recurring complaints on this forum about pkg and repositories?
Such issues only happen on BSD OSes (not just FreeBSD).
The BSD way of handling packages and repositories is broken by design, that's all.
Reciting the same old mantras to every OP will not fix it.
 

SirDice

Administrator
Staff member
Administrator
Moderator
The BSD way of handling packages and repositories is broken by design, that's all.
Reciting the same old mantras to every OP will not fix it.
Ok, so lets turn this around. What do you suggest should happen when a port fails to build and thus a package cannot be created? The port fails and there's no simple way to fix it for a particular legacy release version. The port works fine on newer releases. What do you suggest as a possible solution?
 
[...] Why do you think there are so many recurring complaints on this forum about pkg and repositories?
Such issues only happen on BSD OSes (not just FreeBSD).
The BSD way of handling packages and repositories is broken by design, that's all. [...]
What are the differences that would show up to be relevant here? Or is it just the policy of when and which "ports-bundles" are updated (together)?
 
The BSD way of handling packages and repositories is broken by design
No it is not broken , but how it works in this way. I have not much experince on Linux as a hole , but in Debian/Devuan the upgrades are pushed in to the repository when all the dependency chain as a hole is resolved. So there is no problem and also dist-upgrade for remaining unresolved issue. FreeBSD ports are modified individually and commited into the port tree. Any change in options or breakage in any build dependency makes the problem. Poudriere makes those incomplete build considering the hole head brunch. So as and when "ports-bundles" or "total 30k+ ports" are ready then the repository may be updated. The second one require lot of coordinated maintainers. Or I can wait for my "ready-port" when available.
My thought.
 
Top