pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/lang/pear



Module Name:    pkgsrc
Committed By:   jperkin
Date:           Mon Jun 16 09:21:45 UTC 2025

Modified Files:
        pkgsrc/lang/pear: Makefile PLIST distinfo
Added Files:
        pkgsrc/lang/pear/patches: patch-src_PEAR_Start.php
            patch-src_PEAR_Start_CLI.php
Removed Files:
        pkgsrc/lang/pear/files: go-pear.php
        pkgsrc/lang/pear/patches: patch-PEAR_Config.php

Log Message:
pear: Overhaul how the package is built.

Stop using go-pear, it performs network access during the install phase,
and was a patched version from many years ago with undocumented changes,
making it difficult to maintain.  Instead use pearweb_phars which bundles
all of the required packages and provides a newer installer.

Tested on SmartOS, macOS, and NetBSD, with diffs performed between the
resulting binaries.  There are some additions to pear.conf as a result of
us previously using a go-pear that hadn't been updated in over 10 years,
but there do not appear to be any regressions.

Bump PKGREVISION.  Approved during freeze by Benny.


To generate a diff of this commit:
cvs rdiff -u -r1.68 -r1.69 pkgsrc/lang/pear/Makefile
cvs rdiff -u -r1.13 -r1.14 pkgsrc/lang/pear/PLIST
cvs rdiff -u -r1.51 -r1.52 pkgsrc/lang/pear/distinfo
cvs rdiff -u -r1.6 -r0 pkgsrc/lang/pear/files/go-pear.php
cvs rdiff -u -r1.1 -r0 pkgsrc/lang/pear/patches/patch-PEAR_Config.php
cvs rdiff -u -r0 -r1.1 pkgsrc/lang/pear/patches/patch-src_PEAR_Start.php \
    pkgsrc/lang/pear/patches/patch-src_PEAR_Start_CLI.php

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/lang/pear/Makefile
diff -u pkgsrc/lang/pear/Makefile:1.68 pkgsrc/lang/pear/Makefile:1.69
--- pkgsrc/lang/pear/Makefile:1.68      Sat Jun  7 15:58:49 2025
+++ pkgsrc/lang/pear/Makefile   Mon Jun 16 09:21:45 2025
@@ -1,9 +1,14 @@
-# $NetBSD: Makefile,v 1.68 2025/06/07 15:58:49 taca Exp $
+# $NetBSD: Makefile,v 1.69 2025/06/16 09:21:45 jperkin Exp $
+#
+# This is super confusing, but the PEAR tarball does not include an installer,
+# it is only available in a different installer package which bundles the PEAR
+# tarball along with its dependencies.  So our distfile is pearweb_phars, and
+# we override the version to whatever PEAR it bundles.
 #
 
-DISTNAME=      PEAR-1.10.16
-PKGREVISION=   2
-PKGNAME=       ${PHP_PKG_PREFIX}-${DISTNAME:S/PEAR/pear/}
+DISTNAME=      pearweb_phars-1.10.24
+PKGREVISION=   3
+PKGNAME=       ${PHP_PKG_PREFIX}-pear-1.10.16
 CATEGORIES=    lang
 MASTER_SITES=  http://download.pear.php.net/package/
 EXTRACT_SUFX=  .tgz
@@ -14,11 +19,6 @@ COMMENT=     PEAR Base System for PHP
 LICENSE=       2-clause-bsd
 
 USE_LANGUAGES= # none
-EXTRACT_ONLY=  # none
-USE_TOOLS+=    bsdtar gzcat
-
-# go-pear.php fetch PEAR package information during install phase.
-ALLOW_NETWORK_ACCESS=  yes
 
 .include "../../lang/php/common.mk"
 
@@ -28,61 +28,38 @@ PKG_SYSCONFVAR=     php
 CONF_FILES=    ${PREFIX}/${PHP_EGDIR}/pear.conf \
                ${PKG_SYSCONFDIR}/pear.conf
 
