Hello,

Can you tell me what the program is in step 7)

> package up

Thanks you,


Le mer. 8 déc. 2021 à 16:25, David Zuelke via internals <
internals@lists.php.net> a écrit :

> Hi all,
>
> When building shared extensions for PHP for the purpose of packaging
> and distributing the builds, the build environment obviously needs PHP
> installed in the destination directory structure (for headers, phpize,
> and so forth).
>
> But the resulting archive of the built extension should only contain
> the shared object, and possibly the headers.
>
> A common pattern to do achieve is:
>
> 1) download/extract PHP to $installdir
> 2) download/extract extension to $builddir
> 3) phpize in $builddir
> 4) make in $builddir
> 5) rm -rf $installdir
> 6) make install
> 7) package up $installdir
>
> Step 6 installs the extension into $installdir - you end up with
> /foo/bar/lib/php/extensions/no-debug-non-zts-20210902/something.so
>
> That doesn't work with PHP 8.1 anymore - the Makefile generated by
> phpize now contains an include directive at the top level (near the
> bottom), e.g.:
>
> -include src/php_raphf_api.dep
>
> Which lists not only the extension's headers, but also all of PHP's
> (in include/main, include/Zend, and so forth):
>
> src/php_raphf_api.lo: /tmp/bob-2eBC7e/raphf-2.0.1/src/php_raphf_api.c \
>  config.h /app/.heroku/php/include/php/main/php.h \
>  /app/.heroku/php/include/php/main/php_version.h \
>  /app/.heroku/php/include/php/Zend/zend_stream.h \
>  /app/.heroku/php/include/php/main/streams/php_stream_context.h \
> … (many more from main/ and Zend/ here)
>  /app/.heroku/php/include/php/ext/standard/info.h php_raphf.h \
>  php_raphf_api.h php_raphf.h
>
> This results in the 'make install' failing if, like in our step 5
> above, PHP itself has been (re-)moved since the 'make' (output that
> follows is from a 'make -d install'):
>
>       Considering target file 'src/php_raphf_api.lo'.
> …
>         Considering target file '/app/.heroku/php/include/php/main/php.h'.
>          File '/app/.heroku/php/include/php/main/php.h' does not exist.
>          Looking for an implicit rule for
> '/app/.heroku/php/include/php/main/php.h'.
>          Trying pattern rule with stem 'php'.
>          Trying implicit prerequisite
> '/app/.heroku/php/include/php/main//tmp/bob-1830jl/raphf-2.0.1/src/php.h'.
>          Trying pattern rule with stem 'php.h'.
>          Trying implicit prerequisite
> '/app/.heroku/php/include/php/main/php.h,v'.
>          Trying pattern rule with stem 'php.h'.
>          Trying implicit prerequisite
> '/app/.heroku/php/include/php/main/RCS/php.h,v'.
>          Trying pattern rule with stem 'php.h'.
>          Trying implicit prerequisite
> '/app/.heroku/php/include/php/main/RCS/php.h'.
>          Trying pattern rule with stem 'php.h'.
>          Trying implicit prerequisite
> '/app/.heroku/php/include/php/main/s.php.h'.
>          Trying pattern rule with stem 'php.h'.
>          Trying implicit prerequisite
> '/app/.heroku/php/include/php/main/SCCS/s.php.h'.
>          Trying pattern rule with stem 'php'.
>          Trying implicit prerequisite
> '/app/.heroku/php/include/php/main//tmp/bob-1830jl/raphf-2.0.1/src/php.h'.
>          Looking for a rule with intermediate file
> '/app/.heroku/php/include/php/main//tmp/bob-1830jl/raphf-2.0.1/src/php.h'.
>           Avoiding implicit rule recursion.
>           Trying pattern rule with stem 'php.h'.
>           Trying implicit prerequisite
>
> '/app/.heroku/php/include/php/main//tmp/bob-1830jl/raphf-2.0.1/src/php.h,v'.
>           Trying pattern rule with stem 'php.h'.
>           Trying implicit prerequisite
>
> '/app/.heroku/php/include/php/main//tmp/bob-1830jl/raphf-2.0.1/src/RCS/php.h,v'.
>           Trying pattern rule with stem 'php.h'.
>           Trying implicit prerequisite
>
> '/app/.heroku/php/include/php/main//tmp/bob-1830jl/raphf-2.0.1/src/RCS/php.h'.
>           Trying pattern rule with stem 'php.h'.
>           Trying implicit prerequisite
>
> '/app/.heroku/php/include/php/main//tmp/bob-1830jl/raphf-2.0.1/src/s.php.h'.
>           Trying pattern rule with stem 'php.h'.
>           Trying implicit prerequisite
>
> '/app/.heroku/php/include/php/main//tmp/bob-1830jl/raphf-2.0.1/src/SCCS/s.php.h'.
>          No implicit rule found for
> '/app/.heroku/php/include/php/main/php.h'.
>          Finished prerequisites of target file
> '/app/.heroku/php/include/php/main/php.h'.
>         Must remake target '/app/.heroku/php/include/php/main/php.h'.
> make: *** No rule to make target
> '/app/.heroku/php/include/php/main/php.h', needed by
> 'src/php_raphf_api.lo'.  Stop.
>
> Building extensions for 8.0 or lower doesn't generate such a
> `src/php_EXTNAME_api.dep` file.
>
> Is this intentional? If so, could someone explain the purpose of the
> change? I couldn't find anything insightful when browsing the Git
> logs.
>
> The workaround is to
>
> make INSTALL_ROOT=$SOMETEMPDIR install
>
> and then move things into place for packaging, but I was still
> wondering why this change was made in the first place.
>
> Thanks and greetings,
>
> David
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: https://www.php.net/unsub.php
>
>

Reply via email to