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:37:43 +0000 Message-ID: <87wpj5gpeg.fsf@we.make.ritual.n0.is> References: <20160825030933.06c8d523@gmail.com> <87inup42zl.fsf@we.make.ritual.n0.is> 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]:53838) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bcr6e-0007R0-UN for guix-devel@gnu.org; Thu, 25 Aug 2016 05:37:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bcr6Z-0005CQ-VX for guix-devel@gnu.org; Thu, 25 Aug 2016 05:37:51 -0400 Received: from mithlond.libertad.in-berlin.de ([2001:67c:1400:2490::1]:56963 helo=beleriand.n0.is) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bcr6Z-0005C5-Kt for guix-devel@gnu.org; Thu, 25 Aug 2016 05:37:47 -0400 In-Reply-To: <87inup42zl.fsf@we.make.ritual.n0.is> 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 ng0 writes: > 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 >> Works for me (written from inside a running awesome-3.5.9). -- ng0 For non-prism friendly talk find me on http://www.psyced.org