php / php/php-src

PHP_ADD_EXTENSION_DEP doesn't fail when expected (build system)

Open
#12,797 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Bug Category: Build System Status: Needs Triage
Dominant language
C
Stars
40.4k
Forks
8.1k
Avg merge
2d 13h
Merged PRs (30d)
96

Description

Description

I have the following m4 code: https://github.com/pmmp/ext-pmmpthread/blob/6a516e5b58d326e2dcc23bb75fba6e210d5b313f/config.m4#L33-L44

        CLASSES_SRC="classes/pool.c classes/thread.c classes/thread_safe_array.c classes/thread_safe.c classes/runnable.c classes/worker.c"
        PHP_NEW_EXTENSION(pmmpthread, php_pmmpthread.c $CLASSES_SRC src/copy.c src/monitor.c src/worker.c src/globals.c src/prepare.c src/store.c src/handlers.c src/object.c src/routine.c src/queue.c src/ext_sockets_hacks.c, $ext_shared,, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -Werror=implicit-function-declaration)
        PHP_ADD_BUILD_DIR($ext_builddir/src, 1)
        PHP_ADD_INCLUDE($ext_builddir)

        if test "$PHP_PMMPTHREAD_SOCKETS" != "no"; then
                AC_MSG_NOTICE([Support for passing Socket objects between threads enabled. The sockets extension must be loaded at runtime. You can disable support using --without-pmmpthread-sockets.])
                AC_DEFINE(HAVE_PMMPTHREAD_EXT_SOCKETS_SUPPORT, 1, [Whether pmmpthread supports passing Socket objects between threads])
                PHP_ADD_EXTENSION_DEP(pmmpthread, sockets)
        else
                AC_MSG_NOTICE([Support for passing Socket objects between threads disabled. You can enable support using --with-pmmpthread-sockets.])
        fi
fi

When using --disable-all or --disable-sockets in conjunction with --with-pmmpthread-sockets, I expect the configure command to fail (because of the PHP_ADD_EXTENSION_DEP(pmmpthread, sockets)), but it doesn't.
The build proceeds and results in a compile error due to sockets being disabled.

Similar code for Windows works correctly.

PHP Version

PHP 8.2 git 6a914cb7a50fafbda38a4d8acce3a06b97dbd994

Operating System

WSL2 Ubuntu 20.04

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the linked config.m4 example and trace PHP_ADD_EXTENSION_DEP(pmmpthread, sockets) through the configure-generation macros. Reproduce with --disable-all or --disable-sockets together with --with-pmmpthread-sockets, then compare the Unix path with the Windows behavior; done when configure rejects the missing dependency before compilation.

Written by the indexing model from the issue text.

Assessment

Tech stack
php
Domain
build-system
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.