micmacIGN / micmac

Free open-source photogrammetry software tools
http://micmac.ensg.eu
Other
705 stars 151 forks source link

Problem compiling micmac on macOS Mojave #126

Closed Steve-Paselli closed 5 years ago

Steve-Paselli commented 5 years ago

make install -j4 on an iMac 27 gives me this:

/Users/villavillacolle/micmac/src/uti_files/CPP_XifGps2Xml.cpp:42:1: error: use of undeclared identifier 'cAppli_VByDate' cAppli_VByDate::cAppli_VByDate(const std::string & aFullName, std::string & aOri): ^ /Users/villavillacolle/micmac/src/uti_files/CPP_XifGps2Xml.cpp:52:6: error: use of undeclared identifier 'cAppli_VByDate' void cAppli_VByDate::CalcV(const std::string & aOut) ^ /Users/villavillacolle/micmac/src/uti_files/CPP_XifGps2Xml.cpp:133:1: error: use of undeclared identifier 'cAppli_XifGps2Xml' cAppli_XifGps2Xml::cAppli_XifGps2Xml(const std::string & aFullName,double aDefZ) : ^ /Users/villavillacolle/micmac/src/uti_files/CPP_XifGps2Xml.cpp:161:6: error: use of undeclared identifier 'cAppli_XifGps2Xml' void cAppli_XifGps2Xml::ExportSys(cSysCoord * aSC,const std::string & anOri) ^ /Users/villavillacolle/micmac/src/uti_files/CPP_XifGps2Xml.cpp:178:6: error: use of undeclared identifier 'cAppli_XifGps2Xml' void cAppli_XifGps2Xml::ExportCoordTxtFile(std::string aOut, std::string aOutFormat) ^ /Users/villavillacolle/micmac/src/uti_files/CPP_XifGps2Xml.cpp:218:1: error: use of undeclared identifier 'cAppli_XifDate' cAppli_XifDate::cAppli_XifDate(const std::string & aFullName): ^ /Users/villavillacolle/micmac/src/uti_files/CPP_XifGps2Xml.cpp:228:6: error: use of undeclared identifier 'cAppli_XifDate' void cAppli_XifDate::Export(const std::string & aOut) ^ /Users/villavillacolle/micmac/src/uti_files/CPP_XifGps2Xml.cpp:239:21: error: use of undeclared identifier 'cAppli_XifDate' std::vector cAppli_XifDate::GetVDiffSecond() ^ /Users/villavillacolle/micmac/src/uti_files/CPP_XifGps2Xml.cpp:256:1: error: use of undeclared identifier 'cIm_XifGp' cIm_XifGp::cIm_XifGp(const std::string & aName,cAppli_XifGps2Xml & anAppli) : ^ /Users/villavillacolle/micmac/src/uti_files/CPP_XifGps2Xml.cpp:256:48: error: unknown type name 'cAppli_XifGps2Xml' cIm_XifGp::cIm_XifGp(const std::string & aName,cAppli_XifGps2Xml & anAppli) : ^ /Users/villavillacolle/micmac/src/uti_files/CPP_XifGps2Xml.cpp:280:1: error: use of undeclared identifier 'cIm_XifDate' cIm_XifDate::cIm_XifDate(const std::string & aName): ^ /Users/villavillacolle/micmac/src/uti_files/CPP_XifGps2Xml.cpp:287:1: error: use of undeclared identifier 'cIm_XifDate' cIm_XifDate::cIm_XifDate(const std::string & aName, cElHour & aBeginTime): ^ /Users/villavillacolle/micmac/src/uti_files/CPP_XifGps2Xml.cpp:323:9: error: unknown type name 'cAppli_XifDate' cAppli_XifDate anAppli(aFullName); ^ /Users/villavillacolle/micmac/src/uti_files/CPP_XifGps2Xml.cpp:328:9: error: unknown type name 'cAppli_VByDate' cAppli_VByDate anAppli(aFullName,aCalVOri); ^ /Users/villavillacolle/micmac/src/uti_files/CPP_XifGps2Xml.cpp:359:5: error: unknown type name 'cAppli_XifGps2Xml' cAppli_XifGps2Xml anAppli(aFullName,aDefZ); ^ /Users/villavillacolle/micmac/src/uti_files/CPP_XifGps2Xml.cpp:405:5: error: unknown type name 'cAppli_XifGps2Xml' cAppli_XifGps2Xml anAppli(aFullName,aDefZ);

