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