name: opendronemap adopt-info: odm grade: stable confinement: strict base: core20 summary: Command line toolkit for processing aerial drone imagery description: > An open source command line toolkit for processing aerial drone imagery. ODM turns simple 2D images into: * Classified Point Clouds * 3D Textured Models * Georeferenced Orthorectified Imagery * Georeferenced Digital Elevation Models The application is available for Windows, Mac and Linux and it works from the command line, making it ideal for power users, scripts and for integration with other software. # The UbuntuGIS PPA only has i386 and amd64 packages so we can't build any # other architectures. Therefore let's limit to those here. architectures: - build-on: i386 run-on: i386 - build-on: amd64 run-on: amd64 # Requires snapcraft to be called with --enable-experimental-package-repositories # until the feature is released package-repositories: - type: apt ppa: ubuntugis/ubuntugis-unstable parts: prereqs: source: . plugin: nil build-packages: - build-essential - cmake - gdal-bin - gfortran # to build scipy - git - grass-core - libboost-log-dev - libgdal-dev - libgeotiff-dev - libjsoncpp-dev - libssl-dev - libusb-1.0-0-dev - ninja-build - pkg-config - python3-dev - python3-gdal - python3-pip - python3-setuptools - python3-wheel - rsync - swig3.0 stage-packages: - gdal-bin - grass-core - libboost-log1.71.0 - libgdal26 - libgeotiff5 - libjsoncpp1 - libspqr2 - libssl1.1 - libusb-1.0-0 - procps - python3 - python3-distutils - python3-gdal - python3-pkg-resources # required base package for core20 - python3-requests # required base package for core20 - python3-setuptools stage: # remove deb-based numpy because it conflicts with our pip-installed version - -usr/lib/python3/dist-packages/numpy opencv: source: . plugin: nil build-packages: - libavcodec-dev - libavformat-dev - libeigen3-dev - libflann-dev - libgtk2.0-dev - libjpeg-dev - liblapack-dev - libopenjpip7 - libpng-dev - libproj-dev - libswscale-dev - libtbb-dev - libtiff-dev - libvtk6-dev - libxext-dev - proj-bin stage-packages: - libavcodec58 - libavformat58 - libflann1.9 - libgtk2.0-0 - libjpeg-turbo8 - libopenjpip7 - liblapack3 - libpng16-16 - libproj19 - libswscale5 - libtbb2 - libtiff5 - libvtk6.3 - libwebpdemux2 - libxext6 openmvs: source: . plugin: nil build-packages: - libcgal-dev - libboost-program-options-dev stage-packages: - libboost-program-options1.71.0 opensfm: source: . plugin: nil build-packages: - libboost-date-time-dev - libboost-filesystem-dev - libboost-iostreams-dev - libboost-python-dev - libboost-regex-dev - libboost-serialization-dev - libboost-system-dev - libboost-thread-dev - libsuitesparse-dev stage-packages: - libamd2 - libboost-date-time1.71.0 - libboost-filesystem1.71.0 - libboost-iostreams1.71.0 - libboost-python1.71.0 - libboost-regex1.71.0 - libboost-serialization1.71.0 - libboost-system1.71.0 - libboost-thread1.71.0 - libcamd2 - libccolamd2 - libcholmod3 - libcolamd2 - libcxsparse3 - libsuitesparseconfig5 odm: after: - prereqs - opencv - opensfm - openmvs source: . plugin: nil # We will script everything ourselves build-environment: # Set Python location to build host's system so that we can # use system libraries while building the Snap Package - PYTHONHOME: /usr # Set the location for pip to install requirements into inside # the Snap package - PYTHONUSERBASE: $SNAPCRAFT_PART_INSTALL override-build: | snapcraftctl set-version $(cat VERSION) # Portable build test -f /usr/bin/gcc_real || mv -v /usr/bin/gcc /usr/bin/gcc_real test -f /usr/bin/gcc || cp -v ./docker/gcc /usr/bin/gcc test -f /usr/bin/g++_real || mv -v /usr/bin/g++ /usr/bin/g++_real test -f /usr/bin/g++ || cp -v ./docker/g++ /usr/bin/g++ pip3 install --user -r requirements.txt # Build the SuperBuild libraries mkdir -p SuperBuild/build cd SuperBuild/build cmake -G Ninja .. cmake --build . --parallel 1 # Build the main ODM project cd $SNAPCRAFT_PART_BUILD mkdir -p build cd build cmake -G Ninja .. cmake --build . --parallel $SNAPCRAFT_PARALLEL_BUILD_COUNT rsync -av --exclude .git \ $SNAPCRAFT_PART_BUILD/ $SNAPCRAFT_PART_INSTALL/odm/ chmod -R u=rwX,go=rX $PYTHONUSERBASE/lib/python* stage: # strip the temporary build files and sources - -odm/SuperBuild/build/opencv - -odm/SuperBuild/build/openmvs - -odm/SuperBuild/download - -odm/SuperBuild/src/ceres - -odm/SuperBuild/src/untwine - -odm/SuperBuild/src/entwine - -odm/SuperBuild/src/gflags - -odm/SuperBuild/src/hexer - -odm/SuperBuild/src/lastools - -odm/SuperBuild/src/laszip - -odm/SuperBuild/src/mvstexturing - -odm/SuperBuild/src/opencv - -odm/SuperBuild/src/opengv - -odm/SuperBuild/src/openmvs - -odm/SuperBuild/src/pcl - -odm/SuperBuild/src/pdal - -odm/SuperBuild/src/vcg - -odm/SuperBuild/src/zstd prime: # remove any static-libraries - -**/*.a # remove any header files - -**/*.h # remove any left-over temporary compiled 'object' files - -**/*.o build-snaps: - cmake snap-specifics: source: snap/local plugin: dump snapcraft-preload: source: https://github.com/sergiusens/snapcraft-preload.git plugin: cmake cmake-parameters: - -DCMAKE_INSTALL_PREFIX=/ build-packages: - on amd64: - gcc-multilib - g++-multilib apps: opendronemap: command: odm/run.sh command-chain: - bin/snapcraft-preload # Fixes multiprocessing python module environment: # Ensure libraries are found LD_LIBRARY_PATH: $SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/blas:$SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/lapack:$LD_LIBRARY_PATH plugs: - home - network - network-bind - removable-media