I previously built micmac successfully on another machine with Sierra. Any help is greatly appreciated, thank you!

rjanvier commented 5 years ago

I think it's unlikely to happen since it compiles fine on a fresh install on Travis. Could you please clean your build directory and try to rebuild? thanks.

nerdinand commented 5 years ago

When cloning on Mac, I got this error:

$ git clone https://github.com/micmacIGN/micmac.git micmac
Cloning into 'micmac'...
remote: Enumerating objects: 163, done.
remote: Counting objects: 100% (163/163), done.
remote: Compressing objects: 100% (116/116), done.
remote: Total 77222 (delta 76), reused 89 (delta 45), pack-reused 77059
Receiving objects: 100% (77222/77222), 297.35 MiB | 9.08 MiB/s, done.
Resolving deltas: 100% (63174/63174), done.
Checking out files: 100% (5342/5342), done.
warning: the following paths have collided (e.g. case-sensitive paths
on a case-insensitive filesystem) and only one from the same
colliding group is in the working tree:

  'src/TpMMPD/SimuBBA/SimuRolShut.h'
  'src/TpMMPD/SimuBBA/simurolshut.h'
  'src/uti_files/CPP_XifGps2Xml.h'
  'src/uti_files/cpp_xifgps2xml.h'

It seems the lower-case versions of these files are preferable.

rjanvier commented 5 years ago

hmm ok thanks, the issue could potentially make sense now. I'll try to see if it is really reproducible and if it is i'll try figure out the best way to tackle this.

gmorain commented 5 years ago

