[libsoup/wip/meson] Change the shell script for getting the Apache module dirs to be a python script



commit 6727088d4bf2aa802487390ec3f9931574f8d870
Author: Tomas Popela <tpopela redhat com>
Date:   Fri Oct 6 11:00:31 2017 +0200

    Change the shell script for getting the Apache module dirs to be a python script
    
    As suggested by Slomo - python is already required by the meson and
    there the previous shell version worked only with bash.

 get-apache-module-dirs.sh |   31 ------------------
 get_apache_module_dirs.py |   75 +++++++++++++++++++++++++++++++++++++++++++++
 meson.build               |    2 +-
 3 files changed, 76 insertions(+), 32 deletions(-)
---
diff --git a/get_apache_module_dirs.py b/get_apache_module_dirs.py
new file mode 100755
index 0000000..c745030
--- /dev/null
+++ b/get_apache_module_dirs.py
@@ -0,0 +1,75 @@
+#!/usr/bin/env python3
+#
+# Copyright 2017 Tomas Popela <tpopela redhat com>
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+import re
+import subprocess
+import sys
+import os
+
+
+def main():
+    """Checks whether the required Apache modules are available and prints their
+       paths to stdout (values are separated by colons).
+
+       Only one argument is required - path to the Apache httpd2 executable"""
+
+    if len(sys.argv) != 2:
+        print('Only argument with path to the Apache httpd executable expected!', file=sys.stderr)
+        sys.exit(1)
+
+    httpd_executable = sys.argv[1]
+
+    if not os.path.isfile(httpd_executable):
+        print('The passed Apache httpd executable does not exist!', file=sys.stderr)
+        sys.exit(1)
+
+    apache_prefix = os.path.dirname(os.path.dirname(httpd_executable))
+    apache_httpd_output = subprocess.run(
+        [httpd_executable, '-V', '-C', 'ServerName localhost'], stdout=subprocess.PIPE)
+    if apache_httpd_output.returncode != 0:
+        print('Something went wrong when calling Apache httpd executable!', file=sys.stderr)
+        sys.exit(1)
+
+    mpm_regex = re.compile(r'\nServer MPM:[\s]+([\w]+)\n')
+    mpm = mpm_regex.search(apache_httpd_output.stdout.decode('utf-8')).group(1).lower()
+
+    apache_module_dir = ''
+    apache_ssl_module_dir = ''
+    apache_php_module_dir = ''
+
+    for lib_dir in ['/lib', '/lib64']:
+        for httpd_dir in ['apache', 'apache2', 'http', 'http2', 'httpd']:
+            for mpm_suffix in ['', '-' + mpm]:
+                for modules_dir in ['/', '/modules/']:
+                    modules_path = apache_prefix + lib_dir + '/' + httpd_dir + mpm_suffix + modules_dir
+                    if os.path.isfile(modules_path + 'mod_auth_digest.so'):
+                        apache_module_dir = modules_path
+                    if os.path.isfile(modules_path + 'mod_ssl.so'):
+                        apache_ssl_module_dir = modules_path
+                    if os.path.isfile(modules_path + 'libphp7.so'):
+                        apache_php_module_dir = modules_path
+
+    print(apache_module_dir + ":" + apache_ssl_module_dir + ":" + apache_php_module_dir, end='')
+
+if __name__ == "__main__":
+    main()
diff --git a/meson.build b/meson.build
index 90b85c6..6afd426 100644
--- a/meson.build
+++ b/meson.build
@@ -72,7 +72,7 @@ if apache_httpd2.found()
 endif
 
 if have_apache
-  apache_modules = run_command('sh', 'get-apache-module-dirs.sh', apache_httpd2.path())
+  apache_modules = run_command('get_apache_module_dirs.py', apache_httpd2.path())
   if apache_modules.returncode() == 0
     message('Apache module directory: ' + apache_modules.stdout().split(':')[0])
     apache_module_dir = apache_modules.stdout().split(':')[0]


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]