summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2016-06-02 18:59:58 +0200
committerLudovic Courtès <ludo@gnu.org>2016-06-02 19:11:14 +0200
commit6cde5c34a1b7acb953e87055b845629015903888 (patch)
treec7f482d4ed86a56a4e9eb79fd8f761781c95a2f5 /gnu
parent005c787d5983858ee0313cbb03bfae1f52e9254b (diff)
downloadguix-6cde5c34a1b7acb953e87055b845629015903888.tar.gz
gnu: icecat: Install '.desktop' entry.
Fixes <http://bugs.gnu.org/23094>.
Reported by Danny Milosavljevic <dannym@scratchpost.org>.

* gnu/packages/gnuzilla.scm (icecat)[arguments]: Add
'install-desktop-entry' phase.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/gnuzilla.scm45
1 files changed, 44 insertions, 1 deletions
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 7e52534b8f..4ffa3ac165 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -448,6 +448,8 @@ standards.")
                            )
 
        #:modules ((ice-9 ftw)
+                  (ice-9 rdelim)
+                  (ice-9 match)
                   ,@%gnu-build-system-modules)
        #:phases
        (modify-phases %standard-phases
@@ -509,7 +511,48 @@ standards.")
               (format #t "configure flags: ~s~%" flags)
               (zero? (apply system* bash
                             (string-append srcdir "/configure")
-                            flags))))))))
+                            flags)))))
+         (add-before 'configure 'install-desktop-entry
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Install the '.desktop' file.
+             (define (swallow-%%-directives input output)
+               ;; Interpret '%%ifdef' directives found in the '.desktop' file.
+               (let loop ((state 'top))
+                 (match (read-line input 'concat)
+                   ((? eof-object?)
+                    #t)
+                   ((? string? line)
+                    (cond ((string-prefix? "%%ifdef" line)
+                           (loop 'ifdef))
+                          ((string-prefix? "%%else" line)
+                           (loop 'else))
+                          ((string-prefix? "%%endif" line)
+                           (loop 'top))
+                          (else
+                           (case state
+                             ((top else)
+                              (display line output)
+                              (loop state))
+                             (else
+                              (loop state)))))))))
+
+             (let* ((out (assoc-ref outputs "out"))
+                    (applications (string-append out "/share/applications")))
+               (call-with-input-file "debian/icecat.desktop.in"
+                 (lambda (input)
+                   (call-with-output-file "debian/icecat.desktop"
+                     (lambda (output)
+                       (swallow-%%-directives input output)))))
+
+               (substitute* "debian/icecat.desktop"
+                 (("@MOZ_DISPLAY_NAME@")
+                  "GNU IceCat")
+                 (("^Exec=@MOZ_APP_NAME@")
+                  (string-append "Exec=" out "/bin/icecat"))
+                 (("@MOZ_APP_NAME@")
+                  "icecat"))
+               (install-file "debian/icecat.desktop" applications)
+               #t))))))
     (home-page "http://www.gnu.org/software/gnuzilla/")
     (synopsis "Entirely free browser derived from Mozilla Firefox")
     (description