;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2022 Petr Hodina ;;; ;;; 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 . (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)))