Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: NixOS/nixpkgs
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 72aa6e382c6a
Choose a base ref
...
head repository: NixOS/nixpkgs
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: a673ef75c16e
Choose a head ref
  • 2 commits
  • 5 files changed
  • 1 contributor

Commits on Mar 10, 2019

  1. pythonPackages.qscintilla-qt5: fix installation

    (cherry picked from commit b47f47a)
    lsix committed Mar 10, 2019

    Verified

    This commit was signed with the committer’s verified signature. The key has expired.
    lsix lsix
    Copy the full SHA
    aff2be7 View commit details
  2. qgis: 2.18.28 -> 3.4.5

    (cherry picked from commit 9bcdf81)
    lsix committed Mar 10, 2019

    Verified

    This commit was signed with the committer’s verified signature. The key has expired.
    lsix lsix
    Copy the full SHA
    a673ef7 View commit details
101 changes: 17 additions & 84 deletions pkgs/applications/gis/qgis/default.nix
Original file line number Diff line number Diff line change
@@ -1,94 +1,27 @@
{ 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, darwin, pkgconfig
, withGrass ? true, grass, saga, IOKit, ApplicationServices
{ stdenv, lib, makeWrapper, symlinkJoin
, qgis-unwrapped, extraPythonPackages ? (ps: [ ])
}:
with lib;
symlinkJoin rec {
inherit (qgis-unwrapped) version;
name = "qgis-${version}";

stdenv.mkDerivation rec {
name = "qgis-2.18.28";
paths = [ qgis-unwrapped ];

buildInputs = [ gdal qt4 flex openssl bison proj geos xlibsWrapper sqlite gsl qwt qscintilla
fcgi libspatialindex libspatialite postgresql qjson qca2 txt2tags pkgconfig
saga ]
++
(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 = [ makeWrapper qgis-unwrapped.python3Packages.wrapPython ];

nativeBuildInputs = [ cmake makeWrapper pkgconfig ];
# extend to add to the python environment of QGIS without rebuilding QGIS application.
pythonInputs = qgis-unwrapped.pythonBuildInputs ++ (extraPythonPackages qgis-unwrapped.python3Packages);

# `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;
postBuild = ''
# unpackPhase
preConfigure = ''
NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $(pkg-config --cflags libspatialindex)"
'';
buildPythonPath "$pythonInputs"
# To handle the lack of 'local' RPATH; required, as they call one of
# their built binaries requiring their libs, in the build process.
preBuild = ''
export LD_LIBRARY_PATH=`pwd`/output/lib:${stdenv.lib.makeLibraryPath [ openssl ]}:$LD_LIBRARY_PATH
wrapProgram $out/bin/qgis \
--prefix PATH : $program_PATH \
--set PYTHONPATH $program_PYTHONPATH
'';

src = fetchurl {
url = "https://qgis.org/downloads/${name}.tar.bz2";
sha256 = "18pijqls1isd2bpg0mkrw07jqvdfaiwwb9mvz7p2xrgqcjx7dxsq";
};

patches = [
# already merged upstream in QGIS-3.*, but needs to be backported to QGIS-2
(fetchpatch {
url = "https://patch-diff.githubusercontent.com/raw/qgis/QGIS/pull/7263.patch";
name = "Ensure_qgis.db_is_writable_when_copied_from_RO_source";
sha256 = "19wr2kz0x8x6p2n0ylzd4lqrdmbkxyxr0zpwf2vl9hdp92rdjxbv";
})
];

# 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 =
(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
# Plugins look for gdal tools like deminfo on the PATH
${stdenv.lib.optionalString withGrass "ln -sf ${grass} $out/QGIS.app/Contents/MacOS/grass"}
# Necessary for QGIS to find the right SAGA installation
ln -sf ${saga}/bin/saga_cmd $out/QGIS.app/Contents/MacOS/bin/saga_cmd
for file in $(find $out -type f -name "QGIS"); do
wrapProgram "$file" \
--prefix DYLD_LIBRARY_PATH : "${qwt}/lib" \
--prefix DYLD_LIBRARY_PATH : "${qscintilla}/lib" \
--prefix PATH : "${gdal}/bin" \
${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; unix;
maintainers = with stdenv.lib.maintainers; [mpickering];
};
meta = qgis-unwrapped.meta;
}
54 changes: 54 additions & 0 deletions pkgs/applications/gis/qgis/unwrapped.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
{ stdenv, lib, fetchurl, cmake, ninja, flex, bison, proj, geos, xlibsWrapper, sqlite, gsl
, qwt, fcgi, python3Packages, libspatialindex, libspatialite, postgresql
, txt2tags, openssl, libzip, hdf5, netcdf
, qtbase, qtwebkit, qtsensors, qca-qt5, qtkeychain, qscintilla, qtserialport, qtxmlpatterns
, withGrass ? true, grass
}:
with lib;
let
pythonBuildInputs = with python3Packages;
[ qscintilla-qt5 gdal jinja2 numpy psycopg2
chardet dateutil pyyaml pytz requests urllib3 pygments pyqt5 sip owslib six ];
in stdenv.mkDerivation rec {
version = "3.4.5";
name = "qgis-unwrapped-${version}";

src = fetchurl {
url = "http://qgis.org/downloads/qgis-${version}.tar.bz2";
sha256 = "0myw1jgz8v8wncmrjsszn9ixylx84hafn0281c4hqhz623n3lxgx";
};

passthru = {
inherit pythonBuildInputs;
inherit python3Packages;
};

buildInputs = [ openssl proj geos xlibsWrapper sqlite gsl qwt
fcgi libspatialindex libspatialite postgresql txt2tags libzip hdf5 netcdf
qtbase qtwebkit qtsensors qca-qt5 qtkeychain qscintilla qtserialport qtxmlpatterns] ++
(stdenv.lib.optional withGrass grass) ++ pythonBuildInputs;

nativeBuildInputs = [ cmake flex bison ninja ];

# Force this pyqt_sip_dir variable to point to the sip dir in PyQt5
#
# TODO: Correct PyQt5 to provide the expected directory and fix
# build to use PYQT5_SIP_DIR consistently.
postPatch = ''
substituteInPlace cmake/FindPyQt5.py \
--replace 'pyqtcfg.pyqt_sip_dir' '"${python3Packages.pyqt5}/share/sip/PyQt5"'
'';

cmakeFlags = [ "-DCMAKE_SKIP_BUILD_RPATH=OFF"
"-DPYQT5_SIP_DIR=${python3Packages.pyqt5}/share/sip/PyQt5"
"-DQSCI_SIP_DIR=${python3Packages.qscintilla-qt5}/share/sip/PyQt5" ] ++
stdenv.lib.optional withGrass "-DGRASS_PREFIX7=${grass}/${grass.name}";

meta = {
description = "A Free and Open Source Geographic Information System";
homepage = http://www.qgis.org;
license = stdenv.lib.licenses.gpl2Plus;
platforms = with stdenv.lib.platforms; linux;
maintainers = with stdenv.lib.maintainers; [ lsix ];
};
}
30 changes: 15 additions & 15 deletions pkgs/development/python-modules/qscintilla-qt5/default.nix
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
{ lib
, buildPythonPackage
, qscintillaCpp
, pythonPackages
, qscintilla
, lndir
, sip
, python
, pyqt5 }:

, qtbase
}:
with pythonPackages;
buildPythonPackage rec {
pname = "qscintilla";
version = qscintillaCpp.version;
src = qscintillaCpp.src;
version = qscintilla.version;
src = qscintilla.src;
format = "other";

nativeBuildInputs = [ lndir sip ];
buildInputs = [ qscintillaCpp ];
nativeBuildInputs = [ lndir sip qtbase ];
buildInputs = [ qscintilla ];
propagatedBuildInputs = [ pyqt5 ];

preConfigure = ''
@@ -23,13 +22,14 @@ buildPythonPackage rec {
cd Python
${python.executable} ./configure.py \
--pyqt=PyQt5 \
--destdir=$out/lib/${python.sitePackages}/PyQt5 \
--stubsdir=$out/lib/${python.sitePackages}/PyQt5 \
--destdir=$out/${python.sitePackages}/PyQt5 \
--stubsdir=$out/${python.sitePackages}/PyQt5 \
--apidir=$out/api/${python.libPrefix} \
--qsci-incdir=${qscintillaCpp}/include \
--qsci-libdir=${qscintillaCpp}/lib \
--qsci-incdir=${qscintilla}/include \
--qsci-libdir=${qscintilla}/lib \
--pyqt-sipdir=${pyqt5}/share/sip/PyQt5 \
--qsci-sipdir=$out/share/sip/PyQt5
--qsci-sipdir=$out/share/sip/PyQt5 \
--sip-incdir=${sip}/include
'';

meta = with lib; {
7 changes: 4 additions & 3 deletions pkgs/top-level/all-packages.nix
Original file line number Diff line number Diff line change
@@ -18979,11 +18979,12 @@ in
inherit (darwin.stubs) rez setfile;
};

qgis = callPackage ../applications/gis/qgis {
inherit (darwin.apple_sdk.frameworks) IOKit ApplicationServices;
saga = saga_2_3_2;
qgis-unwrapped = libsForQt5.callPackage ../applications/gis/qgis/unwrapped.nix {
withGrass = false;
};

qgis = callPackage ../applications/gis/qgis { };

qgroundcontrol = libsForQt5.callPackage ../applications/science/robotics/qgroundcontrol { };

qjackctl = libsForQt5.callPackage ../applications/audio/qjackctl { };
4 changes: 2 additions & 2 deletions pkgs/top-level/python-packages.nix
Original file line number Diff line number Diff line change
@@ -3957,8 +3957,8 @@ in {

qscintilla-qt4 = callPackage ../development/python-modules/qscintilla { };

qscintilla-qt5 = callPackage ../development/python-modules/qscintilla-qt5 {
qscintillaCpp = pkgs.libsForQt5.qscintilla;
qscintilla-qt5 = pkgs.libsForQt5.callPackage ../development/python-modules/qscintilla-qt5 {
pythonPackages = self;
lndir = pkgs.xorg.lndir;
};