Git Product home page Git Product logo

borsch's Introduction

Introduction

Many C/C++ GIS libraries are usually built via autoconf/make/nmake/VC. While this is valid approach, we believe there is a better new alternative - CMake. NextGIS Borsch (http://nextgis.com/borsch) is a new build system that is

  • a) easier to use,
  • b) better solves dependencies and
  • c) provides more uniform way of building packages.

Needed dependencies are automatically fetched from repositories. We’ve built an early prototype of such system and tested if on GDAL build process (over 50 core dependent libraries). Now a developer with only three lines of code in CMakeLists.txt for any project he is working on can add dependent GIS library. If needed library exists in the system the build system will use it, if not - it will be downloaded from Github. Our new build system works for both Windows, Linux and MacOS.

Common CMake scripts

These are common cmake scripts for building system. Now two main files created FindAnyProject.cmake and FindExtProject.cmake.

FindAnyProject.cmake - have two main functions: find_anyproject and target_link_extlibraries.

The first one tries to find_package locally. If no package found user can opt to use external project. The FindExtProject.cmake is used for this.

The second one is used to link target libraries from both local or external packages.

Finally, there are sets of FindExtxxx.cmake files for external repositories details and additional logic.

Two additional files are mandatory for Borsch v2 functionality: JSONParser.cmake and util.cmake:

JSONParser.cmake - functions needed for parse github REST API request results.

util.cmake - function need for form binary artifacts names and for use in toolchains.

Use cases

To use this scripts need to add cmake folder to the sources. Then the folder needs to be added to modules path:

# set path to additional CMake modules
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})

Add external project with few lines of code:

include(FindAnyProject)

# TIFF support - required, default=ON
find_anyproject(TIFF REQUIRED)

Some additional parameters are supported. From find_project support:

  • EXACT
  • QUIET
  • MODULE
  • REQUIRED
  • COMPONENTS

Version can be specified via VERSION <version>

Any other parameters will be forwarded to the external project. The important parameter is CMAKE_ARGS. Note: do not pass WITH_X options with CMAKE_ARGS, use set(WITH_X ...) instead.

find_anyproject(CURL REQUIRED CMAKE_ARGS
      -DBUILD_CURL_EXE=OFF
      -DCURL_DISABLE_FTP=ON
      -DCURL_DISABLE_LDAP=ON
      -DCURL_DISABLE_TELNET=ON
      -DCURL_DISABLE_DICT=ON
      -DCURL_DISABLE_FILE=ON
      -DCURL_DISABLE_TFTP=ON
      -DCURL_DISABLE_LDAPS=ON
      -DCURL_DISABLE_RTSP=ON
      -DCURL_DISABLE_PROXY=ON
      -DCURL_DISABLE_POP3=ON
      -DCURL_DISABLE_IMAP=ON
      -DCURL_DISABLE_SMTP=ON
      -DCURL_DISABLE_GOPHER=ON
      -DCURL_DISABLE_CRYPTO_AUTH=OFF
      -DENABLE_IPV6=OFF
      -DENABLE_MANUAL=OFF
      -DCMAKE_USE_OPENSSL=OFF
      -DCMAKE_USE_LIBSSH2=OFF)

The final step is to link target libraries:

target_link_extlibraries(${LIB_NAME})

Cmaked libraries

This is a table of currently available libraries.

