From ff003f255e7726842b39b390de76edf77f864dfb Mon Sep 17 00:00:00 2001 From: HyukWoo Park Date: Thu, 6 Apr 2023 14:49:06 +0900 Subject: [PATCH 01/11] Fix package build error in actions Signed-off-by: HyukWoo Park Signed-off-by: Daeyeon Jeong --- .github/workflows/actions.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 0073f3cb97..30c3047871 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -2,7 +2,7 @@ name: lwnode actions on: [ push, pull_request ] jobs: build_lwnode: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 timeout-minutes: 30 strategy: fail-fast: false @@ -24,7 +24,7 @@ jobs: - name: Install Packages run: | sudo apt update - sudo apt install -y ninja-build gcc-multilib g++-multilib sed clang-format-8 + sudo apt install -y ninja-build gcc-multilib g++-multilib sed - name: Build lwnode run: | ./configure.py ${{ matrix.config }} @@ -40,7 +40,7 @@ jobs: test/parallel test/regression popd cctest: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 timeout-minutes: 30 steps: - name: Checkout source @@ -117,17 +117,20 @@ jobs: name: tizen_std_${{ matrix.profile }} path: /home/runner/GBS-ROOT/${{ matrix.profile }}/local/repos/${{ matrix.profile }}/armv7l/RPMS/ lint: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 timeout-minutes: 30 strategy: fail-fast: false steps: - name: Checkout source uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '2.7' - name: Install Packages run: | sudo apt update sudo apt install -y ninja-build gcc-multilib g++-multilib sed clang-format-8 - name: Lint CC run: | - python2 ./tools/check_tidy.py --filter=$(paste -sd, tools/lint-filters.txt) + tools/check_tidy.py --filter=$(paste -sd, tools/lint-filters.txt) From 69644e882a3ff046434152ae0c70d1f62df0e580 Mon Sep 17 00:00:00 2001 From: HyukWoo Park Date: Mon, 17 Apr 2023 11:21:11 +0900 Subject: [PATCH 02/11] fix: fix compiler errors for the latest compiler Signed-off-by: HyukWoo Park Signed-off-by: Daeyeon Jeong --- .github/workflows/actions.yml | 11 ++++++----- src/api/engine.h | 2 +- src/api/utils/sf-vector.h | 3 --- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 30c3047871..dffffebca8 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -2,7 +2,7 @@ name: lwnode actions on: [ push, pull_request ] jobs: build_lwnode: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest timeout-minutes: 30 strategy: fail-fast: false @@ -40,7 +40,7 @@ jobs: test/parallel test/regression popd cctest: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest timeout-minutes: 30 steps: - name: Checkout source @@ -117,7 +117,7 @@ jobs: name: tizen_std_${{ matrix.profile }} path: /home/runner/GBS-ROOT/${{ matrix.profile }}/local/repos/${{ matrix.profile }}/armv7l/RPMS/ lint: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest timeout-minutes: 30 strategy: fail-fast: false @@ -129,8 +129,9 @@ jobs: python-version: '2.7' - name: Install Packages run: | - sudo apt update - sudo apt install -y ninja-build gcc-multilib g++-multilib sed clang-format-8 + sudo add-apt-repository "deb http://mirrors.kernel.org/ubuntu/ focal main universe" + sudo apt-get update + sudo apt-get install -y clang-format-8 - name: Lint CC run: | tools/check_tidy.py --filter=$(paste -sd, tools/lint-filters.txt) diff --git a/src/api/engine.h b/src/api/engine.h index 6a99b63f1a..a6cd0a19df 100644 --- a/src/api/engine.h +++ b/src/api/engine.h @@ -88,7 +88,7 @@ class GCHeap : public gc { void* data = nullptr; }; typedef GC_word GC_heap_pointer; - typedef std::pair HeapSegment; + typedef std::pair HeapSegment; void acquire(void* address, Kind kind, void* data); void release(void* address, Kind kind); diff --git a/src/api/utils/sf-vector.h b/src/api/utils/sf-vector.h index 04395a2d89..941cd05c50 100644 --- a/src/api/utils/sf-vector.h +++ b/src/api/utils/sf-vector.h @@ -148,7 +148,6 @@ class Vector { void erase(size_t start, size_t end) { if (start == end) return; - assert(start >= 0); assert(end <= m_size); size_t howMuch = end - start; @@ -351,7 +350,6 @@ class Vector { size_t end = start + sizeToErase; assert(start < end); - assert(start >= 0); assert(end <= m_size); size_t c = end - start; @@ -384,7 +382,6 @@ class Vector { size_t end = start + sizeToErase; assert(start < end); - assert(start >= 0); assert(end <= m_size); size_t c = end - start; From c16e50966f0d88981546ad410ef0f98c1fb477ed Mon Sep 17 00:00:00 2001 From: Daeyeon Jeong Date: Wed, 12 Jul 2023 21:32:54 +0900 Subject: [PATCH 03/11] chore: fix lint action Signed-off-by: Daeyeon Jeong --- .github/workflows/actions.yml | 2 +- tools/check_tidy.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index dffffebca8..97ea70f15c 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -126,7 +126,7 @@ jobs: uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: - python-version: '2.7' + python-version: '3.10' - name: Install Packages run: | sudo add-apt-repository "deb http://mirrors.kernel.org/ubuntu/ focal main universe" diff --git a/tools/check_tidy.py b/tools/check_tidy.py index 398062f955..61ad258afb 100755 --- a/tools/check_tidy.py +++ b/tools/check_tidy.py @@ -16,8 +16,6 @@ # note: this uses `black` for formatting. -from __future__ import print_function - import os import subprocess import sys @@ -96,7 +94,9 @@ def report_error(msg, line=None): with open(file, "r") as f: original = f.readlines() - formatted = subprocess.check_output([clang_format, "-style=file", file]) + formatted = subprocess.check_output( + [clang_format, "-style=file", file], encoding="utf-8" + ) if update: with open(file, "w") as f: From cfd0b3d969437c522a5d80dd9096ac2d3783b782 Mon Sep 17 00:00:00 2001 From: Daeyeon Jeong Date: Mon, 17 Jul 2023 18:43:55 +0900 Subject: [PATCH 04/11] chore: fix destination machine on github actions Signed-off-by: Daeyeon Jeong --- .github/workflows/actions.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 97ea70f15c..712c876b3b 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -2,7 +2,7 @@ name: lwnode actions on: [ push, pull_request ] jobs: build_lwnode: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 timeout-minutes: 30 strategy: fail-fast: false @@ -40,7 +40,7 @@ jobs: test/parallel test/regression popd cctest: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 timeout-minutes: 30 steps: - name: Checkout source @@ -117,7 +117,7 @@ jobs: name: tizen_std_${{ matrix.profile }} path: /home/runner/GBS-ROOT/${{ matrix.profile }}/local/repos/${{ matrix.profile }}/armv7l/RPMS/ lint: - runs-on: ubuntu-latest + runs-on: ubuntu-20.04 timeout-minutes: 30 strategy: fail-fast: false @@ -129,9 +129,8 @@ jobs: python-version: '3.10' - name: Install Packages run: | - sudo add-apt-repository "deb http://mirrors.kernel.org/ubuntu/ focal main universe" - sudo apt-get update - sudo apt-get install -y clang-format-8 + sudo apt update + sudo apt install -y ninja-build gcc-multilib g++-multilib sed clang-format-8 - name: Lint CC run: | tools/check_tidy.py --filter=$(paste -sd, tools/lint-filters.txt) From a669d63eee4898bab7a8062eec1c4b2026bbc088 Mon Sep 17 00:00:00 2001 From: Daeyeon Jeong Date: Wed, 12 Jul 2023 21:03:38 +0900 Subject: [PATCH 05/11] fix: suppress build errors on gcc 13 Signed-off-by: Daeyeon Jeong --- src/api/utils/logger/logger-util.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/api/utils/logger/logger-util.h b/src/api/utils/logger/logger-util.h index f3f2acaff5..20173dc0ce 100644 --- a/src/api/utils/logger/logger-util.h +++ b/src/api/utils/logger/logger-util.h @@ -16,8 +16,10 @@ #include +#ifndef __FILE_NAME__ #define __FILE_NAME__ \ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) +#endif #define __FUNCTION_NAME__ getPrettyFunctionName(__PRETTY_FUNCTION__) From 731541eae69626d8cb991a9a3356119f527031ae Mon Sep 17 00:00:00 2001 From: Daeyeon Jeong Date: Thu, 13 Jul 2023 09:47:37 +0900 Subject: [PATCH 06/11] chore: add patch for escargot gcc 13 build error Signed-off-by: Daeyeon Jeong --- tools/patch/01-escargot-gcc13-build-error.patch | 12 ++++++++++++ tools/release.sh | 4 ++++ 2 files changed, 16 insertions(+) create mode 100644 tools/patch/01-escargot-gcc13-build-error.patch diff --git a/tools/patch/01-escargot-gcc13-build-error.patch b/tools/patch/01-escargot-gcc13-build-error.patch new file mode 100644 index 0000000000..c9190764d8 --- /dev/null +++ b/tools/patch/01-escargot-gcc13-build-error.patch @@ -0,0 +1,12 @@ +diff --git raw/src/api/EscargotPublic.h fix/src/api/EscargotPublic.h +index 3a8362a9..6fc888d1 100644 +--- raw/src/api/EscargotPublic.h ++++ fix/src/api/EscargotPublic.h +@@ -30,6 +30,7 @@ + + #include + #include ++#include + #include + #include + #include diff --git a/tools/release.sh b/tools/release.sh index a5e9296d8b..74ec517eca 100755 --- a/tools/release.sh +++ b/tools/release.sh @@ -23,6 +23,10 @@ git submodule update --init pushd deps/escargot git submodule update --init third_party +# Patch update code for escargot +find ../../tools/patch -type f -name "*escargot*.patch" \ + -exec patch -p1 --forward -r /dev/null -i {} \; + # Patch update code for wasm pushd third_party/wasm/wabt patch -p0 --forward -r /dev/null -i ../../../tools/test/wasm-js/wabt_patch From cd5ea0f23d73cc07792de58a05b5026587a04545 Mon Sep 17 00:00:00 2001 From: Hosung Kim Date: Mon, 17 Jul 2023 09:48:29 +0900 Subject: [PATCH 07/11] fix: support gcc13 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Hosung Kim hs852.kim@samsung.com Signed-off-by: Daeyeon Jeong --- src/api-exception.cc | 10 ++++------ src/api-handles.cc | 27 ++++++++++----------------- src/api/utils/logger/logger-impl.cc | 2 +- 3 files changed, 15 insertions(+), 24 deletions(-) diff --git a/src/api-exception.cc b/src/api-exception.cc index 449aef35ec..e3e48dd68a 100644 --- a/src/api-exception.cc +++ b/src/api-exception.cc @@ -82,18 +82,16 @@ v8::TryCatch::~TryCatch() { } void* v8::TryCatch::operator new(size_t) { - LWNODE_UNIMPLEMENT; - return new TryCatch(nullptr); + std::abort(); } void* v8::TryCatch::operator new[](size_t) { - LWNODE_UNIMPLEMENT; - return new TryCatch(nullptr); + std::abort(); } void v8::TryCatch::operator delete(void*, size_t) { - LWNODE_UNIMPLEMENT; + std::abort(); } void v8::TryCatch::operator delete[](void*, size_t) { - LWNODE_UNIMPLEMENT; + std::abort(); } bool v8::TryCatch::HasCaught() const { diff --git a/src/api-handles.cc b/src/api-handles.cc index 71d99ef75b..494d7a694f 100644 --- a/src/api-handles.cc +++ b/src/api-handles.cc @@ -43,13 +43,10 @@ HandleScope::~HandleScope() { } void* HandleScope::operator new(size_t) { - LWNODE_UNIMPLEMENT; - // TODO: abort : only stack is available - return new HandleScope(nullptr); + std::abort(); } void* HandleScope::operator new[](size_t) { - LWNODE_UNIMPLEMENT; - return new HandleScope(nullptr); + std::abort(); } void HandleScope::operator delete(void*, size_t) { LWNODE_UNIMPLEMENT; @@ -120,18 +117,16 @@ i::Address* EscapableHandleScope::Escape(i::Address* escape_value) { } void* EscapableHandleScope::operator new(size_t) { - LWNODE_UNIMPLEMENT; - return new EscapableHandleScope(nullptr); + std::abort(); } void* EscapableHandleScope::operator new[](size_t) { - LWNODE_UNIMPLEMENT; - return new EscapableHandleScope(nullptr); + std::abort(); } void EscapableHandleScope::operator delete(void*, size_t) { - LWNODE_UNIMPLEMENT; + std::abort(); } void EscapableHandleScope::operator delete[](void*, size_t) { - LWNODE_UNIMPLEMENT; + std::abort(); } SealHandleScope::SealHandleScope(Isolate* isolate) @@ -147,18 +142,16 @@ SealHandleScope::~SealHandleScope() { } void* SealHandleScope::operator new(size_t) { - LWNODE_UNIMPLEMENT; - return new SealHandleScope(nullptr); + std::abort(); } void* SealHandleScope::operator new[](size_t) { - LWNODE_UNIMPLEMENT; - return new SealHandleScope(nullptr); + std::abort(); } void SealHandleScope::operator delete(void*, size_t) { - LWNODE_UNIMPLEMENT; + std::abort(); } void SealHandleScope::operator delete[](void*, size_t) { - LWNODE_UNIMPLEMENT; + std::abort(); } void Context::Enter() { diff --git a/src/api/utils/logger/logger-impl.cc b/src/api/utils/logger/logger-impl.cc index a1e88b2620..dbfff2c32a 100644 --- a/src/api/utils/logger/logger-impl.cc +++ b/src/api/utils/logger/logger-impl.cc @@ -167,7 +167,7 @@ Logger& Logger::flush() { void StdOut::flush(std::stringstream& stream, std::shared_ptr config) { - std::cerr << stream.str(); + fprintf(stderr, "%s", stream.str().c_str()); } // --- Option --- From 08d84ddfd9538a1c729712b8364a00cef868e56a Mon Sep 17 00:00:00 2001 From: Hosung Kim Date: Tue, 18 Jul 2023 11:25:46 +0900 Subject: [PATCH 08/11] fix: fix build break when using openssl3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Hosung Kim hs852.kim@samsung.com Signed-off-by: Daeyeon Jeong --- deps/node/src/node_crypto.cc | 4 ++-- packaging/lwnode.spec | 20 +++++++++++++++----- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/deps/node/src/node_crypto.cc b/deps/node/src/node_crypto.cc index ed886abd74..dae3372889 100644 --- a/deps/node/src/node_crypto.cc +++ b/deps/node/src/node_crypto.cc @@ -4579,11 +4579,11 @@ static unsigned int GetBytesOfRS(const ManagedEVPPKey& pkey) { int bits, base_id = EVP_PKEY_base_id(pkey.get()); if (base_id == EVP_PKEY_DSA) { - DSA* dsa_key = EVP_PKEY_get0_DSA(pkey.get()); + const DSA* dsa_key = EVP_PKEY_get0_DSA(pkey.get()); // Both r and s are computed mod q, so their width is limited by that of q. bits = BN_num_bits(DSA_get0_q(dsa_key)); } else if (base_id == EVP_PKEY_EC) { - EC_KEY* ec_key = EVP_PKEY_get0_EC_KEY(pkey.get()); + const EC_KEY* ec_key = EVP_PKEY_get0_EC_KEY(pkey.get()); const EC_GROUP* ec_group = EC_KEY_get0_group(ec_key); bits = EC_GROUP_order_bits(ec_group); } else { diff --git a/packaging/lwnode.spec b/packaging/lwnode.spec index 26abeb4205..b9c1d62ff7 100644 --- a/packaging/lwnode.spec +++ b/packaging/lwnode.spec @@ -37,14 +37,24 @@ BuildRequires: pkgconfig(glib-2.0) BuildRequires: nghttp2-devel BuildRequires: pkgconfig(libcares) -%if (0%{?tizen_version_major} >= 6) +%if (0%{?tizen_version_major} >= 8) +BuildRequires: pkgconfig(openssl3) +%endif + +%if (0%{?tizen_version_major} == 7 || 0%{?tizen_version_major} == 6) BuildRequires: pkgconfig(openssl1.1) -%else - %if (0%{?tizen_version_major} == 5) && (0%{?tizen_version_minor} == 5) +%endif + +%if (0%{?tizen_version_major} == 5) +%if (0%{?tizen_version_minor} >= 5) BuildRequires: pkgconfig(openssl1.1) - %else +%else +BuildRequires: pkgconfig(openssl) +%endif +%endif + +%if (0%{?tizen_version_major} < 5) BuildRequires: pkgconfig(openssl) - %endif %endif %if 0%{?asan} == 1 From 77ce7764b04e0e4fad6864d318e3f3dc62841811 Mon Sep 17 00:00:00 2001 From: Daeyeon Jeong Date: Wed, 19 Jul 2023 12:42:29 +0900 Subject: [PATCH 09/11] fix: resolve static analysis defects Signed-off-by: Daeyeon Jeong --- deps/node/src/module_wrap.cc | 5 +++-- deps/node/src/node_messaging.cc | 2 +- src/api-environment.cc | 4 ++-- src/api/utils/logger/flags.cc | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/deps/node/src/module_wrap.cc b/deps/node/src/module_wrap.cc index f778b089dc..ec2e1b379b 100644 --- a/deps/node/src/module_wrap.cc +++ b/deps/node/src/module_wrap.cc @@ -558,8 +558,9 @@ static MaybeLocal ImportModuleDynamically( ->Uint32Value(context) .ToChecked(); if (type == ScriptType::kScript) { - contextify::ContextifyScript* wrap = env->id_to_script_map.find(id)->second; - object = wrap->object(); + auto it = env->id_to_function_map.find(id); + CHECK_NE(it, env->id_to_function_map.end()); + object = it->second->object(); } else if (type == ScriptType::kModule) { ModuleWrap* wrap = ModuleWrap::GetFromID(env, id); object = wrap->object(); diff --git a/deps/node/src/node_messaging.cc b/deps/node/src/node_messaging.cc index 17ca38b76c..2bfd489b55 100644 --- a/deps/node/src/node_messaging.cc +++ b/deps/node/src/node_messaging.cc @@ -327,7 +327,7 @@ class SerializerDelegate : public ValueSerializer::Delegate { std::vector> nested_transferables; if (!host_objects_[i]->NestedTransferables().To(&nested_transferables)) return Nothing(); - for (auto nested_transferable : nested_transferables) { + for (auto& nested_transferable : nested_transferables) { if (std::find(host_objects_.begin(), host_objects_.end(), nested_transferable) == host_objects_.end()) { diff --git a/src/api-environment.cc b/src/api-environment.cc index f26ce597be..3d70b801f6 100644 --- a/src/api-environment.cc +++ b/src/api-environment.cc @@ -777,8 +777,8 @@ MaybeLocal v8::RegExp::Exec(Local context, } auto vector = ValueVectorRef::create(); - for (auto tokens : result.m_matchResults) { - for (auto token : tokens) { + for (auto& tokens : result.m_matchResults) { + for (auto& token : tokens) { auto match = subject->substring(token.m_start, token.m_end); vector->pushBack(match); } diff --git a/src/api/utils/logger/flags.cc b/src/api/utils/logger/flags.cc index eb78abf47f..b9005883c0 100644 --- a/src/api/utils/logger/flags.cc +++ b/src/api/utils/logger/flags.cc @@ -96,7 +96,7 @@ void Flags::add(const std::string& userOption) { std::string optionValues = userOption.substr(userOption.find_first_of('=') + 1); // +1 for skipping '=' auto tokens = strSplit(optionValues, ','); - for (auto token : tokens) { + for (auto& token : tokens) { flag->addValue(token); } } From c4fe819daf97af2cf723b2fd8950230a9879b3ee Mon Sep 17 00:00:00 2001 From: Hosung Kim Date: Tue, 26 Dec 2023 11:20:19 +0900 Subject: [PATCH 10/11] fix: resolve static analysis defects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Hosung Kim hs852.kim@samsung.com --- deps/node/src/node_file.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/node/src/node_file.cc b/deps/node/src/node_file.cc index de5c455c7a..56dc1507ea 100644 --- a/deps/node/src/node_file.cc +++ b/deps/node/src/node_file.cc @@ -1455,7 +1455,7 @@ int MKDirpAsync(uv_loop_t* loop, std::string dirname = path.substr(0, path.find_last_of(kPathSeparator)); if (dirname != path) { - req_wrap->continuation_data()->PushPath(std::move(path)); + req_wrap->continuation_data()->PushPath(path); req_wrap->continuation_data()->PushPath(std::move(dirname)); } else if (req_wrap->continuation_data()->paths().size() == 0) { err = UV_EEXIST; From d646cc63e3e74885e69cdb07f110e2141abefbf2 Mon Sep 17 00:00:00 2001 From: Daeyeon Jeong Date: Wed, 13 Mar 2024 13:30:47 +0900 Subject: [PATCH 11/11] fix: handle stdio in Tizen This hijacks inputs for stdio streams when running on Tizen. That's because stdio is piped to dlog in Tizen apps. Signed-off-by: Daeyeon Jeong --- .../bootstrap/switches/is_main_thread.js | 30 ++++++++++++------- deps/node/src/lwnode/aul-event-receiver.cc | 17 ++++++----- deps/node/src/lwnode/aul-event-receiver.h | 2 +- src/api/utils/logger/logger.cc | 3 ++ 4 files changed, 32 insertions(+), 20 deletions(-) diff --git a/deps/node/lib/internal/bootstrap/switches/is_main_thread.js b/deps/node/lib/internal/bootstrap/switches/is_main_thread.js index e68ddd3bd5..b64b362e15 100644 --- a/deps/node/lib/internal/bootstrap/switches/is_main_thread.js +++ b/deps/node/lib/internal/bootstrap/switches/is_main_thread.js @@ -41,19 +41,27 @@ const { guessHandleType } = internalBinding('util'); function createWritableStdioStream(fd) { let stream; // Note stream._type is used for test-module-load-list.js + + // @lwnode + if (process.lwnode) { + // The handle type guessed of stdout(1) or stderr(2) can be PIPE on tizen. + if (process.lwnode.hasSystemInfo('tizen') && (fd === 1 || fd === 2)) { + const { Writable } = require('stream'); + stream = new Writable({ + write(chunk, encoding, callback) { + process.lwnode._print(chunk.toString()); + callback(); + } + }); + // For supporting legacy API we put the FD here. + stream.fd = fd; + stream._isStdio = true; + return stream; + } + } + switch (guessHandleType(fd)) { case 'TTY': - // @lwnode - if (process.lwnode) { - const { Writable } = require('stream'); - stream = new Writable({ - write(chunk, encoding, callback) { - process.lwnode._print(chunk.toString()); - callback(); - } - }); - break; - } const tty = require('tty'); stream = new tty.WriteStream(fd); stream._type = 'tty'; diff --git a/deps/node/src/lwnode/aul-event-receiver.cc b/deps/node/src/lwnode/aul-event-receiver.cc index f556c41be3..89b76ab68a 100644 --- a/deps/node/src/lwnode/aul-event-receiver.cc +++ b/deps/node/src/lwnode/aul-event-receiver.cc @@ -75,16 +75,17 @@ bool AULEventReceiver::start(int argc, char* argv[]) { if (hasAulArguments(argc, argv)) { isEventReceiverRunning_ = true; - initLoggerOutput(); - - aul_launch_init(aulEventHandler, nullptr); - aul_launch_argv_handler(argc, argv); char appid[kMaxPackageNameSize + 1]; aul_app_get_appid_bypid(getpid(), appid, kMaxPackageNameSize); appid_ = appid; - LWNODE_DEV_LOG("appid: ", appid_); + initLoggerOutput(appid_); + + LWNODE_DEV_LOG("appid:", appid_); + + aul_launch_init(aulEventHandler, nullptr); + aul_launch_argv_handler(argc, argv); char* path = app_get_resource_path(); if (uv_chdir(path) != 0) { @@ -110,9 +111,9 @@ bool AULEventReceiver::isEventReceiverRunning() { return isEventReceiverRunning_; } -void AULEventReceiver::initLoggerOutput() { - if (!appid_.empty()) { - LogKind::user()->tag = appid_; +void AULEventReceiver::initLoggerOutput(const std::string tag) { + if (!tag.empty()) { + LogKind::user()->tag = tag; } LogOption::setDefaultOutputInstantiator([&]() { diff --git a/deps/node/src/lwnode/aul-event-receiver.h b/deps/node/src/lwnode/aul-event-receiver.h index ac20891ccb..39337e368e 100644 --- a/deps/node/src/lwnode/aul-event-receiver.h +++ b/deps/node/src/lwnode/aul-event-receiver.h @@ -37,7 +37,7 @@ class AULEventReceiver { } #endif - void initLoggerOutput(); + void initLoggerOutput(const std::string tag = ""); bool isEventReceiverRunning(); private: diff --git a/src/api/utils/logger/logger.cc b/src/api/utils/logger/logger.cc index ab6d6686be..880fce1a7f 100644 --- a/src/api/utils/logger/logger.cc +++ b/src/api/utils/logger/logger.cc @@ -26,6 +26,9 @@ void DlogOut::flush(std::stringstream& ss, std::shared_ptr config) { auto c = config ? std::static_pointer_cast(config) : LogKind::lwnode(); + + // TODO: handle the case where users manually select a logging method. + #ifdef HOST_TIZEN dlog_print(DLOG_INFO, c->tag.c_str(), "%s", ss.str().c_str()); #else