New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
modelcompiler sometimes fails to build any .sgm files. #4730
Comments
@impaktor and @Web-eWorks Any news on this issue? |
@orbea I think it's a feature that pioneer only generates the sgm files if they're missing, as next startup will be significantly faster if it can just load existing files. But if you want some explicit "forced" re-generation option to re-generate of all of them, or a "clean" option or something, that will make life easier when packaging it, or am I missing something? |
@impaktor This is a big problem with distro packages. It forces the user to uninstall pioneer before rebuilding it, otherwise the sgm files will never be generated and then removed when the new package is upgraded over the old one. In my use case they should always be generated. |
This sounds like a @fluffyfreak -problem. |
I have a half-started branch where I was attempting to rewrite the model loader and compiler that I will eventually come back to, if @fluffyfreak wants to take a crack at it, I'll push it to my fork next week 😄 |
Everything sounds like a fluffyfreak problem :D |
Not to be pushy, but if there is anything that can be done to resolve or even work around this issue sooner rather than later it would be greatly appreciated. Its a bit of a blocker for me. |
@orbea would being able to pass in |
This has made me wish we use a cmd line argument parser like https://github.com/jarro2783/cxxopts |
I'm not really set on which way it should be, if I can set a flag to always generate them with cmake that would be fine. |
Perfect because I think that setting a |
@fluffyfreak please port from the hyg-database-parser PR - already have command line handling there |
Ok, short answer is that I'm not able to reproduce this issue. @orbea some questions:
|
@fluffyfreak I tried to reproduce it with the current master (f34619f). However with the following script run from inside the pioneer git repo the
The pioneer install should be in |
Seems this regressed even more in the master. Even my normal builds never generate |
It entirely stopped generating the
@Web-eWorks Is there any support for system versions of fmt? |
The above commit made it an independent build target which I did not notice at first.
@fluffyfreak That said I am not able to reproduce it with my synthetic tests, only with my actual Slackware package. Here is the basic sequence where this does occur.
Does this help you understand? If the old package is uninstalled before building the new package this problem does not occur. For reference I am using |
Packages are so far outside of my experience that I have no idea. |
A workaround is to build the modelcompiler first with an empty cmake environment, run the command manually and then proceed to rebuild pioneer normally.
|
edit: reading back through this, this sounds like this is the exact issue fixed in #5039 That should have been resolved by that change. Have you tried it since then without any work arounds? |
@The-EG Yes, you are right. This is fixed in the git master, thanks for pointing that out! |
Observed behaviour
If pioneer is installed to the system then the next time pioneer is built
modelcompiler
will skip creating any.sgm
files which already exist on the system.When creating distro packages this is very problematic because the created packages are not reproducible if they are already installed.
The problem seems to be somewhere around here where
ends_with_ci
will never be true and the.sgm
files are never created.pioneer/src/modelcompiler.cpp
Line 271 in 4b161eb
Edit:
Its returning false in
ends_with_ci
here.pioneer/src/utils.h
Line 150 in 4b161eb
Expected behaviour
Pioneer should always generate
.sgm
files during the build.Steps to reproduce
-DPIONEER_DATA_DIR=/usr/share/pioneer
.2, Now rebuild pioneer with a fresh build directory using the same directory as in the previous step,
-DPIONEER_DATA_DIR=/usr/share/pioneer
.modelcompiler
will skip creation of any.sgm
files since they already exist at/usr/share/pioneer/
..sgm
files which will then vanish from the system when the package is upgraded.My pioneer version (and OS):
OS:
Slackware64-current
pioneer: 9fc04e0
The text was updated successfully, but these errors were encountered: