-
Notifications
You must be signed in to change notification settings - Fork 561
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
New recipe: MEOS #9453
base: master
Are you sure you want to change the base?
New recipe: MEOS #9453
Conversation
This fails on PROJ not being found, because: However, I'm not sure how/why the libgfortran(3) gets injected, and why PROJ_jll has no such mapping, whereas GEOS_jll with a similar mapping does. edit: @giordano Could you help me out here? I'm overlooking something, but can't pinpoint it. |
I'd suggest not doing that. The postfix is not really liked by the general registry, so while we use it for the individual builds here, it would be better to not rely on it for this. How soon will upstream release 1.2.0? |
Co-authored-by: Ian McInerney <[email protected]>
Fair enough, let's wait for the 1.2.0 release, but I'm not sure how soon that will be. For now, this is also still blocked on Windows ( |
We just produced the v1.2.0 release of MEOS. Feel free to let us know if you encounter any issues with it. |
|
||
# Collection of sources required to complete build | ||
sources = [ | ||
GitSource("https://github.com/MobilityDB/MobilityDB.git", "60048b5b4b7ce2f7560c024d1af024db73b3bd5b") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am confused: why is the recipe called MEOS build it builds a project called "MobilityDB". I just went to https://github.com/MobilityDB/MobilityDB and it doesn't mention "MEOS" in the README.md (though there is a subdirectory called meos
).
So is MEOS a subset of MobilityDB? But building MobilityDB for some reason... only builds and installs MEOS, not the whole thing?
Perhaps it would be good to add a few comments to explain the situation? Or rename this recipe?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think that's explained in the PR description (and on the linked website). I will add a similar comment with the link to the source here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"Mobility Engine Open Source" also does not seem to be the obvious search hit for "MeOS" on Google.
Recommendation: Choose a longer, more explicit name, e.g., MobilityEngineOpenSource
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed that Google doesn't help (right now), but I'm not sure if that's a good requirement? Eigen, much more famous, doesn't show up in my search results either. I suppose we tend to follow how the external library calls itself, which is MEOS. Is there a naming guide for when we deviate from the library name itself?
FWIW, it is supposed to mirror similarly named software (also recipes here), namely GEOS (but GDAL and PROJ also come to mind).
-DHAVE_X86_64_POPCNTQ_EXITCODE="FAILED_TO_RUN" \ | ||
-DHAVE_X86_64_POPCNTQ_EXITCODE__TRYRUN_OUTPUT= |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why? This is such an old instruction which should be moderately safe to assume to be available.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Apparently it's not the instruction, but the TRY_RUN statement is not allowed in cross-compile mode:
[14:57:59] CMake Error: TRY_RUN() invoked in cross-compiling mode, please set the following cache variables appropriately:
[14:57:59] HAVE_X86_64_POPCNTQ_EXITCODE (advanced)
[14:57:59] HAVE_X86_64_POPCNTQ_EXITCODE__TRYRUN_OUTPUT (advanced)
[14:57:59] For details see /workspace/srcdir/MobilityDB/build/TryRunResults.cmake
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
but the TRY_RUN statement is not allowed in cross-compile mode:
I know. But I expect that try-run is running a check whether the instruction is available. Which of course could also be done with a simple compiler check instead of a try-run.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just workarounded the error with the instruction CMake gave me (I'm not affiliated with MobilityDB/MEOS so I can't answer the why, but I'm happy to make an upstream issue). AFAIK there's no code in MEOS actually making use of this check (anymore MobilityDB/MobilityDB#610).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We use a cross-compilation environment, so any try_run call in a CMake script will basically be pointless. From the CMake docs (https://cmake.org/cmake/help/latest/command/try_run.html#behavior-when-cross-compiling):
When cross compiling, the executable compiled in the first step usually cannot be run on the build host. The try_run command checks the CMAKE_CROSSCOMPILING variable to detect whether CMake is in cross-compiling mode. If that is the case, it will still try to compile the executable, but it will not try to run the executable unless the CMAKE_CROSSCOMPILING_EMULATOR variable is set. Instead it will create cache variables which must be filled by the user or by presetting them in some CMake script file to the values the executable would have produced if it had been run on its actual target platform. These cache entries are:
See https://libmeos.org/
edit: This release now points to the release candidate 1 release (as it requires no patches) to build. Is it ok to set the version number to v1.2.0 already and later at the actual release just rerunning it with the new commits (producing a jll with the +1 postfix)?