[gentoo-commits] proj/eselect-php:master commit in: src/

2020-12-07 Thread Brian Evans
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/

2020-03-01 Thread Michael Orlitzky
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/

2020-02-29 Thread Michael Orlitzky
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/

2020-02-29 Thread Michael Orlitzky
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/

2020-02-29 Thread Michael Orlitzky
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/

2020-02-29 Thread Michael Orlitzky
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/

2020-02-12 Thread Michael Orlitzky
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/

2020-01-23 Thread Michael Orlitzky
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/

2020-01-23 Thread Michael Orlitzky
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/

2020-01-23 Thread Michael Orlitzky
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/

2018-04-11 Thread Michael Orlitzky
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/

2016-01-22 Thread Michael Orlitzky
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/

2016-01-22 Thread Michael Orlitzky
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/

2016-01-22 Thread Michael Orlitzky
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/

2016-01-22 Thread Michael Orlitzky
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/

2016-01-22 Thread Michael Orlitzky
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/

2016-01-22 Thread Michael Orlitzky
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/

2016-01-22 Thread Michael Orlitzky
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/

2016-01-22 Thread Michael Orlitzky
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/

2016-01-22 Thread Michael Orlitzky
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/

2016-01-22 Thread Michael Orlitzky
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/, /

2016-01-21 Thread Michael Orlitzky
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/, /

2016-01-21 Thread Michael Orlitzky
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/

2016-01-21 Thread Michael Orlitzky
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/

2016-01-21 Thread Michael Orlitzky
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/

2016-01-21 Thread Michael Orlitzky
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/

2016-01-21 Thread Michael Orlitzky
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/

2016-01-21 Thread Michael Orlitzky
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/

2016-01-20 Thread Michael Orlitzky
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/

2016-01-09 Thread Michael Orlitzky
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/

2016-01-09 Thread Michael Orlitzky
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/

2016-01-08 Thread Michael Orlitzky
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/

2016-01-08 Thread Michael Orlitzky
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/

2016-01-08 Thread Michael Orlitzky
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/

2016-01-08 Thread Michael Orlitzky
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/

2016-01-08 Thread Michael Orlitzky
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/

2016-01-08 Thread Michael Orlitzky
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/

2016-01-08 Thread Michael Orlitzky
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/

2016-01-08 Thread Michael Orlitzky
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/

2016-01-08 Thread Michael Orlitzky
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/

2016-01-08 Thread Michael Orlitzky
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/

2016-01-08 Thread Michael Orlitzky
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/

2016-01-08 Thread Michael Orlitzky
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/

2016-01-08 Thread Michael Orlitzky
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/

2016-01-08 Thread Michael Orlitzky
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/

2016-01-08 Thread Michael Orlitzky
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/

2015-12-19 Thread Michael Orlitzky
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/

2015-12-19 Thread Michael Orlitzky
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/

2015-12-19 Thread Michael Orlitzky
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/

2015-12-19 Thread Michael Orlitzky
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/

2015-12-19 Thread Michael Orlitzky
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/

2015-12-19 Thread Michael Orlitzky
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/

2015-12-19 Thread Michael Orlitzky
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/

2015-12-19 Thread Michael Orlitzky
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/

2015-12-19 Thread Michael Orlitzky
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/

2015-12-17 Thread Brian Evans
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/, /

2015-12-10 Thread Michael Orlitzky
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/

2015-12-10 Thread Michael Orlitzky
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/

2015-12-10 Thread Michael Orlitzky
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/

2015-12-10 Thread Michael Orlitzky
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/

2015-12-10 Thread Michael Orlitzky
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/

2015-12-10 Thread Michael Orlitzky
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/

2015-12-10 Thread Michael Orlitzky
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/

2015-12-10 Thread Michael Orlitzky
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/

2015-12-10 Thread Michael Orlitzky
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/

2015-12-10 Thread Michael Orlitzky
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/

2015-12-10 Thread Michael Orlitzky
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