netstar pushed a commit to branch master. http://git.enlightenment.org/tools/edi.git/commit/?id=9be1db48587ba4514a761c651645209cbfd2c830
commit 9be1db48587ba4514a761c651645209cbfd2c830 Author: Al Poole <nets...@gmail.com> Date: Wed Sep 6 13:08:02 2017 +0100 build: Add status detection of all build types. This adds tracking of other build types and their exit status and allows us to use desktop notification for these also. Also cleaned up some unnecessary cleanup code. --- src/bin/edi_main.c | 28 ++++++++++++++++++++++++---- src/bin/screens/edi_screens.c | 2 +- src/lib/edi_build_provider_cargo.c | 4 ++-- src/lib/edi_build_provider_cmake.c | 10 ++++------ src/lib/edi_build_provider_make.c | 10 ++++------ src/lib/edi_build_provider_meson.c | 1 + src/lib/edi_build_provider_python.c | 4 ++-- src/lib/edi_exe.c | 8 +++----- 8 files changed, 41 insertions(+), 26 deletions(-) diff --git a/src/bin/edi_main.c b/src/bin/edi_main.c index 97009eb..7e9e3f6 100644 --- a/src/bin/edi_main.c +++ b/src/bin/edi_main.c @@ -712,7 +712,7 @@ _edi_build_display_status_cb(int status) else eina_strbuf_append_printf(message, "Build of project <b>%s</b> in %s was successful.", edi_project_name_get(), edi_project_get()); - edi_screens_desktop_notify("EDI Project Build Status", eina_strbuf_string_get(message)); + edi_screens_desktop_notify("EDI :: Build Status", eina_strbuf_string_get(message)); eina_strbuf_free(message); } @@ -728,6 +728,26 @@ _edi_build_project(void) } static void +_edi_build_clean_project(void) +{ + if (edi_exe_notify_handle("edi_build", _edi_build_display_status_cb)) + { + edi_consolepanel_show(); + edi_builder_clean(); + } +} + +static void +_edi_build_test_project(void) +{ + if (edi_exe_notify_handle("edi_build", _edi_build_display_status_cb)) + { + edi_consolepanel_show(); + edi_builder_test(); + } +} + +static void _tb_build_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) { if (_edi_build_prep(obj)) @@ -738,7 +758,7 @@ static void _tb_test_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) { if (_edi_build_prep(obj)) - edi_builder_test(); + _edi_build_test_project(); } static void @@ -937,7 +957,7 @@ static void _edi_menu_test_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - edi_builder_test(); + _edi_build_test_project(); } static void @@ -951,7 +971,7 @@ static void _edi_menu_clean_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - edi_builder_clean(); + _edi_build_clean_project(); } static void diff --git a/src/bin/screens/edi_screens.c b/src/bin/screens/edi_screens.c index 7e625f4..b86ebfa 100644 --- a/src/bin/screens/edi_screens.c +++ b/src/bin/screens/edi_screens.c @@ -129,7 +129,7 @@ void edi_screens_desktop_notify(const char *title, const char *message) command = eina_strbuf_new(); - eina_strbuf_append_printf(command, "notify-send -t 10000 -i edi '%s' '%s'", title, message); + eina_strbuf_append_printf(command, "notify-send -t 7000 -i edi '%s' '%s'", title, message); ecore_exe_run(eina_strbuf_string_get(command), NULL); diff --git a/src/lib/edi_build_provider_cargo.c b/src/lib/edi_build_provider_cargo.c index 3394510..c78b8e0 100644 --- a/src/lib/edi_build_provider_cargo.c +++ b/src/lib/edi_build_provider_cargo.c @@ -67,7 +67,7 @@ static void _cargo_test(void) { if (chdir(edi_project_get()) == 0) - _exec_cmd("cargo test"); + edi_exe_notify("edi_build", "cargo test"); } static void @@ -81,7 +81,7 @@ static void _cargo_clean(void) { if (chdir(edi_project_get()) == 0) - _exec_cmd("cargo clean"); + edi_exe_notify("edi_build", "cargo clean"); } Edi_Build_Provider _edi_build_provider_cargo = diff --git a/src/lib/edi_build_provider_cmake.c b/src/lib/edi_build_provider_cmake.c index 31001f5..78ddfb6 100644 --- a/src/lib/edi_build_provider_cmake.c +++ b/src/lib/edi_build_provider_cmake.c @@ -60,9 +60,8 @@ _cmake_test(void) { if (chdir(edi_project_get()) != 0) ERR("Could not chdir"); - ecore_exe_pipe_run("env CK_VERBOSITY=verbose make check", ECORE_EXE_PIPE_READ_LINE_BUFFERED | ECORE_EXE_PIPE_READ | - ECORE_EXE_PIPE_ERROR_LINE_BUFFERED | ECORE_EXE_PIPE_ERROR | - ECORE_EXE_PIPE_WRITE | ECORE_EXE_USE_SH, NULL); + + edi_exe_notify("edi_build", "env CK_VERBOSITY=verbose make check"); } static void @@ -100,9 +99,8 @@ _cmake_clean(void) { if (chdir(edi_project_get()) != 0) ERR("Could not chdir"); - ecore_exe_pipe_run("make clean", ECORE_EXE_PIPE_READ_LINE_BUFFERED | ECORE_EXE_PIPE_READ | - ECORE_EXE_PIPE_ERROR_LINE_BUFFERED | ECORE_EXE_PIPE_ERROR | - ECORE_EXE_PIPE_WRITE | ECORE_EXE_USE_SH, NULL); + + edi_exe_notify("edi_build", "make clean"); } Edi_Build_Provider _edi_build_provider_cmake = diff --git a/src/lib/edi_build_provider_make.c b/src/lib/edi_build_provider_make.c index 588a503..de65d4b 100644 --- a/src/lib/edi_build_provider_make.c +++ b/src/lib/edi_build_provider_make.c @@ -127,9 +127,8 @@ _make_test(void) if (chdir(edi_project_get()) != 0) ERR("Could not chdir"); chdir(edi_project_get()); - ecore_exe_pipe_run(cmd, ECORE_EXE_PIPE_READ_LINE_BUFFERED | ECORE_EXE_PIPE_READ | - ECORE_EXE_PIPE_ERROR_LINE_BUFFERED | ECORE_EXE_PIPE_ERROR | - ECORE_EXE_PIPE_WRITE | ECORE_EXE_USE_SH, NULL); + + edi_exe_notify("edi_build", cmd); } static void @@ -171,9 +170,8 @@ _make_clean(void) if (chdir(edi_project_get()) !=0) ERR("Could not chdir"); - ecore_exe_pipe_run(cmd, ECORE_EXE_PIPE_READ_LINE_BUFFERED | ECORE_EXE_PIPE_READ | - ECORE_EXE_PIPE_ERROR_LINE_BUFFERED | ECORE_EXE_PIPE_ERROR | - ECORE_EXE_PIPE_WRITE | ECORE_EXE_USE_SH, NULL); + + edi_exe_notify("edi_build", cmd); } Edi_Build_Provider _edi_build_provider_make = diff --git a/src/lib/edi_build_provider_meson.c b/src/lib/edi_build_provider_meson.c index 9b0ddc1..6679faf 100644 --- a/src/lib/edi_build_provider_meson.c +++ b/src/lib/edi_build_provider_meson.c @@ -137,6 +137,7 @@ _meson_build(void) static void _meson_test(void) { + edi_exe_notify("edi_build", "exit 1"); ERR("Edi doesn't support test with Meson/Ninja!"); } diff --git a/src/lib/edi_build_provider_python.c b/src/lib/edi_build_provider_python.c index 4dcb751..ff57b7c 100644 --- a/src/lib/edi_build_provider_python.c +++ b/src/lib/edi_build_provider_python.c @@ -67,7 +67,7 @@ static void _python_test(void) { if (chdir(edi_project_get()) == 0) - _exec_cmd("./setup.py test"); + edi_exe_notify("edi_build", "./setup.py test"); } static void @@ -81,7 +81,7 @@ static void _python_clean(void) { if (chdir(edi_project_get()) == 0) - _exec_cmd("./setup.py clean --all"); + edi_exe_notify("edi_build", "./setup.py clean --all"); } Edi_Build_Provider _edi_build_provider_python = diff --git a/src/lib/edi_exe.c b/src/lib/edi_exe.c index a48591e..c16cedb 100644 --- a/src/lib/edi_exe.c +++ b/src/lib/edi_exe.c @@ -18,21 +18,16 @@ _edi_exe_notify_data_cb(void *data, int type EINA_UNUSED, void *event EINA_UNUSE { int *status; void *(*func)(int value); - Ecore_Con_Server *srv; Ecore_Con_Event_Client_Data *ev = event; status = ev->data; func = data; - srv = ecore_con_client_server_get(ev->client); func(*status); ecore_event_handler_del(_edi_exe_notify_handler); _edi_exe_notify_handler = NULL; - ecore_con_client_del(ev->client); - ecore_con_server_del(srv); - return EINA_FALSE; } @@ -41,6 +36,7 @@ edi_exe_notify_handle(const char *name, void ((*func)(int))) { if (_edi_exe_notify_handler) return EINA_FALSE; + /* These are UNIX domain sockets, no need to clean up */ ecore_con_server_add(ECORE_CON_LOCAL_USER, name, 0, NULL); _edi_exe_notify_handler = ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DATA, (Ecore_Event_Handler_Cb) _edi_exe_notify_data_cb, func); @@ -59,9 +55,11 @@ _edi_exe_event_done_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event if (!ev->exe) return ECORE_CALLBACK_RENEW; + /* These are UNIX domain sockets, no need to clean up */ srv = ecore_con_server_connect(ECORE_CON_LOCAL_USER, name, 0, NULL); ecore_con_server_send(srv, &ev->exit_code, sizeof(int *)); + ecore_con_server_flush(srv); ecore_event_handler_del(_edi_exe_handler); _edi_exe_handler = NULL; --