[Bug 289455] ports-mgmt/pkg Regression 14.2R -> 14.3R -r option - upgrade,search,install etc.

From: <bugzilla-noreply_at_freebsd.org>
Date: Thu, 11 Sep 2025 10:38:02 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=289455

            Bug ID: 289455
           Summary: ports-mgmt/pkg Regression 14.2R -> 14.3R -r option -
                    upgrade,search,install etc.
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Keywords: regression
          Severity: Affects Only Me
          Priority: ---
         Component: Individual Port(s)
          Assignee: pkg@FreeBSD.org
          Reporter: erichanskrs@gmail.com
          Assignee: pkg@FreeBSD.org
             Flags: maintainer-feedback?(pkg@FreeBSD.org)

Using the indicated FreeBSD versions and using pkg v. 2.3.1 
and 'latest', I've noticed a regression when using the -r option 
wrt to the FreeBSD-kmods repository with various pkg utilities.

- On 14.2R using the -r option does     enable a disabled repository.
- On 14.3R using the -r option does not enable a disabled repository.

Although I do not have a test set up with pkgbase, I imagine 
that there could be similar problems with the -r option acting 
on a disabled repository in a pkgbasified environment.

Similar regressions can be viewed using
 pkg query
 pkg rquery
 pkg version
These are not shown here.

Refs:
https://man.freebsd.org/cgi/man.cgi?query=pkg-upgrade&manpath=FreeBSD+Ports+14.3&arch=default&format=html
pkg-upgrade(8):
OPTIONS
    [...]
        -r reponame, --repository reponame
                   Install  packages from only the named repository, irrespec-
                   tive of the configured "enabled" status from repo.conf.

pkg-search(8):
OPTIONS
   [...]
       -r reponame, --repository reponame
                   Search for packages from only the named  repository,  irre-
                   spective of the configured "enabled" status from repo.conf.
                   By  default,  catalogues  for  all enabled repositories are
                   searched.

The -r option with the same meaning is used in other pkg utilities such as:
   pkg-install(8)
   pkg-query(8)
   pkg-rquery(8)
   pkg-version(8) 

I think it would improve clarity if the wording of the -r option is 
made the same for all pkg utilities where no differences apply.

graphics/drm-61-kmod is used as an example package.
The following command sequence is used on 14.2R and 14.3R:

[0-0] # date -u; uname -a; pkg -v
[1-0] # grep -v '^#' /usr/local/etc/pkg/repos/FreeBSD.conf
[2-0] # pkg query -e '%n=drm-61-kmod' '%n %v'
[3-0] # pkg rquery -e '%n=drm-61-kmod' '[%R] %o %n %v' | column -t
[4-0] # sed -E -i "bak" '/^FreeBSD-kmods:/,/^}/ s/(enabled.*)yes/\1no/'
/usr/local/etc/pkg/repos/FreeBSD.conf
[5-0] # grep -v '^#' /usr/local/etc/pkg/repos/FreeBSD.conf
[6-0] # pkg -vv | sed -n '/^Repositories:/,$ p'
[7-0] # pkg upgrade -r FreeBSD-kmods drm-61-kmod
[8-0] # pkg query -e '%n=drm-61-kmod' '[%R] %n %v'

For the examples following the use of pkg upgrade slight 
variations have been used.

Note that 
   pkg -vv
   pkg repository
do not correctly list the disabled FreeBSD-kmods repository 
on 14.3-RELEASE: see PR_289216   


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++ pkg upgrade
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
On 14.2-RELEASE, the -r option enables the FreebSD-kmods 
repository correctly and the package is upgraded.

On 14.3-RELEASE, however, the -r option does not enable 
the FreebSD-kmods repository, the package is not upgraded and 
an error is emitted. 
Additionally, it is shown that the FreeBSD-kmods repository 
has to be explicitly enabled for the upgrade to succeed.

