diff mbox series

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

Message ID 20191109112702.14723-1-wz@freeshell.de
State Accepted
Headers show
Series [bug#38149,WIP] gnu: Add qgis. | expand

Commit Message

Wiktor Żelazny Nov. 9, 2019, 11:27 a.m. UTC
From: Wiktor Żelazny <wzelazny@vurv.cz>

* 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"
but:
   $ ls -l /gnu/store/8d1ak3bpaaqhw4hnxksan7fnh5ll7i5f-python-pyqt+qscintilla-5.11.3/share/sip/QtXml/QtXmlmod.sip
   -r--r--r-- 5 root root 1937 Jan  1  1970 /gnu/store/8d1ak3bpaaqhw4hnxksan7fnh5ll7i5f-python-pyqt+qscintilla-5.11.3/share/sip/QtXml/QtXmlmod.sip
I thought that maybe the QtXml/ directory being a symlink
   QtXml -> /gnu/store/mfii8qx5x3kbl1gzg8g8qmblqk6fdmvf-python-pyqt-5.11.3/share/sip/QtXml
was the problem, but including python-pyqt (or python-sip, for that
matter) among the inputs did not solve the issue. Explicitly defining
directories as configure flags does not work, either. Any suggestion how
to progress on this? Thanks!
 gnu/packages/geo.scm | 63 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 63 insertions(+)

Comments

Arun Isaac Dec. 1, 2019, 6:13 p.m. UTC | #1
Sorry this is taking more time than I expected. It looks like the qgis
package I dug up out of my git stash doesn't build anymore. The package
is around a year old and was for an older version of qgis. Hopefully
there is some simple fix that needs to be made for the build to
work. But qgis builds take forever on my slow machine and figuring out
the problem is taking a while. I'll try to get back to you in 48 hours.

Thank you for your patience! :-)
Wiktor Żelazny Dec. 2, 2019, 2:31 p.m. UTC | #2
On Sun, Dec 01, 2019 at 11:43:39PM +0530, Arun Isaac wrote:

> Hopefully there is some simple fix that needs to be made for the build
> to work. But qgis builds take forever on my slow machine and figuring
> out the problem is taking a while. I'll try to get back to you in 48
> hours.

Thank you for your efforts. Take you time. You can always post what
you’ve got, and maybe somebody will come with some idea how to make it
work again.

WŻ
Arun Isaac Dec. 3, 2019, 5:45 p.m. UTC | #3
> * 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")))
diff mbox series

Patch

diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm
index dfb00c7547..26bbcd2f63 100644
--- a/gnu/packages/geo.scm
+++ b/gnu/packages/geo.scm
@@ -42,12 +42,14 @@ 
   #:use-module (guix utils)
   #:use-module (gnu packages astronomy)
   #:use-module (gnu packages autotools)
+  #:use-module (gnu packages bison)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages datastructures)
   #:use-module (gnu packages documentation)
+  #:use-module (gnu packages flex)
   #:use-module (gnu packages fonts)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages glib)
@@ -55,7 +57,9 @@ 
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
   #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages kde)
   #:use-module (gnu packages lua)
+  #:use-module (gnu packages maths)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
@@ -1037,3 +1041,62 @@  persisted.
 @end itemize
 ")
     (license license:expat)))
+
+(define-public qgis
+  (package
+    (name "qgis")
+    (version "3.8.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+               "https://qgis.org/downloads/" name "-" version ".tar.bz2"))
+        (sha256
+          (base32
+            ; checked <uri>.md5
+            "1g8pzfm68n28pj7a4z9c1yklnwx5and83svjx6w8q5dwhf23xjiw"))))
+    (build-system cmake-build-system)
+    (native-inputs
+      `(("flex" ,flex)
+        ("bison" ,bison)
+        ("python" ,python)))
+    (inputs
+      `(("qtbase" ,qtbase)
+        ("qtserialport" ,qtserialport)
+        ("qtsvg" ,qtsvg)
+        ("qtlocation" ,qtlocation)
+        ("qttools" ,qttools)
+        ("qtdeclarative" ,qtdeclarative)
+        ("qtwebkit" ,qtwebkit)
+        ("proj.4" ,proj.4)
+        ("geos" ,geos)
+        ("sqlite" ,sqlite)
+        ("libspatialite" ,libspatialite)
+        ("libspatialindex" ,libspatialindex)
+        ("gdal" ,gdal)
+        ("qwt" ,qwt)
+        ("expat" ,expat)
+        ("qscintilla" ,qscintilla)
+        ("qca" ,qca)
+        ("qtkeychain" ,qtkeychain)
+        ("libzip" ,libzip)
+        ("python-pyqt+qscintilla" ,python-pyqt+qscintilla)
+;        ("python-sip" ,python-sip)
+        ("exiv2" ,exiv2)
+        ("gsl" ,gsl)))
+    (arguments
+      `(#:configure-flags (list (string-append
+                                  "-DPYQT5_SIP_DIR="
+                                  (assoc-ref
+                                    %build-inputs "python-pyqt+qscintilla")
+                                  "/share/sip")
+                                (string-append
+                                  "-DQSCI_SIP_DIR="
+                                  (assoc-ref
+                                    %build-inputs "python-pyqt+qscintilla")
+                                  "/share/sip"))))
+    (home-page "https://qgis.org")
+    (synopsis "A free and open source Geographic Information System")
+    (description "QGIS is a professional GIS application that is built on top
+of and proud to be itself @dfn{Free and Open Source Software} (FOSS).")
+    (license license:gpl2+)))