Title: [225901] trunk
Revision
225901
Author
[email protected]
Date
2017-12-14 06:08:20 -0800 (Thu, 14 Dec 2017)

Log Message

Build should fail early is needed Perl modules are not installed
https://bugs.webkit.org/show_bug.cgi?id=180137

Reviewed by Michael Catanzaro.

Don't finish the configure successfully if the required Perl modules
are not installed. Start to require modules that are needed for
WPE/GTK+ ports.

* Source/cmake/FindPerlModules.cmake: Copied from
https://github.com/KDE/kdelibs4support/blob/master/cmake/FindPerlModules.cmake
and made it WebKit style compliant.
* Source/cmake/WebKitCommon.cmake:

Modified Paths

Added Paths

Diff

Modified: trunk/ChangeLog (225900 => 225901)


--- trunk/ChangeLog	2017-12-14 13:28:23 UTC (rev 225900)
+++ trunk/ChangeLog	2017-12-14 14:08:20 UTC (rev 225901)
@@ -1,3 +1,19 @@
+2017-12-14  Tomas Popela  <[email protected]>
+
+        Build should fail early is needed Perl modules are not installed
+        https://bugs.webkit.org/show_bug.cgi?id=180137
+
+        Reviewed by Michael Catanzaro.
+
+        Don't finish the configure successfully if the required Perl modules
+        are not installed. Start to require modules that are needed for
+        WPE/GTK+ ports.
+
+        * Source/cmake/FindPerlModules.cmake: Copied from
+        https://github.com/KDE/kdelibs4support/blob/master/cmake/FindPerlModules.cmake
+        and made it WebKit style compliant.
+        * Source/cmake/WebKitCommon.cmake:
+
 2017-12-13  Carlos Alberto Lopez Perez  <[email protected]>
 
         [WPE] WebCrypto should be a public option.

Added: trunk/Source/cmake/FindPerlModules.cmake (0 => 225901)


--- trunk/Source/cmake/FindPerlModules.cmake	                        (rev 0)
+++ trunk/Source/cmake/FindPerlModules.cmake	2017-12-14 14:08:20 UTC (rev 225901)
@@ -0,0 +1,88 @@
+#.rst:
+# FindPerlModules
+# ---------------
+#
+# Check that Perl has certain modules available.
+#
+# If PERL_EXECUTABLE is set, uses that, otherwise calls the Perl find module.
+#
+# To use, pass the perl module names (in the form you would use in a Perl
+# ``use`` statement) as components.
+#
+# This will define the following variables:
+#
+# ``Perl_<module>_FOUND``
+#     True if the given Perl module could be loaded by Perl
+#
+# where ``<module>`` is either the name passed as a component, or a version
+# with ``::`` replaced by ``_``.
+
+# Copyright 2015 Alex Merry <[email protected]>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+# 3. Neither the name of the University nor the names of its contributors
+#    may be used to endorse or promote products derived from this software
+#    without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+
+if (NOT PERL_EXECUTABLE)
+    find_package(Perl)
+endif ()
+
+include(FindPackageHandleStandardArgs)
+
+if (PERL_EXECUTABLE)
+    set(PerlModules_all_modules_found TRUE)
+    foreach (_comp ${PerlModules_FIND_COMPONENTS})
+        execute_process(
+            COMMAND ${PERL_EXECUTABLE} -e "use ${_comp}"
+            RESULT_VARIABLE _result
+            OUTPUT_QUIET
+            ERROR_QUIET
+        )
+        string(REPLACE "::" "_" _comp_sanitised "${_comp}")
+        if (_result EQUAL 0)
+            set(PerlModules_${_comp_sanitised}_FOUND TRUE)
+        else ()
+            set(PerlModules_${_comp_sanitised}_FOUND FALSE)
+            set(PerlModules_all_modules_found FALSE)
+        endif ()
+        find_package_handle_standard_args(PerlModules_${_comp}
+            FOUND_VAR
+                PerlModules_${_comp}_FOUND
+            REQUIRED_VARS
+                PerlModules_${_comp_sanitised}_FOUND
+            )
+    endforeach ()
+endif ()
+
+find_package_handle_standard_args(PerlModules
+    FOUND_VAR
+        PerlModules_FOUND
+    REQUIRED_VARS
+        PerlModules_all_modules_found
+    HANDLE_COMPONENTS
+)
+
+include(FeatureSummary)
+set_package_properties(PerlModules PROPERTIES
+    URL "http://www.cpan.org"
+)

Modified: trunk/Source/cmake/WebKitCommon.cmake (225900 => 225901)


--- trunk/Source/cmake/WebKitCommon.cmake	2017-12-14 13:28:23 UTC (rev 225900)
+++ trunk/Source/cmake/WebKitCommon.cmake	2017-12-14 14:08:20 UTC (rev 225901)
@@ -18,6 +18,7 @@
 
     # TODO Enforce version requirement for perl
     find_package(Perl 5.10.0 REQUIRED)
+    find_package(PerlModules COMPONENTS JSON::PP REQUIRED)
 
     find_package(PythonInterp 2.7.0 REQUIRED)
     if (PYTHON_VERSION_MAJOR GREATER 2)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to