Right. > configure && make && make install works. For my personal information : Now which command should I use to get the error ?
Le jeu. 9 déc. 2021 à 17:34, David Zuelke <dzue...@salesforce.com> a écrit : > Of course a 'make && make install' works. That is *not* what's broken > since 8.1, and not what I'm talking about. > > > On Thu, Dec 9, 2021 at 4:53 PM Glash Gnome <glash.gn...@gmail.com> wrote: > > > > Thanks a lot. > > I use PHP 8.2.0-dev (cli) (built: Dec 8 2021 23:53:19) (NTS) > > And I can't reproduce the error with my build procedure. > > But, if I use "make -d install' insteadof "make && make install' I get > errors. > > > > Can you confirm it ? > > > > > > > > > > > > Le jeu. 9 déc. 2021 à 03:19, David Zuelke <dzue...@salesforce.com> a > écrit : > >> > >> Yes, of course; it happens with any extension, because the Makefile > >> generated by 8.1's 'phpize' now lists those header dependencies even > >> for 'make install'. > >> > >> Like I described, you can reproduce this by 'make'ing the extension, > >> then moving the PHP you used to build the extension, then running > >> 'make install' (sample with your ext, on my build environment for > >> Heroku's PHP support): > >> > >> root@8f6813d6dc88:/app# export PATH=/app/.heroku/php/bin:$PATH > >> root@8f6813d6dc88:/app# which php > >> /app/.heroku/php/bin/php > >> root@8f6813d6dc88:/app# php -v > >> PHP 8.1.0 (cli) (built: Dec 8 2021 20:43:30) (NTS) > >> Copyright (c) The PHP Group > >> Zend Engine v4.1.0, Copyright (c) Zend Technologies > >> with Zend OPcache v8.1.0, Copyright (c), by Zend Technologies > >> > >> root@8f6813d6dc88:/app# mkdir /tmp/build-ext-cairo > >> root@8f6813d6dc88:/app# cd /tmp/build-ext-cairo/ > >> root@8f6813d6dc88:/tmp/build-ext-cairo# git clone > >> https://github.com/gtkphp/php-ext-cairo-src > >> Cloning into 'php-ext-cairo-src'... > >> … > >> > >> root@8f6813d6dc88:/tmp/build-ext-cairo# cd php-ext-cairo-src/ > >> root@8f6813d6dc88:/tmp/build-ext-cairo/php-ext-cairo-src# git checkout > >> origin/PHP-8.0 > >> Note: checking out 'origin/PHP-8.0'. > >> > >> You are in 'detached HEAD' state. You can look around, make experimental > >> … > >> > >> HEAD is now at 2cd2ce9 Fix test( compatibility PHP-8) > >> > >> root@8f6813d6dc88:/tmp/build-ext-cairo/php-ext-cairo-src# phpize > >> Configuring for: > >> PHP Api Version: 20210902 > >> Zend Module Api No: 20210902 > >> Zend Extension Api No: 420210902 > >> > >> root@8f6813d6dc88:/tmp/build-ext-cairo/php-ext-cairo-src# ./configure > >> --prefix=/app/.heroku/php > >> … > >> > >> root@8f6813d6dc88:/tmp/build-ext-cairo/php-ext-cairo-src# make -j9 > >> … > >> Build complete. > >> Don't forget to run 'make test'. > >> > >> root@8f6813d6dc88:/tmp/build-ext-cairo/php-ext-cairo-src# mv > >> /app/.heroku/php{,_} > >> > >> root@8f6813d6dc88:/tmp/build-ext-cairo/php-ext-cairo-src# make install > >> make: *** No rule to make target > >> '/app/.heroku/php/include/php/main/php.h', needed by 'cairo.lo'. > >> Stop. > >> > >> > >> On Thu, Dec 9, 2021 at 2:30 AM Glash Gnome <glash.gn...@gmail.com> > wrote: > >> > > >> > 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 <dzue...@salesforce.com> 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 <glash.gn...@gmail.com> > 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 < > 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 > >> >> >> >