[gentoo-commits] proj/eselect-php:master commit in: src/
commit: ebb669221f6e8d0c871431a78aa90be2eacde112 Author: Brian Evans gentoo org> AuthorDate: Tue Dec 8 02:21:45 2020 + Commit: Brian Evans gentoo org> CommitDate: Tue Dec 8 02:21:45 2020 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=ebb66922 Add support for PHP 8 Signed-off-by: Brian Evans gentoo.org> src/php.eselect.in.in | 7 +-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index d243c64..77f1635 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -165,7 +165,7 @@ parse_target_major_version() { local target="${1}" local major="${target:3:1}" case "${major}" in - 5|7) echo "${major}" ;; + 5|7|8) echo "${major}" ;; *) die "invalid PHP target name: ${target}" ;; esac } @@ -275,7 +275,7 @@ find_sapi_targets() { local pattern_suffix case "${sapi}" in - apache2) pattern_suffix="apache2/libphp[57].so" ;; + apache2) pattern_suffix="apache2/libphp[578].so" ;; cli) pattern_suffix="bin/php" ;; fpm) pattern_suffix="bin/php-fpm" ;; cgi) pattern_suffix="bin/php-cgi" ;; @@ -345,6 +345,9 @@ write_mod_php_conf() { @MKDIR_P@ "${conf_dir}" || die "failed to create ${conf_dir}" local major=$(parse_target_major_version "${target}") + if [[ $major -gt 7 ]] ; then + major='' + fi cat <<-EOF > "${conf_path}" || die "failed to write mod_php.conf" LoadModule php${major}_module modules/mod_php.so
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: d5ad69d12994e69882830faae26ba565d8980a25 Author: Michael Orlitzky gentoo org> AuthorDate: Sun Mar 1 12:53:47 2020 + Commit: Michael Orlitzky gentoo org> CommitDate: Sun Mar 1 12:59:07 2020 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=d5ad69d1 src/php.eselect.in.in: only create links to targets that exist. To avoid replacing a working /usr/bin/phar with a broken symlink, let's check to make sure that the targets of our symlinks exist before creating them. This can leave "phar" pointing to an unexpected version of that executable, but that's better than nothing if some working version is installed. Signed-off-by: Michael Orlitzky gentoo.org> src/php.eselect.in.in | 23 --- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index 2a7e5a8..d243c64 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -180,10 +180,9 @@ parse_target_major_version() { # working. # # There is one potential caveat to that approach, for SAPIs with more -# than one active symlink. What if "phpize" is broken but "php" is OK? -# (Forget for the moment how that might happen...). Do we want to -# update() the entire SAPI because one of the symlinks is dead? -# Answer: I guess. +# than one active symlink. What if "phar" is broken (after a rebuild) +# but "php" is OK? Do we want to update() the entire SAPI because one +# of the symlinks is dead? Answer: I guess. # # INPUT: # @@ -467,9 +466,19 @@ set_sapi() { local relative_target=$(relative_name \ "${link_tgt_dir}/${link_target}" \ "${link_dir}" ) - # Use the short "-f" option for POSIX compatibility. - @LN_S@ -f "${relative_target}" "${link_dir}/${link_name}" || \ - die -q "failed to create active ${link_name} symlink" + + # Since the phar extension is optional, we check here to + # ensure that the target of our symlink exists before we + # create it. Otherwise, we could wind up with a /usr/bin/phar + # symlink that points nowhere. This might leave /usr/bin/phar + # pointing to a different version than you'd expect (wherever + # it pointed before you just tried to change it), but I guess + # leaving some working version is not a terrible thing to do. + if [[ -e "${link_tgt_dir}/${link_target}" ]]; then + # Use the short "-f" option for POSIX compatibility. + @LN_S@ -f "${relative_target}" "${link_dir}/${link_name}" || \ + die -q "failed to create active ${link_name} symlink" + fi done # The call to write_mod_php_conf() in particular needs to take
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 3c19c8620a6e7aef01496d0d0f72162f1964f3d9 Author: Stefan Langenmaier gmail com> AuthorDate: Wed Feb 12 16:24:53 2020 + Commit: Michael Orlitzky gentoo org> CommitDate: Sat Feb 29 00:31:29 2020 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=3c19c862 respect ROOT env variable Signed-off-by: Michael Orlitzky gentoo.org> src/php.eselect.in.in | 26 ++ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index 290d2ff..a047c62 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -113,11 +113,11 @@ sapi_active_link_dir() { local sapi="${1}" case "${sapi}" in - apache2) echo "@LIBDIR@/apache2/modules" ;; - cli) echo "@BINDIR@" ;; - fpm) echo "@BINDIR@" ;; - cgi) echo "@BINDIR@" ;; - phpdbg) echo "@BINDIR@" ;; + apache2) echo "${ROOT%/}@LIBDIR@/apache2/modules" ;; + cli) echo "${ROOT%/}@BINDIR@" ;; + fpm) echo "${ROOT%/}@BINDIR@" ;; + cgi) echo "${ROOT%/}@BINDIR@" ;; + phpdbg) echo "${ROOT%/}@BINDIR@" ;; *) die "invalid SAPI name: ${sapi}" ;; esac } @@ -249,7 +249,7 @@ find_targets() { # TODO: when there aren't any phpX.Y directories, this returns # "php*.*". This doesn't seem to bother our consumers, but it # would probably be more polite to return nothing in that case. - cd "@LIBDIR@" && echo php*.* + cd "${ROOT%/}@LIBDIR@" && echo php*.* } # List all valid targets for the given SAPI. The list is obtained by @@ -283,7 +283,7 @@ find_sapi_targets() { esac for target in $(find_targets); do - local pattern="@LIBDIR@/${target}/${pattern_suffix}" + local pattern="${ROOT%/}@LIBDIR@/${target}/${pattern_suffix}" for file in $pattern; do [[ -f "${file}" ]] && echo "${target}" @@ -338,7 +338,7 @@ get_sapi_active_target() { # write_mod_php_conf() { local target="${1}" - local conf_dir="@LOCALSTATEDIR@/lib/eselect-php" + local conf_dir="${ROOT%/}@LOCALSTATEDIR@/lib/eselect-php" local conf_path="${conf_dir}/mod_php.conf" @MKDIR_P@ "${conf_dir}" || die "failed to create ${conf_dir}" @@ -516,6 +516,11 @@ describe_list_options() { } do_list() { + if [ "${ROOT%/}" != "" ] ; then + local msg + write_warning_msg "ROOT only supported in setting the configuration" + echo + fi local sapi="${1}" check_module "${sapi}" list_sapi "${sapi}" @@ -536,6 +541,11 @@ describe_show_options() { } do_show() { + if [ "${ROOT%/}" != "" ] ; then + local msg + write_warning_msg "ROOT only supported in setting the configuration" + echo + fi local sapi="${1}" check_module "${sapi}" get_sapi_active_target "${sapi}"
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 9f957137544df01e20e5ae49f5bf8d7ee6a352f5 Author: Michael Orlitzky gentoo org> AuthorDate: Sat Feb 29 22:10:29 2020 + Commit: Michael Orlitzky gentoo org> CommitDate: Sat Feb 29 22:10:29 2020 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=9f957137 src/php.eselect.in.in: add support for the "phar" executable. PHP supports installing a "phar" executable that can archive/extract the phar file format without the user having to learn the API and write a little script. This commit allows "eselect php ... cli" to manage a symlink to the "phar" command, so that when dev-lang/php starts installing them, we can switch between the various versions. Bug: https://bugs.gentoo.org/707876 Signed-off-by: Michael Orlitzky gentoo.org> src/php.eselect.in.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index f78bf3d..2a7e5a8 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -25,7 +25,7 @@ sapi_active_link_names() { case "${sapi}" in apache2) echo "mod_php.so" ;; - cli) echo "php phpize php-config" ;; + cli) echo "php phpize php-config phar" ;; fpm) echo "php-fpm" ;; cgi) echo "php-cgi" ;; phpdbg) echo "phpdbg" ;;
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: a4c6e0989d1233ba475b0b890d9d084b113682be Author: Michael Orlitzky gentoo org> AuthorDate: Sat Feb 29 00:46:24 2020 + Commit: Michael Orlitzky gentoo org> CommitDate: Sat Feb 29 22:00:00 2020 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=a4c6e098 src/php.eselect.in.in: enable nullglob during find_targets(). While it didn't appear to hurt anything, the find_targets() function could output a literal "php*.*" when there were no valid PHP targets. Now the "nullglob" shell option is enabled during that function. Signed-off-by: Michael Orlitzky gentoo.org> src/php.eselect.in.in | 8 +--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index a047c62..12ef1e1 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -246,10 +246,12 @@ update_sapi() { # A space-separated list of target names, for example, "php5.6 php7.0". # find_targets() { - # TODO: when there aren't any phpX.Y directories, this returns - # "php*.*". This doesn't seem to bother our consumers, but it - # would probably be more polite to return nothing in that case. + # Temporarily enable the "nullglob" shell option to ensure that we + # don't return a literal "php*.*" when there are no valid targets. + local shopt_nullglob_saved=$(shopt -p nullglob) + shopt -s nullglob cd "${ROOT%/}@LIBDIR@" && echo php*.* + ${shopt_nullglob_saved} } # List all valid targets for the given SAPI. The list is obtained by
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: eccdef0c3d501060838c803ffa81ed79ca614dc0 Author: Michael Orlitzky gentoo org> AuthorDate: Sat Feb 29 21:53:38 2020 + Commit: Michael Orlitzky gentoo org> CommitDate: Sat Feb 29 22:00:28 2020 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=eccdef0c src/php.eselect.in.in: create symlinks relatively. As part of our $ROOT support, we need symlinks within $ROOT to point to stuff within $ROOT. The problem with that is that, if we create those symlinks with absolute paths, then you can't later chroot() into $ROOT and use them, because they'll point to the wrong place -- an absolute path that was only correct before you chrooted. Using relative symlinks seems to fix the problem, and shouldn't hurt anything in the common case where ROOT is unset or contains only a trailing slash. Thanks are due to Stefan Langenmaier for reporting the problem and helping us test the solution. Bug: https://bugs.gentoo.org/709422 Signed-off-by: Michael Orlitzky gentoo.org> src/php.eselect.in.in | 23 ++- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index 12ef1e1..f78bf3d 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -85,7 +85,7 @@ sapi_active_link_target_dir() { local sapi="${1}" local target="${2}" - local link_target_dir="@LIBDIR@/${target}/bin" + local link_target_dir="${ROOT%/}@LIBDIR@/${target}/bin" if [[ "${sapi}" == "apache2" ]] ; then link_target_dir+="/../apache2" fi @@ -459,9 +459,16 @@ set_sapi() { for link_name in $(sapi_active_link_names "${sapi}"); do local link_target=$(sapi_link_name_target "${sapi}" "${target_name}" "${link_name}") + # We need these links to be relative: when setting a target + # with ROOT nonempty, the symlink needs to point within + # ROOT. But if you later chroot() into ROOT, that link will + # point... nowhere, most likely. We need it to still point + # at the right target in that case! + local relative_target=$(relative_name \ + "${link_tgt_dir}/${link_target}" \ + "${link_dir}" ) # Use the short "-f" option for POSIX compatibility. - @LN_S@ -f "${link_tgt_dir}/${link_target}" \ - "${link_dir}/${link_name}" || \ + @LN_S@ -f "${relative_target}" "${link_dir}/${link_name}" || \ die -q "failed to create active ${link_name} symlink" done @@ -518,11 +525,6 @@ describe_list_options() { } do_list() { - if [ "${ROOT%/}" != "" ] ; then - local msg - write_warning_msg "ROOT only supported in setting the configuration" - echo - fi local sapi="${1}" check_module "${sapi}" list_sapi "${sapi}" @@ -543,11 +545,6 @@ describe_show_options() { } do_show() { - if [ "${ROOT%/}" != "" ] ; then - local msg - write_warning_msg "ROOT only supported in setting the configuration" - echo - fi local sapi="${1}" check_module "${sapi}" get_sapi_active_target "${sapi}"
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 5c56663ce61eba748ab0f6dce1588593d531fe5b Author: Michael Orlitzky gentoo org> AuthorDate: Wed Feb 12 22:28:28 2020 + Commit: Michael Orlitzky gentoo org> CommitDate: Wed Feb 12 22:30:10 2020 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=5c56663c src/php.eselect.in.in: remove old pre-php-7.x compatibility code. The comments told me to remove this code after a while. I trust myself. Signed-off-by: Michael Orlitzky gentoo.org> src/php.eselect.in.in | 34 -- 1 file changed, 34 deletions(-) diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index 889f541..290d2ff 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -467,7 +467,6 @@ set_sapi() { # place here, in set_sapi(), since otherwise it can get skipped by # e.g. the update_sapi() function. if [[ "${sapi}" == "apache2" ]]; then - apache2_php5_config_check write_mod_php_conf "${target_name}" echo "Please restart apache for the changes to take effect." elif [[ "${sapi}" == "fpm" ]]; then @@ -476,28 +475,6 @@ set_sapi() { } -# Check to see if the user is still using the old-style apache -# configuration with -DPHP5 and 70_mod_php5.conf. If he is, warn him -# that it is outdated, and that his eselect choices will not have any -# effect until the configuration is updated. -# -# This can be removed after around a year. -# -apache2_php5_config_check() { - if [ -f "${EROOT}/etc/apache2/modules.d/70_mod_php5.conf" ] ; then - local msg - write_warning_msg "The apache2 configuration has changed in this" - write_warning_msg "version of eselect-php. You should define \"-D PHP\"" - write_warning_msg "and not \"-D PHP5\" for apache. The module is now" - write_warning_msg "loaded by 70_mod_php.conf (was 70_mod_php5.conf)." - write_warning_msg "After you have changed \"-D PHP5\" to \"-D PHP\", " - write_warning_msg "you should remove 70_mod_php5.conf to eliminate" - write_warning_msg "this warning. Until you have done so, your eselect" - write_warning_msg "choices for apache2 will have no effect." - echo - fi -} - ## set action describe_set() { @@ -608,17 +585,6 @@ do_cleanup() { for sapi in $MODULES ; do cleanup_sapi "${sapi}" done - - # Remove older (and dead) apache2 symlinks. These days the symlink - # is called mod_php.so. This cleanup code can be removed after a - # while, after we think most people will have switched to the new - # symlink and removed the old one. - for link in "@LIBDIR@"/apache2/modules/libphp[57].so; do - if [[ -L "${link}" && ! -e "${link}" ]] ; then - rm -f "${link}" || die "failed to remove old libphp.so symlink" - echo "Removed broken symlink ${link}." - fi - done } ## list-modules action
[gentoo-commits] proj/eselect-php:master commit in: /, src/
commit: 4b7d40cb0dd5213674766c48193efba1da74edff Author: Michael Orlitzky gentoo org> AuthorDate: Wed Jan 22 17:22:26 2020 + Commit: Michael Orlitzky gentoo org> CommitDate: Wed Jan 22 22:51:43 2020 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=4b7d40cb src/php-fpm.logrotate.in: add a logrotate script for php-fpm. Since all of the log files for php-fpm wind up in the same place regardless of slot, we install a single logrotate file as part of eselect-php. The contents of the file may not be perfect -- they were taken from the example submitted on bug 692194 untested -- but will be easy to update in the future. Bug: https://bugs.gentoo.org/692194 Signed-off-by: Michael Orlitzky gentoo.org> .gitignore | 1 + Makefile.am | 9 +++-- src/php-fpm.logrotate.in | 7 +++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 9bfa566..420a5c3 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ openrc/init.d/php-fpm.in src/php.eselect src/php.eselect.in src/php-fpm-launcher +src/php-fpm.logrotate diff --git a/Makefile.am b/Makefile.am index f544739..e425c84 100644 --- a/Makefile.am +++ b/Makefile.am @@ -4,7 +4,8 @@ nodist_eselect_DATA = $(srcdir)/src/php.eselect # Without EXTRA_DIST, these files don't wind up in the tarball. EXTRA_DIST = $(srcdir)/openrc \ $(srcdir)/src/70_mod_php.conf.in \ - $(srcdir)/src/php-fpm-launcher.in + $(srcdir)/src/php-fpm-launcher.in \ + $(srcdir)/src/php-fpm.logrotate.in if APACHE2 # Without these set, we won't try to install the conf file. @@ -22,6 +23,9 @@ if FPM nodist_libexec_SCRIPTS = $(srcdir)/src/php-fpm-launcher + logrotatedir = $(sysconfdir)/logrotate.d + nodist_logrotate_DATA = $(srcdir)/src/php-fpm.logrotate + tmpfilesdir = $(prefix)/lib/tmpfiles.d dist_tmpfiles_DATA = $(srcdir)/src/php-fpm.conf endif @@ -37,7 +41,7 @@ edit = sed -e 's|@BINDIR[@]|$(bindir)|g' \ -e 's|@SYSCONFDIR[@]|$(sysconfdir)|g' -$(nodist_eselect_DATA) $(nodist_apacheconf_DATA) $(nodist_init_SCRIPTS) $(nodist_libexec_SCRIPTS): Makefile +$(nodist_eselect_DATA) $(nodist_apacheconf_DATA) $(nodist_init_SCRIPTS) $(nodist_libexec_SCRIPTS) $(nodist_logrotate_DATA): Makefile rm -f $@ $@.tmp srcdir=''; \ test -f ./$@.in || srcdir=$(srcdir)/; \ @@ -46,5 +50,6 @@ $(nodist_eselect_DATA) $(nodist_apacheconf_DATA) $(nodist_init_SCRIPTS) $(nodist $(srcdir)/src/php.eselect: $(srcdir)/src/php.eselect.in $(srcdir)/src/php-fpm-launcher: $(srcdir)/src/php-fpm-launcher.in +$(srcdir)/src/php-fpm.logrotate: $(srcdir)/src/php-fpm.logrotate.in $(srcdir)/src/70_mod_php.conf: $(srcdir)/src/70_mod_php.conf.in $(srcdir)/openrc/init.d/php-fpm: $(srcdir)/openrc/init.d/php-fpm.in diff --git a/src/php-fpm.logrotate.in b/src/php-fpm.logrotate.in new file mode 100644 index 000..5847fdc --- /dev/null +++ b/src/php-fpm.logrotate.in @@ -0,0 +1,7 @@ +@LOCALSTATEDIR@/log/php-fpm.log @LOCALSTATEDIR@/log/php-fpm-*.log.slow { + create 600 root root + size 5M + copytruncate + notifempty + missingok +}
[gentoo-commits] proj/eselect-php:master commit in: /, src/
commit: 355d4102019daaafd9f803bf4435af127e315988 Author: Michael Orlitzky gentoo org> AuthorDate: Wed Jan 22 15:05:57 2020 + Commit: Michael Orlitzky gentoo org> CommitDate: Wed Jan 22 17:15:08 2020 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=355d4102 src/php-fpm-launcher.in: add php-fpm-launcher wrapper script. While OpenRC services are powerful enough to compute the selected version of php-fpm, the corresponding systemd services are not and must use a fixed path. The executable at that fixed path must therefore decide which version of php-fpm to run before running it. This commit adds a script to do just that. This script is already present in the app-eselect/eselect-php package, tacked on from $FILESDIR. It's a better fit as part of the repository. Signed-off-by: Michael Orlitzky gentoo.org> .gitignore | 1 + Makefile.am | 10 -- src/php-fpm-launcher.in | 11 +++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 97ae412..9bfa566 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ openrc/init.d/php-fpm openrc/init.d/php-fpm.in src/php.eselect src/php.eselect.in +src/php-fpm-launcher diff --git a/Makefile.am b/Makefile.am index f351b49..fbca127 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,7 +2,9 @@ eselectdir = $(datadir)/eselect/modules nodist_eselect_DATA = $(srcdir)/src/php.eselect # Without EXTRA_DIST, these files don't wind up in the tarball. -EXTRA_DIST = $(srcdir)/src/70_mod_php.conf.in openrc +EXTRA_DIST = $(srcdir)/openrc \ + $(srcdir)/src/70_mod_php.conf.in \ + $(srcdir)/src/php-fpm-launcher.in if APACHE2 # Without these set, we won't try to install the conf file. @@ -17,6 +19,8 @@ if FPM confdir = $(sysconfdir)/conf.d nodist_conf_DATA = $(srcdir)/openrc/conf.d/php-fpm + + nodist_libexec_SCRIPTS = $(srcdir)/src/php-fpm-launcher endif # The next few rules allow us to replace bindir, libdir, etc. @@ -29,7 +33,8 @@ edit = sed -e 's|@BINDIR[@]|$(bindir)|g' \ -e 's|@LOCALSTATEDIR[@]|$(localstatedir)|g' \ -e 's|@SYSCONFDIR[@]|$(sysconfdir)|g' -$(nodist_eselect_DATA) $(nodist_apacheconf_DATA) $(nodist_init_SCRIPTS): Makefile + +$(nodist_eselect_DATA) $(nodist_apacheconf_DATA) $(nodist_init_SCRIPTS) $(nodist_libexec_SCRIPTS): Makefile rm -f $@ $@.tmp srcdir=''; \ test -f ./$@.in || srcdir=$(srcdir)/; \ @@ -37,5 +42,6 @@ $(nodist_eselect_DATA) $(nodist_apacheconf_DATA) $(nodist_init_SCRIPTS): Makefil mv $@.tmp $@ $(srcdir)/src/php.eselect: $(srcdir)/src/php.eselect.in +$(srcdir)/src/php-fpm-launcher: $(srcdir)/src/php-fpm-launcher.in $(srcdir)/src/70_mod_php.conf: $(srcdir)/src/70_mod_php.conf.in $(srcdir)/openrc/init.d/php-fpm: $(srcdir)/openrc/init.d/php-fpm.in diff --git a/src/php-fpm-launcher.in b/src/php-fpm-launcher.in new file mode 100644 index 000..940cec9 --- /dev/null +++ b/src/php-fpm-launcher.in @@ -0,0 +1,11 @@ +#!/bin/sh + +# If there are no arguments, then "shift" will fail (bug 626496). +if [ $# -eq 0 ]; then +PHP_SLOT=$(eselect php show fpm) +else +PHP_SLOT=$1 +shift +fi + +exec "@LIBDIR@/${PHP_SLOT}/bin/php-fpm" "${@}"
[gentoo-commits] proj/eselect-php:master commit in: /, src/
commit: 5e69b74fc8c9542faa6891c56b736f1d73da3202 Author: Michael Orlitzky gentoo org> AuthorDate: Wed Jan 22 17:19:33 2020 + Commit: Michael Orlitzky gentoo org> CommitDate: Wed Jan 22 22:44:15 2020 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=5e69b74f src/php-fpm.conf: move the php-fpm tmpfiles.d entry "upstream." The tmpfiles.d entry for php-fpm creates one "runstate" directory for all slots of php-fpm. Since none of that depends on the currently selected slot, we ship it as part of eselect-php rather than dev-lang/php which would either install one copy for each slot. Signed-off-by: Michael Orlitzky gentoo.org> Makefile.am | 3 +++ src/php-fpm.conf | 5 + 2 files changed, 8 insertions(+) diff --git a/Makefile.am b/Makefile.am index fbca127..f544739 100644 --- a/Makefile.am +++ b/Makefile.am @@ -21,6 +21,9 @@ if FPM nodist_conf_DATA = $(srcdir)/openrc/conf.d/php-fpm nodist_libexec_SCRIPTS = $(srcdir)/src/php-fpm-launcher + + tmpfilesdir = $(prefix)/lib/tmpfiles.d + dist_tmpfiles_DATA = $(srcdir)/src/php-fpm.conf endif # The next few rules allow us to replace bindir, libdir, etc. diff --git a/src/php-fpm.conf b/src/php-fpm.conf new file mode 100644 index 000..a49ba7b --- /dev/null +++ b/src/php-fpm.conf @@ -0,0 +1,5 @@ +# tmpfiles.d entry for php-fmp +# +# When autoconf-2.70 is released and --runstatedir is supported, +# we should change this /run to @RUNSTATEDIR@. +d /run/php-fpm 755 root root
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 6a99c6752efc2fb6180c3a453ae5b641b67f662e Author: Michael Orlitzky gentoo org> AuthorDate: Thu Apr 12 02:15:03 2018 + Commit: Michael Orlitzky gentoo org> CommitDate: Thu Apr 12 02:22:46 2018 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=6a99c675 src/php.eselect.in.in: use "-f" option to "ln" for POSIX compatibility. On FreeBSD, we're getting an error: ln: illegal option -- - usage: ln [-s [-F] | -L | -P] [-f | -i] [-hnv] source_file [target_file] ... !!! Error: failed to create active php symlink This is due to our use of the "--force" flag, which is not POSIX. In the latest standard (IEEE Std 1003.1-2017), only the short "-f" flag is guaranteed to exist, and FreeBSD's "ln" seems to mostly support the flag as specified there. So, I've changed "--force" to "-f", and left a warning to future generations in a nearby comment. Bug: https://bugs.gentoo.org/649270 src/php.eselect.in.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index 8e25f96..889f541 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -457,7 +457,8 @@ set_sapi() { for link_name in $(sapi_active_link_names "${sapi}"); do local link_target=$(sapi_link_name_target "${sapi}" "${target_name}" "${link_name}") - @LN_S@ --force "${link_tgt_dir}/${link_target}" \ + # Use the short "-f" option for POSIX compatibility. + @LN_S@ -f "${link_tgt_dir}/${link_target}" \ "${link_dir}/${link_name}" || \ die -q "failed to create active ${link_name} symlink" done
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 0c235fbacfaf5e741ea6d613eb531541e7e66368 Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 22 20:51:08 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 22 20:51:08 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=0c235fba Move the apache conf file writing into set_sapi(). When the apache conf file was being written in do_set(), it was avoidable by e.g. update_sapi(). That could prevent apache2 from restarting. Since do_set() calls set_sapi() anyway, we just move the conf file writing to the end of set_sapi(). src/php.eselect.in.in | 19 +++ 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index 603dced..8e25f96 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -461,6 +461,17 @@ set_sapi() { "${link_dir}/${link_name}" || \ die -q "failed to create active ${link_name} symlink" done + + # The call to write_mod_php_conf() in particular needs to take + # place here, in set_sapi(), since otherwise it can get skipped by + # e.g. the update_sapi() function. + if [[ "${sapi}" == "apache2" ]]; then + apache2_php5_config_check + write_mod_php_conf "${target_name}" + echo "Please restart apache for the changes to take effect." + elif [[ "${sapi}" == "fpm" ]]; then + echo "Please restart php-fpm for the changes to take effect." + fi } @@ -508,14 +519,6 @@ do_set() { check_module "${sapi}" set_sapi "${sapi}" "${target}" - - if [[ "${sapi}" == "apache2" ]]; then - apache2_php5_config_check - write_mod_php_conf "$(resolv_target apache2 "${target}")" - echo "Please restart apache for the changes to take effect." - elif [[ "${sapi}" == "fpm" ]]; then - echo "Please restart php-fpm for the changes to take effect." - fi }
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: e70582051f77f157be6038683f1dac8a2a079800 Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 22 18:53:53 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 22 18:53:53 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=e7058205 Remove the word "automatically" from the cleanup description. src/php.eselect.in.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index 63b9d42..a9c6efd 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -576,7 +576,7 @@ do_update() { ## cleanup action describe_cleanup() { - echo "Automatically clean up stale links" + echo "Clean up stale links" } describe_cleanup_parameters() {
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 2b82d0c0c967f59f5993bea53bb5dd86693beef0 Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 22 17:47:43 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 22 17:47:43 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=2b82d0c0 Remove cleanup_sapis() and ensmarten the libphp[57].so symlink removal. The cleanup_sapis() function was only called in one place, so it was a pointless layer of indirection. Move it into do_cleanup(). Also, make sure we don't remove libphp[57].so symlinks unless they're actually symlinks and in fact dead. src/php.eselect.in.in | 28 ++-- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index ff3914f..7e52f53 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -173,14 +173,6 @@ parse_target_major_version() { esac } -cleanup_sapis() { - local m - local link - for m in $MODULES ; do - cleanup_sapi $m - done -} - cleanup_sapi() { local sapi="${1}" local l="${sapi}_link" @@ -197,11 +189,6 @@ cleanup_sapi() { fi fi - if [[ "${sapi}" == "apache2" ]] ; then - rm -f "@LIBDIR@"/apache2/modules/libphp[57].so \ - || die "failed to remove old libphp.so symlink" - fi - return 1 } @@ -582,5 +569,18 @@ describe_cleanup_options() { } do_cleanup() { - cleanup_sapis + for sapi in $MODULES ; do + cleanup_sapi "${sapi}" + done + + # Remove older (and dead) apache2 symlinks. These days the symlink + # is called mod_php.so. This cleanup code can be removed after a + # while, after we think most people will have switched to the new + # symlink and removed the old one. + for link in "@LIBDIR@"/apache2/modules/libphp[57].so; do + if [[ -L "${link}" && ! -e "${link}" ]] ; then + rm -f "${link}" || die "failed to remove old libphp.so symlink" + echo "Removed broken symlink ${link}." + fi + done }
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: caacf99bcef4161a416af8d1f678314a3e80 Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 22 19:01:41 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 22 19:01:41 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=caac Add a "modules" action to list all valid modules (requested in bug 491866). Gentoo-Bug: 491866 src/php.eselect.in.in | 10 ++ 1 file changed, 10 insertions(+) diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index db7a96f..2467ce3 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -619,3 +619,13 @@ do_cleanup() { fi done } + +## modules action + +describe_modules() { + echo "List all valid modules, separated by spaces" +} + +do_modules() { + echo "${MODULES}" +}
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 6c32b7cef3c114a4b134af2296a867bba5e717e2 Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 22 19:12:10 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 22 19:12:10 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=6c32b7ce Cosmetic changes to help text. src/php.eselect.in.in | 24 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index 2467ce3..ac05d3a 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -492,7 +492,7 @@ apache2_php5_config_check() { ## set action describe_set() { - echo "Sets the current configuration for a module" + echo "make active for " } describe_set_parameters() { @@ -500,8 +500,8 @@ describe_set_parameters() { } describe_set_options() { - echo "module: one of ${MODULES}" - echo "target: Target name or number (from the 'list' action)" + echo "module: one of: ${MODULES}" + echo "target: target name or number (from the \"list\" action)" } @@ -526,7 +526,7 @@ do_set() { ## List action describe_list() { - echo "Lists available php installs for a module" + echo "lists valid targets for " } describe_list_parameters() { @@ -534,7 +534,7 @@ describe_list_parameters() { } describe_list_options() { - echo "module: one of ${MODULES}" + echo "module: one of: ${MODULES}" } do_list() { @@ -546,7 +546,7 @@ do_list() { ## Show action describe_show() { - echo "Lists available php installs for a module" + echo "show the active target for " } describe_show_parameters() { @@ -554,7 +554,7 @@ describe_show_parameters() { } describe_show_options() { - echo "module: one of ${MODULES}" + echo "module: one of: ${MODULES}" } do_show() { @@ -566,7 +566,7 @@ do_show() { ## update action describe_update() { - echo "Automatically update the php versions" + echo "update to latest target" } describe_update_parameters() { @@ -574,8 +574,8 @@ describe_update_parameters() { } describe_update_options() { - echo "module: one of ${MODULES}" - echo "ifunset : Do not override existing implementation" + echo "module: one of: ${MODULES}" + echo "--if-unset: do nothing if target already exists" } do_update() { @@ -600,7 +600,7 @@ do_update() { ## cleanup action describe_cleanup() { - echo "Clean up stale links" + echo "remove and try to fix stale links" } do_cleanup() { @@ -623,7 +623,7 @@ do_cleanup() { ## modules action describe_modules() { - echo "List all valid modules, separated by spaces" + echo "output a space-separated list of valid modules" } do_modules() {
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 56261aef608438c77df89aa5782cd9285d5f9d2f Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 22 18:54:59 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 22 18:54:59 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=56261aef Document and fix the update functionality. The update_sapi() function was not working due to a call to set_$sapi that was never caught. Some of the logic in both do_update() and update_sapi() was clarified, and the update_sapi() function was documented. The "update" action and "cleanup" (which uses it) now work as expected. src/php.eselect.in.in | 46 +++--- 1 file changed, 35 insertions(+), 11 deletions(-) diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index a9c6efd..4e5e4b7 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -211,13 +211,32 @@ cleanup_sapi() { done } + +# Update the given SAPI to the latest valid target. +# +# The "latest" target is really just the last available one in the +# list for this SAPI. +# +# INPUT: +# +# The name of a SAPI. +# +# OUTPUT: +# +# An error code "1" is returned if there are no valid targets for the +# given SAPI. Otherwise, we return whatever comes back from set_sapi() +# update_sapi() { local sapi="${1}" - local target=$(find_sapi_targets "${sapi}" | tail -n 1) - local current=$(get_sapi_active_target "${sapi}") - [[ -z $target ]] && return 1 - [[ $current = $target ]] && return 1 - set_$sapi $target + local latest_target=$(find_sapi_targets "${sapi}" | tail -n 1) + + # No valid targets? + [[ -z "${latest_target}" ]] && return 1 + + # Proceed even if the current target is the latest one. This can + # fix issues where, for example, the "phpize" symlink is broken + # but "php" is fine and points to the latest target. + set_sapi "${sapi}" "${latest_target}" } @@ -551,7 +570,7 @@ describe_update() { } describe_update_parameters() { - echo " [ifunset]" + echo " [--if-unset]" } describe_update_options() { @@ -561,13 +580,18 @@ describe_update_options() { do_update() { local sapi="${1}" + local ifunset="${2}" + + # Input sanity check. check_module "${sapi}" - [[ -z ${2} || ( -z ${3} && ( ${2} == ifunset || ${2} == '--if-unset' ) ) ]] || \ - die -q "Usage error" - if [[ (${2} == ifunset || ${2} == '--if-unset') && -n $(get_sapi_active_target "${sapi}") ]]; - then - return + # Older versions listed the flag as "ifunset" insted of "--if-unset". + if [[ "${ifunset}" == "ifunset" || "${ifunset}" == "--if-unset" ]] ; then + if [[ -n $(get_sapi_active_target "${sapi}") ]] ; then + # There's already an active target for this SAPI, and the + # user asked us to leave it alone. So we leave it alone. + return + fi fi update_sapi "${sapi}" || echo "Nothing to update"
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 370b720eb65f976d7a7e2b95b6a9f0b9ccae86d3 Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 22 19:00:34 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 22 19:00:34 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=370b720e Remove useless describe_cleanup_parameters() and describe_cleanup_options(). src/php.eselect.in.in | 8 1 file changed, 8 deletions(-) diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index 4e5e4b7..db7a96f 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -603,14 +603,6 @@ describe_cleanup() { echo "Clean up stale links" } -describe_cleanup_parameters() { - echo -} - -describe_cleanup_options() { - echo -} - do_cleanup() { for sapi in $MODULES ; do cleanup_sapi "${sapi}"
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 1ec7766a328e2ff7f35086f71a4307d188d29b50 Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 22 19:16:35 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 22 19:16:35 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=1ec7766a Don't inherit config or multilib. These two inherit commands are no longer needed. We don't use list_libdirs() anymore thanks to autotools, and I don't think the config functions were ever needed recently. src/php.eselect.in.in | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index 8f241ce..603dced 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -1,11 +1,8 @@ # Copyright 2010-2016 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -inherit config multilib - DESCRIPTION="Manage php installations" MAINTAINER="php-b...@gentoo.org" - MODULES="cli apache2 fpm cgi phpdbg" #
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: d50f77c79f3a7e2ce129ef69ff4cc662d1b95ad6 Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 22 18:19:34 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 22 18:19:34 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=d50f77c7 Clean up and document the cleanup_sapi() function. src/php.eselect.in.in | 47 +-- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index 7e52f53..63b9d42 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -173,23 +173,42 @@ parse_target_major_version() { esac } +# Remove dead active symlinks for the given SAPI. +# +# If a symlink for an SAPI is dead, then that SAPI is at least +# partially broken. For example, if the symlink to php-cgi is dead, +# then CGI just isn't going to work -- the SAPI is broken. It +# therefore makes sense to run update() after we find and remove any +# broken links. The update at least has the potential to leave things +# working. +# +# There is one potential caveat to that approach, for SAPIs with more +# than one active symlink. What if "phpize" is broken but "php" is OK? +# (Forget for the moment how that might happen...). Do we want to +# update() the entire SAPI because one of the symlinks is dead? +# Answer: I guess. +# +# INPUT: +# +# The name of the SAPI to clean up. +# +# OUTPUT: +# +# If any symlinks are removed, that fact will be announced. If an +# update occurs, that will be noted as well +# cleanup_sapi() { local sapi="${1}" - local l="${sapi}_link" - local link=${!l} - if [[ -L $link && ! -e $link ]] ; then - echo -n "Broken link for ${sapi}" - if update_sapi $1 ; then - echo ", updated version to $(get_sapi_active_target "${sapi}")" - return - else - rm $link || die "failed to remove ${link}" - - return - fi - fi + local link_dir=$(sapi_active_link_dir "${sapi}") - return 1 + for link_name in $(sapi_active_link_names "${sapi}"); do + local link_path="${link_dir}/${link_name}" + if [[ -L "${link_path}" && ! -e "${link_path}" ]] ; then + rm -f "${link_path}" || die "failed to remove ${link_path}" + echo "Removed broken symlink ${link_path}." + update_sapi "${sapi}" # Try to fix it. + fi + done } update_sapi() {
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: e64cb2825a6429fcb3e7c760538bcfa3890faa97 Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 22 19:13:14 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 22 19:13:14 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=e64cb282 Rename the "modules" action to "list-modules". The name "list-modules" was always more appropriate; it just took a moment to realize that "-" is valid in bash function names. src/php.eselect.in.in | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index ac05d3a..8f241ce 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -620,12 +620,12 @@ do_cleanup() { done } -## modules action +## list-modules action -describe_modules() { +describe_list-modules() { echo "output a space-separated list of valid modules" } -do_modules() { +do_list-modules() { echo "${MODULES}" }
[gentoo-commits] proj/eselect-php:master commit in: src/, /
commit: 79787fcc061362905f0b47a67c922884a27616fc Author: Michael Orlitzky gentoo org> AuthorDate: Thu Jan 21 23:53:18 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Thu Jan 21 23:53:18 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=79787fcc Add another layer of indirection to get @bindir@ and friends in the output. When we create php.eselect from php.eselect.in using autoconf, we don't have a way to get the full, expanded value of @bindir@, @libdir@, and the other paths that we need. The autoconf documentation suggests a workaround for this: add another layer of indirection, and use the Makefile to substitute those values into the output files. This commit sets the stage by renaming php.eselect.in to php.eselect.in.in. The first round of processing by autoconf takes php.eselect.in.in to php.eselect.in. The Makefile will then generate php.eselect from php.eselect.in after substituting @bindir@, @libdir@, and @localstatedir@. Makefile.am | 19 ++- configure.ac | 2 +- src/{php.eselect.in => php.eselect.in.in} | 0 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index 330f491..073abf9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,2 +1,19 @@ eselectdir = $(datadir)/eselect/modules -nodist_eselect_DATA = src/php.eselect +nodist_eselect_DATA = $(srcdir)/src/php.eselect + +# The next few rules allow us to replace bindir, libdir, and +# localstatedir within our script and conf file. The example is taken +# from the autoconf documentation and can be found in the +# "Installation Directory Variables" section. +edit = sed -e 's|@bindir[@]|$(bindir)|g' \ + -e 's|@libdir[@]|$(libdir)|g' \ + -e 's|@localstatedir[@]|$(localstatedir)|g' + +$(nodist_eselect_DATA): Makefile + rm -f $@ $@.tmp + srcdir=''; \ + test -f ./$@.in || srcdir=$(srcdir)/; \ + $(edit) $${srcdir}$@.in > $@.tmp + mv $@.tmp $@ + +$(srcdir)/src/php.eselect: $(srcdir)/src/php.eselect.in diff --git a/configure.ac b/configure.ac index 2f1f609..c118e0e 100644 --- a/configure.ac +++ b/configure.ac @@ -8,6 +8,6 @@ AC_PATH_PROG(SORT,sort) AC_PATH_PROG(UNIQ,uniq) # List of output files. -AC_CONFIG_FILES([Makefile src/php.eselect]) +AC_CONFIG_FILES([Makefile src/php.eselect.in]) AC_OUTPUT diff --git a/src/php.eselect.in b/src/php.eselect.in.in similarity index 100% rename from src/php.eselect.in rename to src/php.eselect.in.in
[gentoo-commits] proj/eselect-php:master commit in: src/, /
commit: f4a2678217a23ce0db353173f74a556039b5b08d Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 22 02:12:37 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 22 02:12:37 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=f4a26782 Use uppercase @BINDIR@, @LIBDIR@, etc. for autotools substitution. The last few commits introduced a problem: by passing php.eselect.in.in through autoconf, we unwittingly replace things like @bindir@ with ${exec_prefix}. This is because lowercase @bindir@ gets defined for automake and is intended to be based on the other directory variables like @exec_prefix@. Since we're replacing them after the fact in the Makefile, this commit avoids the autoconf mangling by making them all uppercase. Makefile.am| 6 +++--- src/70_mod_php.conf.in | 2 +- src/php.eselect.in.in | 18 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Makefile.am b/Makefile.am index 9487f1b..1d1132e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -8,9 +8,9 @@ nodist_apacheconf_DATA = $(srcdir)/src/70_mod_php.conf # localstatedir within our script and conf file. The example is taken # from the autoconf documentation and can be found in the # "Installation Directory Variables" section. -edit = sed -e 's|@bindir[@]|$(bindir)|g' \ - -e 's|@libdir[@]|$(libdir)|g' \ - -e 's|@localstatedir[@]|$(localstatedir)|g' +edit = sed -e 's|@BINDIR[@]|$(bindir)|g' \ + -e 's|@LIBDIR[@]|$(libdir)|g' \ + -e 's|@LOCALSTATEDIR[@]|$(localstatedir)|g' $(nodist_eselect_DATA) $(nodist_apacheconf_DATA): Makefile rm -f $@ $@.tmp diff --git a/src/70_mod_php.conf.in b/src/70_mod_php.conf.in index 4b97354..a9d348d 100644 --- a/src/70_mod_php.conf.in +++ b/src/70_mod_php.conf.in @@ -4,7 +4,7 @@ # php5_module to php7_module so we can't blindly load whatever # is there. Instead we let eselect-php manage a small # configuration file that loads the appropriate module. - Include "@localstatedir@/lib/eselect-php/mod_php.conf" + Include "@LOCALSTATEDIR@/lib/eselect-php/mod_php.conf" # Tell apache that mod_php should handle PHP files. # diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index e1edb42..d3428bd 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -88,7 +88,7 @@ sapi_active_link_target_dir() { local sapi="${1}" local target="${2}" - local link_target_dir="@libdir@/${target}/bin" + local link_target_dir="@LIBDIR@/${target}/bin" if [[ "${sapi}" == "apache2" ]] ; then link_target_dir+="/../apache2" fi @@ -116,11 +116,11 @@ sapi_active_link_dir() { local sapi="${1}" case "${sapi}" in - apache2) echo "@libdir@/apache2/modules" ;; - cli) echo "@bindir@" ;; - fpm) echo "@bindir@" ;; - cgi) echo "@bindir@" ;; - phpdbg) echo "@bindir@" ;; + apache2) echo "@LIBDIR@/apache2/modules" ;; + cli) echo "@BINDIR@" ;; + fpm) echo "@BINDIR@" ;; + cgi) echo "@BINDIR@" ;; + phpdbg) echo "@BINDIR@" ;; *) die "invalid SAPI name: ${sapi}" ;; esac } @@ -198,7 +198,7 @@ cleanup_sapi() { fi if [[ "${sapi}" == "apache2" ]] ; then - rm -f "@libdir@"/apache2/modules/libphp[57].so \ + rm -f "@LIBDIR@"/apache2/modules/libphp[57].so \ || die "failed to remove old libphp.so symlink" fi @@ -258,7 +258,7 @@ find_sapi_targets() { esac for target in $(find_targets); do - local pattern="@libdir@/${target}/${pattern_suffix}" + local pattern="@LIBDIR@/${target}/${pattern_suffix}" for file in $pattern; do [[ -f "${file}" ]] && echo "${target}" @@ -313,7 +313,7 @@ get_sapi_active_target() { # write_mod_php_conf() { local target="${1}" - local conf_dir="@localstatedir@/lib/eselect-php" + local conf_dir="@LOCALSTATEDIR@/lib/eselect-php" local conf_path="${conf_dir}/mod_php.conf" @MKDIR_P@ "${conf_dir}" || die "failed to create ${conf_dir}"
[gentoo-commits] proj/eselect-php:master commit in: /, src/
commit: 1d1a53e19a9dab621249c1cdf698e2aec30d5d1a Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 22 00:30:25 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 22 00:45:28 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=1d1a53e1 Add 70_mod_php.conf.in to the project source. We are currently shipping 70_mod_php.conf as part of the Gentoo ebuild for eselect-php. This introduces a potential disconnect between the path in php.eselect and the path in 70_mod_php.conf. By adding the conf file to the project, we are able to ensure that they are both set to the same value. Moreover, the new autotools directory magic lets us set them both based on @localstatedir@. So, for example, in the conf file we have "@localstatedir /lib/eselect-php/mod_php.conf" and in php.eselect we have "@localstatedir@/lib/eselect-php". We have followed the PHP project's lead in assuming that $localstatedir will be set to (for example) /var and not /var/lib. See Gentoo bug 572002. For testing, you should now use something like, ./configure --bindir=/usr/bin --sysconfdir=/etc --localstatedir=/var Of course, the ebuild for eselect-php will automatically pass the correct values to ./configure. Makefile.am| 6 +- src/70_mod_php.conf.in | 24 src/php.eselect.in.in | 2 +- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index 073abf9..9487f1b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,9 @@ eselectdir = $(datadir)/eselect/modules nodist_eselect_DATA = $(srcdir)/src/php.eselect +apacheconfdir = $(sysconfdir)/apache2/modules.d +nodist_apacheconf_DATA = $(srcdir)/src/70_mod_php.conf + # The next few rules allow us to replace bindir, libdir, and # localstatedir within our script and conf file. The example is taken # from the autoconf documentation and can be found in the @@ -9,7 +12,7 @@ edit = sed -e 's|@bindir[@]|$(bindir)|g' \ -e 's|@libdir[@]|$(libdir)|g' \ -e 's|@localstatedir[@]|$(localstatedir)|g' -$(nodist_eselect_DATA): Makefile +$(nodist_eselect_DATA) $(nodist_apacheconf_DATA): Makefile rm -f $@ $@.tmp srcdir=''; \ test -f ./$@.in || srcdir=$(srcdir)/; \ @@ -17,3 +20,4 @@ $(nodist_eselect_DATA): Makefile mv $@.tmp $@ $(srcdir)/src/php.eselect: $(srcdir)/src/php.eselect.in +$(srcdir)/src/70_mod_php.conf: $(srcdir)/src/70_mod_php.conf.in diff --git a/src/70_mod_php.conf.in b/src/70_mod_php.conf.in new file mode 100644 index 000..4b97354 --- /dev/null +++ b/src/70_mod_php.conf.in @@ -0,0 +1,24 @@ + + # The mod_php.so symlink is controlled by + # eselect-php. However, the module name changed from + # php5_module to php7_module so we can't blindly load whatever + # is there. Instead we let eselect-php manage a small + # configuration file that loads the appropriate module. + Include "@localstatedir@/lib/eselect-php/mod_php.conf" + + # Tell apache that mod_php should handle PHP files. + # + # NOTE: Avoiding AddHandler/AddType for security (bug + # #538822). Please read the related news item! + + SetHandler application/x-httpd-php + + + # PHP source files which are meant to be displayed as + # syntax-highlighted source code. + + SetHandler application/x-httpd-php-source + + + DirectoryIndex index.php index.phtml + diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index e24cd39..689b1db 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -332,7 +332,7 @@ get_sapi_active_target() { # write_mod_php_conf() { local target="${1}" - local conf_dir="${EROOT}"/var/lib/eselect-php + local conf_dir="@localstatedir@/lib/eselect-php" local conf_path="${conf_dir}/mod_php.conf" @MKDIR_P@ "${conf_dir}" || die "failed to create ${conf_dir}"
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: bd79e633184e446b6e0985e80539dd7ce6c81a62 Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 22 00:00:32 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 22 00:00:32 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=bd79e633 Replace custom bindir handling with the new autotools magic. As a first test of the new directory substitution, replace one instance of custom bindir handling. Use @bindir@ instead of "${EROOT}/usr/bin" sapi_active_link_dir(). The results should coincide when configured with, ./configure --bindir="${EROOT}"/usr/bin src/php.eselect.in.in | 9 - 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index b2a0dd5..e24cd39 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -114,14 +114,13 @@ sapi_active_link_target_dir() { # sapi_active_link_dir() { local sapi="${1}" - local bin_dir="${EROOT}/usr/bin" case "${sapi}" in apache2) echo "${EROOT}$(get_active_libdir)/apache2/modules" ;; - cli) echo "${bin_dir}" ;; - fpm) echo "${bin_dir}" ;; - cgi) echo "${bin_dir}" ;; - phpdbg) echo "${bin_dir}" ;; + cli) echo "@bindir@" ;; + fpm) echo "@bindir@" ;; + cgi) echo "@bindir@" ;; + phpdbg) echo "@bindir@" ;; *) die "invalid SAPI name: ${sapi}" ;; esac }
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 32f6c1c424df3e8f7ed9705323e2911ee43b7696 Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 22 02:11:54 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 22 02:11:54 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=32f6c1c4 Clean up and document find_targets(). src/php.eselect.in.in | 18 ++ 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index 0c83de7..e1edb42 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -214,15 +214,17 @@ update_sapi() { set_$sapi $target } -find_targets() { - local dirs - - for dir in "@libdir@"/php*.*; do - t=$(basename $dir) - has $t $dirs || dirs="${dirs} $t" - done - echo $dirs +# +# Find all valid target names by searching libdir for directories like +# php5.6, php7.0, etc. +# +# OUTPUT: +# +# A space-separated list of target names, for example, "php5.6 php7.0". +# +find_targets() { + cd "@LIBDIR@" && echo php*.* } # List all valid targets for the given SAPI. The list is obtained by
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 71d449ab84cacc518b6a11c891feed86367c8244 Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 22 01:47:16 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 22 01:47:16 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=71d449ab Replace get_libdirs() and get_active_libdir() with autotools magic. The get_libdirs() function is a heuristic to determine which libdirs are available on the system. The get_active_libdir() function then chose the first one as the "active" libdir. In a few places we either chose the "active" libdir, or looped through all of them to find some other thing of interest (like the valid targets). Now that we compute @libdir@ at build time, we can replace all of that with the one correct value of @libdir@. The functions get_libdirs() and get_active_libdir() are removed entirely. src/php.eselect.in.in | 47 +-- 1 file changed, 13 insertions(+), 34 deletions(-) diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index 689b1db..0c83de7 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -88,7 +88,7 @@ sapi_active_link_target_dir() { local sapi="${1}" local target="${2}" - local link_target_dir="${EROOT}$(get_active_libdir)/${target}/bin" + local link_target_dir="@libdir@/${target}/bin" if [[ "${sapi}" == "apache2" ]] ; then link_target_dir+="/../apache2" fi @@ -116,7 +116,7 @@ sapi_active_link_dir() { local sapi="${1}" case "${sapi}" in - apache2) echo "${EROOT}$(get_active_libdir)/apache2/modules" ;; + apache2) echo "@libdir@/apache2/modules" ;; cli) echo "@bindir@" ;; fpm) echo "@bindir@" ;; cgi) echo "@bindir@" ;; @@ -198,7 +198,7 @@ cleanup_sapi() { fi if [[ "${sapi}" == "apache2" ]] ; then - rm -f "${EROOT}$(get_active_libdir)"/apache2/modules/libphp[57].so \ + rm -f "@libdir@"/apache2/modules/libphp[57].so \ || die "failed to remove old libphp.so symlink" fi @@ -214,35 +214,15 @@ update_sapi() { set_$sapi $target } -get_libdirs() { - local dir libdirs - for dir in $(list_libdirs); do - [[ -L ${EROOT}/usr/${dir} ]] && continue - ls "${EROOT}"/usr/${dir}/php*.* > /dev/null 2>&1 || continue - - libdirs+=' '/usr/${dir} - done - echo ${libdirs:-/usr/lib} -} +find_targets() { + local dirs -get_active_libdir() { - local dir - for dir in $(get_libdirs); do - echo ${dir} - return + for dir in "@libdir@"/php*.*; do + t=$(basename $dir) + has $t $dirs || dirs="${dirs} $t" done - echo /usr/lib -} -find_targets() { - local dir dirs libdir - for libdir in $(get_libdirs); do - for dir in "${EROOT}"${libdir}/php*.*; do - t=$(basename $dir) - has $t $dirs || dirs="${dirs} $t" - done - done - echo $dirs + echo $dirs } # List all valid targets for the given SAPI. The list is obtained by @@ -276,11 +256,10 @@ find_sapi_targets() { esac for target in $(find_targets); do - for libdir in $(get_libdirs); do - local pattern="${EROOT}${libdir}/${target}/${pattern_suffix}" - for file in $pattern; do - [[ -f "${file}" ]] && echo "${target}" - done + local pattern="@libdir@/${target}/${pattern_suffix}" + + for file in $pattern; do + [[ -f "${file}" ]] && echo "${target}" done done | @SORT@ | @UNIQ@ }
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 34ff75367a2941a99339a9ea46bf6faaad270f0f Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 22 03:11:51 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 22 03:11:51 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=34ff7536 Add a TODO to find_targets() about an error condition. src/php.eselect.in.in | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index d3428bd..ff3914f 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -224,6 +224,9 @@ update_sapi() { # A space-separated list of target names, for example, "php5.6 php7.0". # find_targets() { + # TODO: when there aren't any phpX.Y directories, this returns + # "php*.*". This doesn't seem to bother our consumers, but it + # would probably be more polite to return nothing in that case. cd "@LIBDIR@" && echo php*.* }
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 64f783dff3a2d62de670c8a5994d012751d2440e Author: Michael Orlitzky gentoo org> AuthorDate: Wed Jan 20 14:40:00 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Wed Jan 20 14:40:00 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=64f783df Fix cleanup up libphp[57].so symlinks. The cleanup() action is supposed to remove the old links to libphp5.so and libphp7.so, but the pattern was accidentally quoted and thus nothing was removed. Unquote it so that those symlinks will actually be removed. Gentoo-Bug: 572436 src/php.eselect.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index 9970520..b2a0dd5 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -199,7 +199,7 @@ cleanup_sapi() { fi if [[ "${sapi}" == "apache2" ]] ; then - rm -f "${EROOT}$(get_active_libdir)/apache2/modules/libphp[57].so" \ + rm -f "${EROOT}$(get_active_libdir)"/apache2/modules/libphp[57].so \ || die "failed to remove old libphp.so symlink" fi
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 05ad4ef371b474d9f86ca8236881022e4f8f7bb0 Author: Michael Orlitzky gentoo org> AuthorDate: Sat Jan 9 17:06:03 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Sat Jan 9 17:06:03 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=05ad4ef3 Undo the change from phpdbg -> dbg, using "phpdbg" everywhere makes more sense. src/php.eselect.in | 12 ++-- 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index e0c208a..8f752e4 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -6,7 +6,7 @@ inherit config multilib DESCRIPTION="Manage php installations" MAINTAINER="php-b...@gentoo.org" -MODULES="cli apache2 fpm cgi dbg" +MODULES="cli apache2 fpm cgi phpdbg" # # Output a list of link names (not full paths) belonging to the given @@ -31,7 +31,7 @@ sapi_active_link_names() { cli) echo "php phpize php-config" ;; fpm) echo "php-fpm" ;; cgi) echo "php-cgi" ;; - dbg) echo "phpdbg" ;; + phpdbg) echo "phpdbg" ;; *) die "invalid SAPI name: ${sapi}" ;; esac } @@ -121,7 +121,7 @@ sapi_active_link_dir() { cli) echo "${bin_dir}" ;; fpm) echo "${bin_dir}" ;; cgi) echo "${bin_dir}" ;; - dbg) echo "${bin_dir}" ;; + phpdbg) echo "${bin_dir}" ;; *) die "invalid SAPI name: ${sapi}" ;; esac } @@ -272,7 +272,7 @@ find_sapi_targets() { cli) pattern_suffix="bin/php" ;; fpm) pattern_suffix="bin/php-fpm" ;; cgi) pattern_suffix="bin/php-cgi" ;; - dbg) pattern_suffix="bin/phpdbg" ;; + phpdbg) pattern_suffix="bin/phpdbg" ;; *) die "invalid SAPI name: ${sapi}" ;; esac @@ -494,8 +494,8 @@ set_cgi() { set_sapi cgi "${1}" } -set_dbg() { - set_sapi dbg "${1}" +set_phpdbg() { + set_sapi phpdbg "${1}" } set_fpm() {
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 86c833863a6febca1f1bd4c8408239853ed3acfb Author: Michael Orlitzky gentoo org> AuthorDate: Sat Jan 9 17:14:24 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Sat Jan 9 17:14:24 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=86c83386 Consolidate all of the set_foo() functions. src/php.eselect.in | 43 --- 1 file changed, 16 insertions(+), 27 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index 8f752e4..9970520 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -463,6 +463,9 @@ set_sapi() { # configuration with -DPHP5 and 70_mod_php5.conf. If he is, warn him # that it is outdated, and that his eselect choices will not have any # effect until the configuration is updated. +# +# This can be removed after around a year. +# apache2_php5_config_check() { if [ -f "${EROOT}/etc/apache2/modules.d/70_mod_php5.conf" ] ; then local msg @@ -478,31 +481,6 @@ apache2_php5_config_check() { fi } -set_apache2() { - apache2_php5_config_check - local target="${1}" - set_sapi apache2 "${target}" - write_mod_php_conf "$(resolv_target apache2 "${target}")" - echo "Please restart apache for the changes to take effect." -} - -set_cli() { - set_sapi cli "${1}" -} - -set_cgi() { - set_sapi cgi "${1}" -} - -set_phpdbg() { - set_sapi phpdbg "${1}" -} - -set_fpm() { - set_sapi fpm "${1}" - echo "Please restart php-fpm for the changes to take effect." -} - ## set action describe_set() { @@ -520,8 +498,19 @@ describe_set_options() { do_set() { - check_module $1 - set_$1 $2 + local sapi="${1}" + local target="${2}" + check_module "${sapi}" + + set_sapi "${sapi}" "${target}" + + if [[ "${sapi}" == "apache2" ]]; then + apache2_php5_config_check + write_mod_php_conf "$(resolv_target apache2 "${target}")" + echo "Please restart apache for the changes to take effect." + elif [[ "${sapi}" == "fpm" ]]; then + echo "Please restart php-fpm for the changes to take effect." + fi }
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: a84247840eb392d2e248a116828d8941d507b033 Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 8 17:31:44 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 8 17:31:44 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=a8424784 Refactor most set_foo() functions to use set_sapi(). The set_sapi() function was accidentally introduced in commit 91160d1 but was not used until now. This commit finishes its implementation, and refactors the "easy" SAPI set_* functions to use set_sapi(). The set_apache2() function still requires more work. src/php.eselect.in | 52 ++-- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index aa681f0..97e7940 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -373,17 +373,34 @@ list_phpdbg() { } +# Perform the "set" action for the given SAPI. +# +# INPUT: +# +# The first parameter is the SAPI name, and the second parameter is +# the desired target. +# +# OUTPUT: +# +# None. +# set_sapi() { local sapi="${1}" local target="${2}" local target_name=$(resolv_target "${sapi}" "${target}") - [[ -z $t ]] && die -q "invalid target ${target} for SAPI ${sapi}" + [[ -z $target_name ]] && die -q "invalid target ${target} for SAPI ${sapi}" + + local link_src_dir="../..$(get_active_libdir)/${target_name}/bin" + local link_dst_dir=$(sapi_active_link_dir "${sapi}") - @LN_S@ --force "../..$(get_active_libdir)/${t}/bin/php-cgi" \ - "$(sapi_active_link_path cgi)" || \ - die -q "failed to create active php-cgi symlink" + for link_name in $(sapi_active_link_names "${sapi}"); do + @LN_S@ --force "${link_src_dir}/${link_name}" \ + "${link_dst_dir}/${link_name}" || \ + die -q "failed to create active ${link_name} symlink" + done } + set_apache2() { local active_symlink libdir major target=$(resolv_target apache2 $1) active_symlink="$(sapi_active_link_path apache2)" @@ -405,39 +422,22 @@ set_apache2() { } set_cli() { - local file libdir t=$(resolv_target cli $1) - [[ -z $t ]] && die -q "invalid target" - for file in php phpize php-config; do - @LN_S@ --force "../..$(get_active_libdir)/${t}/bin/${file}" \ - "${EROOT}/usr/bin/${file}" || \ - die -q "failed to create active ${file} symlink" - done + set_sapi "cli" "${1}" } set_cgi() { - t=$(resolv_target cgi $1) - [[ -z $t ]] && die -q "invalid target" - @LN_S@ --force "../..$(get_active_libdir)/${t}/bin/php-cgi" \ - "$(sapi_active_link_path cgi)" || \ - die -q "failed to create active php-cgi symlink" + set_sapi "cgi" "${1}" } set_phpdbg() { - t=$(resolv_target dbg $1) - [[ -z $t ]] && die -q "invalid target" - @LN_S@ --force "../..$(get_active_libdir)/${t}/bin/phpdbg" \ - "$(sapi_active_link_path dbg)" || \ - die -q "failed to create active phpdbg symlink" + set_sapi "dbg" "${1}" } set_fpm() { - local t=$(resolv_target fpm $1) - [[ -z $t ]] && die -q "invalid target" - @LN_S@ --force "../..$(get_active_libdir)/${t}/bin/php-fpm" \ - "$(sapi_active_link_path fpm)" || \ - die -q "failed to create symlink for the php-fpm binary" + set_sapi "fpm" "${1}" echo "Please restart php-fpm for the changes to take effect." } + ## set action describe_set() {
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: b82579ced667244764c67d9fbe622695c3e9fe61 Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 8 18:29:13 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 8 18:29:13 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=b82579ce Remove unnecessary quoting. src/php.eselect.in | 8 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index 9f5ee1a..2e9ec8d 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -422,19 +422,19 @@ set_apache2() { } set_cli() { - set_sapi "cli" "${1}" + set_sapi cli "${1}" } set_cgi() { - set_sapi "cgi" "${1}" + set_sapi cgi "${1}" } set_phpdbg() { - set_sapi "dbg" "${1}" + set_sapi dbg "${1}" } set_fpm() { - set_sapi "fpm" "${1}" + set_sapi fpm "${1}" echo "Please restart php-fpm for the changes to take effect." }
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 976d0542987023dfe6ba97e3e297c36e7317c1bd Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 8 18:33:08 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 8 18:33:08 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=976d0542 Refactor set_apache2() to use set_sapi(). With a little bit of mangling and a new (trivial) function, the set_sapi() function now does the work of set_apache2(). There is probably a better "big picture" to handle the symlinking, but this works for now and is an improvement. src/php.eselect.in | 69 ++ 1 file changed, 49 insertions(+), 20 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index 2e9ec8d..1288669 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -38,6 +38,38 @@ sapi_active_link_names() { # Each SAPI provides a few (one or more) "active" links in a +# predictable location. The target directory (where they point) is +# fixed for a given SAPI, and this function returns it. +# +# The name "target" is unfortunate, but that's the terminology that +# "ln" uses. The link_name is the name of the link on the filesystem, +# and target is where it points. +# +# INPUT: +# +# The first parameter is the name of a SAPI. The second parameter is +# the name of a target. +# +# OUTPUT: +# +# The directory to which the given SAPI's symlinks point. For example, +# the "cli" sapi has three executable symlinks and all of them point +# to executables in /usr/lib/phpX.Y/bin. +# +sapi_active_link_target_dir() { + local sapi="${1}" + local target="${2}" + + local link_target_dir="${EROOT}$(get_active_libdir)/${target}/bin" + if [[ "${sapi}" == "apache2" ]] ; then + link_target_dir+="/../apache2" + fi + + echo "${link_target_dir}" +} + + +# Each SAPI provides a few (one or more) "active" links in a # predictable location. And fortunately that location is fixed for a # given SAPI. For example, the "cgi" SAPI has its sole active symlink, # /usr/bin/php-cgi, in /usr/bin. Given a SAPI name, we return the @@ -390,34 +422,31 @@ set_sapi() { local target_name=$(resolv_target "${sapi}" "${target}") [[ -z $target_name ]] && die -q "invalid target ${target} for SAPI ${sapi}" - local link_src_dir="../..$(get_active_libdir)/${target_name}/bin" - local link_dst_dir=$(sapi_active_link_dir "${sapi}") + local link_tgt_dir=$(sapi_active_link_target_dir "${sapi}" "${target_name}") + local link_dir=$(sapi_active_link_dir "${sapi}") for link_name in $(sapi_active_link_names "${sapi}"); do - @LN_S@ --force "${link_src_dir}/${link_name}" \ - "${link_dst_dir}/${link_name}" || \ + # Usually the link targets have the same name as the link itself... + local link_target="${link_name}" + + if [[ "${link_name}" == "mod_php.so" ]] ; then + # ...but apache2 needs special handling since we're not + # linking from something named mod_php.so. + local major=$(parse_target_major_version "${target_name}") + link_target="libphp${major}.so" + fi + + @LN_S@ --force "${link_tgt_dir}/${link_target}" \ + "${link_dir}/${link_name}" || \ die -q "failed to create active ${link_name} symlink" done } set_apache2() { - local active_symlink libdir major target=$(resolv_target apache2 $1) - active_symlink="$(sapi_active_link_path apache2)" - major=$(parse_target_major_version "${target}") - - [[ -z $target ]] && die -q "invalid target" - - for libdir in $(get_libdirs); do - rm --force "${active_symlink}" || \ - die "failed to remove active module symlink" - - @LN_S@ --force "../../${target}/apache2/libphp${major}.so" \ - "${active_symlink}" || \ - die -q "failed to create active mod_php symlink" - done - - write_mod_php_conf "${target}" + local target="${1}" + set_sapi apache2 "${target}" + write_mod_php_conf "$(resolv_target apache2 "${target}")" echo "Please restart apache for the changes to take effect." }
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: cc0b2730e408da529275b6688e9a381ae4b905dc Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 8 18:51:21 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 8 18:51:21 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=cc0b2730 Add sapi_link_name_target() to clean up set_sapi(). There was a special case in set_sapi() for apache2's mod_php.so. Now that has been factored out into a new function sapi_link_name_target() which acts more or less like a hash table (dictionary lookup). src/php.eselect.in | 38 +- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index 1288669..7acda64 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -36,6 +36,34 @@ sapi_active_link_names() { esac } +# The link names obtained from sapi_active_link_names() all need to +# point somewhere. Usually the target is the same as the link name +# itself, but not always. This function returns the link-target for a +# given sapi, sapi-target, and link name. +# +# INPUT: +# +# The first parameter is a SAPI name. The second parameter is the +# SAPI-target name (for example, "php7.0"). The third parameter is a +# link name. +# +# OUTPUT: +# +# The name of the target (that is, file) for the given link name. +# +sapi_link_name_target() { + local sapi="${1}" + local target_name="${2}" + local link_name="${3}" + + # For now, only apache2's mod_php.so gets special treatment. + if [[ "${sapi}" == "apache2" && "${link_name}" == "mod_php.so" ]] ; then + local major=$(parse_target_major_version "${target_name}") + echo "libphp${major}.so" + else + echo "${link_name}" + fi +} # Each SAPI provides a few (one or more) "active" links in a # predictable location. The target directory (where they point) is @@ -426,15 +454,7 @@ set_sapi() { local link_dir=$(sapi_active_link_dir "${sapi}") for link_name in $(sapi_active_link_names "${sapi}"); do - # Usually the link targets have the same name as the link itself... - local link_target="${link_name}" - - if [[ "${link_name}" == "mod_php.so" ]] ; then - # ...but apache2 needs special handling since we're not - # linking from something named mod_php.so. - local major=$(parse_target_major_version "${target_name}") - link_target="libphp${major}.so" - fi + local link_target=$(sapi_link_name_target "${sapi}" "${target_name}" "${link_name}") @LN_S@ --force "${link_tgt_dir}/${link_target}" \ "${link_dir}/${link_name}" || \
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: b4f9495ddadc157e3f0f46c15d3e8ce9e0890b23 Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 8 18:28:30 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 8 18:28:30 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=b4f9495d Update copyright year. src/php.eselect.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index 97e7940..9f5ee1a 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -1,4 +1,4 @@ -# Copyright 2010-2015 Gentoo Foundation +# Copyright 2010-2016 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 inherit config multilib
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 91160d1d55182b52650910472288e283d55f2811 Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 8 17:14:51 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 8 17:14:51 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=91160d1d Split sapi_active_link_path() into sapi_active_link_{names,dir}(). In preparation for refactoting the set_foo() functions, refactor the function that gets the (one) active link path into two functions that get the (one) active link directory and (more than one, potentially) active link names. src/php.eselect.in | 89 ++ 1 file changed, 77 insertions(+), 12 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index 72e6610..15792f3 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -8,13 +8,71 @@ MAINTAINER="php-b...@gentoo.org" MODULES="cli apache2 fpm cgi phpdbg" +# +# Output a list of link names (not full paths) belonging to the given +# SAPI. These need to be updated when the user changes his active +# target. +# +# INPUT: +# +# The name of a SAPI. +# +# OUTPUT: +# +# A space-separated list of link names belonging to the given +# SAPI. For example, the "cli" SAPI has three link names: "php phpize +# php-config". The "cgi" sapi has only "php-cgi". +# +sapi_active_link_names() { + local sapi="${1}" + + case "${sapi}" in + apache2) echo "mod_php.so" ;; + cli) echo "php phpize php-config" ;; + fpm) echo "php-fpm" ;; + cgi) echo "php-cgi" ;; + dbg) echo "phpdbg" ;; +*) die "invalid SAPI name: ${sapi}" ;; + esac +} + + +# Each SAPI provides a few (one or more) "active" links in a +# predictable location. And fortunately that location is fixed for a +# given SAPI. For example, the "cgi" SAPI has its sole active symlink, +# /usr/bin/php-cgi, in /usr/bin. Given a SAPI name, we return the +# directory where that SAPI's links are located. +# +# INPUT: +# +# The name of a SAPI. +# +# OUTPUT: +# +# The directory in which the given SAPI's symlinks are located. For +# example, the "cli" sapi has its three executable links in "/usr/bin". +# +sapi_active_link_dir() { + local sapi="${1}" + local bin_dir="${EROOT}/usr/bin" + + case "${sapi}" in + apache2) echo "${EROOT}$(get_active_libdir)/apache2/modules" ;; + cli) echo "${bin_dir}" ;; + fpm) echo "${bin_dir}" ;; + cgi) echo "${bin_dir}" ;; + dbg) echo "${bin_dir}" ;; +*) die "invalid SAPI name: ${sapi}" ;; + esac +} + # Each SAPI provides at least one "active" link in a predictable # location. For example, the "cgi" SAPI has its active symlink at # /usr/bin/php-cgi. Given a SAPI name we return the path to that link. # -# Note that the "cli" SAPI actually provides three executables -- we -# return the path for only one. This is an API wart, not by design. +# Note that SAPIs may provide more than one active link -- we return +# the path for only the first. # # INPUT: # @@ -27,16 +85,11 @@ MODULES="cli apache2 fpm cgi phpdbg" # sapi_active_link_path() { local sapi="${1}" - local bin_dir="${EROOT}/usr/bin/" - case "${sapi}" in - apache2) -echo "${EROOT}$(get_active_libdir)/apache2/modules/mod_php.so" ;; - cli) echo "${bin_dir}/php" ;; - fpm) echo "${bin_dir}/php-fpm" ;; - cgi) echo "${bin_dir}/php-cgi" ;; - dbg) echo "${bin_dir}/phpdbg" ;; -*) die "invalid SAPI name: ${sapi}" ;; - esac + local dir=$(sapi_active_link_dir "${sapi}") + local link_names=( $(sapi_active_link_names "${sapi}") ) + + # Use the first link name only. + echo "${dir}/${link_names[0]}" } @@ -319,6 +372,18 @@ list_phpdbg() { list_sapi dbg } + +set_sapi() { + local sapi="${1}" + local target="${2}" + local target_name=$(resolv_target "${sapi}" "${target}") + [[ -z $t ]] && die -q "invalid target ${target} for SAPI ${sapi}" + + @LN_S@ --force "../..$(get_active_libdir)/${t}/bin/php-cgi" \ + "$(sapi_active_link_path cgi)" || \ + die -q "failed to create active php-cgi symlink" +} + set_apache2() { local active_symlink libdir major target=$(resolv_target apache2 $1) active_symlink="$(sapi_active_link_path apache2)"
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 2f1ec08068f8c91a0fd9b70a1426cd78bbcad6ac Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 8 19:23:41 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 8 19:23:41 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=2f1ec080 Add config warning when setting the apache2 target. src/php.eselect.in | 20 1 file changed, 20 insertions(+) diff --git a/src/php.eselect.in b/src/php.eselect.in index 7acda64..b47d218 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -463,7 +463,27 @@ set_sapi() { } +# Check to see if the user is still using the old-style apache +# configuration with -DPHP5 and 70_mod_php5.conf. If he is, warn him +# that it is outdated, and that his eselect choices will not have any +# effect until the configuration is updated. +apache2_php5_config_check() { + if [ -f "${EROOT}/etc/apache2/modules.d/70_mod_php5.conf" ] ; then + local msg + write_warning_msg "The apache2 configuration has changed in this" + write_warning_msg "version of eselect-php. You should define \"-D PHP\"" + write_warning_msg "and not \"-D PHP5\" for apache. The module is now" + write_warning_msg "loaded by 70_mod_php.conf (was 70_mod_php5.conf)." + write_warning_msg "After you have changed \"-D PHP5\" to \"-D PHP\", " + write_warning_msg "you should remove 70_mod_php5.conf to eliminate" + write_warning_msg "this warning. Until you have done so, your eselect" + write_warning_msg "choices for apache2 will have no effect." + echo + fi +} + set_apache2() { + apache2_php5_config_check local target="${1}" set_sapi apache2 "${target}" write_mod_php_conf "$(resolv_target apache2 "${target}")"
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: e05ad5dc17a9501bf14e56652a42cf66a545e512 Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 8 16:32:30 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 8 16:32:30 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=e05ad5dc Document and clean up the resolv_target function. src/php.eselect.in | 39 +-- 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index d868082..72e6610 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -231,14 +231,41 @@ write_mod_php_conf() { EOF } + +# Resolve an index or target name for a given SAPI into the "display +# name" of that target. +# +# INPUT: +# +# The first parameter is the name of a SAPI. The second parameter is +# either a number (the index of a target), or a target name. +# +# OUTPUT: +# +# The "display name" of the given target for the given SAPI. For +# example, if the first parameter is "cli" and the second parameter is +# "1", then the output will be the display name of the first target +# for the cli SAPI (e.g. "php5.6"). +# +# If the index or target name is invalid (that is, does not correspond +# to one of the valid targets for the given SAPI), then nothing is +# output. +# resolv_target() { - local targets=( $(find_sapi_targets $1) ) - if is_number $2; then - if [[ $2 -le ${#targets[@]} && $2 -gt 0 ]] ; then - echo "${targets[ $(( $2 - 1 )) ]}" + local sapi="${1}" + local target="${2}" + + # $targets is an array of things like "php5.6" and "php7.0" + local targets=( $(find_sapi_targets "${sapi}") ) + + if is_number "${target}" ; then + if [[ $target -le ${#targets[@]} && $target -gt 0 ]] ; then + # $target looks like an index into the $targets array. + echo "${targets[ $(( $target - 1 )) ]}" fi - elif has $2 ${targets[@]}; then - echo $2 + elif has "${target}" ${targets[@]} ; then + # $target is the *name* of a valid target for this SAPI. + echo "${target}" fi }
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: b5940f040300a84e9ed321d22e6f110a05a631d6 Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 8 17:16:32 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 8 17:16:32 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=b5940f04 Whitespace cleanup. src/php.eselect.in | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index 15792f3..aa681f0 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -32,7 +32,7 @@ sapi_active_link_names() { fpm) echo "php-fpm" ;; cgi) echo "php-cgi" ;; dbg) echo "phpdbg" ;; -*) die "invalid SAPI name: ${sapi}" ;; + *) die "invalid SAPI name: ${sapi}" ;; esac } @@ -62,7 +62,7 @@ sapi_active_link_dir() { fpm) echo "${bin_dir}" ;; cgi) echo "${bin_dir}" ;; dbg) echo "${bin_dir}" ;; -*) die "invalid SAPI name: ${sapi}" ;; + *) die "invalid SAPI name: ${sapi}" ;; esac } @@ -515,7 +515,7 @@ describe_update_options() { } do_update() { -check_module $1 + check_module $1 [[ -z ${2} || ( -z ${3} && ( ${2} == ifunset || ${2} == '--if-unset' ) ) ]] || \ die -q "Usage error" @@ -524,7 +524,7 @@ do_update() { return fi -update_sapi $1 || echo "Nothing to update" + update_sapi $1 || echo "Nothing to update" } ## cleanup action @@ -542,5 +542,5 @@ describe_cleanup_options() { } do_cleanup() { -cleanup_sapis + cleanup_sapis }
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: ee46243308594a232f10f32b9243e91e608415b5 Author: Michael Orlitzky gentoo org> AuthorDate: Fri Jan 8 16:24:44 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Jan 8 16:24:44 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=ee462433 Fix call to resolv_target() in set_phpdbg(). The first parameter to resolv_target should be the name of a SAPI. The current call passes "phpdbg" which is incorrect. Change it to "dbg". src/php.eselect.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index d730e00..d868082 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -331,7 +331,7 @@ set_cgi() { } set_phpdbg() { - t=$(resolv_target phpdbg $1) + t=$(resolv_target dbg $1) [[ -z $t ]] && die -q "invalid target" @LN_S@ --force "../..$(get_active_libdir)/${t}/bin/phpdbg" \ "$(sapi_active_link_path dbg)" || \
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 41f92b84f7871ae913bf8a462b88a3808f1df208 Author: Michael Orlitzky gentoo org> AuthorDate: Sat Jan 9 02:00:11 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Sat Jan 9 02:00:11 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=41f92b84 Fix the "show" action for SAPIs other than phpdbg. src/php.eselect.in | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index b47d218..d9c44f7 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -564,8 +564,9 @@ describe_show_options() { } do_show() { - check_module $1 - get_active_$1 + local sapi="${1}" + check_module "${sapi}" + get_sapi_active_target "${sapi}" } ## update action
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: a8bf1158974984c91ccbe8c83c74f41c7c51337d Author: Michael Orlitzky gentoo org> AuthorDate: Sat Jan 9 02:03:04 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Sat Jan 9 02:03:04 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=a8bf1158 Remove superfluous list_foo() functions. src/php.eselect.in | 25 +++-- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index efd52c2..26c43d8 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -412,26 +412,6 @@ list_sapi() { write_numbered_list -m "(none found)" "${targets[@]}" } -list_apache2() { - list_sapi apache2 -} - -list_cli() { - list_sapi cli -} - -list_cgi() { - list_sapi cgi -} - -list_fpm() { - list_sapi fpm -} - -list_dbg() { - list_sapi dbg -} - # Perform the "set" action for the given SAPI. # @@ -545,8 +525,9 @@ describe_list_options() { } do_list() { - check_module $1 - list_$1 + local sapi="${1}" + check_module "${sapi}" + list_sapi "${sapi}" } ## Show action
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 98bd99ab0dfb91297091b52fad8622b1b689b096 Author: Michael Orlitzky gentoo org> AuthorDate: Sat Jan 9 02:21:08 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Sat Jan 9 02:21:08 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=98bd99ab Fix cleanup and update actions. src/php.eselect.in | 23 +-- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index d19b93a..e0c208a 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -183,12 +183,13 @@ cleanup_sapis() { } cleanup_sapi() { - local l=${1}_link + local sapi="${1}" + local l="${sapi}_link" local link=${!l} if [[ -L $link && ! -e $link ]] ; then - echo -n "Broken link for $1" + echo -n "Broken link for ${sapi}" if update_sapi $1 ; then - echo ", updated version to $(get_active_$1)" + echo ", updated version to $(get_sapi_active_target "${sapi}")" return else rm $link || die "failed to remove ${link}" @@ -197,7 +198,7 @@ cleanup_sapi() { fi fi - if [[ "${1}" == "apache2" ]]; then + if [[ "${sapi}" == "apache2" ]] ; then rm -f "${EROOT}$(get_active_libdir)/apache2/modules/libphp[57].so" \ || die "failed to remove old libphp.so symlink" fi @@ -206,11 +207,12 @@ cleanup_sapi() { } update_sapi() { - local target=$(find_sapi_targets $1 | tail -n 1) - local current=$(get_active_$1) + local sapi="${1}" + local target=$(find_sapi_targets "${sapi}" | tail -n 1) + local current=$(get_sapi_active_target "${sapi}") [[ -z $target ]] && return 1 [[ $current = $target ]] && return 1 - set_$1 $target + set_$sapi $target } get_libdirs() { @@ -580,16 +582,17 @@ describe_update_options() { } do_update() { - check_module $1 + local sapi="${1}" + check_module "${sapi}" [[ -z ${2} || ( -z ${3} && ( ${2} == ifunset || ${2} == '--if-unset' ) ) ]] || \ die -q "Usage error" - if [[ (${2} == ifunset || ${2} == '--if-unset') && -n $(get_active_$1) ]]; + if [[ (${2} == ifunset || ${2} == '--if-unset') && -n $(get_sapi_active_target "${sapi}") ]]; then return fi - update_sapi $1 || echo "Nothing to update" + update_sapi "${sapi}" || echo "Nothing to update" } ## cleanup action
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 5ebfa5ec899c6a0827e4f60c06cdadeb2e2c2dd9 Author: Michael Orlitzky gentoo org> AuthorDate: Sat Jan 9 02:01:30 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Sat Jan 9 02:01:30 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=5ebfa5ec Rename "phpdbg" to "dbg" for consistency and to fix its show action. src/php.eselect.in | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index d9c44f7..efd52c2 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -6,7 +6,7 @@ inherit config multilib DESCRIPTION="Manage php installations" MAINTAINER="php-b...@gentoo.org" -MODULES="cli apache2 fpm cgi phpdbg" +MODULES="cli apache2 fpm cgi dbg" # # Output a list of link names (not full paths) belonging to the given @@ -428,7 +428,7 @@ list_fpm() { list_sapi fpm } -list_phpdbg() { +list_dbg() { list_sapi dbg } @@ -498,7 +498,7 @@ set_cgi() { set_sapi cgi "${1}" } -set_phpdbg() { +set_dbg() { set_sapi dbg "${1}" }
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: d4fe480eed309b82de1a2370ac85ae1d2367f17d Author: Michael Orlitzky gentoo org> AuthorDate: Sat Jan 9 02:13:41 2016 + Commit: Michael Orlitzky gentoo org> CommitDate: Sat Jan 9 02:13:41 2016 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=d4fe480e Clean up check_module() a bit and give it some documentation. src/php.eselect.in | 16 +++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index 26c43d8..d19b93a 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -382,8 +382,22 @@ resolv_target() { fi } + +# Die if the given module name is not valid. +# +# INPUT: +# +# A module name. +# +# OUTPUT: +# +# None; the function will die() if the given module name is invalid +# (that is, not one of our declared $MODULES), and do nothing +# otherwise. +# check_module() { - has $1 $(echo $MODULES) || \ + local module="${1}" + has "${module}" $MODULES || \ die -q "Please choose one of the following modules: ${MODULES}" }
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: f5f1575593c3c2792a50e61e08db4d72757bf731 Author: Michael Orlitzky gentoo org> AuthorDate: Sat Dec 19 23:55:00 2015 + Commit: Michael Orlitzky gentoo org> CommitDate: Sat Dec 19 23:55:00 2015 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=f5f15755 Add some missing semicolons at the end of a case statement. src/php.eselect.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index a2266c5..d9c1555 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -57,7 +57,7 @@ parse_target_major_version() { local major="${target:3:1}" case "${major}" in 5|7) echo "${major}" ;; - *) die "invalid PHP target name: ${target}" + *) die "invalid PHP target name: ${target}" ;; esac }
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 4f1ff31c738d4abe67849eb4280154889275127f Author: Michael Orlitzky gentoo org> AuthorDate: Sat Dec 19 23:55:33 2015 + Commit: Michael Orlitzky gentoo org> CommitDate: Sat Dec 19 23:55:33 2015 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=4f1ff31c Add the find_sapi_targets() function and refactor. The new function find_sapi_targets() takes a SAPI name as an argument and outputs the valid targets for that SAPI. With it we replace the following five functions that all did more or less the same thing: 1. find_targets_apache2() 2. find_targets_cli() 3. find_targets_fpm() 4. find_targets_cgi() 5. find_targets_phpdbg() src/php.eselect.in | 82 +++--- 1 file changed, 29 insertions(+), 53 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index d9c1555..a377116 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -93,7 +93,7 @@ cleanup_sapi() { } update_sapi() { - local target=$(find_targets_$1 | tail -n 1) + local target=$(find_sapi_targets $1 | tail -n 1) local current=$(get_active_$1) [[ -z $target ]] && return 1 [[ $current = $target ]] && return 1 @@ -131,66 +131,42 @@ find_targets() { echo $dirs } -# List all valid apache2 targets. The list is obtained by searching -# for libphp*.so in locations determined by find_targets(). This list -# should therefore be a subset of find_targets(). +# List all valid targets for the given SAPI. The list is obtained by +# searching the filesystem for a particular (SAPI-specific) file in +# locations determined by find_targets(). This list should therefore +# be a subset of find_targets(). # # INPUT: # -# None. +# The name of a SAPI. # # OUTPUT: # -# The "display name" of every available apache PHP module, one per line. -# For example, +# The "display name" of every available target for this SAPI, one per +# line. For example, # # php5.6 # php7.0 # -find_targets_apache2() { - local libs target libdir - for target in $(find_targets); do - for libdir in $(get_libdirs); do - libs="${EROOT}${libdir}/${target}/apache2/libphp[57].so" - for lib in $libs; do - [[ -f "${lib}" ]] && echo $target - done - done - done | @SORT@ | @UNIQ@ -} - -find_targets_cli() { - local target libdir - for target in $(find_targets); do - for libdir in $(get_libdirs); do - [[ -f ${EROOT}${libdir}/$target/bin/php ]] && echo $target - done - done | @SORT@ | @UNIQ@ -} - -find_targets_fpm() { - local target libdir - for target in $(find_targets); do - for libdir in $(get_libdirs); do - [[ -f ${EROOT}${libdir}/$target/bin/php-fpm ]] && echo $target - done - done | @SORT@ | @UNIQ@ -} +find_sapi_targets() { + local sapi="${1}" -find_targets_cgi() { - local target libdir - for target in $(find_targets); do - for libdir in $(get_libdirs); do - [[ -f ${EROOT}${libdir}/$target/bin/php-cgi ]] && echo $target - done - done | @SORT@ | @UNIQ@ -} + local pattern_suffix + case "${sapi}" in + apache2) pattern_suffix="apache2/libphp[57].so" ;; + cli) pattern_suffix="bin/php" ;; + fpm) pattern_suffix="bin/php-fpm" ;; + cgi) pattern_suffix="bin/php-cgi" ;; + dbg) pattern_suffix="bin/phpdbg" ;; + *) die "invalid SAPI name: ${sapi}" ;; + esac -find_targets_phpdbg() { - local target libdir for target in $(find_targets); do for libdir in $(get_libdirs); do - [[ -f ${EROOT}${libdir}/$target/bin/phpdbg ]] && echo $target + local pattern="${EROOT}${libdir}/${target}/${pattern_suffix}" + for file in $pattern; do + [[ -f "${file}" ]] && echo "${target}" + done done done | @SORT@ | @UNIQ@ } @@ -256,7 +232,7 @@ write_mod_php_conf() { } resolv_target() { - local targets=( $(find_targets_$1) ) + local targets=( $(find_targets $1) ) if is_number $2; then if [[ $2 -le ${#targets[@]} && $2 -gt 0 ]] ; then echo "${targets[ $(( $2 - 1 )) ]}" @@ -276,7 +252,7 @@ check_module() { list_apache2() { local targets local a - targets=( $(find_targets_apache2) ) + targets=( $(find_sapi_targets apache2) ) a=$(get_sapi_active_target apache2) for (( i = 0; i < ${#targets[@]}; i++ )) ; do if [[ $a == ${targets[i]} ]] ; then @@ -289,7 +265,7 @@ list_apache2() { list_cli() {
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 20bd3ef735c06af203f826e0a0b9c5603e00af8c Author: Michael Orlitzky gentoo org> AuthorDate: Sat Dec 19 22:29:41 2015 + Commit: Michael Orlitzky gentoo org> CommitDate: Sat Dec 19 22:29:41 2015 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=20bd3ef7 Replace hard-coded SAPI executable link paths with a function call. src/php.eselect.in | 49 ++--- 1 file changed, 38 insertions(+), 11 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index 10edcbd..4af8650 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -8,10 +8,37 @@ MAINTAINER="php-b...@gentoo.org" MODULES="cli apache2 fpm cgi phpdbg" -cli_link="${EROOT}"/usr/bin/php -fpm_link="${EROOT}"/usr/bin/php-fpm -cgi_link="${EROOT}"/usr/bin/php-cgi -dbg_link="${EROOT}"/usr/bin/phpdbg + +# Most of the SAPIs (apache2 excluded) provide executables that we +# symlink to a predictable location. Given a SAPI name, we output +# that location. +# +# For example, the "cgi" SAPI has its active symlink at /usr/bin/php-cgi. +# +# Note that the "cli" SAPI actually provides three binaries -- we +# return the path for only one. This is an API wart, not by design. +# +# INPUT: +# +# The name of a SAPI that provides an executable. +# +# OUTPUT: +# +# The path of the symlink for the executable provided by the active +# version of the given SAPI. An error is raised if the given SAPI +# does not provide an executable. +# +sapi_active_bin_link_path() { + local sapi="${1}" + local bin_dir="${EROOT}/usr/bin/" + case "${sapi}" in + cli) echo "${bin_dir}/php" ;; + fpm) echo "${bin_dir}/php-fpm" ;; + cgi) echo "${bin_dir}/php-cgi" ;; + dbg) echo "${bin_dir}/phpdbg" ;; +*) die "SAPI ${sapi} does not provide an executable" ;; + esac +} cleanup_sapis() { local m @@ -149,28 +176,28 @@ find_targets_phpdbg() { get_active_cli() { # See get_active_apache2() for an explanation of the sed call. - local target=$(canonicalise "${cli_link}") + local target=$(canonicalise "$(sapi_active_bin_link_path cli)") local ver="s:.*/usr/.*/\(php[0-9]\.[0-9][0-9]*\)/bin/php:\1:p" [[ -a "${target}" ]] && echo "${target}" | @SED@ -ne "${ver}" } get_active_cgi() { # See get_active_apache2() for an explanation of the sed call. - local target=$(canonicalise "${cgi_link}") + local target=$(canonicalise "$(sapi_active_bin_link_path cgi)") local ver="s:.*/usr/.*/\(php[0-9]\.[0-9][0-9]*\)/bin/php-cgi:\1:p" [[ -a "${target}" ]] && echo "${target}" | @SED@ -ne "${ver}" } get_active_fpm() { # See get_active_apache2() for an explanation of the sed call. - local target=$(canonicalise "${fpm_link}") + local target=$(canonicalise "$(sapi_active_bin_link_path fpm)") local ver="s:.*/usr/.*/\(php[0-9]\.[0-9][0-9]*\)/bin/php-fpm:\1:p" [[ -a "${target}" ]] && echo "${target}" | @SED@ -ne "${ver}" } get_active_phpdbg() { # See get_active_apache2() for an explanation of the sed call. - local target=$(canonicalise "${dbg_link}") + local target=$(canonicalise "$(sapi_active_bin_link_path dbg)") local ver="s:.*/usr/.*/\(php[0-9]\.[0-9][0-9]*\)/bin/phpdbg:\1:p" [[ -a "${target}" ]] && echo "${target}" | @SED@ -ne "${ver}" } @@ -371,7 +398,7 @@ set_cgi() { t=$(resolv_target cgi $1) [[ -z $t ]] && die -q "invalid target" @LN_S@ --force "../..$(get_active_libdir)/${t}/bin/php-cgi" \ - "${cgi_link}" || \ + "$(sapi_active_bin_link_path cgi)" || \ die -q "failed to create active php-cgi symlink" } @@ -379,7 +406,7 @@ set_phpdbg() { t=$(resolv_target phpdbg $1) [[ -z $t ]] && die -q "invalid target" @LN_S@ --force "../..$(get_active_libdir)/${t}/bin/phpdbg" \ - "${dbg_link}" || \ + "$(sapi_active_bin_link_path dbg)" || \ die -q "failed to create active phpdbg symlink" } @@ -387,7 +414,7 @@ set_fpm() { local t=$(resolv_target fpm $1) [[ -z $t ]] && die -q "invalid target" @LN_S@ --force "../..$(get_active_libdir)/${t}/bin/php-fpm" \ - "${fpm_link}" || \ + "$(sapi_active_bin_link_path fpm)" || \ die -q "failed to create symlink for the php-fpm binary" echo "Please restart php-fpm for the changes to take effect." }
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 1926650b7c0f73fb44d8ca1c32f92883ed851e52 Author: Michael Orlitzky gentoo org> AuthorDate: Sun Dec 20 00:16:02 2015 + Commit: Michael Orlitzky gentoo org> CommitDate: Sun Dec 20 00:16:02 2015 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=1926650b Fix bug in resolv_target() introduced while refactoring. The resolv_target() function was making a call to find_targets_$1. This was incorrectly refacored to "find_targets $1" instead of "find_sapi_targets $1" and has been fixed. src/php.eselect.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index 9a1d628..d730e00 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -232,7 +232,7 @@ write_mod_php_conf() { } resolv_target() { - local targets=( $(find_targets $1) ) + local targets=( $(find_sapi_targets $1) ) if is_number $2; then if [[ $2 -le ${#targets[@]} && $2 -gt 0 ]] ; then echo "${targets[ $(( $2 - 1 )) ]}"
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: a3091c3b9dcae38cc1b6a78f8f963e2cbc3144be Author: Michael Orlitzky gentoo org> AuthorDate: Sun Dec 20 00:06:47 2015 + Commit: Michael Orlitzky gentoo org> CommitDate: Sun Dec 20 00:06:47 2015 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=a3091c3b Consolidate all list_foo actions into one new list_sapi() function. This follows in the same vein as the other recent refactorings. With the machinery in place, list_cli, list_cgi, etc. are all replaced by one function list_sapi() taking a SAPI name as an argument. src/php.eselect.in | 70 +++--- 1 file changed, 24 insertions(+), 46 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index a377116..9a1d628 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -249,69 +249,47 @@ check_module() { ## Actual actions -list_apache2() { - local targets - local a - targets=( $(find_sapi_targets apache2) ) - a=$(get_sapi_active_target apache2) +# Perform the "list" action for the given SAPI. +# +# INPUT: +# +# The SAPI name. +# +# OUTPUT: +# +# A numbered and decorated list of targets for the given SAPI. +# +list_sapi() { + local sapi="${1}" + local targets=( $(find_sapi_targets "${sapi}") ) + local active=$(get_sapi_active_target "${sapi}") + for (( i = 0; i < ${#targets[@]}; i++ )) ; do - if [[ $a == ${targets[i]} ]] ; then + if [[ $active == ${targets[i]} ]] ; then targets[i]=$(highlight_marker "${targets[i]}") fi done write_numbered_list -m "(none found)" "${targets[@]}" } +list_apache2() { + list_sapi apache2 +} + list_cli() { - local targets - local a - targets=( $(find_sapi_targets cli) ) - a=$(get_sapi_active_target cli) - for (( i = 0; i < ${#targets[@]}; i++ )) ; do - if [[ $a == ${targets[i]} ]] ; then - targets[i]=$(highlight_marker "${targets[i]}") - fi - done - write_numbered_list -m "(none found)" "${targets[@]}" + list_sapi cli } list_cgi() { - local targets - local a - targets=( $(find_sapi_targets cgi) ) - a=$(get_sapi_active_target cgi) - for (( i = 0; i < ${#targets[@]}; i++ )) ; do - if [[ $a == ${targets[i]} ]] ; then - targets[i]=$(highlight_marker "${targets[i]}") - fi - done - write_numbered_list -m "(none found)" "${targets[@]}" + list_sapi cgi } list_fpm() { - local targets - local a - targets=( $(find_sapi_targets fpm) ) - a=$(get_sapi_active_target fpm) - for (( i = 0; i < ${#targets[@]}; i++ )) ; do - if [[ $a == ${targets[i]} ]] ; then - targets[i]=$(highlight_marker "${targets[i]}") - fi - done - write_numbered_list -m "(none found)" "${targets[@]}" + list_sapi fpm } list_phpdbg() { - local targets - local a - targets=( $(find_sapi_targets dbg) ) - a=$(get_sapi_active_target dbg) - for (( i = 0; i < ${#targets[@]}; i++ )) ; do - if [[ $a == ${targets[i]} ]] ; then - targets[i]=$(highlight_marker "${targets[i]}") - fi - done - write_numbered_list -m "(none found)" "${targets[@]}" + list_sapi dbg } set_apache2() {
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 6b913fd7a6a7c34ca6411f5117393ab5ded0c4f9 Author: Michael Orlitzky gentoo org> AuthorDate: Sat Dec 19 22:47:50 2015 + Commit: Michael Orlitzky gentoo org> CommitDate: Sat Dec 19 22:47:50 2015 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=6b913fd7 Generalize sapi_active_bin_link_path() to sapi_active_link_path(). Generalize the sapi_active_bin_link_path() to work with the "apache2" SAPI, too. Basically we just return the path of the mod_php symlink for that SAPI even though it's not an executable. After doing so, it makes sense to remove "bin" from the function name. The sapi_active_link_path() function, called with "apache2" as its argument, now replaces the get_apache2_active_symlink_path() function. src/php.eselect.in | 64 +++--- 1 file changed, 22 insertions(+), 42 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index 0eb4ae4..6c1f803 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -9,34 +9,33 @@ MAINTAINER="php-b...@gentoo.org" MODULES="cli apache2 fpm cgi phpdbg" -# Most of the SAPIs (apache2 excluded) provide executables that we -# symlink to a predictable location. Given a SAPI name, we output -# that location. +# Each SAPI provides at least one "active" link in a predictable +# location. For example, the "cgi" SAPI has its active symlink at +# /usr/bin/php-cgi. Given a SAPI name we return the path to that link. # -# For example, the "cgi" SAPI has its active symlink at /usr/bin/php-cgi. -# -# Note that the "cli" SAPI actually provides three binaries -- we +# Note that the "cli" SAPI actually provides three executables -- we # return the path for only one. This is an API wart, not by design. # # INPUT: # -# The name of a SAPI that provides an executable. +# The name of a SAPI. # # OUTPUT: # -# The path of the symlink for the executable provided by the active -# version of the given SAPI. An error is raised if the given SAPI -# does not provide an executable. +# The path of the main symlink provided by the active version of the +# given SAPI. An error is raised if the given SAPI is not valid. # -sapi_active_bin_link_path() { +sapi_active_link_path() { local sapi="${1}" local bin_dir="${EROOT}/usr/bin/" case "${sapi}" in - cli) echo "${bin_dir}/php" ;; + apache2) +echo "${EROOT}$(get_active_libdir)/apache2/modules/mod_php.so" ;; + cli) echo "${bin_dir}/php" ;; fpm) echo "${bin_dir}/php-fpm" ;; cgi) echo "${bin_dir}/php-cgi" ;; - dbg) echo "${bin_dir}/phpdbg" ;; -*) die "SAPI ${sapi} does not provide an executable" ;; + dbg) echo "${bin_dir}/phpdbg" ;; +*) die "invalid SAPI name: ${sapi}" ;; esac } @@ -198,51 +197,32 @@ find_targets_phpdbg() { get_active_cli() { # See get_active_apache2() for an explanation of the sed call. - local target=$(canonicalise "$(sapi_active_bin_link_path cli)") + local target=$(canonicalise "$(sapi_active_link_path cli)") local ver="s:.*/usr/.*/\(php[0-9]\.[0-9][0-9]*\)/bin/php:\1:p" [[ -a "${target}" ]] && echo "${target}" | @SED@ -ne "${ver}" } get_active_cgi() { # See get_active_apache2() for an explanation of the sed call. - local target=$(canonicalise "$(sapi_active_bin_link_path cgi)") + local target=$(canonicalise "$(sapi_active_link_path cgi)") local ver="s:.*/usr/.*/\(php[0-9]\.[0-9][0-9]*\)/bin/php-cgi:\1:p" [[ -a "${target}" ]] && echo "${target}" | @SED@ -ne "${ver}" } get_active_fpm() { # See get_active_apache2() for an explanation of the sed call. - local target=$(canonicalise "$(sapi_active_bin_link_path fpm)") + local target=$(canonicalise "$(sapi_active_link_path fpm)") local ver="s:.*/usr/.*/\(php[0-9]\.[0-9][0-9]*\)/bin/php-fpm:\1:p" [[ -a "${target}" ]] && echo "${target}" | @SED@ -ne "${ver}" } get_active_phpdbg() { # See get_active_apache2() for an explanation of the sed call. - local target=$(canonicalise "$(sapi_active_bin_link_path dbg)") + local target=$(canonicalise "$(sapi_active_link_path dbg)") local ver="s:.*/usr/.*/\(php[0-9]\.[0-9][0-9]*\)/bin/phpdbg:\1:p" [[ -a "${target}" ]] && echo "${target}" | @SED@ -ne "${ver}" } -# The path to the active version of the apache2 module, which should -# be a symlink. This is the path used by our apache configuration to -# load the PHP module. The path is unversioned (that is, it has no "5" -# or "7" in it) so that the apache configuration does not need to -# change after the user eselects a different version. -# -# INPUT: -# -# None. -# -# OUTPUT: -# -# The path to our mod_php.so symlink, which should (but is not -# guaranteed to) point to a real apache DSO. -# -get_apache2_active_symlink_path() { -
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 7d9d9e7ef2a642c2f568de59b1af5f20a0c828ab Author: Michael Orlitzky gentoo org> AuthorDate: Sat Dec 19 22:40:41 2015 + Commit: Michael Orlitzky gentoo org> CommitDate: Sat Dec 19 22:40:41 2015 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=7d9d9e7e Factor out the target major version number parsing into a function. src/php.eselect.in | 32 +++- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index 4af8650..0eb4ae4 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -40,6 +40,28 @@ sapi_active_bin_link_path() { esac } + +# Parse and return the major version from a target name. For example, +# the "php5.6" target has a major version of "5". +# +# INPUT: +# +# The name of a valid PHP target, like php5.6 or php7.0. +# +# OUTPUT: +# +# A major version number. An error is raised if the given target is +# not valid. +# +parse_target_major_version() { + local target="${1}" + local major="${target:3:1}" + case "${major}" in + 5|7) echo "${major}" ;; + *) die "invalid PHP target name: ${target}" + esac +} + cleanup_sapis() { local m local link @@ -273,9 +295,7 @@ write_mod_php_conf() { @MKDIR_P@ "${conf_dir}" || die "failed to create ${conf_dir}" - # Parse the major version (for example "5" or "7") out of the - # target name. - local major="${target:3:1}" + local major=$(parse_target_major_version "${target}") cat <<-EOF > "${conf_path}" || die "failed to write mod_php.conf" LoadModule php${major}_module modules/mod_php.so @@ -367,15 +387,17 @@ list_phpdbg() { } set_apache2() { - local active_symlink libdir target=$(resolv_target apache2 $1) + local active_symlink libdir major target=$(resolv_target apache2 $1) active_symlink="$(get_apache2_active_symlink_path)" + major=$(parse_target_major_version "${target}") [[ -z $target ]] && die -q "invalid target" + for libdir in $(get_libdirs); do rm --force "${active_symlink}" || \ die "failed to remove active module symlink" - @LN_S@ --force "../../${target}/apache2/libphp${target:3:1}.so" \ + @LN_S@ --force "../../${target}/apache2/libphp${major}.so" \ "${active_symlink}" || \ die -q "failed to create active mod_php symlink" done
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: b363dda0a3d3bdab2874b3f12c64c9fc8beeef4c Author: Michael Orlitzky gentoo org> AuthorDate: Sat Dec 19 23:29:40 2015 + Commit: Michael Orlitzky gentoo org> CommitDate: Sat Dec 19 23:29:40 2015 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=b363dda0 Factor our the active SAPI target getter functions. We had five functions doing essentially the same thing: 1. get_active_cli() 2. get_active_cgi() 3. get_active_fpm() 4. get_active_phpdbg() 5. get_active_apache2() Now that we have the sapi_active_link_path() function taking a SAPI name as an argument, these have been refactored. One new function get_sapi_active_target() takes a SAPI name as an argument and returns the name of the active target (using sapi_active_link_path). src/php.eselect.in | 62 +++--- 1 file changed, 17 insertions(+), 45 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index 6c1f803..fff7784 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -195,33 +195,6 @@ find_targets_phpdbg() { done | @SORT@ | @UNIQ@ } -get_active_cli() { - # See get_active_apache2() for an explanation of the sed call. - local target=$(canonicalise "$(sapi_active_link_path cli)") - local ver="s:.*/usr/.*/\(php[0-9]\.[0-9][0-9]*\)/bin/php:\1:p" - [[ -a "${target}" ]] && echo "${target}" | @SED@ -ne "${ver}" -} - -get_active_cgi() { - # See get_active_apache2() for an explanation of the sed call. - local target=$(canonicalise "$(sapi_active_link_path cgi)") - local ver="s:.*/usr/.*/\(php[0-9]\.[0-9][0-9]*\)/bin/php-cgi:\1:p" - [[ -a "${target}" ]] && echo "${target}" | @SED@ -ne "${ver}" -} - -get_active_fpm() { - # See get_active_apache2() for an explanation of the sed call. - local target=$(canonicalise "$(sapi_active_link_path fpm)") - local ver="s:.*/usr/.*/\(php[0-9]\.[0-9][0-9]*\)/bin/php-fpm:\1:p" - [[ -a "${target}" ]] && echo "${target}" | @SED@ -ne "${ver}" -} - -get_active_phpdbg() { - # See get_active_apache2() for an explanation of the sed call. - local target=$(canonicalise "$(sapi_active_link_path dbg)") - local ver="s:.*/usr/.*/\(php[0-9]\.[0-9][0-9]*\)/bin/phpdbg:\1:p" - [[ -a "${target}" ]] && echo "${target}" | @SED@ -ne "${ver}" -} # Find the active (selected) version of the apache2 module. Used to # decorate the output of the `eselect php list apache2` command. @@ -235,21 +208,20 @@ get_active_phpdbg() { # The "display name" of the active apache2 module. For example, # "php5.6" or "php7.0". # -get_active_apache2() { - local active_symlink target ver - - # The symlink to our active module. - active_symlink="$(sapi_active_link_path apache2)" - - # This sed expression finds the "display name" of the PHP version - # corresponding to a copy of libphp. For example, it parses the - # string "php5.6" out of "/usr/lib64/php5.6/apache2/libphp5.so". - ver="s:.*/usr/.*/\(php[0-9]\.[0-9]\)/apache2/libphp[57].so:\1:p" +get_sapi_active_target() { + local sapi="${1}" + local active_symlink=$(sapi_active_link_path "${sapi}") if [[ -L "${active_symlink}" ]] ; then - target=$(canonicalise "${active_symlink}") - if [[ -a "${target}" ]] ; then - echo "${target}" | @SED@ -ne "${ver}" + local active_file=$(canonicalise "${active_symlink}") + if [[ -a "${active_file}" ]] ; then + # This sed command (regular expression) finds a target name + # contained in a filesystem path. For example, it parses + # "php5.6" from "/usr/lib64/php5.6/apache2/libphp5.so". + # The curly braces are an attempt to avoid '+' which is + # a GNU extension. + local sed_cmd='s:.*/\(php[0-9]\.[0-9]\{1,\}\)/.*:\1:p' + echo "${active_file}" | @SED@ -ne "${sed_cmd}" fi fi } @@ -305,7 +277,7 @@ list_apache2() { local targets local a targets=( $(find_targets_apache2) ) - a=$(get_active_apache2) + a=$(get_sapi_active_target apache2) for (( i = 0; i < ${#targets[@]}; i++ )) ; do if [[ $a == ${targets[i]} ]] ; then targets[i]=$(highlight_marker "${targets[i]}") @@ -318,7 +290,7 @@ list_cli() { local targets local a targets=( $(find_targets_cli) ) - a=$(get_active_cli) + a=$(get_sapi_active_target cli) for (( i = 0; i < ${#targets[@]}; i++ )) ; do if [[ $a == ${targets[i]} ]] ; then targets[i]=$(highlight_marker "${targets[i]}") @@ -331,7 +303,7 @@ list_cgi() { local targets local a targets=( $(find_targets_cgi) ) - a=$(get_active_cgi) +
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 313a8dafa0a6fd39c2acd27ab39f6d7b119b7835 Author: Michael Orlitzky gentoo org> AuthorDate: Sat Dec 19 23:34:38 2015 + Commit: Michael Orlitzky gentoo org> CommitDate: Sat Dec 19 23:34:38 2015 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=313a8daf Fix documentation for the get_sapi_active_target() function. The documentation for the get_sapi_active_target() was copy/pasted and never updated. Whoops. It's been fixed. src/php.eselect.in | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index fff7784..a2266c5 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -196,17 +196,17 @@ find_targets_phpdbg() { } -# Find the active (selected) version of the apache2 module. Used to -# decorate the output of the `eselect php list apache2` command. +# Find the active (selected) target for the given SAPI. This is used +# to decorate the output of the `eselect php list ` command. # # INPUT: # -# None. +# The name of a SAPI. # # OUTPUT: # -# The "display name" of the active apache2 module. For example, -# "php5.6" or "php7.0". +# The "display name" of the active target for the given SAPI. For +# example, "php5.6" or "php7.0". # get_sapi_active_target() { local sapi="${1}"
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 270d0436bdffcf82d8981b28a9833569146332d0 Author: Brian Evans gentoo org> AuthorDate: Fri Dec 18 02:27:28 2015 + Commit: Brian Evans gentoo org> CommitDate: Fri Dec 18 02:27:28 2015 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=270d0436 Add support for the phpdbg SAPI target Signed-off-by: Brian Evans gentoo.org> src/php.eselect.in | 40 +++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index 7e918ab..10edcbd 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -6,11 +6,12 @@ inherit config multilib DESCRIPTION="Manage php installations" MAINTAINER="php-b...@gentoo.org" -MODULES="cli apache2 fpm cgi" +MODULES="cli apache2 fpm cgi phpdbg" cli_link="${EROOT}"/usr/bin/php fpm_link="${EROOT}"/usr/bin/php-fpm cgi_link="${EROOT}"/usr/bin/php-cgi +dbg_link="${EROOT}"/usr/bin/phpdbg cleanup_sapis() { local m @@ -137,6 +138,15 @@ find_targets_cgi() { done | @SORT@ | @UNIQ@ } +find_targets_phpdbg() { + local target libdir + for target in $(find_targets); do + for libdir in $(get_libdirs); do + [[ -f ${EROOT}${libdir}/$target/bin/phpdbg ]] && echo $target + done + done | @SORT@ | @UNIQ@ +} + get_active_cli() { # See get_active_apache2() for an explanation of the sed call. local target=$(canonicalise "${cli_link}") @@ -158,6 +168,13 @@ get_active_fpm() { [[ -a "${target}" ]] && echo "${target}" | @SED@ -ne "${ver}" } +get_active_phpdbg() { + # See get_active_apache2() for an explanation of the sed call. + local target=$(canonicalise "${dbg_link}") + local ver="s:.*/usr/.*/\(php[0-9]\.[0-9][0-9]*\)/bin/phpdbg:\1:p" + [[ -a "${target}" ]] && echo "${target}" | @SED@ -ne "${ver}" +} + # The path to the active version of the apache2 module, which should # be a symlink. This is the path used by our apache configuration to # load the PHP module. The path is unversioned (that is, it has no "5" @@ -309,6 +326,19 @@ list_fpm() { write_numbered_list -m "(none found)" "${targets[@]}" } +list_phpdbg() { + local targets + local a + targets=( $(find_targets_phpdbg) ) + a=$(get_active_phpdbg) + for (( i = 0; i < ${#targets[@]}; i++ )) ; do + if [[ $a == ${targets[i]} ]] ; then + targets[i]=$(highlight_marker "${targets[i]}") + fi + done + write_numbered_list -m "(none found)" "${targets[@]}" +} + set_apache2() { local active_symlink libdir target=$(resolv_target apache2 $1) active_symlink="$(get_apache2_active_symlink_path)" @@ -345,6 +375,14 @@ set_cgi() { die -q "failed to create active php-cgi symlink" } +set_phpdbg() { + t=$(resolv_target phpdbg $1) + [[ -z $t ]] && die -q "invalid target" + @LN_S@ --force "../..$(get_active_libdir)/${t}/bin/phpdbg" \ + "${dbg_link}" || \ + die -q "failed to create active phpdbg symlink" +} + set_fpm() { local t=$(resolv_target fpm $1) [[ -z $t ]] && die -q "invalid target"
[gentoo-commits] proj/eselect-php:master commit in: src/, /
commit: 9716aae78b821f26f3b820d838cec65d0b73c408 Author: Michael Orlitzky gentoo org> AuthorDate: Fri Dec 11 01:09:20 2015 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Dec 11 01:09:20 2015 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=9716aae7 Use AC_PROG_MKDIR_P macro/variable instead of "mkdir -p". configure.ac | 1 + src/php.eselect.in | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index d892d13..aa7bf70 100644 --- a/configure.ac +++ b/configure.ac @@ -2,6 +2,7 @@ AC_INIT([eselect-php], [0.8.1]) AM_INIT_AUTOMAKE([-Wall foreign no-dist-gzip dist-xz]) AC_PROG_LN_S +AC_PROG_MKDIR_P AC_PROG_SED AC_PATH_PROG(SORT,sort) AC_PATH_PROG(UNIQ,uniq) diff --git a/src/php.eselect.in b/src/php.eselect.in index aa8ad68..7e918ab 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -227,7 +227,7 @@ write_mod_php_conf() { local conf_dir="${EROOT}"/var/lib/eselect-php local conf_path="${conf_dir}/mod_php.conf" - mkdir -p "${conf_dir}" || die "failed to create ${conf_dir}" + @MKDIR_P@ "${conf_dir}" || die "failed to create ${conf_dir}" # Parse the major version (for example "5" or "7") out of the # target name.
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 41eea178ac8b07da9795ef3ec4c77595037fdb2c Author: Michael Orlitzky gentoo org> AuthorDate: Thu Dec 10 21:00:29 2015 + Commit: Michael Orlitzky gentoo org> CommitDate: Thu Dec 10 21:00:29 2015 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=41eea178 Add the get_apache2_active_symlink_path() function. The "active symlink" is used in two places: to determine the active version, and to set it. Factor its magic out into a separate function. src/php.eselect.in | 18 ++ 1 file changed, 18 insertions(+) diff --git a/src/php.eselect.in b/src/php.eselect.in index 2ea8c3d..d882095 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -158,6 +158,24 @@ get_active_fpm() { [[ -a "${target}" ]] && echo "${target}" | @SED@ -ne "${ver}" } +# The path to the active version of the apache2 module, which should +# be a symlink. This is the path used by our apache configuration to +# load the PHP module. The path is unversioned (that is, it has no "5" +# or "7" in it) so that the apache configuration does not need to +# change after the user eselects a different version. +# +# INPUT: +# +# None. +# +# OUTPUT: +# +# The path to our libphp.so symlink, which should (but is not +# guaranteed to) point to a real apache DSO. +# +get_apache2_active_symlink_path() { + echo "${EROOT}$(get_active_libdir)/apache2/modules/libphp.so" +} # Find the active (selected) version of the apache2 module. Used to # decorate the output of the `eselect php list apache2` command.
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 0a14910c4b819a4200e37ab0ffbc7dc126451be6 Author: Michael Orlitzky gentoo org> AuthorDate: Thu Dec 10 22:15:08 2015 + Commit: Michael Orlitzky gentoo org> CommitDate: Thu Dec 10 22:15:08 2015 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=0a14910c Rename our active DSO symlink to mod_php.so. Our DSO symlink used to be called libphp5.so or libphp7.so. This was very recently changed to an unversioned libphp.so, but at that point, we might as well just call it mod_php.so for consistency. Note that our 70_mod_php5.conf currently points directly to the libphp file and doesn't use the symlink, no matter its name. That will need to be changed. An unused cleanup() function was removed in the process, because the function that is actually used was updated to remove the obsolete libphp* symlinks. src/php.eselect.in | 16 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index d882095..e77b86a 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -34,6 +34,12 @@ cleanup_sapi() { return fi fi + + if [[ "${1}" == "apache2" ]]; then + rm -f "${EROOT}$(get_active_libdir)/apache2/modules/libphp[57].so" \ + || die "failed to remove old libphp.so symlink" + fi + return 1 } @@ -65,12 +71,6 @@ get_active_libdir() { echo /usr/lib } -cleanup() { - local target=$(find_targets_$1 | tail -n 1) - [[ -z $target ]] && - set_$1 $target -} - find_targets() { local dir dirs libdir for libdir in $(get_libdirs); do @@ -170,11 +170,11 @@ get_active_fpm() { # # OUTPUT: # -# The path to our libphp.so symlink, which should (but is not +# The path to our mod_php.so symlink, which should (but is not # guaranteed to) point to a real apache DSO. # get_apache2_active_symlink_path() { - echo "${EROOT}$(get_active_libdir)/apache2/modules/libphp.so" + echo "${EROOT}$(get_active_libdir)/apache2/modules/mod_php.so" } # Find the active (selected) version of the apache2 module. Used to
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 064b605e2bda578b8480b391484be52b0dd9222d Author: Michael Orlitzky gentoo org> AuthorDate: Thu Dec 10 22:29:29 2015 + Commit: Michael Orlitzky gentoo org> CommitDate: Thu Dec 10 22:29:29 2015 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=064b605e Clean up error/info messages and quoting in the set_* functions. src/php.eselect.in | 24 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index 4de770f..14ba819 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -289,34 +289,34 @@ set_apache2() { "${EROOT}${libdir}/apache2/modules/" || \ die -q "Failed to set symlink for ${EPREFIX}${libdir}/apache2/modules/libphp${t:3:1}.so" done - echo "You have to run \`${EPREFIX}/etc/init.d/apache2 restart' for the changes to take effect" + echo "Please restart apache for the changes to take effect." } set_cli() { local file libdir t=$(resolv_target cli $1) - [[ -z $t ]] && die -q "Bad target" + [[ -z $t ]] && die -q "invalid target" for file in php phpize php-config; do - @LN_S@ --force ../..$(get_active_libdir)/$t/bin/$file \ - "${EROOT}"/usr/bin/$file || \ - die -q "Failed to create symlink for ${file}" + @LN_S@ --force "../..$(get_active_libdir)/${t}/bin/${file}" \ + "${EROOT}/usr/bin/${file}" || \ + die -q "failed to create active ${file} symlink" done } set_cgi() { t=$(resolv_target cgi $1) - [[ -z $t ]] && die -q "Bad target" - @LN_S@ --force ../..$(get_active_libdir)/$t/bin/php-cgi \ + [[ -z $t ]] && die -q "invalid target" + @LN_S@ --force "../..$(get_active_libdir)/${t}/bin/php-cgi" \ "${EROOT}"/usr/bin/php-cgi || \ - die -q "Failed to create symlink for php-cgi" + die -q "failed to create active php-cgi symlink" } set_fpm() { local t=$(resolv_target fpm $1) - [[ -z $t ]] && die -q "Bad target" - @LN_S@ --force ../..$(get_active_libdir)/$t/bin/php-fpm \ + [[ -z $t ]] && die -q "invalid target" + @LN_S@ --force "../..$(get_active_libdir)/${t}/bin/php-fpm" \ "${EROOT}"/usr/bin/php-fpm || \ - die -q "Failed to create symlink for the php-fpm binary" - echo "You have to run \`${EPREFIX}/etc/init.d/php-fpm restart' for the changes to take effect" + die -q "failed to create symlink for the php-fpm binary" + echo "Please restart php-fpm for the changes to take effect." } ## set action
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: b1509ffcc83d25bf7b379ef55c4e5d8c75a8de8f Author: Michael Orlitzky gentoo org> AuthorDate: Thu Dec 10 22:28:27 2015 + Commit: Michael Orlitzky gentoo org> CommitDate: Thu Dec 10 22:28:27 2015 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=b1509ffc Add a missing die() on a call to rm. src/php.eselect.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index e77b86a..4de770f 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -29,7 +29,7 @@ cleanup_sapi() { echo ", updated version to $(get_active_$1)" return else - rm $link + rm $link || die "failed to remove ${link}" return fi
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: c5c96ff3aa9777818de6185045c41426214e3493 Author: Michael Orlitzky gentoo org> AuthorDate: Fri Dec 11 00:24:32 2015 + Commit: Michael Orlitzky gentoo org> CommitDate: Fri Dec 11 00:24:32 2015 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=c5c96ff3 Write an apache configuration file to /var/lib/eselect-php/mod_php.conf. With the mod_php.so symlinking done, we realize a new problem: each apache module has its "module name" hardcoded into the binary. For example, in mod_php7.c, we find, AP_MODULE_DECLARE_DATA module php7_module and likewise with php5_module in the 5.x series of PHP. This means that we can't load both of these modules with one LoadModule statement regardless of its filename -- we need to know the module name too. This commit adds a function to write out an apache config file for the current active module. The main apache config file should Include this file, which will be updated whenever an apache2 target is set. src/php.eselect.in | 39 --- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index ea8676f..aa8ad68 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -208,6 +208,37 @@ get_active_apache2() { fi } +# Write an apache configuration file to load the active version of +# mod_php. The 5.x and 7.x series (at least...) have different module +# names, and so require a different apache configuration when +# switching between the two. +# +# INPUT: +# +# The name of the target (php5.6, php7.0) for which to write the +# configuration file. +# +# OUTPUT: +# +# None. +# +write_mod_php_conf() { + local target="${1}" + local conf_dir="${EROOT}"/var/lib/eselect-php + local conf_path="${conf_dir}/mod_php.conf" + + mkdir -p "${conf_dir}" || die "failed to create ${conf_dir}" + + # Parse the major version (for example "5" or "7") out of the + # target name. + local major="${target:3:1}" + cat <<-EOF > "${conf_path}" || die "failed to write mod_php.conf" + + LoadModule php${major}_module modules/mod_php.so + + EOF +} + resolv_target() { local targets=( $(find_targets_$1) ) if is_number $2; then @@ -279,18 +310,20 @@ list_fpm() { } set_apache2() { - local active_symlink libdir t=$(resolv_target apache2 $1) + local active_symlink libdir target=$(resolv_target apache2 $1) active_symlink="$(get_apache2_active_symlink_path)" - [[ -z $t ]] && die -q "invalid target" + [[ -z $target ]] && die -q "invalid target" for libdir in $(get_libdirs); do rm --force "${active_symlink}" || \ die "failed to remove active module symlink" - @LN_S@ --force "../../${t}/apache2/libphp${t:3:1}.so" \ + @LN_S@ --force "../../${target}/apache2/libphp${target:3:1}.so" \ "${active_symlink}" || \ die -q "failed to create active mod_php symlink" done + + write_mod_php_conf "${target}" echo "Please restart apache for the changes to take effect." }
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 80898dea109417f9b8990837a4292ed90018f8d9 Author: Michael Orlitzky gentoo org> AuthorDate: Thu Dec 10 22:35:55 2015 + Commit: Michael Orlitzky gentoo org> CommitDate: Thu Dec 10 22:35:55 2015 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=80898dea Use {cli,cgi,fpm}_link variables where appropriate. These variables were all defined but not used. There were a few places where they could be profitably inserted. src/php.eselect.in | 10 +- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index 4bbc695..ea8676f 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -139,21 +139,21 @@ find_targets_cgi() { get_active_cli() { # See get_active_apache2() for an explanation of the sed call. - local target=$(canonicalise "${EROOT}"/usr/bin/php) + local target=$(canonicalise "${cli_link}") local ver="s:.*/usr/.*/\(php[0-9]\.[0-9][0-9]*\)/bin/php:\1:p" [[ -a "${target}" ]] && echo "${target}" | @SED@ -ne "${ver}" } get_active_cgi() { # See get_active_apache2() for an explanation of the sed call. - local target=$(canonicalise "${EROOT}"/usr/bin/php-cgi) + local target=$(canonicalise "${cgi_link}") local ver="s:.*/usr/.*/\(php[0-9]\.[0-9][0-9]*\)/bin/php-cgi:\1:p" [[ -a "${target}" ]] && echo "${target}" | @SED@ -ne "${ver}" } get_active_fpm() { # See get_active_apache2() for an explanation of the sed call. - local target=$(canonicalise "${EROOT}"/usr/bin/php-fpm) + local target=$(canonicalise "${fpm_link}") local ver="s:.*/usr/.*/\(php[0-9]\.[0-9][0-9]*\)/bin/php-fpm:\1:p" [[ -a "${target}" ]] && echo "${target}" | @SED@ -ne "${ver}" } @@ -308,7 +308,7 @@ set_cgi() { t=$(resolv_target cgi $1) [[ -z $t ]] && die -q "invalid target" @LN_S@ --force "../..$(get_active_libdir)/${t}/bin/php-cgi" \ - "${EROOT}"/usr/bin/php-cgi || \ + "${cgi_link}" || \ die -q "failed to create active php-cgi symlink" } @@ -316,7 +316,7 @@ set_fpm() { local t=$(resolv_target fpm $1) [[ -z $t ]] && die -q "invalid target" @LN_S@ --force "../..$(get_active_libdir)/${t}/bin/php-fpm" \ - "${EROOT}"/usr/bin/php-fpm || \ + "${fpm_link}" || \ die -q "failed to create symlink for the php-fpm binary" echo "Please restart php-fpm for the changes to take effect." }
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: c09a74e0b46e3cd72c5057d23b2ec2038b82a6f0 Author: Michael Orlitzky gentoo org> AuthorDate: Thu Dec 10 14:02:45 2015 + Commit: Michael Orlitzky gentoo org> CommitDate: Thu Dec 10 14:02:45 2015 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=c09a74e0 Document the find_targets_apache2() and get_active_apache2() functions. src/php.eselect.in | 28 1 file changed, 28 insertions(+) diff --git a/src/php.eselect.in b/src/php.eselect.in index 5bbb491..e08afbe 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -82,6 +82,22 @@ find_targets() { echo $dirs } +# List all valid apache2 targets. The list is obtained by searching +# for libphp*.so in locations determined by find_targets(). This list +# should therefore be a subset of find_targets(). +# +# INPUT: +# +# None. +# +# OUTPUT: +# +# The "display name" of every available apache PHP module, one per line. +# For example, +# +# php5.6 +# php7.0 +# find_targets_apache2() { local libs target libdir for target in $(find_targets); do @@ -143,6 +159,18 @@ get_active_fpm() { } +# Find the active (selected) version of the apache2 module. Used to +# decorate the output of the `eselect php list apache2` command. +# +# INPUT: +# +# None. +# +# OUTPUT: +# +# The "display name" of the active apache2 module. For example, +# "php5.6" or "php7.0". +# get_active_apache2() { local libs target ver libs="${EROOT}$(get_active_libdir)/apache2/modules/libphp[57].so"
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: f835773f9365d1f5fe46079df7cb7477f200f2ed Author: Michael Orlitzky gentoo org> AuthorDate: Thu Dec 10 13:45:25 2015 + Commit: Michael Orlitzky gentoo org> CommitDate: Thu Dec 10 13:45:25 2015 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=f835773f Use fixed ".so" suffix for libphp instead of computing it. The only supported way to run PHP/Apache these days is as a dynamic shared object (DSO). The DSO will have an ".so" suffix, so we don't need to probe to see if libphp*.a exists. This also avoids a hidden dependency on libz, for whose static library we were probing. src/php.eselect.in | 30 +++--- 1 file changed, 7 insertions(+), 23 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index 363dc1d..5bbb491 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -65,22 +65,6 @@ get_active_libdir() { echo /usr/lib } -get_libname() { - # probe on a well-known library - local lib ret=.so - for lib in "${EROOT}"$(get_active_libdir)/libz.* ; do - case "${lib##*/}" in - libz.a)ret=.a ;; # some platforms use .a as ext - libz.*.*) continue ;; - libz.*) - ret=${lib##*libz} - break - ;; - esac - done - echo ${ret} -} - cleanup() { local target=$(find_targets_$1 | tail -n 1) [[ -z $target ]] && @@ -102,7 +86,7 @@ find_targets_apache2() { local libs target libdir for target in $(find_targets); do for libdir in $(get_libdirs); do - libs="${EROOT}${libdir}/$target/apache2/libphp[57]$(get_libname)" + libs="${EROOT}${libdir}/$target/apache2/libphp[57].so" for lib in $libs; do [[ -f "${lib}" ]] && echo $target done @@ -161,12 +145,12 @@ get_active_fpm() { get_active_apache2() { local libs target ver - libs="${EROOT}$(get_active_libdir)/apache2/modules/libphp[57]$(get_libname)" + libs="${EROOT}$(get_active_libdir)/apache2/modules/libphp[57].so" # This sed expression finds the "display name" of the PHP version # corresponding to a copy of libphp. For example, it parses the # string "php5.6" out of "/usr/lib64/php5.6/apache2/libphp5.so". - ver="s:.*/usr/.*/\(php[0-9]\.[0-9]\)/apache2/libphp[57]$(get_libname):\1:p" + ver="s:.*/usr/.*/\(php[0-9]\.[0-9]\)/apache2/libphp[57].so:\1:p" for lib in $libs; do if [[ -L "${lib}" ]] ; then target=$(canonicalise "${lib}") @@ -254,10 +238,10 @@ set_apache2() { local libdir t=$(resolv_target apache2 $1) [[ -z $t ]] && die -q "Bad target" for libdir in $(get_libdirs); do - rm -f "${EROOT}${libdir}"/apache2/modules/libphp{5,7}$(get_libname) - @LN_S@ --force ../../$t/apache2/libphp${t:3:1}$(get_libname) \ - "${EROOT}"${libdir}/apache2/modules/ || \ - die -q "Failed to set symlink for ${EPREFIX}${libdir}/apache2/modules/libphp${t:3:1}$(get_libname)" + rm -f "${EROOT}${libdir}/apache2/modules/libphp[57].so" + @LN_S@ --force "../../$t/apache2/libphp${t:3:1}.so" \ + "${EROOT}${libdir}/apache2/modules/" || \ + die -q "Failed to set symlink for ${EPREFIX}${libdir}/apache2/modules/libphp${t:3:1}.so" done echo "You have to run \`${EPREFIX}/etc/init.d/apache2 restart' for the changes to take effect" }
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 0e8210cb39211c30ec8b02006d0e695bc8e6130f Author: Michael Orlitzky gentoo org> AuthorDate: Thu Dec 10 22:30:04 2015 + Commit: Michael Orlitzky gentoo org> CommitDate: Thu Dec 10 22:30:04 2015 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=0e8210cb Switch get_active_apache2() and set_apache2() to the new mod_php.so symlink. src/php.eselect.in | 38 -- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index 14ba819..4bbc695 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -190,24 +190,22 @@ get_apache2_active_symlink_path() { # "php5.6" or "php7.0". # get_active_apache2() { - local libs target ver - libs="${EROOT}$(get_active_libdir)/apache2/modules/libphp[57].so" + local active_symlink target ver + + # The symlink to our active module. + active_symlink="$(get_apache2_active_symlink_path)" # This sed expression finds the "display name" of the PHP version # corresponding to a copy of libphp. For example, it parses the # string "php5.6" out of "/usr/lib64/php5.6/apache2/libphp5.so". ver="s:.*/usr/.*/\(php[0-9]\.[0-9]\)/apache2/libphp[57].so:\1:p" - for lib in $libs; do - if [[ -L "${lib}" ]] ; then - target=$(canonicalise "${lib}") - if [[ -a "${target}" ]] ; then - echo "${target}" | @SED@ -ne "${ver}" - # Short-circuit here because we should never have more - # than one active version. - return - fi + + if [[ -L "${active_symlink}" ]] ; then + target=$(canonicalise "${active_symlink}") + if [[ -a "${target}" ]] ; then + echo "${target}" | @SED@ -ne "${ver}" fi - done + fi } resolv_target() { @@ -281,13 +279,17 @@ list_fpm() { } set_apache2() { - local libdir t=$(resolv_target apache2 $1) - [[ -z $t ]] && die -q "Bad target" + local active_symlink libdir t=$(resolv_target apache2 $1) + active_symlink="$(get_apache2_active_symlink_path)" + + [[ -z $t ]] && die -q "invalid target" for libdir in $(get_libdirs); do - rm -f "${EROOT}${libdir}/apache2/modules/libphp[57].so" - @LN_S@ --force "../../$t/apache2/libphp${t:3:1}.so" \ - "${EROOT}${libdir}/apache2/modules/" || \ - die -q "Failed to set symlink for ${EPREFIX}${libdir}/apache2/modules/libphp${t:3:1}.so" + rm --force "${active_symlink}" || \ + die "failed to remove active module symlink" + + @LN_S@ --force "../../${t}/apache2/libphp${t:3:1}.so" \ + "${active_symlink}" || \ + die -q "failed to create active mod_php symlink" done echo "Please restart apache for the changes to take effect." }
[gentoo-commits] proj/eselect-php:master commit in: src/
commit: 9ad05523d41421d97ae54e47bf3fdd293a48e275 Author: Michael Orlitzky gentoo org> AuthorDate: Thu Dec 10 14:03:13 2015 + Commit: Michael Orlitzky gentoo org> CommitDate: Thu Dec 10 14:03:13 2015 + URL:https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=9ad05523 Add curly braces around an interpolated string variable. src/php.eselect.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/php.eselect.in b/src/php.eselect.in index e08afbe..2ea8c3d 100644 --- a/src/php.eselect.in +++ b/src/php.eselect.in @@ -102,7 +102,7 @@ find_targets_apache2() { local libs target libdir for target in $(find_targets); do for libdir in $(get_libdirs); do - libs="${EROOT}${libdir}/$target/apache2/libphp[57].so" + libs="${EROOT}${libdir}/${target}/apache2/libphp[57].so" for lib in $libs; do [[ -f "${lib}" ]] && echo $target done