Hello @rjanvier , FYI the files that were used by my successful build of the more-portable-gimmi-branch (see #118) are the mixed case versions. As @nerdinand reports, I previously got git complaining when pulling the micmac master branch, since lower case and mixed case versions both refer to the same file on a regular MacOS setup. I think the issue arises when one of these files are modified: a subsequent pull on an already existing local repository stops because of the mixup (a situation that probably does not happen with Travis CI, since I guess the local repository always start fresh). My solution was to remove the local repository, and clone it again (but I only got the two mixed case version of the files in the end).

rjanvier commented 5 years ago

thanks @gmorain could you please make a pull request with these changes?

git mv --force src/TpMMPD/SimuBBA/simurolshut.h src/TpMMPD/SimuBBA/SimuRolShut.h
git mv --force src/uti_files/cpp_xifgps2xml.h src/uti_files/cpp_xifgps2xml.h

thanks

gmorain commented 5 years ago

@rjanvier I actually was wrong earlier, in the more-portable-gimmi branch I only see src/TpMMPD/SimuBBA/SimuRolShut.cpp and src/uti_files/CPP_XifGps2Xml.cpp files, not the matching .h, so both commands above fail (but the second one is probably wrong, I suppose the second file path should have been the mixed case version ?). After a git checkout on master, a git status gives:

git status
Sur la branche master
Votre branche est à jour avec 'origin/master'.

Modifications qui ne seront pas validées :
  (utilisez "git add <fichier>..." pour mettre à jour ce qui sera validé)
  (utilisez "git checkout -- <fichier>..." pour annuler les modifications dans la copie de travail)

    modifié :         src/TpMMPD/SimuBBA/SimuRolShut.h
    modifié :         src/uti_files/CPP_XifGps2Xml.h

Trying again your commands (with the second one modified to have the mixed case name as second argument):

git mv --force src/TpMMPD/SimuBBA/simurolshut.h src/TpMMPD/SimuBBA/SimuRolShut.h
git mv --force src/uti_files/cpp_xifgps2xml.h src/uti_files/CPP_XifGps2Xml.h

gives this:

git status
Sur la branche master
Votre branche est à jour avec 'origin/master'.

Modifications qui seront validées :
  (utilisez "git reset HEAD <fichier>..." pour désindexer)

    modifié :         src/TpMMPD/SimuBBA/SimuRolShut.h
    supprimé :        src/TpMMPD/SimuBBA/simurolshut.h
    modifié :         src/uti_files/CPP_XifGps2Xml.h
    supprimé :        src/uti_files/cpp_xifgps2xml.h

Files end nearly empty (just #ifndef / #define / #endif empty shell in both cases), which is what @nerdinand suggested (content of the lower case versions as I can see when browsing the Github repo), but I am not sure this is actually what we want, since the mixed case versions (merged from the Yilin branch) are more recent (16 days/26 days vs 2 months). I am totally unaware of what to expect in those files, since I am just trying to build micmac initially...

gmorain commented 5 years ago

Well, building the master branch like this gives the answer:

micmac/src/uti_files/CPP_XifGps2Xml.cpp:329:9: error: unknown type name 'cAppli_XifDate'
        cAppli_XifDate anAppli(aFullName);
        ^
micmac/src/uti_files/CPP_XifGps2Xml.cpp:334:9: error: unknown type name 'cAppli_VByDate'
        cAppli_VByDate anAppli(aFullName,aCalVOri);
        ^
micmac/src/uti_files/CPP_XifGps2Xml.cpp:365:5: error: unknown type name 'cAppli_XifGps2Xml'
    cAppli_XifGps2Xml anAppli(aFullName,aDefZ);
    ^
micmac/src/uti_files/CPP_XifGps2Xml.cpp:411:5: error: unknown type name 'cAppli_XifGps2Xml'
    cAppli_XifGps2Xml anAppli(aFullName,aDefZ);

...while having the mixed case file names with the content of the lower case counterparts all the classes definitions + some includes) leads to a successful build on master branch, with the ability to start the GIMMI UI in the end.

I am not sure a pull request to fix this should come from a MacOS system using the default config (i.e. ignore case in names on file system), because of this (git thinks I've changed the lower case versions which do not exist any more on my working folder):

git status
Sur la branche master
Votre branche est à jour avec 'origin/master'.

Modifications qui ne seront pas validées :
  (utilisez "git add <fichier>..." pour mettre à jour ce qui sera validé)
  (utilisez "git checkout -- <fichier>..." pour annuler les modifications dans la copie de travail)

    modifié :         ../src/TpMMPD/SimuBBA/simurolshut.h
    modifié :         ../src/uti_files/cpp_xifgps2xml.h
rjanvier commented 5 years ago

Ok I was unaware of the lower case src/TpMMPD/SimuBBA/simurolshut.h I guess removing it should be fine. For the CPP_XifGps2Xml.h file the git mv --force src/uti_files/cpp_xifgps2xml.h src/uti_files/CPP_XifGps2Xml.h should do the trick. Sorry I haven't any macOS box with me to test right now.

rjanvier commented 5 years ago

sorry removing both lower cases should be fine

gmorain commented 5 years ago

I just tried git mv --force src/uti_files/cpp_xifgps2xml.h src/uti_files/CPP_XifGps2Xml.h before pulling your latest changes to master (to be in the same conditions as yesterday), but got this:

fatal: mauvaise source, source=build/src/uti_files/cpp_xifgps2xml.h, destination=build/src/uti_files/CPP_XifGps2Xml.h

git pullfails:

Mise à jour f35a8d455..c101a93e3
error: Vos modifications locales aux fichiers suivants seraient écrasées par la fusion :
    src/TpMMPD/SimuBBA/simurolshut.h
    src/uti_files/cpp_xifgps2xml.h
Veuillez valider ou remiser vos modifications avant la fusion.
Abandon
rjanvier commented 5 years ago

it's fixed, no need to git mv

gmorain commented 5 years ago

Yes, I've seen that, I was just trying to see if the suggested command was actually working since you do not have a MacOS box available. Will update soon when new build is over

gmorain commented 5 years ago

This is what I had to do to catch up with latest commit (c101a93e32ebe4bf971141af57563b3615794c1c), since git pull fails with:

Mise à jour f35a8d455..c101a93e3
error: Vos modifications locales aux fichiers suivants seraient écrasées par la fusion :
    src/TpMMPD/SimuBBA/simurolshut.h
    src/uti_files/cpp_xifgps2xml.h
Veuillez valider ou remiser vos modifications avant la fusion.
Abandon

=> a hard reset to master branch did the trick. Now git status is clean, and building micmac with GIMMI succeeds with a runnable GIMMI executable.

Thanks @rjanvier !