Testing ODM releases for the modest command line user

OpenDroneMap 3.0 is coming out, and while it’s a major revision number, that’s largely due to changes in flags and some modest revision of functionality, not wholesale changes to the codebase.

I offered here to do some testing for folx, but then I got lazy and decided to do an in-place test in WebODM so that others could run the tests themselves. In doing so, I realized that I have a small recipe for doing this yourselves (if you are running via docker on Windows, Mac OS, or Linux), if you are even slightly command-line inclined (i.e. any experience using the command line). So, here we go. Strap in: it’s really not too bad, just a step-by-step recipe:

Typically WebODM runs in a few docker instances, specifically these which we see in the log:

Creating db                ... done
Creating broker            ... done
Creating webodm_node-odm_1 ... done
Creating worker            ... done
Creating webapp            ... done

It’s really only webodm_node-odm_1 that does the work we are interested (the processing itself). To connect into the instance and access its command line, we execute the following:
docker exec -it webodm_node-odm_1 bash

Now we are running inside our container and have a prompt something like this:
[email protected]:/#

We’ll need to add one tool:
apt install git

Now we can clone the repo of interest and checkout the correct version, which know from looking at the pull request in question:

cd /
git clone https://github.com/pierotofy/ODM
git checkout 300

This gets us the correct code and version, so now we need to install:

cd ODM
bash configure.sh install

We get a lot of output, concluding with something like what follows:

      |       ~~~~~~~~~~~~~~~~~           
Src/PoissonRecon.cpp:375:82: warning: 'PR_' directive writing 3 bytes into a region of size between 1 and 1024 [-Wformat-overflow=]
  375 |   if( tempPath[ strlen( tempPath )-1 ]==FileSeparator ) sprintf( tempHeader , "%sPR_" , tempPath );
      |                                                                                  ^~~
In file included from /usr/include/stdio.h:866,
                 from Src/PoissonRecon.cpp:40:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:38:34: note: '__builtin___sprintf_chk' output between 4 and 1027 bytes into a destination of size 1024
   38 |   return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
      |          ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   39 |       __glibc_objsize (__s), __fmt,
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   40 |       __va_arg_pack ());
      |       ~~~~~~~~~~~~~~~~~           
[ 99%] Performing install step for 'poissonrecon'
[100%] Completed 'poissonrecon'
[100%] Built target poissonrecon
Configuration Finished
[email protected]:/ODM#

Go get some coffee/tea/water, and chill for a bit to wait for the above output. When it’s done building, we can replace the existing ODM toolchain in-place in the node.

mv /ODM /code

This version will go away the next time you update or restart the instance, but it will allow you to test whichever version of the code needs some review, but through a WebODM instance.

7 Likes