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
> >> >> >>
>

Reply via email to