=== 14.2-RELEASE - pkg upgrade
[0-0] # date -u; uname -a; pkg -v
Wed Sep 10 23:56:02 UTC 2025
FreeBSD q210 14.2-RELEASE-p1 FreeBSD 14.2-RELEASE-p1 GENERIC amd64
2.3.1
[1-0] # grep -v '^#' /usr/local/etc/pkg/repos/FreeBSD.conf
FreeBSD: {
        url: pkg+https://pkg.freebsd.org/${ABI}/latest,
        enabled: yes,
}
FreeBSD-kmods: {
        url: pkg+https://pkg.freebsd.org/${ABI}/kmods_latest_${VERSION_MINOR},
        enabled: yes,
        priority: 0,
        signature_type: "fingerprints",
        fingerprints: "/usr/share/keys/pkg",
        mirror_type: "srv",
}
[2-0] # pkg query -e '%n=drm-61-kmod' '%n %v'
drm-61-kmod 6.1.128.1402000_4
[3-0] # pkg rquery -e '%n=drm-61-kmod' '[%R] %o %n %v' | column -t
[FreeBSD]        graphics/drm-61-kmod  drm-61-kmod  6.1.128.1402000_5
[FreeBSD-kmods]  graphics/drm-61-kmod  drm-61-kmod  6.1.128.1402000_5
[4-0] # sed -E -i "bak" '/^FreeBSD-kmods:/,/^}/ s/(enabled.*)yes/\1no/'
/usr/local/etc/pkg/repos/FreeBSD.conf
[5-0] # grep -v '^#' /usr/local/etc/pkg/repos/FreeBSD.conf
FreeBSD: {
        url: pkg+https://pkg.freebsd.org/${ABI}/latest,
        enabled: yes,
}
FreeBSD-kmods: {
        url: pkg+https://pkg.freebsd.org/${ABI}/kmods_latest_${VERSION_MINOR},
        enabled: no,
        priority: 0,
        signature_type: "fingerprints",
        fingerprints: "/usr/share/keys/pkg",
        mirror_type: "srv",
}
[6-0] # pkg -vv | sed -n '/^Repositories:/,$ p'
Repositories:
  FreeBSD: {
    url             : "pkg+https://pkg.freebsd.org/FreeBSD:14:amd64/latest",
    enabled         : yes,
    priority        : 0,
    mirror_type     : "SRV",
    signature_type  : "FINGERPRINTS",
    fingerprints    : "/usr/share/keys/pkg"
  }
  FreeBSD-kmods: {
    url             :
"pkg+https://pkg.freebsd.org/FreeBSD:14:amd64/kmods_latest_2",
    enabled         : no,
    priority        : 0,
    mirror_type     : "SRV",
    signature_type  : "FINGERPRINTS",
    fingerprints    : "/usr/share/keys/pkg"
  }
[7-0] # pkg upgrade -r FreeBSD-kmods drm-61-kmod
Updating FreeBSD-kmods repository catalogue...
FreeBSD-kmods is up to date.
Updating database digests format: 100%
Checking integrity... done (0 conflicting)
The following 1 package(s) will be affected (of 0 checked):

Installed packages to be UPGRADED:
        drm-61-kmod: 6.1.128.1402000_4 -> 6.1.128.1402000_5 [FreeBSD-kmods]

Number of packages to be upgraded: 1

Proceed with this action? [y/N]: y
[1/1] Upgrading drm-61-kmod from 6.1.128.1402000_4 to 6.1.128.1402000_5...
[1/1] Extracting drm-61-kmod-6.1.128.1402000_5: 100%
[8-0] #  pkg query -e '%n=drm-61-kmod' '[%R] %n %v'
[FreeBSD-kmods] drm-61-kmod 6.1.128.1402000_5
[9-0] #