# Repository Cmaked OS tested Notes
1 lib_z yes Windows, Mac OS X Borsch compatible
2 lib_lzma yes Windows, Mac OS X Borsch compatible
3 lib_xml2 yes Windows, Mac OS X Borsch compatible
4 lib_curl yes Windows, Mac OS X Borsch compatible
5 lib_geotiff yes Windows, Mac OS X Borsch compatible
6 lib_tiff yes Windows, Mac OS X Borsch compatible
7 lib_jpeg yes Windows, Mac OS X Borsch compatible
8 lib_jbig yes Windows, Mac OS X Borsch compatible
9 lib_iconv yes Windows not needed on Mac OS, Borsch compatible
10 lib_gdal yes Windows, Mac OS X tests present
11 lib_openssl yes Windows, Mac OS X Borsch compatible
12 lib_jsonc yes Windows, Mac OS X Borsch compatible
13 lib_expat yes Windows, Mac OS X Borsch compatible
14 lib_proj yes Windows, Mac OS X Borsch compatible
15 lib_png yes Windows, Mac OS X tests present
16 lib_hdf4 yes Windows, Mac OS X Borsch compatible
17 lib_hdf5 no For GDAL Hierarchical Data Format Release 5 (HDF5) driver
18 lib_szip yes Windows, Mac OS X Borsch compatible
19 lib_hdfeos2 yes Windows tests present, 7 failed
20 lib_geos yes Windows, Mac OS X Borsch compatible
21 lib_hdfeos5 no
22 lib_bpg no For GDAL BPG (Better Portable Graphics) driver
23 lib_dap no For GDAL DODS / OPeNDAP driver
24 lib_epsilon no For GDAL Epsilon - Wavelet compressed images driver
25 lib_cfitsio no For GDAL FITS (.fits) driver
26 lib_sqlite3 yes Windows, Mac OS X For GDAL GeoPackage and other drivers, Borsch compatible
27 lib_gif yes Windows, Mac OS X For GDAL GIF driver, Borsch compatible
28 lib_netcdf no For GDAL GMT Compatible netCDF driver
29 lib_grass no For GDAL GRASS driver
30 lib_gta no For GDAL Generic Tagged Arrays (.gta) driver
31 lib_jasper no For GDAL JPEG2000 (.jp2, .j2k) driver
32 lib_openjpeg yes Windows, Mac OS X For GDAL GeoPackage and other drivers, Borsch compatible
33 lib_csf no For GDAL PCRaster driver
34 lib_pdfium no For GDAL Geospatial PDF driver
35 lib_pq yes Windows, Mac OS X For GDAL PostGIS Raster driver. libpq CMakeLists.txt Borsch compatible
36 lib_ras no For GDAL Rasdaman driver
37 lib_webp no For GDAL WEBP driver
38 lib_xerces no For GDAL INTERLIS driver
39 lib_kml yes Windows, Mac OS X For GDAL LIBKML driver. Borsch compatible
40 lib_mongo no For GDAL MongoDB driver
41 lib_mysql no For GDAL MySQL driver
42 lib_pcidsk no For GDAL PCI Geomatics Database File driver
43 lib_podofo no For GDAL Geospatial PDF driver
44 lib_freexl yes Windows For GDAL MS Excel format driver
45 lib_spatialite yes Windows, Mac OS X Borsch compatible
46 lib_spatialindex yes Windows, Mac OS X Borsch compatible
47 googletest yes Linux, Windows, Mac OS X Borsch compatible
48 lib_boost yes Make only copies of headers from "boost/" without building libs
49 lib_zip yes
50 lib_uv yes
51 lib_jpegturbo no
52 lib_variant yes
53 lib_rapidjson yes
54 lib_nunicode yes cmaked within the requirements of the mapbox
55 lib_geojsonvt yes
56 postgis yes Linux partially cmaked (except tiger and cgal)
57 lib_opencad yes Linux, Windows, Mac OS X From GSoC2016, Borsch compatible
58 lib_uriparser yes Linux, Windows, Mac OS X For lib_kml, Borsch compatible
59 numpy yes Windows, Mac OS X Not a package but used for python dependency modules. Borsch compatible
60 lib_ecw yes Windows Prebuild libraries for specific compiler and OS
61 lib_mrsid yes Windows Prebuild libraries for specific compiler and OS
62 lib_gsl yes Mac OS X
63 lib_qt4 yes Windows, Mac OS X Sources received from Qt download site and build using their own build system. Borsch compatible
64 lib_qt5 yes Windows, Mac OS X Sources received from Qt download site and build using their own build system. Borsch compatible
65 lib_qca yes Windows, Mac OS X Borsch compatible
66 lib_qwt yes Windows, Mac OS X Borsch compatible
67 lib_qscintilla yes Windows, Mac OS X
68 lib_cgal yes
69 lib_agg yes Windows, Mac OS X Borsch compatible
70 lib_freetype yes Windows, Mac OS X Borsch compatible
71 lib_qhull yes Windows, Mac OS X Borsch compatible
72 py_qt4 yes Windows, Mac OS X Sources received from Riverbank download site and build using their own build system. Borsch compatible
73 py_sip yes Windows, Mac OS X Sources received from Riverbank download site and build using their own build system. Borsch compatible
74 py_psycopg yes Windows, Mac OS X Sources received from pip download site and build using their own build system. Borsch compatible
75 py_dateutil yes Windows, Mac OS X Sources received from pip download site and build using their own build system. Borsch compatible
76 py_pygments yes Windows, Mac OS X Sources received from pip download site and build using their own build system. Borsch compatible
77 py_ows yes Windows, Mac OS X Sources received from pip download site and build using their own build system. Borsch compatible
78 py_httplib yes Windows, Mac OS X Sources received from pip download site and build using their own build system. Borsch compatible
79 py_jinja yes Windows, Mac OS X Sources received from pip download site and build using their own build system. Borsch compatible
80 py_markupsafe yes Windows, Mac OS X Sources received from pip download site and build using their own build system. Borsch compatible
81 py_nose yes Windows, Mac OS X Sources received from pip download site and build using their own build system. Borsch compatible
82 py_pytz yes Windows, Mac OS X Sources received from pip download site and build using their own build system. Borsch compatible
83 py_six yes Windows, Mac OS X Sources received from pip download site and build using their own build system. Borsch compatible
84 py_spatialite yes Windows, Mac OS X Sources received from pip download site and build using their own build system. Borsch compatible
85 py_requests yes Windows, Mac OS X Sources received from pip download site and build using their own build system. Borsch compatible
86 py_yaml yes Windows, Mac OS X Sources received from pip download site and build using their own build system. Borsch compatible
87 lib_yaml yes Windows, Mac OS X Borsch compatible
88 py_functools_lru_cache yes Windows, Mac OS X Sources received from pip download site and build using their own build system. Borsch compatible
89 py_subprocess32 yes Windows, Mac OS X Sources received from pip download site and build using their own build system. Borsch compatible
90 py_cycler yes Windows, Mac OS X Sources received from pip download site and build using their own build system. Borsch compatible
91 py_parsing yes Windows, Mac OS X Sources received from pip download site and build using their own build system. Borsch compatible
92 py_markupsafe yes Windows, Mac OS X Sources received from pip download site and build using their own build system. Borsch compatible
93 py_matplotlib yes Windows, Mac OS X Sources received from pip download site and build using their own build system. Borsch compatible
94 py_contextlib yes Windows, Mac OS X Sources received from pip download site and build using their own build system. Borsch compatible
95 py_raven yes Windows, Mac OS X Sources received from pip download site and build using their own build system. Borsch compatible
96 py_future yes Windows, Mac OS X Sources received from pip download site and build using their own build system. Borsch compatible
97 py_exifread yes Windows, Mac OS X Sources received from pip download site and build using their own build system. Borsch compatible
98 tests Deprecated. Tests should moved to their repositories

