Merge branch 'patch/google-earth' into 'master'

Draft: nongnu: Add google-earth-pro.

See merge request nonguix/nonguix!197
This commit is contained in:
Petr Hodina 2025-02-09 05:32:09 +00:00
commit 18586da286

249
nongnu/packages/maps.scm Normal file
View File

@ -0,0 +1,249 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
;;;
;;; This file is not part of GNU Guix.
;;;
;;; This program is free software: you can redistribute it and/or modify
;;; it under the terms of the GNU General Public License as published by
;;; the Free Software Foundation, either version 3 of the License, or
;;; (at your option) any later version.
;;;
;;; This program is distributed in the hope that it will be useful,
;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with this program. If not, see <https://www.gnu.org/licenses/>.
(define-module (nongnu packages maps)
#:use-module (guix packages)
#:use-module (guix gexp)
#:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages bootstrap)
#:use-module (gnu packages build-tools)
#:use-module (gnu packages cups)
#:use-module (gnu packages curl)
#:use-module (gnu packages compression)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gstreamer)
#:use-module (gnu packages networking)
#:use-module (gnu packages linux)
#:use-module (gnu packages xorg)
#:use-module (gnu packages qt)
#:use-module (guix download)
;; #:use-module (guix build utils)
#:use-module (nonguix build-system binary)
#:use-module ((guix licenses)
#:prefix license:))
;; Check the latest version with:
;; curl -sL https://dl.google.com/linux/earth/deb/dists/stable/main/binary-amd64/Packages | grep -Pom1 'Version: \K[^-]*'
(define-public google-earth-pro
(package
(name "google-earth-pro")
(version "7.3.4.8642")
(source (origin
(method url-fetch)
(uri (string-append
"https://dl.google.com/linux/earth/deb/pool/main/g/google-earth-pro-stable/google-earth-pro-stable_"
version "-r0_amd64.deb"))
(sha256
(base32
"1xwarf77ypndkqk9j4haapp8gmys33grxy4fbrzk63n1qpqkvnzi"))))
(build-system binary-build-system)
(arguments
(list #:install-plan #~`(("opt/google/earth/pro/googleearth-bin" "bin/")
("opt/google/earth/pro/" "lib/"
#:include-regexp (".*.so"))
("usr" "usr"))
#:phases #~(modify-phases %standard-phases
(replace 'unpack
(lambda* (#:key inputs #:allow-other-keys)
(let ((debian-files (assoc-ref inputs "source")))
(invoke "ar" "x" debian-files)
(invoke "tar" "xJf" "data.tar.xz"))))
(add-after 'install 'wrap-logic-and-shared-objects
(lambda* (#:key inputs outputs #:allow-other-keys)
(use-modules (ice-9 ftw)
(ice-9 regex)
(ice-9 textual-ports))
(let* ((google-earth (string-append #$output
"/bin/googleearth-bin"))
(google-earth-lib (string-append #$output
"/lib/libgoogleearth_pro.so"))
(rpath (string-append (apply string-append
(map (lambda (pkg)
(string-append
(assoc-ref
inputs
pkg)
"/lib:"))
'("alsa-lib"
"curl"
"cups"
"dbus"
"desktop-file-utils"
"fontconfig-minimal"
"freetype"
"gcc"
"glu"
"glibc"
"glib"
"gst-plugins-base"
"hicolor-icon-theme"
"libice"
"libsm"
"libproxy"
"libx11"
"libxext"
"libxcb"
"libxi"
"libxrender"
"mesa"
"qtbase"
"qtx11extras"
"qtmultimedia"
"qtlocation"
"qtsensors"
"qtdeclarative"
"qtscript"
"qtwebkit"
"qtwebchannel"
"qtwebengine"
"qtsvg"
"zlib")))
#$output "/lib"))
(ld-so (string-append #$glibc
#$(glibc-dynamic-linker))))
(invoke "patchelf" "--set-rpath" rpath
(string-append #$output
"/lib/plugins/audio/libqtaudio_alsa.so"))
(invoke "patchelf" "--set-rpath" rpath
(string-append #$output
"/lib/plugins/bearer/libqconnmanbearer.so"))
(invoke "patchelf" "--set-rpath" rpath
(string-append #$output
"/lib/plugins/bearer/libqgenericbearer.so"))
(invoke "patchelf" "--set-rpath" rpath
(string-append #$output
"/lib/plugins/bearer/libqnmbearer.so"))
(invoke "patchelf" "--set-rpath" rpath
(string-append #$output
"/lib/plugins/imageformats/libqgif.so"))
(invoke "patchelf" "--set-rpath" rpath
(string-append #$output
"/lib/plugins/imageformats/libqico.so"))
(invoke "patchelf" "--set-rpath" rpath
(string-append #$output
"/lib/plugins/imageformats/libqjpeg.so"))
(invoke "patchelf" "--set-rpath" rpath
(string-append #$output
"/lib/plugins/imageformats/libqmng.so"))
(invoke "patchelf" "--set-rpath" rpath
(string-append #$output
"/lib/plugins/imageformats/libqsvg.so"))
(invoke "patchelf" "--set-rpath" rpath
(string-append #$output
"/lib/plugins/imageformats/libqwebp.so"))
(invoke "patchelf" "--set-rpath" rpath
(string-append #$output
"/lib/plugins/libnpgeinprocessplugin.so"))
(invoke "patchelf" "--set-rpath" rpath
(string-append #$output
"/lib/plugins/platforms/libqlinuxfb.so"))
(invoke "patchelf" "--set-rpath" rpath
(string-append #$output
"/lib/plugins/platforms/libqminimal.so"))
(invoke "patchelf" "--set-rpath" rpath
(string-append #$output
"/lib/plugins/platforms/libqoffscreen.so"))
(invoke "patchelf" "--set-rpath" rpath
(string-append #$output
"/lib/plugins/platforms/libqxcb.so"))
(invoke "patchelf" "--set-rpath" rpath
(string-append #$output
"/lib/plugins/printsupport/libcupsprintersupport.so"))
(with-directory-excursion (string-append #$output
"/lib")
(for-each (lambda (file)
(delete-file file))
(list "libQt5XcbQpa.so.5"
"libQt5X11Extras.so.5"
"libQt5Widgets.so.5"
"libQt5WebKitWidgets.so.5"
"libQt5WebKit.so.5"
"libQt5Svg.so.5"
"libQt5ScriptTools.so.5"
"libQt5Quick.so.5"
"libQt5PrintSupport.so.5"
"libQt5OpenGL.so.5"
"libQt5Network.so.5"
"libQt5MultimediaWidgets.so.5"
"libQt5Multimedia.so.5"
"libQt5Gui.so.5"
"libQt5DBus.so.5"
"libQt5Core.so.5")))
(for-each (lambda (file)
(if (string=? "libdebuginfod.so.1"
file)
'()
(invoke "patchelf" "--set-rpath"
rpath
(string-append #$output
"/lib/"
file))))
(scandir (string-append #$output
"/lib")
(lambda (name)
(string-contains name ".so"))))
(invoke "patchelf" "--set-rpath" rpath
google-earth)
(invoke "patchelf" "--set-interpreter" ld-so
google-earth)))))))
(inputs (list alsa-lib
curl
dbus
desktop-file-utils
fontconfig
freetype
`(,gcc "lib")
glu
glib
gst-plugins-base
hicolor-icon-theme
cups
glibc
libice
libsm
libproxy
libx11
libxext
libxcb
libxi
libxrender
mesa
qtbase-5
qtx11extras
qtmultimedia-5
qtlocation
qtdeclarative-5
qtscript
qtsensors
qtwebchannel-5
qtwebengine-5
qtwebkit
qtsvg-5
zlib))
(synopsis
"3D interface to explore the globe, terrain, streets, buildings and other planets")
(description "")
(home-page "https://www.google.com/intl/earth/")
;; Well what to do
(license #f)))