1
0
mirror of https://github.com/exaloop/codon.git synced 2025-06-03 15:03:52 +08:00

Fix Jupyter, fix xeus build flags

This commit is contained in:
Ibrahim Numanagić 2021-11-21 05:21:05 -08:00
parent 039d604a56
commit 71cad478f7
3 changed files with 24 additions and 16 deletions

View File

@ -16,7 +16,7 @@ if(CODON_JUPYTER)
endif()
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility-inlines-hidden -pedantic -Wall -Wno-return-type-c-linkage -Wno-gnu-zero-variadic-macro-arguments -Wno-unused-variable")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility-inlines-hidden -pedantic -Wno-return-type-c-linkage -Wno-gnu-zero-variadic-macro-arguments")
set(CMAKE_CXX_FLAGS_DEBUG "-g -fno-limit-debug-info")
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
include_directories(.)
@ -29,7 +29,6 @@ message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
include(${CMAKE_SOURCE_DIR}/cmake/deps.cmake)
set(CMAKE_BUILD_WITH_INSTALL_RPATH ON)
if(APPLE)
set(CMAKE_INSTALL_RPATH "@loader_path;@loader_path/../lib/codon")
@ -84,7 +83,6 @@ add_custom_command(TARGET codonrt POST_BUILD
# Codon compiler library
include_directories(${LLVM_INCLUDE_DIRS})
add_definitions(${LLVM_DEFINITIONS})
set(CODON_HPPFILES
codon/compiler/compiler.h
codon/compiler/debug_listener.h
@ -297,7 +295,6 @@ if(CODON_JUPYTER)
add_compile_definitions(CODON_JUPYTER)
add_dependencies(codonc xeus-static nlohmann_json)
target_link_libraries(codonc PRIVATE xeus-static)
# set_target_properties(codonc PROPERTIES INSTALL_RPATH_USE_LINK_PATH TRUE)
endif()
if(ASAN)
target_compile_options(codonc PRIVATE "-fno-omit-frame-pointer" "-fsanitize=address")

View File

@ -153,9 +153,10 @@ if(CODON_JUPYTER)
GITHUB_REPOSITORY "jupyter-xeus/xeus"
VERSION 2.2.0
GIT_TAG 2.2.0
PATCH_COMMAND sed -i bak "s/-Wunused-parameter -Wextra -Wreorder//g" CMakeLists.txt
OPTIONS "BUILD_EXAMPLES OFF"
"XEUS_BUILD_SHARED_LIBS OFF"
"XEUS_STATIC_DEPENDENCIES ON")
"XEUS_BUILD_SHARED_LIBS OFF"
"XEUS_STATIC_DEPENDENCIES ON")
if (xeus_ADDED)
install(TARGETS nlohmann_json EXPORT xeus-targets)
endif()

View File

@ -14,6 +14,7 @@
#include "codon/compiler/compiler.h"
#include "codon/compiler/error.h"
#include "codon/compiler/jit.h"
#include "codon/parser/common.h"
#include "codon/util/common.h"
using std::move;
@ -29,7 +30,7 @@ nl::json CodonJupyter::execute_request_impl(int execution_counter, const string
nl::json user_expressions,
bool allow_stdin) {
auto result = jit->exec(code);
bool failed = false;
string failed;
llvm::handleAllErrors(
result.takeError(),
[&](const codon::error::ParserErrorInfo &e) {
@ -38,17 +39,26 @@ nl::json CodonJupyter::execute_request_impl(int execution_counter, const string
backtrace.push_back(msg.getMessage());
string err = backtrace[0];
backtrace.erase(backtrace.begin());
publish_execution_error("ParserError", err, backtrace);
failed = true;
failed =
fmt::format("Error: {}\nBacktrace:\n{}", err, ast::join(backtrace, " \n"));
// publish_execution_error("ParserError", err, backtrace);
// failed = true;
},
[&](const codon::error::RuntimeErrorInfo &e) {
publish_execution_error(e.getType(), e.getMessage(), {});
failed = true;
failed = fmt::format("Error: {}", e.getMessage());
// publish_execution_error(e.getType(), e.getMessage(), {});
// failed = true;
});
if (!failed) {
if (failed.empty()) {
nl::json pub_data;
pub_data["text/plain"] = *result;
pub_data["text/plain"] = fmt::format(">> {}", *result);
publish_execution_result(execution_counter, move(pub_data), nl::json::object());
return nl::json{{"status", "ok"},
{"payload", nl::json::array()},
{"user_expressions", nl::json::object()}};
} else {
publish_stream("stderr", failed);
return nl::json{{"status", "error"}};
}
}
@ -58,16 +68,16 @@ void CodonJupyter::configure_impl() {
}
nl::json CodonJupyter::complete_request_impl(const string &code, int cursor_pos) {
return xeus::create_complete_reply({}, cursor_pos, cursor_pos);
return nl::json{{"status", "ok"}};
}
nl::json CodonJupyter::inspect_request_impl(const string &code, int cursor_pos,
int detail_level) {
return xeus::create_inspect_reply();
return nl::json{{"status", "ok"}};
}
nl::json CodonJupyter::is_complete_request_impl(const string &code) {
return xeus::create_is_complete_reply("complete");
return nl::json{{"status", "complete"}};
}
nl::json CodonJupyter::kernel_info_request_impl() {