From mboxrd@z Thu Jan 1 00:00:00 1970 From: ng0 Subject: Re: [PATCH] gnu: awesome: Add awesome-3.5 Date: Thu, 25 Aug 2016 09:22:38 +0000 Message-ID: <87inup42zl.fsf@we.make.ritual.n0.is> References: <20160825030933.06c8d523@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:51274) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bcqs0-0002uU-OM for guix-devel@gnu.org; Thu, 25 Aug 2016 05:22:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bcqry-0000wS-Fa for guix-devel@gnu.org; Thu, 25 Aug 2016 05:22:44 -0400 Received: from mithlond.libertad.in-berlin.de ([2001:67c:1400:2490::1]:56889 helo=beleriand.n0.is) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bcqry-0000w3-4m for guix-devel@gnu.org; Thu, 25 Aug 2016 05:22:42 -0400 In-Reply-To: <20160825030933.06c8d523@gmail.com> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: gno , guix-devel@gnu.org Hi, gno writes: > Hi guix ! > > Sure hope I'm doing this right as I'm new to this. > These patches add Awesome 3.5.9 to the repository. I decided against > updating since it may break peoples configurations. Awesome had API > changes in between 3.4 and 3.5. > > Please have a look. Awesome! Many thanks for your first patch, I will test this in the next days, maybe even today. I still have an 3.5.9 config from another system in a backup. Ah. I see what you mean by you decided against updating. I think this is tricky. In my opinion awesome should provide the latest version, while for example awesome-3.4.15 would provide an older version. I use awesome, and this is what I would expect. When there was a version update, it was up to me to figure out if my config still worked and how to make it work again. I would vote for 3.5 as the new awesome and 3.4 inherits from this. But this can be applied after 3.5 is added I think? I did send in a patch to shorten the bloated description of awesome a couple of days ago, please wait with applying my patch. I will send in an update once we have this new awesome version update in tree. > From cd3175f242450169b269ead777be6c7835476fba Mon Sep 17 00:00:00 2001 > From: doncatnip > Date: Thu, 25 Aug 2016 01:43:53 +0200 > Subject: [PATCH 1/3] gnu: lua: Enable dynamic library support. > > * gnu/packages/lua.scm: (lua)[arguments]: Add make flags. You do more than just adding make flags, maybe let the commit message say that you added the CFLAGS: -DLUA_USE_POSIX, -DLUA_USE_DLOPEN and added LDFLAGS? I'm not sure how to express that, if at all. the git log should have other cases. Otherwise it looks good to me, this is just a formality the person commiting your patch(es) could also change on your behalf. > --- > gnu/packages/lua.scm | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm > index b4b5dee..c68a3ff 100644 > --- a/gnu/packages/lua.scm > +++ b/gnu/packages/lua.scm > @@ -4,6 +4,7 @@ > ;;; Copyright © 2014 Mark H Weaver > ;;; Copyright © 2014 Andreas Enge > ;;; Copyright © 2016 Efraim Flashner > +;;; Copyright © 2016 doncatnip > ;;; > ;;; This file is part of GNU Guix. > ;;; > @@ -51,7 +52,10 @@ > (modify-phases %standard-phases > (delete 'configure) > (replace 'build > - (lambda _ (zero? (system* "make" "CFLAGS=-fPIC" "linux")))) > + (lambda _ (zero? (system* > + "make" "LDFLAGS=-ldl" > + "CFLAGS=-fPIC -DLUA_USE_DLOPEN -DLUA_USE_POSIX" > + "linux")))) > (replace 'install > (lambda* (#:key outputs #:allow-other-keys) > (let ((out (assoc-ref outputs "out"))) > -- > 2.9.3 > > From 995b67847508a70782eb522cda52b0aa36a20bd2 Mon Sep 17 00:00:00 2001 > From: doncatnip > Date: Thu, 25 Aug 2016 02:22:37 +0200 > Subject: [PATCH 2/3] gnu: lua: Add lua-lgi. > > * gnu/packages/lua.scm (lua-lgi): New variable. > --- > gnu/packages/lua.scm | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 70 insertions(+), 1 deletion(-) > > diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm > index c68a3ff..8af0318 100644 > --- a/gnu/packages/lua.scm > +++ b/gnu/packages/lua.scm > @@ -27,7 +27,12 @@ > #:use-module (guix download) > #:use-module (guix build-system gnu) > #:use-module (gnu packages) > - #:use-module (gnu packages readline)) > + #:use-module (gnu packages readline) > + #:use-module (gnu packages glib) > + #:use-module (gnu packages libffi) > + #:use-module (gnu packages xorg) > + #:use-module (gnu packages pkg-config) > + #:use-module (gnu packages gtk)) > > (define-public lua > (package > @@ -111,3 +116,67 @@ programming language. Lua is a powerful, dynamic and light-weight programming > language. It may be embedded or used as a general-purpose, stand-alone > language.") > (license x11))) > + > +(define-public lua-lgi > + (package > + (name "lua-lgi") > + (version "0.9.1") > + (source > + (origin > + (method url-fetch) > + (uri (string-append > + "https://github.com/pavouk/lgi/archive/" > + version ".tar.gz")) > + (file-name (string-append name "-" version ".tar.gz")) > + (sha256 (base32 "1fmgdl5y4ph3yc6ycg865s3vai1rjkyda61cgqxk6zd13hmznw0c")))) > + (build-system gnu-build-system) > + (arguments > + '(#:phases > + (modify-phases %standard-phases > + (replace 'configure > + (lambda* (#:key inputs #:allow-other-keys) > + ; needs to load cairo dynamically > + (let* ((cairo (string-append > + (assoc-ref inputs "cairo") "/lib" ))) > + (setenv "LD_LIBRARY_PATH" cairo )) > + > + ; FIXME: Skip GTK tests: > + ; gtk3 - can't get it to run with the xorg-server config below > + ; and some non-gtk tests will also fail > + ; gtk2 - lots of functions aren't implemented > + ; We choose gtk2 as the lesser evil and simply skip the test. > + ; as of 22/08/2016 awesome is the only package dependent on lgi but > + ; it doesn't need or interact with gtk using lgi. > + (substitute* "./tests/test.lua" > + (("'gtk.lua',") "-- 'gtk.lua',")) > + ; lua version and therefore install directories are hardcoded > + (substitute* "./lgi/Makefile" > + (("LUA_VERSION=5.1") "LUA_VERSION=5.2")) > + > + ;; There must be a running X server during tests. > + (system (format #f "~a/bin/Xvfb :1 &" (assoc-ref inputs "xorg-server"))) > + (setenv "DISPLAY" ":1")))) > + > + #:make-flags > + (let ((out (assoc-ref %outputs "out"))) > + (list "CC=gcc" > + (string-append "PREFIX=" (assoc-ref %outputs "out")))))) > + > + (inputs > + `(("gobject-introspection" ,gobject-introspection) > + ("glib" ,glib) > + ("pango", pango) > + ("gtk", gtk+-2) > + ("lua" ,lua) > + ("cairo" ,cairo) > + ("libffi" ,libffi) > + ("xorg-server", xorg-server))) > + (native-inputs > + `(("pkg-config" ,pkg-config))) > + (home-page "https://github.com/pavouk/lgi/") > + (synopsis "Lua bridge to GObject based libraries") > + (description > + "LGI is gobject-introspection based dynamic Lua binding to GObject > +based libraries. It allows using GObject-based libraries directly from Lua. > +Notable examples are GTK+, GStreamer and Webkit.") > + (license expat))) > -- > 2.9.3 > > From f75ac65b1eeafe333b486a98cc0bb4ad55d67ee7 Mon Sep 17 00:00:00 2001 > From: doncatnip > Date: Thu, 25 Aug 2016 02:31:07 +0200 > Subject: [PATCH 3/3] gnu: wm: Add awesome-3.5. > > * gnu/packages/wm.scm (awesome-3.5): New variable. > --- > gnu/packages/wm.scm | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 89 insertions(+) > > diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm > index 2cc9f44..ff21da8 100644 > --- a/gnu/packages/wm.scm > +++ b/gnu/packages/wm.scm > @@ -9,6 +9,7 @@ > ;;; Copyright © 2016 Al McElrath > ;;; Copyright © 2016 Carlo Zancanaro > ;;; Copyright © 2016 Ludovic Courtès > +;;; Copyright © 2016 doncatnip > ;;; > ;;; This file is part of GNU Guix. > ;;; > @@ -465,3 +466,91 @@ 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/"))) > + > +(define-public awesome-3.5 > + (package (inherit awesome) > + (version "3.5.9") > + (source (origin > + (method url-fetch) > + (uri (string-append > + "https://awesome.naquadah.org/download/awesome-" > + version ".tar.xz")) > + (sha256 (base32 "0kynair1ykr74b39a4gcm2y24viial64337cf26nhlc7azjbby67")) > + (modules '((guix build utils) > + (srfi srfi-19))) > + (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")))) > + > + (inputs `(("gobject-introspection" ,gobject-introspection) > + ("lua-lgi",lua-lgi) > + ("cairo" ,cairo) > + ("dbus" ,dbus) > + ("gdk-pixbuf" ,gdk-pixbuf) > + ("glib" ,glib) > + ("imlib2" ,imlib2) > + ("libev" ,libev) > + ("libxcb" ,libxcb) > + ("libxcursor" ,libxcursor) > + ("libxdg-basedir" ,libxdg-basedir) > + ("lua" ,lua) > + ("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)) > + (add-before 'configure 'set-lua-paths > + (lambda* (#:key inputs #:allow-other-keys) > + ; needs to load cairo dynamically > + (let* ((cairo (string-append > + (assoc-ref inputs "cairo") "/lib" )) > + (lua-lgi (assoc-ref inputs "lua-lgi") )) > + (setenv "LD_LIBRARY_PATH" cairo ) > + (setenv "LUA_PATH" (string-append > + lua-lgi "/share/lua/5.2/?.lua")) > + (setenv "LUA_CPATH" (string-append > + lua-lgi "/lib/lua/5.2/?.so"))))) > + (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")))) > + (add-after 'install 'wrap > + (lambda* (#:key inputs outputs #:allow-other-keys) > + (let* ((awesome (assoc-ref outputs "out")) > + (cairo (string-append > + (assoc-ref inputs "cairo") "/lib" )) > + (lua-lgi (assoc-ref inputs "lua-lgi") )) > + (wrap-program (string-append awesome "/bin/awesome") > + `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH"))) > + `("LD_LIBRARY_PATH" suffix (, cairo)) > + `("LUA_PATH" suffix (,(string-append > + lua-lgi "/share/lua/5.2/?.lua"))) > + `("LUA_CPATH" suffix (,(string-append > + lua-lgi "/lib/lua/5.2/?.so")))))))))))) > -- > 2.9.3 > -- ng0 For non-prism friendly talk find me on http://www.psyced.org