Thanks, I'll check it out. I'm confused. Can you tell me if you have this problem with this extension (PHP8 / 7/5>): https://github.com/gtkphp/php-ext-cairo-src checkout PHP-8.0
At the moment I need to check some dependency to try your extension. I'll keep you informed. Best Regards Le jeu. 9 déc. 2021 à 01:20, David Zuelke <[email protected]> a écrit : > That's... sort of... irrelevant for this question; the problem appears > before that step. You could make a tarball of the built extension, > create a .deb archive, whatever; the point is that it should be > installable standalone (think e.g. 'apt-get install php81-imagick'). > > > > On Thu, Dec 9, 2021 at 12:33 AM Glash Gnome <[email protected]> wrote: > > > > 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 < > [email protected]> 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 > >> >
