Ori.livneh has submitted this change and it was merged.

Change subject: Better mediawiki REPL
......................................................................


Better mediawiki REPL

This sets up the hhvm interactive mode to be used as a repl to help
debugging. Because the repl is always run as the mediawiki web user
shell users don't have their own configuration file. This works
around that limitation by storing per-user configuration files in
/var/lib/hphpd/<user>.hphpd.ini all owned by the mediawiki web
user.

Change-Id: I33966cc28a62d48642f3e8d875558c6e24205ba4
---
A modules/mediawiki/files/hphpd.ini
A modules/mediawiki/files/mwrepl
M modules/mediawiki/manifests/init.pp
A modules/mediawiki/manifests/mwrepl.pp
4 files changed, 71 insertions(+), 0 deletions(-)

Approvals:
  Ori.livneh: Verified; Looks good to me, approved



diff --git a/modules/mediawiki/files/hphpd.ini 
b/modules/mediawiki/files/hphpd.ini
new file mode 100644
index 0000000..235bcfe
--- /dev/null
+++ b/modules/mediawiki/files/hphpd.ini
@@ -0,0 +1,3 @@
+hhvm.macros[0][name] = startup
+hhvm.macros[0][cmds][] = continue
+
diff --git a/modules/mediawiki/files/mwrepl b/modules/mediawiki/files/mwrepl
new file mode 100755
index 0000000..0d7f1f9
--- /dev/null
+++ b/modules/mediawiki/files/mwrepl
@@ -0,0 +1,38 @@
+#!/bin/bash
+# Shell wrapper for interactive hhvm for use with multiversion mediawiki
+# This script belongs in /usr/local/bin/ and should be in PATH.
+. /etc/profile.d/mediawiki.sh
+
+# Use the source version of the script if the source directory is present.
+# This only matters if the source dir is shared or when run on the deployment 
server.
+if [ -d "$MEDIAWIKI_STAGING_DIR" ]; then
+       MEDIAWIKI_DEPLOYMENT_DIR_DIR_USE=$MEDIAWIKI_STAGING_DIR
+else
+       MEDIAWIKI_DEPLOYMENT_DIR_DIR_USE=$MEDIAWIKI_DEPLOYMENT_DIR
+fi
+
+usage() {
+       echo Error: $*
+       echo Usage:
+       echo -e "\t$0 <wiki>"
+       echo
+       exit 1
+}
+
+if [[ $# -gt 1 ]]; then
+       usage "Too many arguments"
+elif [[ $# -eq 0 ]]; then
+       WIKI=testwiki
+else
+       WIKI=$1
+fi
+
+if [ "$(whoami)" != "$MEDIAWIKI_WEB_USER" ] ; then
+       HPHPD_INI="${HPHPD_INI_DIR:=/var/lib/hphpd}/$(whoami).hphpd.ini"
+       if [ ! -f "$HPHPD_INI" ]; then
+               sudo -u "$MEDIAWIKI_WEB_USER" cp "$HPHPD_INI_DIR/hphpd.ini" 
"$HPHPD_INI"
+       fi
+       sudo -u "$MEDIAWIKI_WEB_USER" hhvm -a --debug-config "$HPHPD_INI" 
"$MEDIAWIKI_DEPLOYMENT_DIR_DIR_USE/multiversion/MWScript.php" commandLine.inc 
"--wiki=$WIKI"
+else
+       hhvm -a "$MEDIAWIKI_DEPLOYMENT_DIR_DIR_USE/multiversion/MWScript.php" 
commandLine.inc "--wiki=$WIKI"
+fi
diff --git a/modules/mediawiki/manifests/init.pp 
b/modules/mediawiki/manifests/init.pp
index 6d69848..b491380 100644
--- a/modules/mediawiki/manifests/init.pp
+++ b/modules/mediawiki/manifests/init.pp
@@ -25,6 +25,7 @@
     include ::mediawiki::users
     include ::mediawiki::syslog
     include ::mediawiki::php
+    include ::mediawiki::mwrepl
 
     if os_version('ubuntu >= trusty') {
         include ::mediawiki::hhvm
diff --git a/modules/mediawiki/manifests/mwrepl.pp 
b/modules/mediawiki/manifests/mwrepl.pp
new file mode 100644
index 0000000..1d11deb
--- /dev/null
+++ b/modules/mediawiki/manifests/mwrepl.pp
@@ -0,0 +1,29 @@
+# == Class: mediawiki::mwrepl
+#
+# 'mwrepl' is a command line REPL, read-eval-print-loop, utility. This
+# module ensures that mwrepl is installed, and that the per-user 
+# configuration is in place.
+
+class mediawiki::mwrepl {
+    require ::mediawiki::users
+    include ::scap::scripts
+
+    file { '/var/lib/hphpd':
+        ensure => directory,
+        owner  => $::mediawiki::users::web,
+        group  => $::mediawiki::users::web,
+        mode   => '0775',
+    }
+    file { '/var/lib/hphpd/hphpd.ini':
+        owner  => 'root',
+        group  => 'root',
+        mode   => '0444',
+        source => 'puppet:///modules/mediawiki/hphpd.ini',
+    }
+    file { '/usr/local/bin/mwrepl':
+        owner  => 'root',
+        group  => 'root',
+        mode   => '0555',
+        source => 'puppet:///modules/mediawiki/mwrepl',
+    }
+}

-- 
To view, visit https://gerrit.wikimedia.org/r/268541
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I33966cc28a62d48642f3e8d875558c6e24205ba4
Gerrit-PatchSet: 8
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: EBernhardson <ebernhard...@wikimedia.org>
Gerrit-Reviewer: EBernhardson <ebernhard...@wikimedia.org>
Gerrit-Reviewer: Ori.livneh <o...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to