=== 14.3-RELEASE - pkg upgrade
[0-0] # date -u; uname -a; pkg -v
Wed Sep 10 23:59:06 UTC 2025
FreeBSD tm1 14.3-RELEASE-p2 FreeBSD 14.3-RELEASE-p2 GENERIC amd64
2.3.1
[1-0] # grep -v '^#' /usr/local/etc/pkg/repos/FreeBSD.conf
FreeBSD: {
    url: pkg+https://pkg.freebsd.org/${ABI}/latest,
    enabled: yes,
}
FreeBSD-kmods: {
    url: pkg+https://pkg.freebsd.org/${ABI}/kmods_latest_${VERSION_MINOR},
    enabled: yes,
    priority: 0,
    signature_type: "fingerprints",
    fingerprints: "/usr/share/keys/pkg",
    mirror_type: "srv",
}
[2-0] # pkg query -e '%n=drm-61-kmod' '%n %v'
drm-61-kmod 6.1.128.1402000_5
[3-0] # pkg rquery -e '%n=drm-61-kmod' '[%R] %o %n %v' | column -t
[FreeBSD]        graphics/drm-61-kmod  drm-61-kmod  6.1.128.1402000_5
[FreeBSD-kmods]  graphics/drm-61-kmod  drm-61-kmod  6.1.128.1403000_5
[4-0] # sed -E -i "bak" '/^FreeBSD-kmods:/,/^}/ s/(enabled.*)yes/\1no/'
/usr/local/etc/pkg/repos/FreeBSD.conf
[5-0] # grep -v '^#' /usr/local/etc/pkg/repos/FreeBSD.conf
FreeBSD: {
    url: pkg+https://pkg.freebsd.org/${ABI}/latest,
    enabled: yes,
}
FreeBSD-kmods: {
    url: pkg+https://pkg.freebsd.org/${ABI}/kmods_latest_${VERSION_MINOR},
    enabled: no,
    priority: 0,
    signature_type: "fingerprints",
    fingerprints: "/usr/share/keys/pkg",
    mirror_type: "srv",
}
[6-0] # pkg -vv | sed -n '/^Repositories:/,$ p'
Repositories:
  FreeBSD: {
    url             : "pkg+https://pkg.freebsd.org/FreeBSD:14:amd64/latest",
    enabled         : yes,
    priority        : 0,
    mirror_type     : "SRV",
    signature_type  : "FINGERPRINTS",
    fingerprints    : "/usr/share/keys/pkg"
  }
[7-0] # pkg upgrade -r FreeBSD-kmods drm-61-kmod
No repositories are enabled.
[8->3<] # sed -E -i "bak" '/^FreeBSD-kmods:/,/^}/ s/(enabled.*)no/\1yes/'
/usr/local/etc/pkg/repos/FreeBSD.conf
[9-0] # grep -v '^#' /usr/local/etc/pkg/repos/FreeBSD.conf
FreeBSD: {
    url: pkg+https://pkg.freebsd.org/${ABI}/latest,
    enabled: yes,
}
FreeBSD-kmods: {
    url: pkg+https://pkg.freebsd.org/${ABI}/kmods_latest_${VERSION_MINOR},
    enabled: yes,
    priority: 0,
    signature_type: "fingerprints",
    fingerprints: "/usr/share/keys/pkg",
    mirror_type: "srv",
}
[10-0] # pkg -vv | sed -n '/^Repositories:/,$ p'
Repositories:
  FreeBSD: {
    url             : "pkg+https://pkg.freebsd.org/FreeBSD:14:amd64/latest",
    enabled         : yes,
    priority        : 0,
    mirror_type     : "SRV",
    signature_type  : "FINGERPRINTS",
    fingerprints    : "/usr/share/keys/pkg"
  }
  FreeBSD-kmods: {
    url             :
"pkg+https://pkg.freebsd.org/FreeBSD:14:amd64/kmods_latest_3",
    enabled         : yes,
    priority        : 0,
    mirror_type     : "SRV",
    signature_type  : "FINGERPRINTS",
    fingerprints    : "/usr/share/keys/pkg"
  }
[11-0] # pkg upgrade -r FreeBSD-kmods drm-61-kmod
Updating FreeBSD-kmods repository catalogue...
FreeBSD-kmods repository is up to date.
FreeBSD-kmods is up to date.
Checking integrity... done (0 conflicting)
The following 1 package(s) will be affected (of 0 checked):

Installed packages to be UPGRADED:
        drm-61-kmod: 6.1.128.1402000_5 -> 6.1.128.1403000_5 [FreeBSD-kmods]

Number of packages to be upgraded: 1

Proceed with this action? [y/N]: y
[1/1] Upgrading drm-61-kmod from 6.1.128.1402000_5 to 6.1.128.1403000_5...
[1/1] Extracting drm-61-kmod-6.1.128.1403000_5: 100%
[12-0] # pkg query -e '%n=drm-61-kmod' '[%R] %n %v'
[FreeBSD-kmods] drm-61-kmod 6.1.128.1403000_5
[13-0] #


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++ pkg search
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
On 14.2-RELEASE, the -r option enables the FreebSD-kmods 
repository and lists the version in that repository.

