Re: pkg-2.4.1 broken?

Stefan Esser <[email protected]>
Newsgroups gmane.os.freebsd.devel.ports
Message-ID <[email protected]>
Am 05.11.25 um 12:35 schrieb Jan Henrik Sylvester:
> On 11/5/25 1:23 AM, Tatsuki Makino wrote:
>> portmaster is merely one of the entities through which that operation is 
>> carried out.
> 
> I do not think so. Line 3913 and following of portmaster explicitly removes / 
> usr/local/lib/compat/pkg (in many cases):
> 
> [ -z "$temp" ] && temp=`find $LOCALBASE_COMPAT -type d -empty 2>/dev/null`
> if pm_isdir "$temp"; then
>      pm_sv Deleting the empty $LOCALBASE_COMPAT
>      pm_rmdir_s $temp
> fi
> unset temp

I have no idea why this was added by the original author, but I'm going
to remove that section. In fact /usr/local/lib/compat/pkg is neither
defined in the base system's mtree files, nor included anywhere in the
*.mk files, except for

PKGCOMPATDIR?=		${LOCALBASE}/lib/compat/pkg

in /usr/ports/Mk/bsd.port.mk - but without ${PKGCOMPATDIR} being used
anywhere in the base system or ports system.

The package command has grown some support for compat/pkg if the
BACKUP_LIBRARIES option of pkg upgrade is used, but that does not
affect package building.

> After that, you cannot create a package of pkg anymore. (If you let portmaster 
> itself create a package in the same run, it happens before that line.)

I have tried to recreate the issue by renaming the compat/pkg directory
out of the way and then building the pkg command.

And the build did actually fail, but not for the reason I expected: It
failed when portmaster was creating a backup of the previously installed
version before replacing it with the newly built one:

===>>> Creating a backup package for old version pkg-2.3.1
Creating package for pkg-2.3.1
pkg-static: dir '/usr/local/lib/compat/pkg' is missing
pkg-static: package creation failed

I could not make the build fail due to a  missing compat/pkg directory
in any other way than when creating a backup package.

But the OP did have "pkg" not "pkg-static" in the posted log message,
which seems to indicate that it was actually output from "make package",
and that command makes pkg build the package from the contents of the
work/stage directory only, with no regard to the presence of compat/pkg
on the base system.

> BTW: I was trying to output the verbose message to see when it happens, but 
> pm_sv needs PM_SU_VERBOSE to be set, which is never set by portmaster, but 
> unset at the beginning if you are root. (And I should stop looking here, 
> because the find command should probably have a depth 0 check...)

There shouldn't be any directories below compat/pkg, and therefore a
depth check would not make a difference.

Regards, STefan
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.