We have moved our forum to GitHub Discussions. For questions about Phalcon v3/v4/v5 you can visit here and for Phalcon v6 here.

[SOLVED] zep syntax errors: Which version of Zephir was used and can build 2.0.10

UPDATE Though the C source does not indicate version, the phpinfo does give the zep version used (0.9.2a-dev). Sorry for not spotting that previously.

Trying to regenerate phalcon 2.0.10 with zephir fails. The phalcon.c file saysThis file was generated automatically by Zephir do not modify it but not which version of zephir was used. Using zephir stable (0.8.0) to build phalcon stable (2.0.10) produces two syntax errors:

Zephir\ParseException: Syntax error in /usr/local/src/cphalcon-phalcon-v2.0.10/phalcon/paginator/adapter/querybuilder.zep on line 168

      var groups = totalBuilder->getGroupBy();
    ----------------------------^

and

 Zephir\ParseException: Syntax error in /usr/local/src/cphalcon-phalcon-v2.0.10/phalcon/paginator/adapter/querybuilder.zep on line 170

       var groupColumn = implode(", ", groups);
    ----------------------------^

Can 2.0.10 be generated with the stable zephir 0.8.0a or only with an unstable one, and if the latter, exactly which version of zephir was used to produce the C code in the released 2.0.10? Without knowing this it's not possible to augment phalcon with certainty that the only changes to the resultant C code are from changes made to zep files.



85.5k

use the latest master, therehasnt been any realse for ages

git clone phalcon/zephir; git pull origin master; ./install or ./install -c



3.8k
edited Apr '16

Thanks for the very quick reply Izo, but I hope you understand from your own experience that this is unacceptable for real-world systems, and it is very worrying that perhaps noone actually knows precisely which version of zephir was used (the generated C code should of course say which version).

REPRODUCIBILITY IS ESSENTIAL, which I stress heavily as it's so important. PITA though it is, there's a reason why banks and other large organisations (as an example) don't allow developers to make changes to live systems or even build the released software that goes on them, with everything put through a change control team who are responsible for doing a build and rollout. It is essential that it's known 100% precisely what version of components is used to build a given system so that the end result is 100% reproducible should it need to be done again. It doesn't matter if those tools have bugs, what matters is the end result. The risk is that if a different tool is used, even if it is arguably better because it has bug fixes, the end result becomes different and may itself have different behaviour including more bugs as a result of different tools and their bug fixes.

You have to use zephir 0.9.2 at least



3.8k

Thanks Andy. I used the latest and it works. I've changed the volt compiler to emit an html comment with the template path at the start and end of generated templates, which helps a lot in identifying which template to edit when drilling into the DOM.