CMaked libraries requirements

  1. Make install instructions according to the GNU standard installation directories. Use include(GNUInstallDirs). For Mac OS X use option key OSX_FRAMEWORK=ON. Installation directories should be for frameworks: <CMAKE_INSTALL_PREFIX>/Library/Frameworks/<lib name in lower case without lib prefix>.framework and for applications: <CMAKE_INSTALL_PREFIX>/Applications/<app name>.app
  2. Add export instructions:
# Add path to includes to build-tree export
target_include_directories(${TARGETS} PUBLIC
 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
 $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
)

# Add all targets to the build-tree export set
export(TARGETS ${TARGETS}
   FILE ${PROJECT_BINARY_DIR}/${PACKAGE_UPPER_NAME}Targets.cmake)

if(REGISTER_PACKAGE)
   # Export the package for use from the build-tree
   # (this registers the build-tree with a global CMake-registry)
   export(PACKAGE ${PACKAGE_UPPER_NAME})
endif()

# Create the ZLIBConfig.cmake file
configure_file(cmake/PackageConfig.cmake.in
   ${PROJECT_BINARY_DIR}/${PACKAGE_UPPER_NAME}Config.cmake @ONLY)

if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
   # Install the <Package>Config.cmake
   install(FILES
     ${PROJECT_BINARY_DIR}/${PACKAGE_UPPER_NAME}Config.cmake
     DESTINATION ${INSTALL_CMAKECONF_DIR} COMPONENT dev)

   # Install the export set for use with the install-tree
   install(EXPORT ${PACKAGE_UPPER_NAME}Targets DESTINATION ${INSTALL_CMAKECONF_DIR} COMPONENT dev)
endif()

Also check install instruction has EXPORT and INCLUDES tags:

