compile issue with kahip v1712
I get the following error trying to build (./Allwmake > log.make 2>&1) the ThirdParty software from v1712: "make: *** No rule to make target 'Make/linux64GccDPInt64Opt/interface/kaHIP/_interface.cpp.dep', needed by 'Make/linux64GccDPInt64Opt/interface/kaHIP_interface/o' . Stop. Error buidling: kahip.
Not sure if it is relevant, but there were a bunch (~100) of these lines in the kahip part of the log: "make: /opt/OpenFOAM-v1712/wmake/platforms/linux64Gcc/wmkdep: Command not found", though not every line was that.
Also, not sure if it is relevant, but when I source the OpenFOAM bashrc, I get the following warning: "No completion added for /opt/OpenFOAM-v1712/platforms/linux64GccDPInt640Opt/bin".
I also have a problem compiling cfmesh (separate bug report, probably not related?), but besides that and this, everything else seems to compile and work fine.
OF: v1712 OS: CentOS 7.5 Bash: 4.2 GCC: 4.8.5 (system) cmake: 3.11.2 (manual install system) Boost: 1.53 (system)
No child items are currently assigned. Use child items to break down this issue into smaller parts.
Link issues together to show that they're related. Learn more.
Activity
- Jed Storey changed the description
changed the description
- Mark OLESEN assigned to @mark
assigned to @mark
- Maintainer
Sorry about the delay (holidays).
Several things seem to be going wrong here, but not sure where.
-
The missing
wmkdep
command suggests you are building ThirdParty before anything else from OpenFOAM, which means that thewmkdep
command isn't there. Normally you should be using the Allwmake script from OpenFOAM, which will createwmkdep
and also call ThirdParty Allwmake. Since this could be a more common error, this has been addressed for 1806 with issue #30 (closed) . -
The warning "No completion added for /opt/OpenFOAM-v1712/platforms/linux64GccDPInt640Opt/bin" is safe to ignore. Since you haven't yet built anything, there are not completions.
-
This error:
make: *** No rule to make target 'Make/linux64GccDPInt64Opt/interface/kaHIP/_interface.cpp.dep', needed by 'Make/linux64GccDPInt64Opt/interface/kaHIP_interface/o'
is truly strange. It might be bash-related, but I would need more information to figure this out.
- For your cfmesh problem, are you using the original tar file or have you updated from git? The 64-bit label ambiguity should be resolved by this commit 5-JAN-2018 (Community/integration-cfmesh@3bc78e5b)
Edited by Mark OLESEN -
- Author
I thought you were supposed to do the ThirdParty Allwmake before doing the OpenFOAM Allwmake because OpenFOAM needs some components from the ThirdParty folder to be compiled. From what you said, it sounds like the only correct way is to call the OpenFOAM Allwmake and not the ThirdParty one. Is that correct?
Yes, the no completion warning goes away after rebooting after compiling OpenFOAM.
If it's relevant, I'm using: OF: v1712 OS: CentOS 7.5 Bash: 4.2 GCC: 4.8.5 (system) cmake: 3.11.2 (manual install system) Boost: 1.53 (system)
For cfmesh, I used whatever comes in the the downloaded tar file. I have not updated from git -I'm honestly not sure how to do that. Do I download the cfmesh files using git and replace them in the OpenFOAM source? Or do I somehow compile cfmesh separately? Should I move this to the cfmesh bug report?
Thanks!
- Maintainer
-
Should normally call the OpenFOAM Allwmake, which calls the ThirdParty Allwmake. But you are not the only one to do it the other way around, so now we also try to catch that too.
-
No need to reboot after compilation, just reload your OpenFOAM environment by sourcing its bashrc again (or the wmRefresh function).
-
I'm assuming that you really need 64-bit labels (really large meshes). If you are not comfortable with git, this particular set of changes for cfmesh is fairly straightforward to replicate by hand (Community/integration-cfmesh@3bc78e5b). If you look at the diffs, you'll see that it is quite manageable. No need to open an issue for cfmesh (anywhere), since as far as I can tell, it has been already solved.
-
- Author
I think the confusion with build order comes from the fact that ParaView, which is part of the ThirdParty folder, is built before running the OpenFOAM Allwmake in all installation guides. It's not clear which things, if anything else, needs to be built before or after OpenFOAM. In other words, the recommended build sequence depending on which ThirdParty things are being used is not clear.
Ok, thanks for your help. I will attempt a clean installation with the updated cfmesh files (to fix the cfmesh errors) and the correct build order to fix the kahip errors.
Edited by Jed Storey - Maintainer
No worries. It is indeed not always clear which build order is the best at any one time. Sometimes you'll even want to go back and rebuild a different paraview setup (eg, with MPI, python) or paraview version for an existing OpenFOAM build.
- Author
The correct build order fixed the kahip issue.
I moved the old cfmesh folder to "oldcfmesh" and cloned the cfmesh git repository to cfmesh before building OpenFOAM. However, I still get the same errors as in that cfdonline thread.
lnInclude/DynListI.H:218:21: error: request for member ‘size’ in ‘l’, which is of non-class type ‘const int’ setSize(l.size());
lnInclude/DynListI.H:221:32: error: subscripted value is neither array nor pointer this->operator = l[i];
lnInclude/DynListI.H: In instantiation of ‘Foam::Module:ynList<T, staticSize>:ynList(const ListType&) [with ListType = int; T = Foam::Vector2D; long int staticSize = 6l]’: lnInclude/helperFunctionsGeometryQueriesI.H:1144:37: required from here lnInclude/DynListI.H:218:21: error: request for member ‘size’ in ‘l’, which is of non-class type ‘const int’ setSize(l.size());
lnInclude/DynListI.H:221:32: error: subscripted value is neither array nor pointer this->operator = l[i];
Edited by Jed Storey - Maintainer
Which git repo did you clone? This is the one that I mean: https://develop.openfoam.com/Community/integration-cfmesh
- Author
That one. Master. I used the copy URL button to make sure it was correct.
- Maintainer
If took a bit, but in the meantime I've recompiled the 1712 master with the cfmesh master branch with 64-bit labels and cannot reproduce your problem.
If you examine your DynList.H do you really have the following at line 122?
122 //- Construct given integer size 123 #if WM_LABEL_SIZE == 64 124 explicit inline DynList(const int32_t nElem) 125 : 126 DynList(label(nElem)) 127 {} 128 #endif
If this still doesn't work, I'm running out of possibilities. Presumably a label-size 32 builds OK?
- Author
Yes, I have that line. I checked a few of the files to make sure the edits shown in the commit were in them. I removed the oldcfmesh directory I created and tried building again. This worked. I guess the Allwmake searches for the "cfmesh" string in directories and builds everything in them? Anyways: future people: just replace the old cfmesh directory with the new one.
- Jed Storey closed
closed
- Maintainer
The OpenFOAM
Allwmake
script will try to build everything under themodules/
subdirectory, which makes it relatively "pluggable", but does also mean that renamed old junk will also still get built unless you remove it entirely from that subdirectory.Edited by Mark OLESEN - Author
Excellent. Thank you for your help.
In summary:
- kahip needs wmkdep, which requires ./Allwmake from OpenFOAM (not ThirdParty) to be run
- must update cfmesh source from master branch of repository to enable wm_label_size=64 support or you'll get build errors