ports/188708: ports framework CONFLICT_INSTALL regression with staged ports

Olli Hauer ohauer at FreeBSD.org
Wed Apr 16 23:00:00 UTC 2014


>Number:         188708
>Category:       ports
>Synopsis:       ports framework CONFLICT_INSTALL regression with staged ports
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Apr 16 23:00:00 UTC 2014
>Closed-Date:
>Last-Modified:
>Originator:     Olli Hauer
>Release:        
>Organization:
>Environment:


>Description:
During the fix for www/mod_python3[35] I found an interesting issue during pkg add/install.

Conflict directives from the ports:

mod_python33/Makefile
CONFLICTS_INSTALL=      ap2[24]-mod_python3[^3]*

mod_python35/Makefile
CONFLICTS_INSTALL=      ap2[24]-mod_python3[^5]*


Having one port already installed, then the other one complains during make (package) => OK

Installing the new package of the conflicting port with pkg add work/pkg/$PKGNAME fails => OK

Executing make install => executes @exec from pkg-plist but install is stopped later by pkg


>How-To-Repeat:
$> sudo pkg add packages/All/ap22-mod_python35-3.5.0_1.txz
Installing ap22-mod_python35-3.5.0_1...[preparing module `python' in /usr/local/etc/apache22/httpd.conf]

$> grep python_module /usr/local/etc/apache22/httpd.conf
#LoadModule python_module      libexec/apache22/mod_python.so

$> sudo sed -i '' '/LoadModule python_module/d' /usr/local/etc/apache22/httpd.conf
$> grep python_module /usr/local/etc/apache22/httpd.conf
=> no results, now try to install mod_python33

$> cd www/mod_python33
$> make package

===>  ap22-mod_python33-3.3.1_6 conflicts with installed package(s):
      ap22-mod_python35-3.5.0_1
....
===>  Building package for ap22-mod_python33-3.3.1_6


Now after package building INSTALL_CONFLICTTS is no longer enforced by the framework.
Installation will be stopped by pkg after @exec from pkg-plist is already done.
Remember python_module was removed before from httpd.conf


$> sudo make install
===>  Installing for ap22-mod_python33-3.3.1_6
===>   ap22-mod_python33-3.3.1_6 depends on file: /usr/local/bin/python2.7 - found
===>   ap22-mod_python33-3.3.1_6 depends on file: /usr/local/sbin/apxs - found
===>  Checking if www/mod_python33 already installed
===>   Registering installation for ap22-mod_python33-3.3.1_6
[preparing module `python' in /usr/local/etc/apache22/httpd.conf]
Installing ap22-mod_python33-3.3.1_6...pkg-static: ap22-mod_python33-3.3.1_6 conflicts with ap22-mod_python35-3.5.0_1 (installs files into the same place).  Problematic file: /usr/local/lib/python2.7/site-packages/mod_python/Cookie.py
...
*** Error code 70

Stop in /usr/svn_ports/www/mod_python33.


Surprise, the python module was registered by the @exec directive from pkg-plist

$> www/mod_python33 # grep python_ /usr/local/etc/apache22/httpd.conf
#LoadModule python_module      libexec/apache22/mod_python.so



>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-ports-bugs mailing list