install(TARGETS ${TARGETS}
    EXPORT ${PACKAGE_UPPER_NAME}Targets
    RUNTIME DESTINATION ${INSTALL_BIN_DIR}
    LIBRARY DESTINATION ${INSTALL_LIB_DIR}
    ARCHIVE DESTINATION ${INSTALL_LIB_DIR}
    INCLUDES DESTINATION ${INSTALL_INC_DIR}
    FRAMEWORK DESTINATION ${INSTALL_LIB_DIR} )

This will export targets for build-tree use and for install-tree use.

  1. All dependencies must be connected via find_anyproject (see "Borsch scripts").
    3.1. You need to add the relevant scripts from borsch to 'cmake' directory
    3.2. Add cmake instruction (if it is not present):
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
  1. Preferably cmake via include(util) should extract version from header file or another files and report it colored
  2. Preferably add Findxxx.cmake with version check (see. FindGEOS and FindPROJ4)
  3. Create FindExtxxx.cmake with library repository name and some optional variables

Update library sources

Then new version of a library released, borsch need to be updated too.

  1. Create tag for current version in repository and send it to server:
git tag -a v1.0.2.1 -m 'version 1.0.2a from 22 Jan 2015'
git push origin --tags

Also see github_release.py script to upload zip archive from CPack generator to the release marked by tag. This prebuild files will use in building process.

  1. Copy sources from original to borsch repository (don't copy build scripts). One can use some diff utility to check changes (i.e. meld). If opt/folders.csv exist use following command line utility:
python tools.py organize --src <path to sources> --dst_name <borsch repository name>
  1. Check if everything build successfully

Badge

Use special badge to mark repository supported NextGIS Borsch building system.

Borsch compatible

[![Borsch compatible](https://img.shields.io/badge/Borsch-compatible-orange.svg?style=flat)](https://github.com/nextgis-borsch/borsch)

License

All scripts are licensed under GNU GPL v.2.

Notes

  • There is additional util.cmake file for pretty print of version information to the console.
  • MSVC 2015 and later have enough C99 support to build under Windows.

#Links:

borsch's People

Contributors

514ckw4r3 avatar alisovenko avatar bishopgis avatar mikhangusev avatar nikitafeodonit avatar sharukav avatar simgislab avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

borsch's Issues

sxf driver frized when write empty layer to SXF

ogr2ogr -f SXF -t_srs EPSG:3857 -nln highways -progress -append -clipsrc 38.9 44.9 38.95 44.93 osm.sxf railway-line.shp

Если при clipsrc в слое не оказывается фич, то ogr2ogr зависает и не останавливается. Сборка nextgis qgis на win

Does FindExtProject need get_binary_package defaults for ${repo} and ${repo_type}

I'm trying to test a borsch build of gdal and running into some issues, please forgive me if I missed something obvious.

I see an early cmake configuration error:

CMake Error at build/_deps/borsch-src/cmake/FindExtProject.cmake:99 (get_binary_package):
  get_binary_package Function invoked with incorrect arguments for function
  named: get_binary_package
Call Stack (most recent call first):
  build/_deps/borsch-src/cmake/FindAnyProject.cmake:72 (find_extproject)
  CMakeLists.txt:12 (find_anyproject)

Trying to include GDAL like this:

include(FindAnyProject)

set(WITH_GDAL ON CACHE BOOL "GDAL on" FORCE)
set(WITH_GDAL_EXTERNAL ON CACHE BOOL "GDAL external on" FORCE)
find_anyproject(GDAL REQUIRED DEFAULT ON SHARED OFF)

How are ${repo} and ${repo_type} supposed to be set for this call?

get_binary_package(${repo} ${repo_type} ${TEST_VERSION} BINARY_URL BINARY_NAME)

Disable find package GDAL

Hi,
I'm trying to use the nextgis-borsch project in a Superbuild pattern:

message("cmake module path:"  ${CMAKE_MODULE_PATH})
include(FindAnyProject)
find_anyproject(GDAL REQUIRED DEFAULT ON)

I'm expecting borsch to automatically fetch and build the dependencies if not found on the system. For test purpose, I'm trying to deactivate the system search by using the -DCMAKE_DISABLE_FIND_PACKAGE_GDAL=ON but it seems that find_anyproject still looks on my system for GDAL:

-- Not found GDAL in packages. Try look in system.
and once gdal has been found on my system, the project runs correctly.

Is it the expected behavior ? Is there a way to force the superbuild ?
Thank you, borsch is great work !

Разделить по разным папкам исходники скачанных библиотек, собранные библиотеки для разных платформ и архитектур, и папку сборки проекта

Сейчас при сборке для каждой платформы нужные библиотеки вытягиваются заново и кладутся в папку build-. В итоге получается, что одно и то же вытягивается за сборку несколько раз, в зависимости от количества платформ. И если нужно очистить сборку, что обычно проще всего сделать удалением папки build, то множественное скачивание будет заново.

Думаю, было бы хорошо разделить по разным папкам

  • исходники библиотек,
  • собранные и проинсталированные библиотеки,
  • сборку текущего проекта.

То есть можно сделать, например, так.

Папка для скачанных библиотек с разделением по их версиям

build-lib-sources/<lib-name>/<version>

или

build-lib-sources/<lib-name>-<version>

как удобнее.

Папка для собранных библиотек с разделением по платформам (Lin, Win, Android ...), архитектурам (x86, arm ...), версиям библиотек

build-libs/<platform>/<arch>/<lib-name>/<version>

или аналогично вместо вложенных папок длинное имя папки, как удобнее.

Папка для сборки нашей библиотеки, где также разделение по платформам и архитектурам и, возможно, по версиям.

build/<platform>/<arch>

А при сборке проверять (может сам cmake проверит) что скачано и собрано, то и использовать. Тогда очистить папку сборки текущего проекта будет проще, без скачивания и пересборки всех библиотек.

Также сделать разные уровни очистки сборки для этих папок:
clean (только для папки build)
clean-all (+ папка build-libs)
clean-all-with-lib-sources (+ папка build-lib-sources)

Сделать полноценную проверку версии библиотек

Для случая, когда в пользовательском симэйке вызывается команда, например:
find_anyproject(GDAL VERSION 2.1 REQUIRED)
необходимо, чтобы сборка завершалась критической ошибкой, если версия имеющейся библиотеки ниже указанной.
Для этого:
а) Если в обычном FindX симэйк-модуле отсутствует проверка версии, необходимо иметь изменённый FindX в нашем /borsch репозитории.
б) Изменить метод FindExtPoject, добавив во всех местах после скачивания/обновления исходников зависимых библиотек вызов функции со сравнением версий.

Чрезмерное копирование собранных библиотек

Сделал в extlib.cmake так:

set(WITH_ZLIB ON CACHE BOOL "zlib on" FORCE)
set(WITH_ZLIB_EXTERNAL ON CACHE BOOL "zlib on" FORCE)

set(WITH_OpenSSL ON CACHE BOOL "OpenSSL on" FORCE)
set(WITH_OpenSSL_EXTERNAL ON CACHE BOOL "OpenSSL external on" FORCE)

set(WITH_CURL ON CACHE BOOL "CURL on" FORCE)
set(WITH_CURL_EXTERNAL ON CACHE BOOL "CURL external on" FORCE)
find_anyproject(CURL REQUIRED SHARED OFF CMAKE_ARGS
-DBUILD_CURL_EXE=OFF
-DHTTP_ONLY=ON
-DUSE_MANUAL=OFF)

Отконфигурировал и собрал (cmake --build .).

В итоге в папке

build-armeabi-v7a/third-party/Install

ZLIB_EP/lib
libz.a

OpenSSL_EP/lib
libcryptostatic.a
libsslstatic.a
libz.a

CURL_EP/lib
libcurlstatic.a
libcryptostatic.a
libsslstatic.a
libz.a

Аналогично для папок include.

То есть каждая последующая библиотека копирует все предыдущие ранее проинсталированные.

Думаю, это не сказывается положительно на скорости сборки. Для некоторых библиотек lib-файлы получаются более 100 МБ. То есть надо просто использовать нужные библиотеки из ранее установленных мест, а не копировать их каждый раз заново.

Как вариант, использовать общую папку для установки всех библиотек, без разделения на подпапки для каждой отдельной библиотеки. То есть чтобы в папке было:

build-armeabi-v7a/third-party/Install
    include/   (тут всё от всех библиотек)
    lib/       (тут всё от всех библиотек)

Синхронизации скриптов borsch по всем репозиториям или хранение их в одном месте

Сейчас, чтобы обновить, например, файл FindAnyProject.cmake, его нужно копировать во все репозитории библиотек, где он используется.

Было бы хорошо найти удобный способ синхронизации этих скриптов. Или содержать все скрипты в одном месте и подключать их каким-либо образом в библиотеках, где они используются, чтобы не было дублирования кода.

Возможные варианты хранения в одном месте:

  1. Папка borsch с общими скриптами сборки вне каждой библиотеки. Подключается через задание переменной (BORSCH_ROOT), указывающей путь к ней.

  2. Через submodules of git.

  3. Через subtrees of git.

  4. Во время сборки библиотеки проверять, задана ли переменная к корню папки borsch (BORSCH_ROOT). Если не задана, скачиваем общие скрипты в подпапку библиотеки ./cmake/borsch и выставляем на нее переменную BORSCH_ROOT. Если задана, значит, там находятся общие скрипты, используем их; то есть библиотека собирается в составе другой библиотеки.

gdal-bin from ppa should be 2.4 but is 2.2

I followed the commands here for Ubuntu 18.04 64 bits:
http://nextgis.com/borsch

It should have installed gdal-bin 2.4.0 for bionic as stated here:
https://launchpad.net/~nextgis/+archive/ubuntu/ppa?field.series_filter=bionic

Now gdalinfo gives me this:

$ gdalinfo --version
GDAL 2.2.3, released 2017/11/20

and gdal_translate is complaining:

$ gdal_translate --version
ERROR 1: gdal_translate was compiled against GDAL 2.4, but the current library version is 2.2

Here's the apt source file content:

$ cat /etc/apt/sources.list.d/nextgis-ubuntu-ppa-bionic.list
deb http://ppa.launchpad.net/nextgis/ppa/ubuntu bionic main
# deb-src http://ppa.launchpad.net/nextgis/ppa/ubuntu bionic main
# deb-src http://ppa.launchpad.net/nextgis/ppa/ubuntu bionic main

And the bonus question; is it planned to integrate proj 6? 👍
https://trac.osgeo.org/gdal/wiki/rfc73_proj6_wkt2_srsbarn

Thanks.

При добавлении VERSION в find_anyproject() конфигурация библиотеки падает

При вызове, например,

find_anyproject(GDAL VERSION 2.1 REQUIRED)

Выдаётся следующая ошибка:

CMake Warning at cmake/FindExtProject.cmake:227 (message):
The path
D:/nextgis/formbuilder/formbuilder-build/third-party/Build/GDAL_EP/gdal-exports.cmake
not exist
Call Stack (most recent call first):
cmake/FindAnyProject.cmake:57 (find_extproject)
CMakeLists.txt:63 (find_anyproject)
CMake Error at cmake/FindAnyProject.cmake:87 (message):
GDAL is required in fb!
Call Stack (most recent call first):
CMakeLists.txt:63 (find_anyproject)
Configuring incomplete, errors occurred!

Ubuntu 16.04 LTS osm2pgsql cannot found libgeos.so

Чистая установка Ubuntu.
Если поставить

sudo apt-get install -y osm2pgsql
#Потом подключить наш репозиторий
sudo apt-add-repository -y ppa:nextgis/ppa
sudo apt-get update  -y
sudo apt-get install -y gdal-bin \
python-gdal \
python-psycopg2

То osm2pgsql запускается без ошибок.
Если ставить в обратном порядке

sudo apt-add-repository -y ppa:nextgis/ppa
sudo apt-get update  -y
sudo apt-get install -y gdal-bin \
python-gdal \
python-psycopg2

sudo apt-get install -y osm2pgsql

то osm2pgsql при запуске начнёт ругаться на отсутствие доступа к libgeos-чего-то-там.so

Если не воспроизведётся, то это наблюдалось при развёртывании на чистой убунте в этом скрипте. https://github.com/trolleway/osm-mostrans/blob/master/install.sh
Если osm2pgsql ставить в конце, то он не заработает.

Способ хранения "базовых" функций для cmake-файлов

Сейчас некоторые общие функции хранятся в util.cmake. Но в репозитоии borsch и в репозитории остальных библиотек, где файл с таким именем есть, содержимое этих файлов различно.

В итоге, чтобы обновить какую-либо функцию, нельзя просто перезаписать этот файл. Нужно отслеживать содержимое каждого файла.

Нужно создать удобный способ хранения и обновления общих функций из util.cmake.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.