Page MenuHomePhabricator

Themes no longer compile under EFL 1.18.1
Closed, WontfixPublic

Description

I have a number of themes that all compiled successfully under EFL 1.15.1. Now when I try to build them under 1.18.1 I am getting messages about not being able to find various parts such as this:

edje_cc: Critical. In group "elm/genlist/tree/default/default": Unable to find part "sel_bevel" for insert_after in part "arrow_img_l".

That prevent the theme from compiling. The source file for the above error example can be found here. Was the theme always broken and EFL 1.15.1 compiled it anyways? If it is an issue on my end and not due to a change in EFL any suggestions for how to correct this?

Even the default E17 theme gives a similar error message:

edje_cc: Critical. In group "e/fileman/desktop/icon/fixed": Unable to find part "base" for insert_after in part "label_min".

This is using the theme source straight from the E17.7 snapshot.

bu5hm4n closed this task as Wontfix.Oct 21 2016, 8:54 AM
bu5hm4n claimed this task.
bu5hm4n added subscribers: Hermet, raster, cedric and 2 others.

This likly means that you have a bug in your theme, this means label_min will be placed completly wrong, since insert_after is pointing to a invalid object ...

IMO thats not a bug in edje, and should be the way it currently is. It just help you finding bugs in your theme.

@raster @cedric @Hermet @zmike adding the theme guys here, maybe they have other opinions :)

Why is stopping the compile better than throwing an error and building anyways? Pretty sure this is how it worked previously.

Because its creating a theme file which is symantically wrong, and WILL NOT work how you expect it to work, its the same reason why dropping the compilation when you give a state name which is not in a given part...

While I understand in principle, in practice the result here is that a "bug fix" is resulting in breaking something that worked previously. Things like this are why people aren't encouraged to do regular updates.

I dont really think that this is keeping people away from updating theire efl.

You get a clear errormessage that your theme has a bug, and will not work like that ... You will NOT get the result you gave in form of syntax. To resolve this, simply fix your theme, your theme will now _start_ to work correctly.

For things like efl deadlocks when starting e17 and stuff like that, yes this could keep people away from updating efl. But this is just a hint on why you dont see your results on the screen as you described it.

Anyway the others should have the lastcall :)

There are a few facts here. Your theme had an undetected bug which would result in undefined behavior at run time that you didn't catch while testing it manually.

Now we decided to make edje_cc catch those error better to avoid later bug report. Requesting that edje_cc let this slide and just thraw a warning, is just delaying for potentially another bug report which will be more difficult to locate and fix (Because we will have to debug more component). We are sorry, but we don't support old bug and don't want to spend time trying to figure out where bugs are when we can avoid it. This is why we will always be improving the various bit to detect wrong behavior as early as possible and block it.

The fact that E17.7 had a bug is completely irrelevant to the problem. Every piece of software has bug and they need to be maintained over time. E17 is end of life and nobody is maintaining it anymore, so yes, there will be problem showing up.

@cedric is right. so is @bu5hm4n. newer edje_cc's have more bug detection and will FAIL compiles if they find serious issues it knows are real life bugs (that happened to be ignored before and whatever random behavior happened instead that was not defined or intended). this is the "you have an issue. go find it and fix it before moving on" message. your existing .edj files wont break. they are binary compatible with all architectures and os's so keep using them, but newly compiled themes will need a fix. so any update of efl wont break a running system at all. it WILL STOP the compile of an already broken theme. cedric is right that eventually that broken theme results in a bug report of "weird behavior" that someone spends hours or days on, finds nothing, shrugs and leaves bug open or closes with "invalid" as it cant be reproduced and it ends up one of these. edje_cc is being very helpful and nice in telling you what to fix and where. i've found little bugs here and there in edc files for themes in our apps and fixed them as a result. edje_cc was right. so from where i stand, we haven't broken a running system. we've made development harder to get wrong (development of themes). and that's about the right point to be. i would AGREE with you if we broke a running existing theme. e.g. stopped loading the theme (edj files) because we detected an issue that was like this. then you'd be right and we'd be wrong and have gone too far.