jaehyun pushed a commit to branch master.

http://git.enlightenment.org/tools/enventor.git/commit/?id=c17f2f3e375bf35f0e28f112587fa1a94cb7cea3

commit c17f2f3e375bf35f0e28f112587fa1a94cb7cea3
Author: Jaehyun Cho <jae_hyun....@samsung.com>
Date:   Tue Aug 23 20:28:33 2016 +0900

    build: Support relative resource paths in sub edc file.
    
    Relative resource paths in sub edc files are based on the current working
    directory.
    To support relative resource paths in sub edc files, set main edc file's
    directory as the working directory when edje_cc is executed.
    
    Test Plan:
    1. Create "main.edc" in "./edc/" directory.
    2. Create "sub.edc" in "./edc/sub/" directory.
    3. Create "icon.png" in "./edc/image/" directory.
    4. "main.edc" includes "sub.edc". (i.e. #include "./sub/sub.edc")
    5. "sub.edc" uses "icon.png".
       (i.e. images.image: "./image/icon.png" COMP;)
    6. Open "main.edc" in the current working directory.
       (i.e. enventor -w ./edc ./edc/main.edc -i ./edc/image)
---
 src/lib/build.c | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/src/lib/build.c b/src/lib/build.c
index 105ffce..2117895 100644
--- a/src/lib/build.c
+++ b/src/lib/build.c
@@ -98,8 +98,20 @@ build_cmd_set(build_data *bd)
         goto err;
      }
 
+   /* Move to main edc file's directory to set it as the current working
+      directory to support relative resource paths in sub edc files.
+      (e.g. images.image: "./images/icon.png" COMP; in sub edc files) */
+   char *edc_dir = ecore_file_dir_get(bd->edc_path);
+   if (!edc_dir) goto err;
+
+   /* Move back to current working directory to restore the current working
+      directory after edje_cc compile. */
+   char *cur_dir = ecore_file_realpath("./");
+   if (!cur_dir) goto err;
+
    eina_strbuf_append_printf(strbuf,
-      "edje_cc -fastcomp %s %s -id %s/images -sd %s/sounds -fd %s/fonts -dd 
%s/data %s %s %s %s -beta",
+      "cd %s && edje_cc -fastcomp %s %s -id %s/images -sd %s/sounds -fd 
%s/fonts -dd %s/data %s %s %s %s -beta && cd %s",
+      edc_dir,
       bd->edc_path,
       (char *) eina_list_data_get(bd->pathes_list[ENVENTOR_PATH_TYPE_EDJ]),
       elm_app_data_dir_get(),
@@ -109,11 +121,15 @@ build_cmd_set(build_data *bd)
       eina_strbuf_string_get(strbuf_img),
       eina_strbuf_string_get(strbuf_snd),
       eina_strbuf_string_get(strbuf_fnt),
-      eina_strbuf_string_get(strbuf_dat));
+      eina_strbuf_string_get(strbuf_dat),
+      cur_dir);
    bd->build_cmd = eina_strbuf_string_steal(strbuf);
    bd->build_cmd_changed = EINA_FALSE;
 
 err:
+   if (edc_dir) free(edc_dir);
+   if (cur_dir) free(cur_dir);
+
    eina_strbuf_free(strbuf);
    eina_strbuf_free(strbuf_img);
    eina_strbuf_free(strbuf_snd);

-- 


Reply via email to