Subject: [bug#38149] [WIP] gnu: Add qgis.

From: Arun Isaac <[email-masked]>
Date: Tue, 03 Dec 2019 23:15:51 +0530

> * gnu/packages/geo.scm (qgis): new variable.
> Does not build due to QtXml/QtXmlmod.sip not found.
> ---
> This is my attempt to define some minimal QGIS package. Unfortunately,
> the build crashes with
>    sip: Unable to find file "QtXml/QtXmlmod.sip"

I fixed this problem with the following custom phase.

#:phases
(modify-phases %standard-phases
  ;; Configure correct path to PyQt5 SIP directory
  (add-after 'unpack 'configure-pyqt5-sip-path
    (lambda* (#:key inputs #:allow-other-keys)
      (substitute* "cmake/FindPyQt5.cmake"
        (("\"\\\\\\\\1\" PYQT5_SIP_DIR")
         (string-append "\"" (assoc-ref inputs "python-pyqt+qscintilla")
                        "/share/sip\" PYQT5_SIP_DIR")))
      #t))

I'm slowly but steadily making progress and will soon post a complete
patch. Progress is slow since each build attempt takes around 6 hours on
my rather slow machine.

> +    (license license:gpl2+)))

Also, the license of qgis is extremely complicated. Looking at other
guix packages, I'm assuming we have to exhaustively document every
license. Very tedious! :-( I got this far, but I still need to double
check all the licenses again.

(license
     (list license:gpl2+
           ;; qgis.dtd
           ;; src/core/pal/rtree.hpp
           ;; src/plugins/grass/qtermwidget/konsole_wcwidth.*
           ;; cmake/PythonCompile.py
           ;; resources/cpt-city-qgis-min/dg/*
           ;; resources/cpt-city-qgis-min/gery/*
           ;; resources/cpt-city-qgis-min/jjg/dem/*
           ;; resources/cpt-city-qgis-min/jjg/misc/*
           ;; resources/cpt-city-qgis-min/jjg/physics/*
           ;; tests/testdata/cpt-city/jjg/misc/*
           ;; resources/cpt-city-qgis-min/km/*
           ;; resources/cpt-city-qgis-min/pd/*
           ;; resources/cpt-city-qgis-min/wkp/encyclopedia/*
           ;; resources/cpt-city-qgis-min/wkp/template/*
           ;; resources/cpt-city-qgis-min/ocal/*
           ;; resources/cpt-city-qgis-min/rf/*
           ;; resources/cpt-city-qgis-min/tp/*
           license:public-domain
           ;; python/plugins/processing/modeler/ModelerArrowItem.py
           ;; src/app/qgssettingstree.cpp
           ;; src/app/qgssettingstree.h
           ;; src/app/qgsvariantdelegate.cpp
           ;; src/app/qgsvariantdelegate.h
           ;; src/app/qtmain_android.cpp
           ;; cmake/Bison.cmake
           ;; cmake/FindExpat.cmake
           ;; cmake/FindGRASS.cmake
           ;; cmake/FindPostgres.cmake
           ;; cmake/FindProj.cmake
           ;; cmake/FindSqlite3.cmake
           ;; cmake/Flex.cmake
           ;; cmake/FindFcgi.cmake
           ;; cmake/FindGDAL.cmake
           ;; cmake/FindGEOS.cmake
           ;; cmake/FindGSL.cmake
           ;; cmake/FindIconv.cmake
           ;; cmake/FindOSGEARTH.cmake
           ;; cmake/FindLibPython.py
           ;; cmake/FindPyQt4.cmake
           ;; cmake/FindPyQt4.py
           ;; cmake/FindPyQt5.cmake
           ;; cmake/FindPyQt5.py
           ;; cmake/FindPythonLibrary.cmake
           ;; cmake/FindSIP.cmake
           ;; cmake/FindSIP.py
           ;; cmake/PythonMacros.cmake
           ;; cmake/SIPMacros.cmake
           ;; cmake/FindQCA.cmake
           ;; cmake/FindQextserialport.cmake
           ;; cmake/FindQGIS.cmake
           ;; cmake/FindQsci.cmake
           ;; cmake/FindQsci.py
           ;; cmake/FindQScintilla.cmake
           ;; cmake/FindQwt.cmake
           ;; cmake/FindSpatiaLite.cmake
           ;; cmake/MacBundleMacros.cmake
           ;; cmake/MacPlistMacros.cmake
           ;; cmake/PyQtMacros.cmake
           ;; cmake/QCAMacros.cmake
           ;; cmake/UsePythonTest.cmake
           license:bsd-3
           ;; external//qwtpolar-1.1.1/*
           ;; src/gui/raster/qwt5_histogram_item.h
           license:qwt1.0
           ;; external/astyle/*
           license:lgpl2.1+
           ;; external/nmea/config.h
           ;; external/nmea/context.c
           ;; external/nmea/context.h
           ;; external/nmea/gmath.c
           ;; external/nmea/gmath.h
           ;; external/nmea/info.c
           ;; external/nmea/info.h
           ;; external/nmea/nmeatime.h
           ;; external/nmea/parse.c
           ;; external/nmea/parse.h
           ;; external/nmea/parser.h
           ;; external/nmea/sentence.c
           ;; external/nmea/sentence.h
           ;; external/nmea/time.c
           ;; external/nmea/tok.c
           ;; external/nmea/tok.h
           ;; external/nmea/units.h
           ;; src/plugins/evis/*
           ;; src/plugins/grass/qtermwidget/kprocess.cpp
           ;; src/plugins/grass/qtermwidget/kprocess.h
           ;; src/plugins/grass/qtermwidget/kptydevice.cpp
           ;; src/plugins/grass/qtermwidget/kptydevice.h
           ;; src/plugins/grass/qtermwidget/kptyprocess.cpp
           ;; src/plugins/grass/qtermwidget/kptyprocess.h
           ;; src/plugins/grass/qtermwidget/kpty.cpp
           ;; src/plugins/grass/qtermwidget/kpty.h
           ;; src/plugins/grass/qtermwidget/kpty_p.h
           ;; src/plugins/grass/qtermwidget/qtermwidget.cpp
           ;; src/plugins/grass/qtermwidget/qtermwidget.h
           ;; src/plugins/grass/qtermwidget/TerminalCharacterDecoder.cpp
           ;; src/plugins/grass/qtermwidget/TerminalCharacterDecoder.h
           license:lgpl2.0+
           ;; src/core/pal/*
           ;; resources/cpt-city-qgis-min/ds9/*
           ;; resources/cpt-city-qgis-min/grass/*
           license:gpl3+
           ;; src/core/symbology/qgscolorbrewerpalette.cpp
           license:asl2.0
           ;; images/themes/default/*
           ;; resources/cpt-city-qgis-min/gps/*
           ;; resources/cpt-city-qgis-min/nd/*
           ;; resources/cpt-city-qgis-min/wkp/country/*
           ;; resources/cpt-city-qgis-min/wkp/jarke/*
           ;; resources/cpt-city-qgis-min/wkp/jarke/*
           ;; resources/cpt-city-qgis-min/wkp/knutux/*
           ;; resources/cpt-city-qgis-min/wkp/lilleskut/*
           ;; resources/cpt-city-qgis-min/wkp/plumbago/*
           ;; resources/cpt-city-qgis-min/wkp/precip/*
           ;; resources/cpt-city-qgis-min/wkp/schwarzwald/*
           ;; resources/cpt-city-qgis-min/wkp/shadowxfox/*
           ;; resources/cpt-city-qgis-min/wkp/tubs/*
           license:cc-by-sa3.0
           ;; resources/cpt-city-qgis-min/cb/*
           ;; resources/cpt-city-qgis-min/jjg/cbac/*
           ;; resources/cpt-city-qgis-min/jjg/cbcont/*
           ;; resources/cpt-city-qgis-min/jjg/polarity/*
           license:asl1.1
           ;; resources/cpt-city-qgis-min/ds/*
           (license:fsf-free
            "https://www.deviantart.com/webgoddess/art/Reddish-Inspired-Gradients-42208824")
           ;; resources/cpt-city-qgis-min/es/*
           (license:fsdg-compatible
            "https://www.deviantart.com/elvensword")
           ;; resources/cpt-city-qgis-min/gist/*
           (license:non-copyleft "file://debian/copyright"
                                 "BSD-like-gist")
           ;; resources/cpt-city-qgis-min/go2/webtwo/*
           (license:fsf-free "file://debian/copyright"
                             "Go Squared")
           ;; resources/cpt-city-qgis-min/h5/*
           license:expat
           ;; resources/cpt-city-qgis-min/jm/*
           (license:non-copyleft "file://debian/copyright"
                                 "Jim Mossman Attribution")
           ;; resources/cpt-city-qgis-min/ncl/*
           (license:non-copyleft
            "https://www.ncl.ucar.edu/Download/NCL_source_license.shtml"
            "NCL Source Code License")
           ;; resources/cpt-city-qgis-min/os/*
           ;; resources/cpt-city-qgis-min/ukmo/*
           license:ogl-psi1.0
           ;; resources/cpt-city-qgis-min/wkp/ice/*
           license:gfdl1.2+-without-invariant-sections
           ;; src/gui/symbology/characterwidget.cpp
           ;; src/gui/symbology/characterwidget.h
           ;; src/providers/oracle/ocispatial/main.cpp
           ;; src/providers/oracle/ocispatial/qsql_ocispatial.cpp
           ;; src/providers/oracle/ocispatial/qsql_ocispatial.h
           ;; src/providers/oracle/ocispatial/qsqlcachedresult_p.h
           ;; src/providers/spatialite/qspatialite/qsql_spatialite.cpp
           ;; src/providers/spatialite/qspatialite/qsql_spatialite.h
           ;; src/providers/spatialite/qspatialite/qsqlcachedresult_p.h
           ;; src/providers/spatialite/qspatialite/smain.cpp
           ;; tests/qt_modeltest/modeltest.cpp
           ;; tests/qt_modeltest/modeltest.h
           ;; tests/qt_modeltest/tst_modeltest.cpp
           ;; tests/qt_modeltest/dynamictreemodel.cpp
           ;; tests/qt_modeltest/dynamictreemodel.h
           (license:fsf-free
            "file://debian/copyright"
            "QT-Commercial or LGPL-2.1 with Digia Qt LGPL Exception 1.1 or GPL-3")))