gnu: Add python-pyshp.
[jackhill/guix/guix.git] / gnu / packages / gnustep.scm
index 31fca5b..012afeb 100644 (file)
@@ -1,6 +1,8 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2016 Kei Yamashita <kei@openmailbox.org>
+;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
+;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #:use-module (guix packages)
   #:use-module (guix build-system gnu)
   #:use-module (guix licenses)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages xorg)
+  #:use-module (gnu packages libffcall)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages image)
-  #:use-module (gnu packages pkg-config))
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages xml)
+  #:use-module (ice-9 match))
+
+(define-public gnustep-make
+  (package
+    (name "gnustep-make")
+    (version "2.7.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "ftp://ftp.gnustep.org/pub/gnustep/core/"
+                                  name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1khiygfkz0zhh9b5nybn40g0xnnjxchk24n49hff1bwanszir84h"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f)) ; no check target
+    (native-inputs
+     `(("which" ,which)))
+    (home-page "http://gnustep.org")
+    (synopsis "GNUstep make package")
+    (description "The makefile package is a simple, powerful and extensible way
+to write makefiles for a GNUstep-based project.  It allows the user to write a
+project without having to deal with the complex issues associated with
+configuration, building, installation, and packaging.  It also allows the user
+to easily create cross-compiled binaries.")
+    (license gpl3+)))
 
 (define-public windowmaker
   (package
     (name "windowmaker")
-    (version "0.95.6")
+    (version "0.95.9")
+    (synopsis "NeXTSTEP-like window manager")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "http://windowmaker.org/pub/source/release/WindowMaker-"
-                    version ".tar.gz"))
+                    "https://github.com/window-maker/wmaker/releases/download/"
+                    "wmaker-" version "/WindowMaker-" version ".tar.gz"))
               (sha256
                (base32
-                "1i3dw1yagsa3rs9x2na2ynqlgmbahayws0kz4vl00fla6550nns3"))))
+                "055pqvlkhipyjn7m6bb3fs4zz9rd1ynzl0mmwbhp05ihc3zmh8zj"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-before
-                 'configure 'pre-configure
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; 'wmaker' wants to invoke 'wmaker.inst' the first time,
-                   ;; and the 'wmsetbg', so make sure it uses the right ones.
-                   ;; We can't use a wrapper here because that would pollute
-                   ;; $PATH in the whole session.
-                   (let* ((out (assoc-ref outputs "out"))
-                          (bin (string-append out "/bin")))
-                     (substitute* "src/main.c"
-                       (("\"wmaker\\.inst")
-                        (string-append "\"" bin "/wmaker.inst")))
-                     (substitute* '("src/defaults.c" "WPrefs.app/Menu.c")
-                       (("\"wmsetbg")
-                        (string-append "\"" bin "/wmsetbg")))))
-                 (alist-cons-after
-                  'install 'wrap
-                  (lambda* (#:key outputs #:allow-other-keys)
-                    (let* ((out (assoc-ref outputs "out"))
-                           (bin (string-append out "/bin")))
-                      ;; In turn, 'wmaker.inst' wants to invoke 'wmmenugen'
-                      ;; etc., so make sure everything is in $PATH.
-                      (wrap-program (string-append bin "/wmaker.inst")
-                                    `("PATH" ":" prefix (,bin)))))
-                  %standard-phases))))
+     `(#:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (ice-9 match))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'pre-configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; 'wmaker' wants to invoke 'wmaker.inst' the first time,
+             ;; and the 'wmsetbg', so make sure it uses the right ones.
+             ;; We can't use a wrapper here because that would pollute
+             ;; $PATH in the whole session.
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin")))
+               (substitute* "src/main.c"
+                 (("\"wmaker\\.inst")
+                  (string-append "\"" bin "/wmaker.inst")))
+               (substitute* '("src/defaults.c" "WPrefs.app/Menu.c")
+                 (("\"wmsetbg")
+                  (string-append "\"" bin "/wmsetbg")))
+               ;; Add enough cells to the command character array to
+               ;; allow passing our large path to the wmsetbg binary.
+               ;; The path to wmsetbg in Guix requires 67 extra characters.
+               (substitute* "src/defaults.c"
+                 (("len = strlen\\(text\\) \\+ 40;")
+                  (string-append "len = strlen(text) + 107;")))
+               #t)))
+         (add-after 'install 'install-xsession
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (xsessions (string-append out "/share/xsessions")))
+               (mkdir-p xsessions)
+               (call-with-output-file
+                   (string-append xsessions "/windowmaker.desktop")
+                 (lambda (port)
+                   (format port "~
+                    [Desktop Entry]~@
+                    Name=Window Maker~@
+                    Comment=~a~@
+                    Exec=~a/bin/wmaker~@
+                    Type=Application~%"
+                           (string-map (match-lambda
+                                         (#\newline #\space)
+                                         (chr chr))
+                                       ,synopsis) out))))
+             #t))
+         (add-after 'install-xsession 'wrap
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin")))
+               ;; In turn, 'wmaker.inst' wants to invoke 'wmmenugen'
+               ;; etc., so make sure everything is in $PATH.
+               (wrap-program (string-append bin "/wmaker.inst")
+                 `("PATH" ":" prefix (,bin)))
+               #t))))))
     (inputs
      `(("libxmu" ,libxmu)
        ("libxft" ,libxft)
        ("libx11" ,libx11)
+       ("libxinerama" ,libxinerama)
        ("fontconfig" ,fontconfig)
-       ("libjpeg" ,libjpeg)))
+       ("libjpeg" ,libjpeg-turbo)
+       ("giflib" ,giflib)
+       ("libpng" ,libpng)
+       ("libtiff" ,libtiff)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
-    (home-page "http://windowmaker.org/")
-    (synopsis "NeXTSTEP-like window manager")
+    (home-page "https://windowmaker.org/")
     (description
      "Window Maker is an X11 window manager originally designed to provide
 integration support for the GNUstep Desktop Environment.  In every way
@@ -93,7 +158,7 @@ interface.  It is fast, feature rich, easy to configure, and easy to use.")
 (define-public wmbattery
   (package
     (name "wmbattery")
-    (version "2.50")
+    (version "2.54")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -101,14 +166,9 @@ interface.  It is fast, feature rich, easy to configure, and easy to use.")
                     version ".orig.tar.gz"))
               (sha256
                (base32
-                "0hi6bivv3xd2k68w08krndfl68wdx7nmc2wjzsmcd4q3qgwgyk44"))))
+                "1r4n58mwkm69y1pjs7l64hg8r1lpndrzyrfl2rdgd4zi6v0jhyyw"))))
     (build-system gnu-build-system)
-    (arguments
-     `(#:tests? #f              ; no "check" target
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'autoconf
-           (lambda _ (zero? (system* "autoreconf" "-vfi")))))))
+    (arguments '(#:tests? #f)) ; no "check" target
     (inputs
      `(("glib" ,glib)
        ("libx11" ,libx11)
@@ -116,10 +176,8 @@ interface.  It is fast, feature rich, easy to configure, and easy to use.")
        ("libxpm" ,libxpm)
        ("upower" ,upower)))
     (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("pkg-config" ,pkg-config)))
-    (home-page "http://windowmaker.org/dockapps/?name=wmbattery")
+     `(("pkg-config" ,pkg-config)))
+    (home-page "https://www.dockapps.net/wmbattery")
     (synopsis "Display laptop battery info")
     (description
      "Wmbattery displays the status of your laptop's battery in a small icon.
@@ -131,7 +189,7 @@ graph), and battery status (high - green, low - yellow, or critical - red).")
 (define-public wmnd
   (package
     (name "wmnd")
-    (version "0.4.17")
+    (version "0.4.18")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -139,7 +197,7 @@ graph), and battery status (high - green, low - yellow, or critical - red).")
                     name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1amkbiwgr31gwkcp7wrjsr7aj1kns8bpmjpv70n86wb8v9mpm828"))))
+                "01s37d8cfpncza1mlw13ar4rcwbrc1vgaj3ifhglmlcnzvvayg0n"))))
     (build-system gnu-build-system)
     (inputs
      `(("libx11" ,libx11)
@@ -157,7 +215,7 @@ other compatible window managers.")
 (define-public wmcpuload
   (package
     (name "wmcpuload")
-    (version "1.0.1")
+    (version "1.1.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -165,7 +223,7 @@ other compatible window managers.")
                     name "_" version ".orig.tar.gz"))
               (sha256
                (base32
-                "0irlns4cvxy2mnicx75bya166hdxq7h8bphds3ligijcl9fzgs6n"))))
+                "1334y0axnxydwv05d172f405iljrfakg4kcyg9kmn46v6ywv424g"))))
     (build-system gnu-build-system)
     (inputs
      `(("libx11" ,libx11)
@@ -173,7 +231,7 @@ other compatible window managers.")
        ("libxpm" ,libxpm)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
-    (home-page "http://windowmaker.org/dockapps/?name=wmcpuload")
+    (home-page "https://www.dockapps.net/wmcpuload")
     (synopsis "Monitor CPU usage")
     (description
      "Wmcpuload displays the current CPU usage, expressed as a percentile and a
@@ -196,21 +254,16 @@ on.")
                (base32
                 "1lx276ba8r2yydhmwj1g586jdqg695ad89ng36fr3mb067gvb2rz"))))
     (build-system gnu-build-system)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'autoconf
