From 6437ce06b88dbebbcd19d5afade4f8499b49c611 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sun, 23 May 2021 15:20:55 -0700 Subject: dev-lang/jerryscript: 2.4.0-r1 revbump to support USE=debugger Package-Manager: Portage-3.0.18, Repoman-3.0.3 Signed-off-by: Zac Medico --- .../files/jerryscript-2.4.0-python3.patch | 88 ++++++++++++++++++++++ dev-lang/jerryscript/jerryscript-2.4.0-r1.ebuild | 70 +++++++++++++++++ dev-lang/jerryscript/jerryscript-2.4.0.ebuild | 44 ----------- dev-lang/jerryscript/metadata.xml | 3 + 4 files changed, 161 insertions(+), 44 deletions(-) create mode 100644 dev-lang/jerryscript/files/jerryscript-2.4.0-python3.patch create mode 100644 dev-lang/jerryscript/jerryscript-2.4.0-r1.ebuild delete mode 100644 dev-lang/jerryscript/jerryscript-2.4.0.ebuild (limited to 'dev-lang') diff --git a/dev-lang/jerryscript/files/jerryscript-2.4.0-python3.patch b/dev-lang/jerryscript/files/jerryscript-2.4.0-python3.patch new file mode 100644 index 000000000000..4a358ac5ce90 --- /dev/null +++ b/dev-lang/jerryscript/files/jerryscript-2.4.0-python3.patch @@ -0,0 +1,88 @@ +From 3f725c9a6e62048dcc7e1d0dd0f9c3e8d2e092f6 Mon Sep 17 00:00:00 2001 +From: Zac Medico +Date: Sun, 23 May 2021 13:46:30 -0700 +Subject: [PATCH] Python debugger support for Python 3 (in addition to Python 2) + +https://github.com/jerryscript-project/jerryscript/pull/4678 + +- Added ord builtin compatibility to pass through int arguments +- Fixed JerryDebugger _parse_source method to decode bytes as utf8 strings +- Fixed WebSocket send_message method to use packed_data[0:1] bytes slice + +JerryScript-DCO-1.0-Signed-off-by: Zac Medico +--- + jerry-debugger/jerry_client_main.py | 26 ++++++++++++++++-------- + jerry-debugger/jerry_client_websocket.py | 14 ++++++++++++- + 2 files changed, 31 insertions(+), 9 deletions(-) + +diff --git a/jerry-debugger/jerry_client_main.py b/jerry-debugger/jerry_client_main.py +index e65d0e14..b877a159 100644 +--- a/jerry-debugger/jerry_client_main.py ++++ b/jerry-debugger/jerry_client_main.py +@@ -151,2 +151,12 @@ def arguments_parse(): + ++if sys.version_info.major >= 3: ++ _ord_orig = ord ++ def _ord_compat(c): ++ if isinstance(c, int): ++ return c ++ return _ord_orig(c) ++ # pylint: disable=redefined-builtin ++ ord = _ord_compat ++ ++ + class JerryBreakpoint(object): +@@ -866,5 +876,5 @@ class JerryDebugger(object): + def _parse_source(self, data): +- source_code = "" +- source_code_name = "" +- function_name = "" ++ source_code = b"" ++ source_code_name = b"" ++ function_name = b"" + stack = [{"line": 1, +@@ -905,7 +915,7 @@ class JerryDebugger(object): + +- stack.append({"source": source_code, +- "source_name": source_code_name, ++ stack.append({"source": source_code.decode("utf8"), ++ "source_name": source_code_name.decode("utf8"), + "line": position[0], + "column": position[1], +- "name": function_name, ++ "name": function_name.decode("utf8"), + "lines": [], +@@ -939,4 +949,4 @@ class JerryDebugger(object): + if not stack: +- func_desc["source"] = source_code +- func_desc["source_name"] = source_code_name ++ func_desc["source"] = source_code.decode("utf8") ++ func_desc["source_name"] = source_code_name.decode("utf8") + +diff --git a/jerry-debugger/jerry_client_websocket.py b/jerry-debugger/jerry_client_websocket.py +index fe2c761a..07c75e53 100644 +--- a/jerry-debugger/jerry_client_websocket.py ++++ b/jerry-debugger/jerry_client_websocket.py +@@ -17,2 +17,3 @@ + import struct ++import sys + +@@ -22,2 +23,13 @@ WEBSOCKET_FIN_BIT = 0x80 + ++ ++if sys.version_info.major >= 3: ++ _ord_orig = ord ++ def _ord_compat(c): ++ if isinstance(c, int): ++ return c ++ return _ord_orig(c) ++ # pylint: disable=redefined-builtin ++ ord = _ord_compat ++ ++ + class WebSocket(object): +@@ -94,3 +106,3 @@ class WebSocket(object): + WEBSOCKET_BINARY_FRAME | WEBSOCKET_FIN_BIT, +- WEBSOCKET_FIN_BIT + struct.unpack(byte_order + "B", packed_data[0])[0], ++ WEBSOCKET_FIN_BIT + struct.unpack(byte_order + "B", packed_data[0:1])[0], + 0) + packed_data[1:] diff --git a/dev-lang/jerryscript/jerryscript-2.4.0-r1.ebuild b/dev-lang/jerryscript/jerryscript-2.4.0-r1.ebuild new file mode 100644 index 000000000000..369fd92e37ca --- /dev/null +++ b/dev-lang/jerryscript/jerryscript-2.4.0-r1.ebuild @@ -0,0 +1,70 @@ +# Copyright 2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +PYTHON_COMPAT=(python3_{7,8,9}) +inherit cmake python-any-r1 + +DESCRIPTION="Ultra-lightweight JavaScript engine for the Internet of Things" +HOMEPAGE="https://github.com/jerryscript-project/jerryscript" +SRC_URI="https://github.com/jerryscript-project/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="Apache-2.0" +SLOT="0" +KEYWORDS="~amd64" +IUSE="debugger" +RDEPEND="debugger? ( ${PYTHON_DEPS} )" +BDEPEND="${RDEPEND}" + +PATCHES=( + "${FILESDIR}/jerryscript-2.4.0-python3.patch" +) + +src_prepare() { + find . -name CMakeLists.txt -print0 | xargs -0 sed -i \ + -e "s:lib/pkgconfig:$(get_libdir)/pkgconfig:" \ + -e "s:DESTINATION lib):DESTINATION $(get_libdir)):" \ + || die + find . -name '*.pc.in' -print0 | xargs -0 sed -i \ + -e "s|/lib\$|/$(get_libdir)|" \ + || die + cmake_src_prepare +} + +src_configure() { + local mycmakeargs=( + -DENABLE_STRIP=OFF + -DJERRY_DEBUGGER=ON + -DJERRY_ERROR_MESSAGES=ON + -DJERRY_EXTERNAL_CONTEXT=ON + -DJERRY_LINE_INFO=ON + -DJERRY_LOGGING=ON + -DJERRY_PARSER_DUMP_BYTE_CODE=ON + -DJERRY_PARSER=ON + -DJERRY_REGEXP_DUMP_BYTE_CODE=ON + -DJERRY_SNAPSHOT_EXEC=ON + -DJERRY_SNAPSHOT_SAVE=ON + ) + cmake_src_configure +} + +src_install() { + local jerry_debugger_dir + cmake_src_install + + if use debugger; then + jerry_debugger_dir=/usr/$(get_libdir)/jerryscript/jerry-debugger + insinto "${jerry_debugger_dir}" + doins jerry-debugger/*.py + python_optimize "${ED}${jerry_debugger_dir}" + + cat <<-EOF > "${T}/jerry-debugger" + #!/bin/sh + export PYTHONPATH=${EPREFIX}${jerry_debugger_dir} + exec python "${jerry_debugger_dir}/jerry_client.py" "\$@" + EOF + + dobin "${T}"/jerry-debugger + fi +} diff --git a/dev-lang/jerryscript/jerryscript-2.4.0.ebuild b/dev-lang/jerryscript/jerryscript-2.4.0.ebuild deleted file mode 100644 index d3949f02d599..000000000000 --- a/dev-lang/jerryscript/jerryscript-2.4.0.ebuild +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright 2021 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=7 - -inherit cmake - -DESCRIPTION="Ultra-lightweight JavaScript engine for the Internet of Things" -HOMEPAGE="https://github.com/jerryscript-project/jerryscript" -SRC_URI="https://github.com/jerryscript-project/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" - -LICENSE="Apache-2.0" -SLOT="0" -KEYWORDS="~amd64" -IUSE="" - -src_prepare() { - find . -name CMakeLists.txt -print0 | xargs -0 sed -i \ - -e "s:lib/pkgconfig:$(get_libdir)/pkgconfig:" \ - -e "s:DESTINATION lib):DESTINATION $(get_libdir)):" \ - || die - cmake_src_prepare -} - -src_configure() { - local mycmakeargs=( - -DENABLE_STRIP=OFF - -DJERRY_DEBUGGER=ON - -DJERRY_ERROR_MESSAGES=ON - -DJERRY_EXTERNAL_CONTEXT=ON - -DJERRY_LINE_INFO=ON - -DJERRY_LOGGING=ON - -DJERRY_PARSER_DUMP_BYTE_CODE=ON - -DJERRY_PARSER=ON - -DJERRY_REGEXP_DUMP_BYTE_CODE=ON - -DJERRY_SNAPSHOT_EXEC=ON - -DJERRY_SNAPSHOT_SAVE=ON - ) - cmake_src_configure -} - -src_install() { - cmake_src_install -} diff --git a/dev-lang/jerryscript/metadata.xml b/dev-lang/jerryscript/metadata.xml index 0c73846f82dc..a062390ea353 100644 --- a/dev-lang/jerryscript/metadata.xml +++ b/dev-lang/jerryscript/metadata.xml @@ -9,4 +9,7 @@ https://github.com/jerryscript-project/jerryscript/issues jerryscript-project/jerryscript + + Install jerry-debugger + -- cgit v1.2.3-65-gdbad