1
0
Fork 1
mirror of https://github.com/NixOS/nixpkgs.git synced 2024-11-22 21:50:55 +00:00

Package QGIS 2.18 for darwin

There are still some problems with the withGrass option but the package
is mostly functional.
This commit is contained in:
Matthew Pickering 2018-03-13 09:57:12 +00:00
parent 92f76df825
commit 7842e5dda5
2 changed files with 47 additions and 12 deletions

View file

@ -1,23 +1,31 @@
{ stdenv, fetchurl, fetchpatch, gdal, cmake, qt4, flex, bison, proj, geos, xlibsWrapper, sqlite, gsl
, qwt, fcgi, python2Packages, libspatialindex, libspatialite, qscintilla, postgresql, makeWrapper
, qjson, qca2, txt2tags, openssl
, withGrass ? false, grass
, qjson, qca2, txt2tags, openssl, darwin, pkgconfig
, withGrass ? false, grass, IOKit, ApplicationServices
}:
stdenv.mkDerivation rec {
name = "qgis-2.18.16";
buildInputs = [ gdal qt4 flex openssl bison proj geos xlibsWrapper sqlite gsl qwt qscintilla
fcgi libspatialindex libspatialite postgresql qjson qca2 txt2tags ] ++
fcgi libspatialindex libspatialite postgresql qjson qca2 txt2tags pkgconfig ]
++
(stdenv.lib.optionals stdenv.isDarwin [IOKit ApplicationServices])
++
(stdenv.lib.optional withGrass grass) ++
(stdenv.lib.optional (stdenv.isDarwin && withGrass) darwin.apple_sdk.libs.utmp) ++
(with python2Packages; [ jinja2 numpy psycopg2 pygments requests python2Packages.qscintilla sip ]);
nativeBuildInputs = [ cmake makeWrapper ];
nativeBuildInputs = [ cmake makeWrapper pkgconfig ];
# `make -f src/providers/wms/CMakeFiles/wmsprovider_a.dir/build.make src/providers/wms/CMakeFiles/wmsprovider_a.dir/qgswmssourceselect.cpp.o`:
# fatal error: ui_qgsdelimitedtextsourceselectbase.h: No such file or directory
enableParallelBuilding = false;
preConfigure = ''
NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $(pkg-config --cflags libspatialindex)"
'';
# To handle the lack of 'local' RPATH; required, as they call one of
# their built binaries requiring their libs, in the build process.
preBuild = ''
@ -29,19 +37,44 @@ stdenv.mkDerivation rec {
sha256 = "0d880m013kzi4qiyr27yjx6hzpb652slp66gyqgw9ziw03wy12c9";
};
cmakeFlags = stdenv.lib.optional withGrass "-DGRASS_PREFIX7=${grass}/${grass.name}";
# CMAKE_FIND_FRAMEWORK=never stops the installer choosing system
# installed frameworks
# QGIS_MACAPP_BUNDLE=0 stops the installer copying the Qt binaries into the
# installation which causes havoc
# Building RelWithDebInfo allows QGIS_DEBUG to print debugging information
cmakeFlags = stdenv.lib.optional withGrass "-DGRASS_PREFIX7=${grass}/${grass.name}"
++ stdenv.lib.optional stdenv.isDarwin
(["-DCMAKE_FIND_FRAMEWORK=never"]
++ ["-DQGIS_MACAPP_BUNDLE=0"]);
# ++ ["-DCMAKE_BUILD_TYPE=RelWithDebInfo"];
postInstall = ''
wrapProgram $out/bin/qgis \
--prefix PYTHONPATH : $PYTHONPATH \
--prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath [ openssl ]}
'';
postInstall =
(stdenv.lib.optionalString stdenv.isLinux ''
wrapProgram $out/bin/qgis \
--set PYTHONPATH $PYTHONPATH \
--prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath [ openssl ]}
'') +
(stdenv.lib.optionalString stdenv.isDarwin ''
# Necessary for QGIS to find the correct default GRASS path
${stdenv.lib.optionalString withGrass "ln -sf ${grass} $out/QGIS.app/Contents/MacOS/grass"}
for file in $(find $out -type f -name "QGIS"); do
wrapProgram "$file" \
--prefix DYLD_LIBRARY_PATH : "${qwt}/lib" \
--prefix DYLD_LIBRARY_PATH : "${qscintilla}/lib" \
${stdenv.lib.optionalString withGrass "--prefix PATH : ${grass}/bin"} \
--set PYTHONPATH $PYTHONPATH
done
mkdir -p $out/bin
ln -s $out/QGIS.app/Contents/MacOS/QGIS $out/bin/qgis
'');
meta = {
description = "User friendly Open Source Geographic Information System";
homepage = http://www.qgis.org;
license = stdenv.lib.licenses.gpl2Plus;
platforms = with stdenv.lib.platforms; linux;
platforms = with stdenv.lib.platforms; unix;
maintainers = with stdenv.lib.maintainers; [viric];
};
}

View file

@ -17225,7 +17225,9 @@ with pkgs;
qemu-riscv = callPackage ../applications/virtualization/qemu/riscv.nix {};
qgis = callPackage ../applications/gis/qgis {};
qgis = callPackage ../applications/gis/qgis {
inherit (darwin.apple_sdk.frameworks) IOKit ApplicationServices;
};
qgroundcontrol = libsForQt5.callPackage ../applications/science/robotics/qgroundcontrol { };