-           (lambda _ (zero? (system* "autoreconf" "-vfi")))))))
-    ;; wmclock requires autoreconf to generate its configure script.
     (inputs
      `(("libx11" ,libx11)
        ("libxext" ,libxext)
        ("libxpm" ,libxpm)))
+    ;; wmclock requires autoreconf to generate its configure script.
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
        ("pkg-config" ,pkg-config)))
-    (home-page "http://windowmaker.org/dockapps/?name=wmclock")
+    (home-page "https://www.dockapps.net/wmclock")
     (synopsis "Display the date and time")
     (description
      "wmclock is an applet for Window Maker which displays the date and time in
@@ -228,7 +281,9 @@ display, and can run a user-specified program on mouse click.")
                                   name "/" name "-" version ".tar.gz"))
               (sha256
                (base32
-                "101grahd80n97y2dczb629clmcgiavdpbbwy78kk5wgs362m12z3"))))
+                "101grahd80n97y2dczb629clmcgiavdpbbwy78kk5wgs362m12z3"))
+              (patches
+               (search-patches "wmfire-update-for-new-gdk-versions.patch"))))
     (build-system gnu-build-system)
     (inputs
      `(("gtk+" ,gtk+-2)
@@ -236,7 +291,7 @@ display, and can run a user-specified program on mouse click.")
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (home-page "http://www.improbability.net/")
-    (synopsis "Display flames to represent CPU usage, memory usage, etc.")
+    (synopsis "Display flames to represent resource usage")
     (description
      "wmfire is an applet for Window Maker that can monitor the average cpu
 load, or individual cpu load on SMP computers.  Additionally it can monitor the