aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlo Zancanaro <carlo@zancanaro.id.au>2016-06-15 22:15:33 +1000
committerLudovic Courtès <ludo@gnu.org>2016-06-16 14:29:43 +0200
commit3d1240aa2561792895795315c7783a28bf4412af (patch)
tree7f205c2ffe42eb47e970c9f4fada12617d964e54
parent68a973024fc2a5c6c79d26e4f4fc4a275facf97d (diff)
downloadguix-3d1240aa2561792895795315c7783a28bf4412af.tar.gz
guix-3d1240aa2561792895795315c7783a28bf4412af.zip
gnu: Add awesome.
* gnu/packages/wm.scm (awesome): New variable. * gnu/packages/patches/awesome-reproducible-png.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/patches/awesome-reproducible-png.patch14
-rw-r--r--gnu/packages/wm.scm96
3 files changed, 111 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index abd05ef01a..55fea0e855 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -439,6 +439,7 @@ dist_patch_DATA = \
%D%/packages/patches/avahi-localstatedir.patch \
%D%/packages/patches/avidemux-install-to-lib.patch \
%D%/packages/patches/avrdude-fix-libusb.patch \
+ %D%/packages/patches/awesome-reproducible-png.patch \
%D%/packages/patches/bash-completion-directories.patch \
%D%/packages/patches/bigloo-gc-shebangs.patch \
%D%/packages/patches/binutils-ld-new-dtags.patch \
diff --git a/gnu/packages/patches/awesome-reproducible-png.patch b/gnu/packages/patches/awesome-reproducible-png.patch
new file mode 100644
index 0000000000..0fae65bc71
--- /dev/null
+++ b/gnu/packages/patches/awesome-reproducible-png.patch
@@ -0,0 +1,14 @@
+Do not introduce timestamps in PNG files (for icons).
+See <https://wiki.debian.org/ReproducibleBuilds/TimestampsInPNG>.
+
+--- awesome-3.4.15/CMakeLists.txt 2013-02-11 14:50:21.000000000 +0100
++++ awesome-3.4.15/CMakeLists.txt 2016-06-16 13:59:30.528125439 +0200
+@@ -295,7 +295,7 @@ macro(a_icon_convert match replacement i
+ set(ALL_ICONS ${ALL_ICONS} ${output})
+
+ add_custom_command(
+- COMMAND ${CONVERT_EXECUTABLE} ${input} ${ARGN} ${output}
++ COMMAND ${CONVERT_EXECUTABLE} +set date:create +set date:modify -define png:exclude-chunk=time ${input} ${ARGN} ${output}
+ OUTPUT ${output}
+ DEPENDS ${input}
+ VERBATIM)
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 5f32fc478d..f385d2b4fb 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -7,6 +7,8 @@
;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Al McElrath <hello@yrns.org>
+;;; Copyright © 2016 Carlo Zancanaro <carlo@zancanaro.id.au>
+;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -28,6 +30,7 @@
#:use-module (guix packages)
#:use-module (gnu packages)
#:use-module (gnu packages linux)
+ #:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix build-system haskell)
#:use-module (gnu packages haskell)
@@ -49,6 +52,11 @@
#:use-module (gnu packages maths)
#:use-module (gnu packages web)
#:use-module (gnu packages fontutils)
+ #:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gperf)
+ #:use-module (gnu packages imagemagick)
+ #:use-module (gnu packages lua)
#:use-module (guix download)
#:use-module (guix git-download))
@@ -370,3 +378,91 @@ and easy to handle yet full of features to make an easy and fast desktop
experience.")
(home-page "http://fluxbox.org/")
(license license:expat)))
+
+(define-public awesome
+ (package
+ (name "awesome")
+ (version "3.4.15")
+ (source
+ (origin (method url-fetch)
+ (uri (string-append
+ "https://awesome.naquadah.org/download/awesome-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "1m910lr7wkw2dgzmirfvz7dasfswhhccdf65l21iiciv24c3w1bb"))
+ (modules '((guix build utils)
+ (srfi srfi-19)))
+ (imported-modules '((guix build utils)))
+ (snippet
+ ;; Remove non-reproducible timestamp and use the date of the
+ ;; source file instead.
+ '(substitute* "common/version.c"
+ (("__DATE__ \" \" __TIME__")
+ (date->string
+ (time-utc->date
+ (make-time time-utc 0
+ (stat:mtime (stat "awesome.c"))))
+ "\"~c\""))))
+ (patches (search-patches "awesome-reproducible-png.patch"))))
+ (build-system cmake-build-system)
+ (native-inputs `(("asciidoc" ,asciidoc)
+ ("docbook-xsl" ,docbook-xsl)
+ ("doxygen" ,doxygen)
+ ("gperf" ,gperf)
+ ("imagemagick" ,imagemagick)
+ ("libxml2" ,libxml2) ;for XML_CATALOG_FILES
+ ("pkg-config" ,pkg-config)
+ ("xmlto" ,xmlto)))
+ (inputs `(("cairo" ,cairo)
+ ("dbus" ,dbus)
+ ("gdk-pixbuf" ,gdk-pixbuf)
+ ("glib" ,glib)
+ ("imlib2" ,imlib2)
+ ("libev" ,libev)
+ ("libxcb" ,libxcb)
+ ("libxcursor" ,libxcursor)
+ ("libxdg-basedir" ,libxdg-basedir)
+ ("lua" ,lua-5.1)
+ ("pango" ,pango)
+ ("startup-notification" ,startup-notification)
+ ("xcb-util" ,xcb-util)
+ ("xcb-util-cursor" ,xcb-util-cursor)
+ ("xcb-util-image" ,xcb-util-image)
+ ("xcb-util-keysyms" ,xcb-util-keysyms)
+ ("xcb-util-renderutil" ,xcb-util-renderutil)
+ ("xcb-util-wm" ,xcb-util-wm)))
+ (arguments
+ `(;; Let compression happen in our 'compress-documentation' phase so that
+ ;; '--no-name' is used, which removes timestamps from gzip output.
+ #:configure-flags '("-DCOMPRESS_MANPAGES=off")
+
+ #:phases (modify-phases %standard-phases
+ (add-before 'build 'xmlto-skip-validation
+ (lambda _
+ ;; We can't download the necessary schema, so so skip
+ ;; validation and assume they're valid.
+ (substitute* "../build/CMakeFiles/man.dir/build.make"
+ (("/xmlto")
+ (string-append "/xmlto --skip-validation")))
+ #t))
+ (replace 'check
+ (lambda _
+ ;; There aren't any tests, so just make sure the binary
+ ;; gets built and can be run successfully.
+ (zero? (system* "../build/awesome" "-v")))))))
+ (synopsis "Highly configurable window manager")
+ (description
+ "awesome is a window manager for X. It manages windows in different
+layouts, like floating or tiled. Any layout can be applied dynamically,
+optimizing the environment for the application in use and the task currently
+being performed.
+
+In a tiled layout, windows are managed in a master and stacking area. In a
+floating layout windows can be resized and moved freely. Dialog windows are
+always managed as floating, regardless of the layout currently applied.
+
+Windows are grouped by tags in awesome. Each window can be tagged with one or
+more tags. Selecting certain tags displays all windows with these tags.")
+ (license license:gpl2+)
+ (home-page "https://awesome.naquadah.org/")))