gazebo-tooling / gzdev

Gazebo developers tool is an Outreachy project designed to facilitate many of the usual tasks that Gazebo developers face daily
Other
14 stars 3 forks source link

[Feature] Implement option to install Gazebo from source. #4

Closed drrosa closed 6 years ago

drrosa commented 6 years ago

This change is Reviewable

j-rivero commented 6 years ago

I run this branch using:

jrivero@nium gzdev $ (gz-src-install) ./gzdev.py spawn --gzv=9 --source --nvidia

~~~ Spawning docker container for Gazebo 9 ~~~

-> Building docker image. The first time will take a few minutes... 
   You might want to grab a cup of coffee or whatever suits your cup of tea :)

-> Running docker container and forwarding hardware accelerated graphics to your screen

-> Logging output and errors to "/home/jrivero/code/gzdev/gz9_src.log".

jrivero@nium gzdev $ (gz-src-install) cat /home/jrivero/code/gzdev/gz9_src.log
~~~ Container Log ~~~

Summary: 0 packages finished [0.60s]
/bin/bash: /tmp/gazebo/install/local_setup.bash: No such file or directory

~~~ Client log ~~~

NVIDIA Docker: 1.0.1

Client:
 Version:           18.06.0-ce
 API version:       1.38
 Go version:        go1.10.3
 Git commit:        0ffa825
 Built:             Wed Jul 18 19:11:02 2018
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.06.0-ce
  API version:      1.38 (minimum version 1.12)
  Go version:       go1.10.3
  Git commit:       0ffa825
  Built:            Wed Jul 18 19:09:05 2018
  OS/Arch:          linux/amd64
  Experimental:     false
8a13be7c3ef3ee637e03364720984c59a09e532827cbc10b639a8753d5731739
Succesfully stopped and removed running container.

I'm not sure which is the expected result but if there is no bug, we should point the user about what to do. My expectations were to land inside the docker container with the sources at hand :)

j-rivero commented 6 years ago

I got several errors when calling gzcolcon.sh:

[19.612s] ERROR:colcon.colcon_core.package_identification:Exception in package identification extension 'python_setup_py' in '/usr/lib/python2.7/dist-packages/numpy/core': No module named 'numpy'

If I install python3-numpy in the container:

[18.995s] ERROR:colcon.colcon_core.package_identification:Exception in package identification extension 'python_setup_py' in '/usr/lib/python2.7/dist-packages/numpy': setup() function invoked without the keyword argument 'name'
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/colcon_core/package_identification/__init__.py", line 135, in _identify
    retval = extension.identify(desc2)
  File "/usr/lib/python3/dist-packages/colcon_python_setup_py/package_identification/python_setup_py.py", line 46, in identify
    data = extract_data(**kwargs)
  File "/usr/lib/python3/dist-packages/colcon_python_setup_py/package_identification/python_setup_py.py", line 162, in extract_data
    "setup() function invoked without the keyword argument 'name'")
RuntimeError: setup() function invoked without the keyword argument 'name'

[18.999s] ERROR:colcon.colcon_core.package_identification:Exception in package identification extension 'python_setup_py' in '/usr/lib/python2.7/dist-packages/numpy/compat': setup() function invoked without the keyword argument 'name'
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/colcon_core/package_identification/__init__.py", line 135, in _identify
    retval = extension.identify(desc2)
  File "/usr/lib/python3/dist-packages/colcon_python_setup_py/package_identification/python_setup_py.py", line 46, in identify
    data = extract_data(**kwargs)
  File "/usr/lib/python3/dist-packages/colcon_python_setup_py/package_identification/python_setup_py.py", line 162, in extract_data
    "setup() function invoked without the keyword argument 'name'")
RuntimeError: setup() function invoked without the keyword argument 'name'

[19.127s] ERROR:colcon.colcon_core.package_identification:Exception in package identification extension 'python_setup_py' in '/usr/lib/python2.7/dist-packages/numpy/core': No module named 'numpy._build_utils'
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/colcon_core/package_identification/__init__.py", line 135, in _identify
    retval = extension.identify(desc2)
  File "/usr/lib/python3/dist-packages/colcon_python_setup_py/package_identification/python_setup_py.py", line 45, in identify
    kwargs = get_setup_arguments(setup_py)
  File "/usr/lib/python3/dist-packages/colcon_python_setup_py/package_identification/python_setup_py.py", line 108, in get_setup_arguments
    runpy.run_path(str(setup_py))
  File "/usr/lib/python3.5/runpy.py", line 254, in run_path
    pkg_name=pkg_name, script_name=fname)
  File "/usr/lib/python3.5/runpy.py", line 96, in _run_module_code
    mod_name, mod_spec, pkg_name, script_name)
  File "/usr/lib/python3.5/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/usr/lib/python2.7/dist-packages/numpy/core/setup.py", line 13, in <module>
    from numpy._build_utils.apple_accelerate import (uses_accelerate_framework,
ImportError: No module named 'numpy._build_utils'

Seems like it is not a fatal error and colcon is able to continue. The next error I found is:

removing '/build/complex-dist/build/bdist.linux-x86_64/egg' (and everything under it)
--- stderr: FortranCInterface
CMake Error at CMakeLists.txt:13 (project):
  No CMAKE_Fortran_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "FC" or the CMake cache entry CMAKE_Fortran_COMPILER to the full
  path to the compiler, or to the compiler name if it is in the PATH.

---
Failed   <<< FortranCInterface  [ Exited with code 1 ]
--- stderr: IntelFortranImplicit
CMake Error at CMakeLists.txt:2 (project):
  No CMAKE_Fortran_COMPILER could be found.

  Tell CMake where to find the compiler by setting either the environment
  variable "FC" or the CMake cache entry CMAKE_Fortran_COMPILER to the full
  path to the compiler, or to the compiler name if it is in the PATH.

---
Failed   <<< IntelFortranImplicit   [ Exited with code 1 ]

And the build fails.

A part from these errors (needs fixing) the rest seems to works fine. I would do the gzsources.sh step automatically and leave only the compilation step ready for the user.

drrosa commented 6 years ago

Hmm could you please double check that the latest changes were actually pulled? Also check if the image was built correctly, the size of the gz9_src image should be 1.71GB.

After running gzdev spawn 9 --source you should see the following instructions in the terminal:

Access the container with the following command:
     docker exec -it gz9_src /bin/bash
Once in the container:
     - Pull all source code repos with: gzrepos.sh
     - Then compile and run with verbose output using: gzcolcon.sh
       or less output messages with: colcon build && gazebo

and everything should work fine with those commands since they are running in the container and all the prerequistes have been installed already.

Also notice a directory called "gazebo" should get created automatically, then gzrepos.sh should create a subdirectory called "src".

j-rivero commented 6 years ago

and everything should work fine with those commands since they are running in the container and all the prerequistes have been installed already.

You are right, the thing works fine after removing the image and launch the command again.

j-rivero commented 6 years ago

Merged! good work David!