On 2020-04-18 20:42, Dale wrote:
Steve Freeman wrote:
I am trying to eliminate PHP 7.3 from my system.  But I am having
trouble building dev-php/pecl-apcu-5.1.18 with support for PHP 7.4.

I am getting confusing output regarding whether pecl-apcu can be built
with PHP 7.4 support.  It is working just fine with PHP 7.3 (until I
changed eselect php to 7.4, which broke things as I expected).

Currently installed are:
# equery l php pecl-apcu
 * Searching for php ...
[IP-] [  ] dev-lang/php-7.3.17:7.3
[IP-] [  ] dev-lang/php-7.4.5:7.4

 * Searching for pecl-apcu ...
[IP-] [  ] dev-php/pecl-apcu-5.1.18:7


# grep PHP_TARGETS /etc/portage/make.conf
PHP_TARGETS="php7-4"

# eselect php list cli
  [1]   php7.3
  [2]   php7.4 *
# eselect php list apache2
  [1]   php7.3
  [2]   php7.4 *
The other eselect PHP modules are not set.


When I try to re-emerge pecl-apcu, I get output which confuses me:
# emerge -pv pecl-apcu

These are the packages that would be merged, in order:

Calculating dependencies /

!!! Problem resolving dependencies for dev-php/pecl-apcu
... done!

!!! The ebuild selected to satisfy "pecl-apcu" has unmet requirements.
- dev-php/pecl-apcu-5.1.18::gentoo USE="lock-pthreadrw mmap
-lock-pthreadmutex -lock-semaphore -lock-spinlock"
PHP_TARGETS="(-php7-1) -php7-2 -php7-3 (-php7-4)"

  The following REQUIRED_USE flag constraints are unsatisfied:
    any-of ( php_targets_php7-1 php_targets_php7-2 php_targets_php7-3
php_targets_php7-4 )

  The above constraints are a subset of the following complete
expression:
    exactly-one-of ( lock-pthreadmutex lock-pthreadrw lock-spinlock
lock-semaphore ) any-of ( php_targets_php7-1 php_targets_php7-2
php_targets_php7-3 php_targets_php7-4 )


If I understand correctly, PHP_TARGETS="(-php7-1) -php7-2 -php7-3
(-php7-4)" above means that I cannot use 7.1 nor 7.4 (correct me if
I'm wrong).  But I do not understand why, since all four versions of
PHP are listed in the REQUIRED_USE line underneath.


Another thing that confuses me is that PHP 7.4 isn't even listed in
the output below (neither enabled nor disabled, but missing entirely):
# equery u pecl-apcu
[ Legend : U - final flag setting for installation]
[        : I - package is installed with flag     ]
[ Colors : set, unset                             ]
 * Found these USE flags for dev-php/pecl-apcu-5.1.18:
 U I
 - - lock-pthreadmutex  : Enable pthread mutex locking
 + + lock-pthreadrw     : Enable pthread read/write locking
 - - lock-semaphore     : Enable semaphore locks instead of fcntl
 - - lock-spinlock      : Enable spin locks (EXPERIMENTAL)
 + + mmap               : Add mmap (memory map) support
 - - php_targets_php7-2 : Build against PHP 7.2
 - + php_targets_php7-3 : Build against PHP 7.3


However, all four PHP versions seem to be supported by the ebuild,
dev-php/pecl-apcu-5.1.18.ebuild:
USE_PHP="php7-1 php7-2 php7-3 php7-4"

Can anyone explain why php7-4 is either disallowed or missing, when
the ebuild seems to allow it?

Thanks.




First, my emerge output decoder ring isn't that great.  There are a few
on this list that can decode it pretty well, I'm not one of them but I
try.  ;-)

This is the interesting bit to me. 


!!! The ebuild selected to satisfy "pecl-apcu" has unmet requirements.
- dev-php/pecl-apcu-5.1.18::gentoo USE="lock-pthreadrw mmap
-lock-pthreadmutex -lock-semaphore -lock-spinlock"
PHP_TARGETS="(-php7-1) -php7-2 -php7-3 (-php7-4)"

  The following REQUIRED_USE flag constraints are unsatisfied:
    any-of ( php_targets_php7-1 php_targets_php7-2 php_targets_php7-3
php_targets_php7-4 )

  The above constraints are a subset of the following complete expression:
    exactly-one-of ( lock-pthreadmutex lock-pthreadrw lock-spinlock
lock-semaphore ) any-of ( php_targets_php7-1 php_targets_php7-2
php_targets_php7-3 php_targets_php7-4 )


Note in the first part it has PHPTARGETS= and that php7-4 is shown as
disabled.  Why is that?  Is it disabled in package.use or do you have to
manually enable it in package.use?  Since the others are also disabled,
is that setting correct somehow??  The way it shows it, all PHP is
disabled which doesn't make sense to me. 

I'd do a grep -r php /etc/portage/ and see if it shows some old entry
that needs to be changed or even removed, or possibly one added.  One
thing I've done and seen other post about, double entries.  You add a
entry at the top of a file and there is a older entry further down. 
Whichever emerge reads last is the one it uses.  It tends to ignore the
previous entry.  If you forget the old one is there, it makes your brain
go wonky.  It doesn't help emerge either. 

Also, equery list -p may prove helpful if this reply or someone with a
better decoder ring doesn't come up with a hint. 

Hope that helps, given my decoder ring is not great.  lol

Dale

:-)  :-) 

Good suggestion. I didn't have anything like that. Over the years, I've developed the habit of keeping entries in alphabetical order and never allowing anything to automatically add to the file. Thanks for the help.

Reply via email to