diff --git a/pkgs/applications/window-managers/awesome/3.4.nix b/pkgs/applications/window-managers/awesome/3.4.nix new file mode 100644 index 00000000000..b21f73ddc54 --- /dev/null +++ b/pkgs/applications/window-managers/awesome/3.4.nix @@ -0,0 +1,50 @@ +{ stdenv, fetchurl, cmake, gperf, imagemagick, pkgconfig, lua +, glib, cairo, pango, imlib2, libxcb, libxdg_basedir, xcbutil +, xcbutilimage, xcbutilkeysyms, xcbutilwm, libpthreadstubs, libXau +, libXdmcp, pixman, doxygen +, libstartup_notification, libev, asciidoc, xmlto, dbus, docbook_xsl +, docbook_xml_dtd_45, libxslt, coreutils, which }: + +let + version = "3.4.13"; +in + +stdenv.mkDerivation rec { + name = "awesome-${version}"; + + src = fetchurl { + url = "http://awesome.naquadah.org/download/awesome-${version}.tar.xz"; + sha256 = "0jhsgb8wdzpfmdyl9fxp2w6app7l6zl8b513z3ff513nvdlxj5hr"; + }; + + buildInputs = [ cmake gperf imagemagick pkgconfig lua glib cairo pango + imlib2 libxcb libxdg_basedir xcbutil xcbutilimage xcbutilkeysyms xcbutilwm + libstartup_notification libev libpthreadstubs libXau libXdmcp pixman doxygen + asciidoc xmlto dbus docbook_xsl docbook_xml_dtd_45 libxslt which ]; + + # We use coreutils for 'env', that will allow then finding 'bash' or 'zsh' in + # the awesome lua code. I prefered that instead of adding 'bash' or 'zsh' as + # dependencies. + prePatch = '' + # Fix the tab completion (supporting bash or zsh) + sed s,/usr/bin/env,${coreutils}/bin/env, -i lib/awful/completion.lua.in + # Remove the 'root' PATH override (I don't know why they have that) + sed /WHOAMI/d -i utils/awsetbg + # Russian manpages fail to be generated: + # [ 56%] Generating manpages/ru/man1/awesome.1.xml + # asciidoc: ERROR: : line 3: name section expected + # asciidoc: FAILED: : line 3: section title expected + # make[2]: *** [manpages/ru/man1/awesome.1.xml] Error 1 + substituteInPlace CMakeLists.txt \ + --replace "set(AWE_MAN_LANGS it es fr de ru)" \ + "set(AWE_MAN_LANGS it es fr de)" + ''; + + meta = { + homepage = http://awesome.naquadah.org/; + description = "Highly configurable, dynamic window manager for X"; + license = "GPLv2+"; + maintainers = with stdenv.lib.maintainers; [viric]; + platforms = with stdenv.lib.platforms; linux; + }; +} diff --git a/pkgs/applications/window-managers/awesome/default.nix b/pkgs/applications/window-managers/awesome/default.nix index 61f2145ff33..b8e1257c5bc 100644 --- a/pkgs/applications/window-managers/awesome/default.nix +++ b/pkgs/applications/window-managers/awesome/default.nix @@ -1,51 +1,72 @@ -{stdenv, fetchurl, cmake, gperf, imagemagick, pkgconfig, lua -, glib, cairo, pango, imlib2, libxcb, libxdg_basedir, xcbutil -, xcbutilimage, xcbutilkeysyms, xcbutilwm, libpthreadstubs, libXau -, libXdmcp, pixman, doxygen -, libstartup_notification, libev, asciidoc, xmlto, dbus, docbook_xsl -, docbook_xml_dtd_45, libxslt, coreutils}: +{ stdenv, fetchurl, lua, cairo, cmake, imagemagick, pkgconfig, gdk_pixbuf +, xlibs, libstartup_notification, libxdg_basedir, libpthreadstubs +, xcb-util-cursor, lgi, makeWrapper, pango, gobjectIntrospection, unclutter +, compton, procps, iproute, coreutils, curl, alsaUtils, findutils, rxvt_unicode +, which, dbus, nettools, git, asciidoc, doxygen }: let - version = "3.4.13"; + version = "3.5.2"; in stdenv.mkDerivation rec { name = "awesome-${version}"; src = fetchurl { - url = "http://awesome.naquadah.org/download/awesome-${version}.tar.xz"; - sha256 = "0jhsgb8wdzpfmdyl9fxp2w6app7l6zl8b513z3ff513nvdlxj5hr"; + url = "http://awesome.naquadah.org/download/awesome-${version}.tar.xz"; + sha256 = "11iya03yzr8sa3snmywlw22ayg0d3dcy49pi8fz0bycf5aq6b38q"; }; - - buildInputs = [ cmake gperf imagemagick pkgconfig lua glib cairo pango - imlib2 libxcb libxdg_basedir xcbutil xcbutilimage xcbutilkeysyms xcbutilwm - libstartup_notification libev libpthreadstubs libXau libXdmcp pixman doxygen - asciidoc xmlto dbus docbook_xsl docbook_xml_dtd_45 libxslt ]; - # We use coreutils for 'env', that will allow then finding 'bash' or 'zsh' in - # the awesome lua code. I prefered that instead of adding 'bash' or 'zsh' as - # dependencies. - prePatch = '' - # Fix the tab completion (supporting bash or zsh) - sed s,/usr/bin/env,${coreutils}/bin/env, -i lib/awful/completion.lua.in - # Remove the 'root' PATH override (I don't know why they have that) - sed /WHOAMI/d -i utils/awsetbg - # Russian manpages fail to be generated: - # [ 56%] Generating manpages/ru/man1/awesome.1.xml - # asciidoc: ERROR: : line 3: name section expected - # asciidoc: FAILED: : line 3: section title expected - # make[2]: *** [manpages/ru/man1/awesome.1.xml] Error 1 - substituteInPlace CMakeLists.txt \ - --replace "set(AWE_MAN_LANGS it es fr de ru)" \ - "set(AWE_MAN_LANGS it es fr de)" - ''; - - meta = { - homepage = http://awesome.naquadah.org/; + meta = with stdenv.lib; { description = "Highly configurable, dynamic window manager for X"; - license = "GPLv2+"; - maintainers = with stdenv.lib.maintainers; [viric]; - platforms = with stdenv.lib.platforms; linux; + homepage = http://awesome.naquadah.org/; + license = "GPLv2+"; + maintainers = with maintainers; [ lovek323 ]; + platforms = platforms.linux; }; -} + + buildInputs = [ + asciidoc + cairo + cmake + dbus + doxygen + gdk_pixbuf + git + imagemagick + lgi + libpthreadstubs + libstartup_notification + libxdg_basedir + lua + makeWrapper + nettools + pango + pkgconfig + xcb-util-cursor + xlibs.libXau + xlibs.libXdmcp + xlibs.libxcb + xlibs.xcbutil + xlibs.xcbutilimage + xlibs.xcbutilkeysyms + xlibs.xcbutilrenderutil + xlibs.xcbutilwm + ]; + AWESOME_IGNORE_LGI = 1; + + LUA_CPATH = "${lgi}/lib/lua/5.1/?.so"; + LUA_PATH = "${lgi}/share/lua/5.1/?.lua;${lgi}/share/lua/5.1/lgi/?.lua"; + + postInstall = '' + wrapProgram $out/bin/awesome \ + --set LUA_CPATH '"${lgi}/lib/lua/5.1/?.so"' \ + --set LUA_PATH '"${lgi}/share/lua/5.1/?.lua;${lgi}/share/lua/5.1/lgi/?.lua"' \ + --set GI_TYPELIB_PATH "${pango}/lib/girepository-1.0" \ + --set LD_LIBRARY_PATH "${cairo}/lib:${pango}/lib:${gobjectIntrospection}/lib" \ + --prefix PATH : "${compton}/bin:${unclutter}/bin:${procps}/bin:${iproute}/sbin:${coreutils}/bin:${curl}/bin:${alsaUtils}/bin:${findutils}/bin:${rxvt_unicode}/bin" + + wrapProgram $out/bin/awesome-client \ + --prefix PATH : "${which}/bin" + ''; +} diff --git a/pkgs/development/libraries/lgi/default.nix b/pkgs/development/libraries/lgi/default.nix new file mode 100644 index 00000000000..663185831f6 --- /dev/null +++ b/pkgs/development/libraries/lgi/default.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchurl, pkgconfig, gobjectIntrospection, lua, glib }: + +stdenv.mkDerivation { + name = "lgi-0.7.2"; + + src = fetchurl { + url = https://github.com/pavouk/lgi/archive/0.7.2.tar.gz; + sha256 = "0ihl7gg77b042vsfh0k7l53b7sl3d7mmrq8ns5lrsf71dzrr19bn"; + }; + + meta = with stdenv.lib; { + description = "Gobject-introspection based dynamic Lua binding to GObject based libraries"; + homepage = https://github.com/pavouk/lgi; + license = "custom"; + maintainers = with maintainers; [ lovek323 ]; + platforms = platforms.unix; + }; + + buildInputs = [ glib gobjectIntrospection lua pkgconfig ]; + + preBuild = '' + sed -i "s|/usr/local|$out|" lgi/Makefile + ''; +} diff --git a/pkgs/development/libraries/xcb-util-cursor/default.nix b/pkgs/development/libraries/xcb-util-cursor/default.nix new file mode 100644 index 00000000000..a0e71724fb9 --- /dev/null +++ b/pkgs/development/libraries/xcb-util-cursor/default.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchurl, bashInteractive, autoconf, automake, libtool, pkgconfig +, git, xlibs, gnum4, libxcb, gperf }: + +stdenv.mkDerivation rec { + name = "xcb-util-cursor-0.1.1"; + + src = fetchurl { + url = "http://xcb.freedesktop.org/dist/xcb-util-cursor-0.1.1.tar.gz"; + sha256 = "0lkjbcml305imyzr80yb8spjvq6y83v2allk5gc9plkv39zag29z"; + }; + + meta = with stdenv.lib; { + description = "XCB cursor library (libxcursor port)"; + homepage = http://cgit.freedesktop.org/xcb/util-cursor; + license = licenses.mit; + maintainer = with maintainers; [ lovek323 ]; + platforms = platforms.unix; + }; + + buildInputs = [ + autoconf + automake + gnum4 + gperf + libtool + libxcb + pkgconfig + xlibs.utilmacros + xlibs.xcbutilimage + xlibs.xcbutilrenderutil + ]; + + configurePhase = '' + sed -i '15 i\ + LT_INIT' configure.ac + ${bashInteractive}/bin/bash autogen.sh --prefix="$out" + ''; +} diff --git a/pkgs/development/libraries/xcb-util-cursor/m4/ax_compare_version.m4 b/pkgs/development/libraries/xcb-util-cursor/m4/ax_compare_version.m4 new file mode 100644 index 00000000000..e22b50fd9fd --- /dev/null +++ b/pkgs/development/libraries/xcb-util-cursor/m4/ax_compare_version.m4 @@ -0,0 +1,174 @@ +# =========================================================================== +# http://autoconf-archive.cryp.to/ax_compare_version.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_COMPARE_VERSION(VERSION_A, OP, VERSION_B, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) +# +# DESCRIPTION +# +# This macro compares two version strings. Due to the various number of +# minor-version numbers that can exist, and the fact that string +# comparisons are not compatible with numeric comparisons, this is not +# necessarily trivial to do in a autoconf script. This macro makes doing +# these comparisons easy. +# +# The six basic comparisons are available, as well as checking equality +# limited to a certain number of minor-version levels. +# +# The operator OP determines what type of comparison to do, and can be one +# of: +# +# eq - equal (test A == B) +# ne - not equal (test A != B) +# le - less than or equal (test A <= B) +# ge - greater than or equal (test A >= B) +# lt - less than (test A < B) +# gt - greater than (test A > B) +# +# Additionally, the eq and ne operator can have a number after it to limit +# the test to that number of minor versions. +# +# eq0 - equal up to the length of the shorter version +# ne0 - not equal up to the length of the shorter version +# eqN - equal up to N sub-version levels +# neN - not equal up to N sub-version levels +# +# When the condition is true, shell commands ACTION-IF-TRUE are run, +# otherwise shell commands ACTION-IF-FALSE are run. The environment +# variable 'ax_compare_version' is always set to either 'true' or 'false' +# as well. +# +# Examples: +# +# AX_COMPARE_VERSION([3.15.7],[lt],[3.15.8]) +# AX_COMPARE_VERSION([3.15],[lt],[3.15.8]) +# +# would both be true. +# +# AX_COMPARE_VERSION([3.15.7],[eq],[3.15.8]) +# AX_COMPARE_VERSION([3.15],[gt],[3.15.8]) +# +# would both be false. +# +# AX_COMPARE_VERSION([3.15.7],[eq2],[3.15.8]) +# +# would be true because it is only comparing two minor versions. +# +# AX_COMPARE_VERSION([3.15.7],[eq0],[3.15]) +# +# would be true because it is only comparing the lesser number of minor +# versions of the two values. +# +# Note: The characters that separate the version numbers do not matter. An +# empty string is the same as version 0. OP is evaluated by autoconf, not +# configure, so must be a string, not a variable. +# +# The author would like to acknowledge Guido Draheim whose advice about +# the m4_case and m4_ifvaln functions make this macro only include the +# portions necessary to perform the specific comparison specified by the +# OP argument in the final configure script. +# +# LICENSE +# +# Copyright (c) 2008 Tim Toolan +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. + +dnl ######################################################################### +AC_DEFUN([AX_COMPARE_VERSION], [ + AC_PROG_AWK + + # Used to indicate true or false condition + ax_compare_version=false + + # Convert the two version strings to be compared into a format that + # allows a simple string comparison. The end result is that a version + # string of the form 1.12.5-r617 will be converted to the form + # 0001001200050617. In other words, each number is zero padded to four + # digits, and non digits are removed. + AS_VAR_PUSHDEF([A],[ax_compare_version_A]) + A=`echo "$1" | sed -e 's/\([[0-9]]*\)/Z\1Z/g' \ + -e 's/Z\([[0-9]]\)Z/Z0\1Z/g' \ + -e 's/Z\([[0-9]][[0-9]]\)Z/Z0\1Z/g' \ + -e 's/Z\([[0-9]][[0-9]][[0-9]]\)Z/Z0\1Z/g' \ + -e 's/[[^0-9]]//g'` + + AS_VAR_PUSHDEF([B],[ax_compare_version_B]) + B=`echo "$3" | sed -e 's/\([[0-9]]*\)/Z\1Z/g' \ + -e 's/Z\([[0-9]]\)Z/Z0\1Z/g' \ + -e 's/Z\([[0-9]][[0-9]]\)Z/Z0\1Z/g' \ + -e 's/Z\([[0-9]][[0-9]][[0-9]]\)Z/Z0\1Z/g' \ + -e 's/[[^0-9]]//g'` + + dnl # In the case of le, ge, lt, and gt, the strings are sorted as necessary + dnl # then the first line is used to determine if the condition is true. + dnl # The sed right after the echo is to remove any indented white space. + m4_case(m4_tolower($2), + [lt],[ + ax_compare_version=`echo "x$A +x$B" | sed 's/^ *//' | sort -r | sed "s/x${A}/false/;s/x${B}/true/;1q"` + ], + [gt],[ + ax_compare_version=`echo "x$A +x$B" | sed 's/^ *//' | sort | sed "s/x${A}/false/;s/x${B}/true/;1q"` + ], + [le],[ + ax_compare_version=`echo "x$A +x$B" | sed 's/^ *//' | sort | sed "s/x${A}/true/;s/x${B}/false/;1q"` + ], + [ge],[ + ax_compare_version=`echo "x$A +x$B" | sed 's/^ *//' | sort -r | sed "s/x${A}/true/;s/x${B}/false/;1q"` + ],[ + dnl Split the operator from the subversion count if present. + m4_bmatch(m4_substr($2,2), + [0],[ + # A count of zero means use the length of the shorter version. + # Determine the number of characters in A and B. + ax_compare_version_len_A=`echo "$A" | $AWK '{print(length)}'` + ax_compare_version_len_B=`echo "$B" | $AWK '{print(length)}'` + + # Set A to no more than B's length and B to no more than A's length. + A=`echo "$A" | sed "s/\(.\{$ax_compare_version_len_B\}\).*/\1/"` + B=`echo "$B" | sed "s/\(.\{$ax_compare_version_len_A\}\).*/\1/"` + ], + [[0-9]+],[ + # A count greater than zero means use only that many subversions + A=`echo "$A" | sed "s/\(\([[0-9]]\{4\}\)\{m4_substr($2,2)\}\).*/\1/"` + B=`echo "$B" | sed "s/\(\([[0-9]]\{4\}\)\{m4_substr($2,2)\}\).*/\1/"` + ], + [.+],[ + AC_WARNING( + [illegal OP numeric parameter: $2]) + ],[]) + + # Pad zeros at end of numbers to make same length. + ax_compare_version_tmp_A="$A`echo $B | sed 's/./0/g'`" + B="$B`echo $A | sed 's/./0/g'`" + A="$ax_compare_version_tmp_A" + + # Check for equality or inequality as necessary. + m4_case(m4_tolower(m4_substr($2,0,2)), + [eq],[ + test "x$A" = "x$B" && ax_compare_version=true + ], + [ne],[ + test "x$A" != "x$B" && ax_compare_version=true + ],[ + AC_WARNING([illegal OP parameter: $2]) + ]) + ]) + + AS_VAR_POPDEF([A])dnl + AS_VAR_POPDEF([B])dnl + + dnl # Execute ACTION-IF-TRUE / ACTION-IF-FALSE. + if test "$ax_compare_version" = "true" ; then + m4_ifvaln([$4],[$4],[:])dnl + m4_ifvaln([$5],[else $5])dnl + fi +]) dnl AX_COMPARE_VERSION diff --git a/pkgs/development/libraries/xcb-util-cursor/m4/xcb_util_common.m4 b/pkgs/development/libraries/xcb-util-cursor/m4/xcb_util_common.m4 new file mode 100644 index 00000000000..f9463d37fca --- /dev/null +++ b/pkgs/development/libraries/xcb-util-cursor/m4/xcb_util_common.m4 @@ -0,0 +1,44 @@ +# XCB_UTIL_COMMON(xcb-required-version, xcb-proto-required-version) +# ----------------------------------------------------------------- +# +# Defines default options for xcb-util libraries. xorg/util/macros >= +# 1.6.0 is required for cross-platform compiler flags and to build +# library documentation. +# +AC_DEFUN([XCB_UTIL_COMMON], [ +m4_ifndef([AX_COMPARE_VERSION], + [m4_fatal([could not find AX_COMPARE_VERSION in macros search path])]) + +AC_REQUIRE([AC_PROG_LIBTOOL]) + +# Define header files and pkgconfig paths +xcbincludedir='${includedir}/xcb' +AC_SUBST(xcbincludedir) +pkgconfigdir='${libdir}/pkgconfig' +AC_SUBST(pkgconfigdir) + +# Check xcb version +PKG_CHECK_MODULES(XCB, xcb >= [$1]) + +# Check version of xcb-proto that xcb was compiled against +xcbproto_required=[$2] + +AC_MSG_CHECKING([whether libxcb was compiled against xcb-proto >= $xcbproto_required]) +xcbproto_version=`$PKG_CONFIG --variable=xcbproto_version xcb` +AX_COMPARE_VERSION([$xcbproto_version],[ge],[$xcbproto_required], xcbproto_ok="yes", + xcbproto_ok="no") +AC_MSG_RESULT([$xcbproto_ok]) + +if test $xcbproto_ok = no; then + AC_MSG_ERROR([libxcb was compiled against xcb-proto $xcbproto_version; it needs to be compiled against version $xcbproto_required or higher]) +fi + +# Call macros from Xorg util-macros +m4_ifndef([XORG_MACROS_VERSION], + [m4_fatal([must install xorg-macros 1.6.0 or later before running autoconf/autogen])]) + +XORG_MACROS_VERSION([1.6.0]) +XORG_DEFAULT_OPTIONS +XORG_ENABLE_DEVEL_DOCS +XORG_WITH_DOXYGEN +]) # XCB_UTIL_COMMON diff --git a/pkgs/development/libraries/xcb-util-cursor/m4/xcb_util_m4_with_include_path.m4 b/pkgs/development/libraries/xcb-util-cursor/m4/xcb_util_m4_with_include_path.m4 new file mode 100644 index 00000000000..a3ddce4a706 --- /dev/null +++ b/pkgs/development/libraries/xcb-util-cursor/m4/xcb_util_m4_with_include_path.m4 @@ -0,0 +1,24 @@ +# XCB_UTIL_M4_WITH_INCLUDE_PATH +# ------------------------------ +# +# This macro attempts to locate an m4 macro processor which supports +# -I option and is only useful for modules relying on M4 in order to +# expand macros in source code files. +# +# M4: variable holding the path to an usable m4 program. +# +# This macro requires Autoconf 2.62 or later as it is relying upon +# AC_PATH_PROGS_FEATURE_CHECK macro. NOTE: As soon as the minimum +# required version of Autoconf for Xorg is bumped to 2.62, this macro +# is supposed to be shipped with xorg/util/macros. +# +AC_DEFUN([XCB_UTIL_M4_WITH_INCLUDE_PATH], [ +AC_CACHE_CHECK([for m4 that supports -I option], [ac_cv_path_M4], + [AC_PATH_PROGS_FEATURE_CHECK([M4], [m4 gm4], + [[$ac_path_M4 -I. /dev/null > /dev/null 2>&1 && \ + ac_cv_path_M4=$ac_path_M4 ac_path_M4_found=:]], + [AC_MSG_ERROR([could not find m4 that supports -I option])], + [$PATH:/usr/gnu/bin])]) + +AC_SUBST([M4], [$ac_cv_path_M4]) +]) # XCB_UTIL_M4_WITH_INCLUDE_PATH diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index bc6c4f4e858..0a6c2cd289f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4612,6 +4612,10 @@ let libpng = libpng12; }; + lgi = callPackage ../development/libraries/lgi { + lua = lua5_1; + }; + lib3ds = callPackage ../development/libraries/lib3ds { }; libaacs = callPackage ../development/libraries/libaacs { }; @@ -5855,6 +5859,8 @@ let xbase = callPackage ../development/libraries/xbase { }; + xcb-util-cursor = callPackage ../development/libraries/xcb-util-cursor { }; + xineLib = callPackage ../development/libraries/xine-lib { }; xautolock = callPackage ../misc/screensavers/xautolock { }; @@ -7420,10 +7426,15 @@ let avxsynth = callPackage ../applications/video/avxsynth { }; - awesome = callPackage ../applications/window-managers/awesome { + awesome-3-4 = callPackage ../applications/window-managers/awesome/3.4.nix { lua = lua5; cairo = cairo.override { xcbSupport = true; }; }; + awesome-3-5 = callPackage ../applications/window-managers/awesome { + lua = lua5_1; + cairo = cairo.override { xcbSupport = true; }; + }; + awesome = awesome-3-5; baresip = callPackage ../applications/networking/instant-messengers/baresip {};