-BUNDLE=                ${WRKSRC}/install/go-pear-bundle
-
-# everything else that forms a part of the "base" PEAR install
-#
-PEAR_SRCS=             ${DISTNAME}${EXTRACT_SUFX}
-DISTFILES+=            ${PEAR_SRCS}
-EXTRACT_ONLY+=         ${PEAR_SRCS}
-
-ARCHIVE_SRCS=          Archive_Tar-1.5.0${EXTRACT_SUFX}
-ARCHIVE_WRKSRC=                ${WRKDIR}/${ARCHIVE_SRCS:S/${EXTRACT_SUFX}//}
-DISTFILES+=            ${ARCHIVE_SRCS}
-EXTRACT_ONLY+=         ${ARCHIVE_SRCS}
-
-CONSOLE_SRCS=          Console_Getopt-1.4.3${EXTRACT_SUFX}
-CONSOLE_WRKSRC=                ${WRKDIR}/${CONSOLE_SRCS:S/${EXTRACT_SUFX}//}
-DISTFILES+=            ${CONSOLE_SRCS}
-EXTRACT_ONLY+=         ${CONSOLE_SRCS}
-
-STRUCTURES_SRCS=       Structures_Graph-1.2.0${EXTRACT_SUFX}
-DISTFILES+=            ${STRUCTURES_SRCS}
-
-XMLUTIL_SRCS=          XML_Util-1.4.5${EXTRACT_SUFX}
-DISTFILES+=            ${XMLUTIL_SRCS}
-
-#
-# end of base components
-
 SUBST_CLASSES+=                config
 SUBST_STAGE.config=    pre-configure
-SUBST_FILES.config=    install/go-pear.php PEAR/Config.php
-SUBST_VARS.config+=    PREFIX PHP_VER PHP_LIBDIR WRKSRC
+SUBST_FILES.config=    src/PEAR/Start.php
+SUBST_VARS.config+=    PHP_LIBDIR PKGMANDIR PREFIX WRKSRC
 SUBST_MESSAGE.config=  Fixing configuration files.
 
 PEAR_COMMANDS=         pear peardev pecl
 INSTALLATION_DIRS+=    ${PHP_EGDIR}
 
-pre-patch:
-       ${RM} ${WRKSRC}/INSTALL
-       ${MKDIR} ${WRKSRC}/install
-       ${MKDIR} ${BUNDLE}
-       ${CP} ${FILESDIR}/go-pear.php ${WRKSRC}/install
-       ${CP} ${WRKSRC}/PEAR.php ${BUNDLE}
+# TODO: This should probably be set in lang/php
+PHPBIN=                ${PREFIX}/bin/php${PHP_VER}
 
+# Unpack the .phar archive so that we can patch the source files.
+post-extract:
+       cd ${WRKSRC} && ${PHPBIN} -d phar.readonly=0 -r \
+               '$$p = new Phar("go-pear.phar"); \
+                $$p->extractTo("src");'
+       ${MV} ${WRKSRC}/go-pear.phar ${WRKSRC}/go-pear-orig.phar
+
+# This does not actually build anything, just packs our patched source files
+# back to an updated .phar.
 do-build:
-.for f in ${DISTFILES}
-       ${GZCAT} ${DISTDIR}/${DIST_SUBDIR}/${f} > \
-               ${BUNDLE}/${f:S/${EXTRACT_SUFX}/.tar/}
-.endfor
-       ${CP} ${ARCHIVE_WRKSRC}/Archive/Tar.php ${BUNDLE}
-       ${CP} ${CONSOLE_WRKSRC}/Console/Getopt.php ${BUNDLE}
-       cd ${WRKDIR} && bsdtar -u -f ${BUNDLE}/${DISTNAME}.tar \
-               ${DISTNAME}/PEAR/Config.php
+       cd ${WRKSRC} && ${PHPBIN} -d phar.readonly=0 -r \
+               '$$p = new Phar("go-pear.phar", 0, "go-pear.phar"); \
+                $$p->buildFromDirectory(dirname(__FILE__) . "/src"); \
+                $$p->setStub($$p->createDefaultStub("index.php"));'
+
+INSTALL_ENV+=  PHP_PEAR_PHP_BIN=${PHPBIN}
 
 do-install:
-       ${SETENV} ${INSTALL_ENV} ${PREFIX}/bin/php${PHP_VER} ${WRKSRC}/install/go-pear.php local
+       cd ${WRKSRC} && \
+               ${PKGSRC_SETENV} ${INSTALL_ENV} ${PHPBIN} go-pear.phar
        ${INSTALL_DATA} ${WRKSRC}/pear.conf \
                ${DESTDIR}${PREFIX}/${PHP_EGDIR}/pear.conf
 

Index: pkgsrc/lang/pear/PLIST
diff -u pkgsrc/lang/pear/PLIST:1.13 pkgsrc/lang/pear/PLIST:1.14
--- pkgsrc/lang/pear/PLIST:1.13 Sat Feb  8 03:24:29 2025
+++ pkgsrc/lang/pear/PLIST      Mon Jun 16 09:21:45 2025
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST,v 1.13 2025/02/08 03:24:29 taca Exp $
+@comment $NetBSD: PLIST,v 1.14 2025/06/16 09:21:45 jperkin Exp $
 bin/pear${PHP_VER}
 bin/peardev${PHP_VER}
 bin/pecl${PHP_VER}
@@ -9,8 +9,6 @@ ${PHP_LIBDIR}/.channels/__uri.reg
 ${PHP_LIBDIR}/.channels/doc.php.net.reg
 ${PHP_LIBDIR}/.channels/pear.php.net.reg
 ${PHP_LIBDIR}/.channels/pecl.php.net.reg
-${PHP_LIBDIR}/.depdb
-${PHP_LIBDIR}/.depdblock
 ${PHP_LIBDIR}/.filemap
 ${PHP_LIBDIR}/.lock
 ${PHP_LIBDIR}/.registry/archive_tar.reg

Index: pkgsrc/lang/pear/distinfo
diff -u pkgsrc/lang/pear/distinfo:1.51 pkgsrc/lang/pear/distinfo:1.52
--- pkgsrc/lang/pear/distinfo:1.51      Sat Feb  8 03:24:29 2025
+++ pkgsrc/lang/pear/distinfo   Mon Jun 16 09:21:45 2025
@@ -1,18 +1,7 @@
-$NetBSD: distinfo,v 1.51 2025/02/08 03:24:29 taca Exp $
+$NetBSD: distinfo,v 1.52 2025/06/16 09:21:45 jperkin Exp $
 
-BLAKE2s (Archive_Tar-1.5.0.tgz) = 5002a313cbb8cbc4c614a70a05b71fa249e005a8ced26a4838a4870a92879a38
-SHA512 (Archive_Tar-1.5.0.tgz) = 2e586320ee53e05b94d0fd26185362ddd5f4bab5b8adcecc46388c6a10b98bbf187d5ce9156e2677320c319827273d537e33698c3cc27107b8d42f627c4f2880
-Size (Archive_Tar-1.5.0.tgz) = 22302 bytes
-BLAKE2s (Console_Getopt-1.4.3.tgz) = cfd6a6bffb4138a2273bdab60a7cfd4ea7ce2fc41d9141790811fc32f4e915f7
-SHA512 (Console_Getopt-1.4.3.tgz) = 7803e063576e9dac6833064b5a1479d22ca31c2a8ef8036ae530271e4e824fedb94e54d63266be8929f90f8df745b3ada7185dc98319b331f8dc5e9cac5445a0
-Size (Console_Getopt-1.4.3.tgz) = 5789 bytes
-BLAKE2s (PEAR-1.10.16.tgz) = f24408045867a932230286096be5e8e1ea88bedf0c21bbb8e4b6f0f4037d4b43
-SHA512 (PEAR-1.10.16.tgz) = 274e642a1c606e0caa9f4c9e4c5fcca69b92b8bcc952dfcb7b8bc1e249eaf04eed2d2caddafe3f722760a723fc1a7d851a404d32115a95f3c3157c91300f0b7b
-Size (PEAR-1.10.16.tgz) = 293781 bytes
-BLAKE2s (Structures_Graph-1.2.0.tgz) = 81409c9b91c63cd3121d7ddb30f129bb1b9f2d241d59918a5b35d16fd146d743
-SHA512 (Structures_Graph-1.2.0.tgz) = a256e6be4ac2011678942d97e39975973aed8b8dbab535325810ae97fb322a4aaac8daf1302f34f239a2b38649ddb39c1ae0a8c325aa1c6cbd90208adf9973dc
-Size (Structures_Graph-1.2.0.tgz) = 12507 bytes
-BLAKE2s (XML_Util-1.4.5.tgz) = c866e4cec481ea5ce876dfc4f5410fc389f5f2326e5fec638a51ac75eda02661
-SHA512 (XML_Util-1.4.5.tgz) = dd373c15ea8057e1a31953a10d75a4821bb9ad63d55ec5ccdbe17c114895ac9b9a57871d50f9f83bca7e3920b461417aa09063cb06051834996d4a8aebfa84c9
-Size (XML_Util-1.4.5.tgz) = 19191 bytes
-SHA1 (patch-PEAR_Config.php) = e67fe5191cf13ebd582c70944ad723bbbf676183
+BLAKE2s (pearweb_phars-1.10.24.tgz) = 6e6b480f76485871130f8a6974808f96957a8506feaa64e8435c3406d44f5c19
+SHA512 (pearweb_phars-1.10.24.tgz) = 64b81b84b815f46cabebd5bba57ce67e86fbec9208e19438997e70dde9fdeaab5f517d2fb92889954f51040627f3188e9a37d86fa796dd51c65d38d804309cc5
+Size (pearweb_phars-1.10.24.tgz) = 1205796 bytes
+SHA1 (patch-src_PEAR_Start.php) = d8038a23e5250e8b2c0a022ba5e8adfd73d1fcd7
+SHA1 (patch-src_PEAR_Start_CLI.php) = 8dbd68bde4cea2c7688a4dc0e650cff8ccdeda4c

Added files:

Index: pkgsrc/lang/pear/patches/patch-src_PEAR_Start.php
diff -u /dev/null pkgsrc/lang/pear/patches/patch-src_PEAR_Start.php:1.1
--- /dev/null   Mon Jun 16 09:21:45 2025
+++ pkgsrc/lang/pear/patches/patch-src_PEAR_Start.php   Mon Jun 16 09:21:45 2025
@@ -0,0 +1,75 @@
+$NetBSD: patch-src_PEAR_Start.php,v 1.1 2025/06/16 09:21:45 jperkin Exp $
+
+Use pkgsrc layout.
+
+--- src/PEAR/Start.php.orig    2025-06-11 14:08:51.952589560 +0000
++++ src/PEAR/Start.php
+@@ -6,6 +6,7 @@ require_once 'phar://go-pear.phar/' . 'P
+ require_once 'phar://go-pear.phar/' . 'PEAR/Common.php';
+ class PEAR_Start extends PEAR
+ {
++    var $destdir;
+     var $bin_dir;
+     var $data_dir;
+     var $cfg_dir;
+@@ -146,33 +147,19 @@ class PEAR_Start extends PEAR
+                 }
+             }
+         } else {
+-            $this->prefix = dirname(PHP_BINDIR);
+-            $this->pear_conf = PEAR_CONFIG_SYSCONFDIR . '/pear.conf';
+-            if ($this->getCurrentUser() != 'root') {
+-                $this->prefix = $this->safeGetenv('HOME') . '/pear';
+-                $this->pear_conf = $this->safeGetenv('HOME') . '.pearrc';
+-            }
++            $this->destdir = getenv('DESTDIR');
++            $this->pear_conf = '@WRKSRC@/pear.conf';
++            $this->prefix = "@PREFIX@";
+             $this->bin_dir   = '$prefix/bin';
+-            $this->php_dir   = '$prefix/share/pear';
++            $this->php_dir   = '$prefix/@PHP_LIBDIR@';
+             $this->temp_dir  = '/tmp/pear/install';
+             $this->download_dir  = '/tmp/pear/install';
+-            $this->doc_dir   = '$prefix/docs';
+-            $this->www_dir   = '$prefix/www';
+-            $this->cfg_dir   = '$prefix/cfg';
+-            $this->data_dir  = '$prefix/data';
+-            $this->test_dir  = '$prefix/tests';
+-            $this->man_dir  = '$prefix/man';
+-            // check if the user has installed PHP with PHP or GNU layout
+-            if (@is_dir("$this->prefix/lib/php/.registry")) {
+-                $this->php_dir = '$prefix/lib/php';
+-            } elseif (@is_dir("$this->prefix/share/pear/lib/.registry")) {
+-                $this->php_dir = '$prefix/share/pear/lib';
+-                $this->doc_dir   = '$prefix/share/pear/docs';
+-                $this->data_dir  = '$prefix/share/pear/data';
+-                $this->test_dir  = '$prefix/share/pear/tests';
+-            } elseif (@is_dir("$this->prefix/share/php/.registry")) {
+-                $this->php_dir = '$prefix/share/php';
+-            }
++            $this->doc_dir   = '$php_dir/doc';
++            $this->www_dir   = '$php_dir/www';
++            $this->cfg_dir   = '$php_dir/cfg';
++            $this->data_dir  = '$php_dir/data';
++            $this->test_dir  = '$php_dir/test';
++            $this->man_dir  = '$prefix/@PKGMANDIR@';
+         }
+     }
+ 
+@@ -335,6 +322,7 @@ class PEAR_Start extends PEAR
+         $install = &PEAR_Command::factory('install', $this->PEARConfig);
+         print "Preparing to install...\n";
+         $options = array(
++            'packagingroot' => $this->destdir,
+             'nodeps' => true,
+             'force' => true,
+             'upgrade' => true,
+@@ -355,7 +343,7 @@ class PEAR_Start extends PEAR
+         }
+ 
+         foreach ($this->config as $var) {
+-            $dir = $this->$var;
++            $dir = ($this->destdir ? $this->destdir : '').$this->$var;
+ 
+             if (!preg_match('/_dir\\z/', $var)) {
+                 continue;
Index: pkgsrc/lang/pear/patches/patch-src_PEAR_Start_CLI.php
diff -u /dev/null pkgsrc/lang/pear/patches/patch-src_PEAR_Start_CLI.php:1.1
--- /dev/null   Mon Jun 16 09:21:45 2025
+++ pkgsrc/lang/pear/patches/patch-src_PEAR_Start_CLI.php       Mon Jun 16 09:21:45 2025
@@ -0,0 +1,40 @@
+$NetBSD: patch-src_PEAR_Start_CLI.php,v 1.1 2025/06/16 09:21:45 jperkin Exp $
+
+Avoid unnecessary code paths and support unattended installs.
+
+--- src/PEAR/Start/CLI.php.orig        2025-06-11 10:09:02.740661641 +0000
++++ src/PEAR/Start/CLI.php
+@@ -62,7 +62,6 @@ class PEAR_Start_CLI extends PEAR_Start
+         if (PEAR::isError($err = $this->locatePackagesToInstall())) {
+             return $err;
+         }
+-        $this->startupQuestion();
+         $this->setupTempStuff();
+         $this->getInstallLocations();
+         $this->displayPreamble();
+@@ -123,7 +122,7 @@ accept these locations.
+             }
+ 
+             print "\n$this->first-$this->last, 'all' or Enter to continue: ";
+-            $tmp = trim(fgets($this->tty, 1024));
++            $tmp = '';
+             if (empty($tmp)) {
+                 if (OS_WINDOWS && !$this->validPHPBin) {
+                     echo "**ERROR**
+@@ -339,7 +338,7 @@ your scripts, you will have problems get
+ 
+             if ($php_ini = $this->getPhpiniPath()) {
+                 print "\n\nWould you like to alter php.ini <$php_ini>? [Y/n] : ";
+-                $alter_phpini = !stristr(fgets($this->tty, 1024), "n");
++                $alter_phpini = false;
+                 if ($alter_phpini) {
+                     $this->alterPhpIni($php_ini);
+                 } else {
+@@ -364,7 +363,6 @@ Currently used php.ini (guess) : $php_in
+ ";
+ 
+             print "Press Enter to continue: ";
+-            fgets($this->tty, 1024);
+         }
+ 
+         $pear_cmd = $this->bin_dir . DIRECTORY_SEPARATOR . 'pear';



Home | Main Index | Thread Index | Old Index