This is a backport of the commits in PR 235 (“Fixes for packaging on linux-like systems”), which was merged upstream: https://github.com/opengribs/XyGrib/pull/235 It fixes finding resources such as icons, maps and translations installed in the data directory. This patch has been merged upstream and can be removed with the next release. Sightly adapted to find openjpg-2.4. diff --git a/CMakeLists.txt b/CMakeLists.txt index 64059ab65dae..00cc5d6aea6f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,9 @@ set(VERSION_PATCH 6) set(XYGRIB_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") set(XYGRIB_VERSION_DATE "2019-07-05") +option(GNU_PACKAGE "Install into GNU standard directories" OFF) +option(GEN_TRANSLATIONS "Generate translations" ON) + set(CMAKE_VERBOSE_MAKEFILE ON) # Find includes in corresponding build directories @@ -25,7 +28,7 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_CXX_STANDARD 11) #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3") if(UNIX AND NOT APPLE) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fPIC") +add_compile_options(-Wall -fPIC) endif() # Add support for address etc sanitizers, part 1/2 (other half after ADD_EXECUTABLE) @@ -108,17 +111,12 @@ find_path(OPENJPEG_INCLUDE_DIR ~/Library/Frameworks/include /Library/Frameworks/include /usr/local/include - /usr/local/include/openjpeg-2.3 - /usr/include/openjpeg-2.3 - /usr/local/include/openjpeg-2.1 - /usr/include/openjpeg-2.1 - /usr/local/include/openjpeg-2.2 - /usr/include/openjpeg-2.2 /usr/include /sw/include # Fink /opt/local/include # DarwinPorts /opt/csw/include # Blastwave /opt/include + PATH_SUFFIXES openjpeg-2.4 openjpeg-2.3 openjpeg-2.2 openjpeg-2.1 REQUIRED ) include_directories(${OPENJPEG_INCLUDE_DIR}) @@ -212,22 +210,24 @@ include_directories(${PNG_INCLUDE_DIR}) configure_file(cmake/Version.h.in ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/include/Version.h) include_directories(${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/include) -if(APPLE) -set(PREFIX_BIN ${PROJECT_NAME}) -set(PREFIX_PKGDATA ${PROJECT_NAME}) -endif() -if(WIN32) -set(PREFIX_BIN ".") -set(PREFIX_PKGDATA ".") -endif() -if(UNIX AND NOT APPLE) -# This is not exactly a good idea on linux - the code should be changed so that the executable would go to /usr/local/bin and the data to /usr/local/share/XyGrib -set(PREFIX_BIN ${PROJECT_NAME}) -set(PREFIX_PKGDATA ${PROJECT_NAME}) +if(GNU_PACKAGE) + include(GNUInstallDirs) + set(PREFIX_BIN ${CMAKE_INSTALL_FULL_BINDIR}) + set(PREFIX_PKGDATA ${CMAKE_INSTALL_FULL_DATADIR}/openGribs/${PROJECT_NAME}) +else() + if(WIN32) + set(PREFIX_BIN ".") + set(PREFIX_PKGDATA ".") + else() + set(PREFIX_BIN ${PROJECT_NAME}) + set(PREFIX_PKGDATA ${PROJECT_NAME}) + endif() endif() add_subdirectory(src) -add_subdirectory(data/tr) +if(GEN_TRANSLATIONS) + add_subdirectory(data/tr) +endif() # Installation # macOS bundle parameters @@ -241,4 +241,14 @@ set_target_properties(${PROJECT_NAME} PROPERTIES MACOSX_BUNDLE_SHORT_VERSION_STR set_target_properties(${PROJECT_NAME} PROPERTIES MACOSX_BUNDLE_BUNDLE_VERSION "${XYGRIB_VERSION}") set_target_properties(${PROJECT_NAME} PROPERTIES MACOSX_BUNDLE_COPYRIGHT "${PROJECT_NAME} Authors") # Install data -install(DIRECTORY data DESTINATION ${PREFIX_PKGDATA}) +install(DIRECTORY data DESTINATION ${PREFIX_PKGDATA} + PATTERN "CMakeFiles" EXCLUDE + PATTERN "CMakeLists.txt" EXCLUDE + PATTERN "Makefile" EXCLUDE + PATTERN "cmake_install.cmake" EXCLUDE) +if(GNU_PACKAGE) + install(FILES debian/xygrib.desktop + DESTINATION ${CMAKE_INSTALL_FULL_DATADIR}/applications) + install(FILES debian/xygrib.png + DESTINATION ${CMAKE_INSTALL_FULL_DATADIR}/pixmaps) +endif() diff --git a/INSTALL.md b/INSTALL.md index 2c9d3ab4da03..1190cc780182 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -22,7 +22,19 @@ https://gihub.com/opengribs/XyGrib/releases or on https://opengribs.org in the d - openSUSE Tumbleweed: `sudo zypper install gcc git cmake libqt5-qtbase-devel libpng-devel openjpeg2-devel libnova-devel libproj-devel zlib-devel libbz2-devel ## Build and package +### Options +XyGrib has two CMake options +- GNU_PACKAGE (DEFAULT: OFF) +``` +Files will be installed in GNU standard installation directories such as prefix/bin and prefix/share. +Packagers are recommended to test this option. +``` +- GEN_TRANSLATION (DEFAULT: ON) +``` +Create targets to generate translation files. +Turning this off removes the need for qt-linguist, part of qttools-5 qt5 submodule, during build. +``` ### macOS - Get the source b'>gnu: libssh: Update to 0.9.1....* gnu/packages/ssh.scm (libssh): Update to 0.9.1. Tobias Geerinckx-Rice 2019-10-01Merge branch 'master' into core-updatesLudovic Courtès 2019-09-29gnu: Remove deprecated "guile2.2-" packages....These had been deprecated since Dec. 2017. * gnu/packages/guile-xyz.scm (guile2.2-reader, guile2.2-lib) (guile2.2-minikanren, guile2.2-irregex, guile2.2-haunt) (guile2.2-redis, guile2.2-commonmark): Remove. * gnu/packages/guile.scm (guile2.2-json, guile2.2-gdbm-ffi): Remove. * gnu/packages/ssh.scm (guile2.2-ssh): Remove. * gnu/packages/tls.scm (gnutls/guile-2.2): Remove. Ludovic Courtès 2019-09-28gnu: libssh: Update to 0.9.0....* gnu/packages/ssh.scm (libssh): Update to 0.9.0. Of particular interest for robust offloading is libssh commit e4e51ccc1340e313c203842d0180a1c4e33c95cc, which fixes a bug whereby, instead of honoring the per-session timeout, 'ssh_channel_read_timeout' would end up passing an infinite timeout to 'poll': see <https://bugs.libssh.org/T33> Ludovic Courtès