Page MenuHomePhabricator

edje_cc doesn`t compile scripts on windows
Closed, ResolvedPublic

Description

  1. build efl for windows
  2. create edc file button.edc (which include script code)
  3. add 2 images button_normal.png
    and button_clicked.png
  4. using cmd compile file button.edc with command: edje_cc button.edc
  5. returned error: "edje_cc: Critical. Compiling script code not clean"

You can find edc file and images in archive example.zip

Related Objects

vtorri added a subscriber: vtorri.Apr 20 2017, 5:55 AM

i'l try to look at that

which version of the EFL do you use ?

ho, and do you use MSYS or MSYS2 ?

I use cross-build on Linux with mingw-w64 toolchain and then copy binaries to Windows

i.furs added a subscriber: i.furs.Apr 20 2017, 10:13 AM

debug
STEP 1:
-> src/lib/ecore/ecore_exe_win32.c:378 _impl_ecore_exe_efl_object_finalize(...)
...
->src/lib/ecore/ecore_exe_win32.c:498: if (!CreateProcess(shell, exe_cmd_buf, NULL, NULL, EINA_TRUE, run_pri | CREATE_SUSPENDED, NULL, NULL, &si, &pi))
...
->src/lib/ecore/ecore_exe_win32.c:533 exe->h_close = ecore_main_win32_handler_add(exe->process, _ecore_exe_close_cb, obj);
...
->src/lib/ecore/ecore_exe_win32.c:528: exe->process = pi.hProcess;

_ecore_exe_close_cb

if (!GetExitCodeProcess(exe->process, &exit_code))
...
e->exit_code = exit_code;  **<- is exit(-1)**

STEP 2:
run exe_cmd_buf in CreateProcess
1)-> lib/evas/cache/evas_cache_image.c:1001: if (stat(file, &st) < 0) goto on_stat_error; <- stat(file, &st) return 2;
2)-> lib/evas/cache/evas_cache_image.c:1030:*error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; error = 2

#0 evas_cache_image_request (cache=0x198d8000, file=0x18abef30 "d:\\efl_upstream\\share\\eflete\\themes\\default\\template\\images\\inset_shadow.png", key=0x0, lo=0x35bf7c0 <prevent>, error=0x1984c1bc) at lib/evas/cache/evas_cache_image.c:1030
#1 0x00000000034aad1a in evas_common_load_image_from_file (file=0x18abeeec "inset_shadow.png", key=0x0, lo=0x22fa80, error=0x1984c1bc) at lib/evas/common/evas_image_main.c:1079
#2 0x000000000346e380 in eng_image_load (data=0x199fc150, file=0x18abeeec "inset_shadow.png", key=0x0, error=0x1984c1bc, lo=0x22fa80) at modules/evas/engines/software_generic/evas_engine.c:1211
#3 0x00000000033b9ac7 in _evas_image_file_set (eo_obj=0x40000000880014ec, file=0x18b600d0 "inset_shadow.png", key=0x0) at lib/evas/canvas/efl_canvas_image.c:84
#4 0x00000000034f8802 in evas_object_image_file_set (obj=0x40000000880014ec, file=0x18b600d0 "inset_shadow.png", key=0x0) at lib/evas/canvas/evas_image_legacy.c:178
#5 0x00000000004229d6 in data_write_images (ef=0x19a4f030, image_num=0x22fd78) at bin/edje/edje_cc_out.c:1395
#6 0x0000000000421c90 in data_write () at bin/edje/edje_cc_out.c:2711
#7 0x00000000004274e7 in main (argc=6, argv=0x15db82c0) at bin/edje/edje_cc.c:412

STEP 3:
in data_write_images:1415 error_and_abort_image_load_error(ef, img->entry, load_err); exit (-1)

path of file is not correct
1)-> lib/evas/cache/evas_cache_image.c:1001: if (stat(file, &st) < 0) goto on_stat_error; <- stat(file, &st) return 2;

no problem on Windows, using MSYS2 and win-builds 1.5 (efl git), button.edj is built and edje_player displays it