Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:116595 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 67178 invoked from network); 9 Dec 2021 00:29:33 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 9 Dec 2021 00:29:33 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 2B8D21804E3 for ; Wed, 8 Dec 2021 17:30:08 -0800 (PST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,HTML_MESSAGE, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.2 X-Spam-ASN: AS15169 209.85.128.0/17 X-Spam-Virus: No X-Envelope-From: Received: from mail-lf1-f45.google.com (mail-lf1-f45.google.com [209.85.167.45]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Wed, 8 Dec 2021 17:30:07 -0800 (PST) Received: by mail-lf1-f45.google.com with SMTP id u3so9157390lfl.2 for ; Wed, 08 Dec 2021 17:30:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=8s1H3DalD5iXquh6UDS7qKoolFBNcpR/zY9FrhBbMGU=; b=C0BqGdGdVnY64bD/1wTzsslEygDSFGpAjJO/agIhAtg6Yx8wfpStWavaloGTKCEfZx psDQMPnj0h8NOkMJWRpTV5YoOCQk6Sh5V6rpYx2mrQ7Oa3JQYhZdAcfeLXRyQ9hl62k/ coY1sGKwtCawbUVIXsnw/o2EuwMC06BWoipnwQxTp9UbThG4ALVX0TtRoa+uTY+XaQpB 1aFQHRvDngBdvPJHEqgA3YkWWOCoZOJnHcaFQ0Doc3VdnMqHt33SwYH9STb5Kqe0lJPQ MbKR1B+Z2m7/Jxk9MC1QBqT8lMaZOWSacj+Dzy2rmXpq1cVDBWqD0ZBN6YstnJ06cVAW 9W4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=8s1H3DalD5iXquh6UDS7qKoolFBNcpR/zY9FrhBbMGU=; b=VTFN5h6lVcwoDv+2nt7uUyDTfWEwnGsRsrhHhMjQBlzGEGFzQ7u62GmjzhkGNRW10E AD1oalIrn2HkYRVrBnTv2bY2swLtpmHMeADs6PZirme/YO/fY1CO6oZ5OzpYWTSHOtFo kVz0/07MDcd4KNH2eoJ8p78j1cawSldismMIKEiZhh2LedaAvvzagD6eNQn8ive2wZiR w/MfVL9UuX2Ibj++zlVSKILxIud/etPodLkMZgYMt2kyXNK4MDXibK/dnmKsouJNMAF9 GN0V1nsWKFjTEy80SZFIeQvd/UdMBdEsTI8v/xZhOrBn6gvnL3Q6YTrDa0amZNWXjYFR cEuQ== X-Gm-Message-State: AOAM533lkrEuwozm6eKbhonrEJ0chuM/vgTUsfERY+Cv5Ac2z6/avQF+ CTFtvNkYMjP435GtI3dHlCBUdvrjXZfo5synr/g= X-Google-Smtp-Source: ABdhPJxYmSXoxGRnasSafGKbwU7MVDc7m4VSf3NBle9v+5O3XvR0jA/Cd27/jLWhQANHp3ET7Ril21kuivjcTzqoDFI= X-Received: by 2002:a19:e046:: with SMTP id g6mr2917165lfj.176.1639013406297; Wed, 08 Dec 2021 17:30:06 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: Date: Thu, 9 Dec 2021 02:29:55 +0100 Message-ID: To: David Zuelke Cc: PHP internals Content-Type: multipart/alternative; boundary="000000000000dd525a05d2ac8bc6" Subject: Re: [PHP-DEV] Why do PHP 8.1 extensions need PHP headers during make install (worked in <8.1)? From: glash.gnome@gmail.com (Glash Gnome) --000000000000dd525a05d2ac8bc6 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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=C3=A9c. 2021 =C3=A0 01:20, David Zuelke a =C3=A9crit : > 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 wrote= : > > > > Hello, > > > > Can you tell me what the program is in step 7) > > > > > package up > > > > Thanks you, > > > > > > Le mer. 8 d=C3=A9c. 2021 =C3=A0 16:25, David Zuelke via internals < > internals@lists.php.net> a =C3=A9crit : > >> > >> 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 \ > >> =E2=80=A6 (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'. > >> =E2=80=A6 > >> 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/ph= p.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/ph= p.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=3D$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 > >> > --000000000000dd525a05d2ac8bc6--