[Bug 277411] ports-mgmt/pkg: @postunexec command in pkg-plist isn't executed when package is upgraded with `pkg upgrade`

From: <bugzilla-noreply_at_freebsd.org>
Date: Fri, 01 Mar 2024 08:39:15 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=277411

            Bug ID: 277411
           Summary: ports-mgmt/pkg: @postunexec command in pkg-plist isn't
                    executed when package is upgraded with `pkg upgrade`
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: Individual Port(s)
          Assignee: pkg@FreeBSD.org
          Reporter: yasu@freebsd.org
          Assignee: pkg@FreeBSD.org
             Flags: maintainer-feedback?(pkg@FreeBSD.org)

Created attachment 248845
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=248845&action=edit
Patch to add misc/foo to ports tree

Attached patch add 'misc/foo', a sample port to reproduce the problem, to the
ports tree.

misc/foo is very simple. It installs only one shell script 'foo' to
${PREFIX}/bin. But pkg-plist does something more.

----------------------------------------------------------------------
% pwd
/usr/ports/misc/foo
% cat pkg-plist
bin/foo
@preexec echo "Executing @preexec command of %%PKGNAME%%."
@postexec echo "Executing @postexec command of %%PKGNAME%%."
@preunexec echo "Executing @preunexec command of %%PKGNAME%%."
@postunexec echo "Executing @postunexec command of %%PKGNAME%%."
%
----------------------------------------------------------------------

It includes @preexec/@postexec/@preunexec/@postunexec commands showing message
that each command is executed.

I build the port with poudriere and install the package with `pkg install`.
Then I get following result.

----------------------------------------------------------------------
# pkg install -y foo
Updating Poudriere repository catalogue...
Fetching meta.conf: 100%    163 B   0.2kB/s    00:01    
Fetching packagesite.pkg: 100%   29 KiB  30.1kB/s    00:01    
Processing entries: 100%
Poudriere repository update completed. 103 packages processed.
All repositories are up to date.
Checking integrity... done (0 conflicting)
The following 1 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
        foo: 1.0

Number of packages to be installed: 1
[1/1] Installing foo-1.0...
Executing @preexec command of foo-1.0.
[1/1] Extracting foo-1.0: 100%
Executing @postexec command of foo-1.0.
#
----------------------------------------------------------------------

And if I uninstall the package with `pkg delete` then I get following result.

----------------------------------------------------------------------
# pkg delete -y foo
Checking integrity... done (0 conflicting)
Deinstallation has been requested for the following 1 packages (of 0 packages
in the universe):

Installed packages to be REMOVED:
        foo: 1.0

Number of packages to be removed: 1
[1/1] Deinstalling foo-1.0...
Executing @preunexec command of foo-1.0.
[1/1] Deleting files for foo-1.0: 100%
Executing @postunexec command of foo-1.0.
#
----------------------------------------------------------------------

All of @preexec/@postexec/@preunexec/@postunexec work as is expected

Next, I install foo-1.0 again, bump PORTREVISION of Makefile, rebuild the
package with poudriere, and upgrade from 1.0 to 1.0_1 with `pkg upgrade`. Then
I get following result.

----------------------------------------------------------------------
# pkg info -aq | fgrep foo
foo-1.0
# pkg upgrade -y
Updating Poudriere repository catalogue...
Fetching meta.conf: 100%    163 B   0.2kB/s    00:01    
Fetching packagesite.pkg: 100%   29 KiB  30.0kB/s    00:01    
Processing entries: 100%
Poudriere repository update completed. 103 packages processed.
All repositories are up to date.
Checking for upgrades (2 candidates): 100%
Processing candidates (2 candidates): 100%
Checking integrity... done (0 conflicting)
The following 1 package(s) will be affected (of 0 checked):

Installed packages to be UPGRADED:
        foo: 1.0 -> 1.0_1

Number of packages to be upgraded: 1
[1/1] Upgrading foo from 1.0 to 1.0_1...
Executing @preexec command of foo-1.0_1.
[1/1] Extracting foo-1.0_1: 100%
Executing @preunexec command of foo-1.0.
Executing @postexec command of foo-1.0_1.
root@rolling-vm-freebsd4[73]#
----------------------------------------------------------------------

While @preexec of foo-1.0_1, @preunexec of foo-1.0 and @posttexec of foo-1.0_1
are executed, @postunexec of foo-1.0 isn't executed.

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