php / php/php-src

PHP fails to build with macOS libraries (for example ldap)

Open
#10,680 5 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

The following code:

https://github.com/Homebrew/homebrew-core/blob/4e4535e1612ecb88c24103bdefa11fa620162327/Formula/php@8.1.rb

    system "./configure", *args
    system "make"
    system "make", "install"

Resulted in this output:

  Undefined symbols for architecture arm64:
    "_ldap_create_passwordpolicy_control", referenced from:
        _zif_ldap_exop_passwd in ldap.o
    "_ldap_create_sort_control_value", referenced from:
        __php_ldap_controls_from_array in ldap.o
  Undefined symbols for architecture arm64:
    "_ldap_create_passwordpolicy_control", referenced from:
        _zif_ldap_exop_passwd in ldap.o
    "_ldap_create_vlv_control_value", referenced from:
        __php_ldap_controls_from_array in ldap.o
    "_ldap_create_sort_control_value", referenced from:
        __php_ldap_controls_from_array in ldap.o
    "_ldap_destroy", referenced from:
        _ldap_link_free_obj in ldap.o
        _zif_ldap_unbind in ldap.o
    "_ldap_create_vlv_control_value", referenced from:
        __php_ldap_controls_from_array in ldap.o
    "_ldap_destroy", referenced from:
        _ldap_link_free_obj in ldap.o
        _zif_ldap_unbind in ldap.o
    "_ldap_parse_passwordpolicy_control", referenced from:
        __php_ldap_controls_to_array in ldap.o
  Undefined symbols for architecture arm64:
    "_ldap_create_passwordpolicy_control", referenced from:
        _zif_ldap_exop_passwd in ldap.o
    "_ldap_parse_passwordpolicy_control", referenced from:
        __php_ldap_controls_to_array in ldap.o
    "_tidyLibraryVersion", referenced from:
        _zm_info_tidy in tidy.o
    "_ldap_create_sort_control_value", referenced from:
        __php_ldap_controls_from_array in ldap.o
    "_tidyLibraryVersion", referenced from:
        _zm_info_tidy in tidy.o
    "_ldap_create_vlv_control_value", referenced from:
        __php_ldap_controls_from_array in ldap.o
  ld: symbol(s) not found for architecture arm64
  ld: symbol(s) not found for architecture arm64
    "_ldap_destroy", referenced from:
        _ldap_link_free_obj in ldap.o
        _zif_ldap_unbind in ldap.o

But I expected this output instead:

I expected the build to succeed.


Homebrew currently carries a patch for this, which was submitted in https://github.com/php/php-src/pull/3472, but denied since PHP 7.4 used pkg config.

PHP Version

PHP 8.1.16

Operating System

macOS 13.2.1

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 Homebrew Formula/php@8.1.rb configure and make invocation, then review the linked Homebrew patch and PHP pull request for the intended build change. Reproduce the PHP 8.1.16 build on macOS 13.2.1 arm64 with LDAP and tidy enabled; done means the build completes without the reported undefined symbols.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, macos, php
Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.