edje: make the generated default program name reproducible over builds

For programs without specific names edje_cc generated default names in
the form of program_$MEMORY_ADDRESS. That worked well enough for keeping
the names unique, but it causes problems if one wants to have these files
being binary reproducible due to different memory layouts, compilers,
etc. Simply using a counter as unique part should work well enough for
our use case and help people who want to verify builds.

Thanks a lot to Bernhard M. Wiedemann for review and testing.

Fixes T5113
Ref T5495
This commit is contained in:
Stefan Schmidt 2017-05-16 17:58:36 +02:00
parent 3adf2ebddf
commit 4d2117ef2a
2 changed files with 4 additions and 2 deletions

View File

@ -14666,14 +14666,15 @@ ob_collections_group_programs_program(void)
epp->can_override = EINA_FALSE;
/* generate new name */
def_name = alloca(strlen("program_") + strlen("0xFFFFFFFFFFFFFFFF") + 1);
sprintf(def_name, "program_%p", ep);
def_name = alloca(strlen("program_") + strlen("FFFFFFFFFFFFFFFF") + 1);
sprintf(def_name, "program_%X", pc->programs.total_count);
ep->name = strdup(def_name);
if (pcp->default_source)
ep->source = strdup(pcp->default_source);
_edje_program_insert(pc, ep);
current_program = ep;
pc->programs.total_count++;
}
static void

View File

@ -1096,6 +1096,7 @@ struct _Edje_Part_Collection
unsigned int strncmp_count;
unsigned int strrncmp_count;
unsigned int nocmp_count;
unsigned int total_count;
} programs;
struct { /* list of limit that need to be monitored */