Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:116594 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 62959 invoked from network); 8 Dec 2021 23:20:03 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 8 Dec 2021 23:20:03 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id BE0D4180511 for ; Wed, 8 Dec 2021 16:20:36 -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,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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-yb1-f177.google.com (mail-yb1-f177.google.com [209.85.219.177]) (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 16:20:36 -0800 (PST) Received: by mail-yb1-f177.google.com with SMTP id v138so9918669ybb.8 for ; Wed, 08 Dec 2021 16:20:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=salesforce.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=/0hnzNJMk+7P8QPuXZAYwPE0DupyDbdRH7KqbCAsG44=; b=KUgkd23AzMYXQrHJ79un21sA0a1sgpjAh9JFu+Nw4jmRHtt+x6trv0N8bBSyHYB2sI +k7NmIJoXj8yuVqUS90323V5FnjjoIZrebcbOF08flDlk6T2OHrR/viRRoCHdPZVFPrK 1L3ivSzWv40o7TKKTXIxpxd3Bf30LD0kYSeYk= 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:content-transfer-encoding; bh=/0hnzNJMk+7P8QPuXZAYwPE0DupyDbdRH7KqbCAsG44=; b=bpt2/Bs3s9yyEqf44F6t2Lc/ckDmr0F88aQ4CvsgCTvph7tx59Z2x4tOt2U70FMc/j 2/l5MKhTfj0BVORcuW968KLn9znkLDsgZypmSyGjeO0OpLHvvjF0VwS7n7QBYEL6Feb2 MyumoUeckZGVTvT7mBCpmyd3VGVifyycbW9qBe43TxdAeQWa/1N/NoizuYV4WGUSo9M4 i2Dx9TjSf8Gy2FE52qQoThHqkssFMSb9XQZPF1Ps6si5En47wFLJzn63nk0hZEF/Ze6O uv/BTMWi3t9KgTlIWJx1q0mRIFTWUhMUuN/uUnL60fw6vJuzu9ELzPG2xvTmxjNRuxmm KFRA== X-Gm-Message-State: AOAM530cO1VsqvrTb775cqhPF35mezoOiYJoFqXz5W45JY1oAdptSlNF 8kBYVUdsyZ7TXiHoVjQ9HlJHt1gRVMdZ+1zi3CPv0rWxNdc= X-Google-Smtp-Source: ABdhPJwf6bhvaMEVR+qyhYl8EZW+Z6hBxBnAzQRVzbBMmvSi74m6cXyA/vK5CIfyXog0eR+x4ozQl1GwBZXQaDV8dis= X-Received: by 2002:a05:6902:1504:: with SMTP id q4mr2583920ybu.43.1639009235379; Wed, 08 Dec 2021 16:20:35 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: Reply-To: David Zuelke Date: Thu, 9 Dec 2021 01:20:24 +0100 Message-ID: To: Glash Gnome Cc: PHP internals Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Subject: Re: [PHP-DEV] Why do PHP 8.1 extensions need PHP headers during make install (worked in <8.1)? From: internals@lists.php.net ("David Zuelke via internals") 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 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/p= hp.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/p= hp.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/p= hp.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 >>