On 14.3-RELEASE, however, the -r option does not enable 
the FreeBSD-kmods repository, the package is not found and 
an error code is emitted.
Enabling the FreeBSD-kmods repository shows that the package 
is present in that repository and can be selectively 
searched for and listed.

=== 14.2-RELEASE - pkg search
[8-0] # pkg sea -R -r FreeBSD-kmods '^drm-61-kmod' | egrep
'^name:|^version:|^sum:'
name: "drm-61-kmod"
version: "6.1.128.1402000_5"
sum: "aea67eb0200b9b3b910d7e74eb734292cb74a5d6d7a876108cdc14f6ce7320bc"
[9-0] #

=== 14.3-RELEASE - pkg search
[8-0] # pkg sea -R -r FreeBSD-kmods '^drm-61-kmod' | egrep
'^name:|^version:|^sum:'
[9->1<] # echo $?
1
[10-0] # sed -E -i "bak" '/^FreeBSD-kmods:/,/^}/ s/(enabled.*)no/\1yes/'
/usr/local/etc/pkg/repos/FreeBSD.conf
[11-0] # pkg sea -R '^drm-61-kmod' | egrep '^name:|^version:|^sum:'
name: "drm-61-kmod"
version: "6.1.128.1402000_5"
sum: "a3f886908c70f5a4ad4f606ba43a6159c5ffb3b2db6db479336ed2552217f38e"
name: "drm-61-kmod"
version: "6.1.128.1403000_5"
sum: "291c8a46c7ad369182ae011d9dbfbd824f93fc25b668b1ebd7beae98122b4312"
[12-0] # pkg sea -R -r FreeBSD-kmods '^drm-61-kmod' | egrep
'^name:|^version:|^sum:'
name: "drm-61-kmod"
version: "6.1.128.1403000_5"
sum: "291c8a46c7ad369182ae011d9dbfbd824f93fc25b668b1ebd7beae98122b4312"
[13-0] #


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++ pkg install
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
On 14.2-RELEASE, when no drm-61-kmod is installed and 
when FreeBSD-kmods is disabled, the correct package is
installed.

On 14.3-RELEASE, however, the -r option does not enable 
the FreeBSD-kmods repository, the installation fails and 
an error is emitted.

=== 14.2-RELEASE - pkg install
[7-0] # pkg ins -r FreeBSD-kmods drm-61-kmod
Updating FreeBSD-kmods repository catalogue...
FreeBSD-kmods is up to date.
Checking integrity... done (0 conflicting)
The following 1 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
        drm-61-kmod: 6.1.128.1402000_5 [FreeBSD-kmods]

Number of packages to be installed: 1

The process will require 17 MiB more space.

Proceed with this action? [y/N]: y
[1/1] Installing drm-61-kmod-6.1.128.1402000_5...
[1/1] Extracting drm-61-kmod-6.1.128.1402000_5: 100%
=====
Message from drm-61-kmod-6.1.128.1402000_5:

--
The drm-61-kmod port can be enabled for amdgpu (for AMD
GPUs starting with the HD7000 series / Tahiti) or i915kms (for Intel
APUs starting with HD3000 / Sandy Bridge) through kld_list in
/etc/rc.conf. radeonkms for older AMD GPUs can be loaded and there are
some positive reports if EFI boot is NOT enabled.

For amdgpu: kld_list="amdgpu"
For Intel: kld_list="i915kms"
For radeonkms: kld_list="radeonkms"

Please ensure that all users requiring graphics are members of the
"video" group.

Please note that this package was built for FreeBSD 14.2.
If this is not your current running version, please rebuild
it from ports to prevent panics when loading the module.
[8-0] #

=== 14.3-RELEASE - pkg install
[6-0] # pkg ins -r FreeBSD-kmods drm-61-kmod
No repositories are enabled.
[7->3<] # echo $?
3

-- 
You are receiving this mail because:
You are the assignee for the bug.