Merge pull request #31532 from romildo/upd.enlightenment

enlightenment: 0.21.10 -> 0.22.0
This commit is contained in:
Samuel Leathers 2017-11-12 21:44:54 -05:00 committed by GitHub
commit e0483a59cc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 60 additions and 30 deletions

View File

@ -61,7 +61,7 @@ in
'';
}];
security.wrappers.e_freqset.source = "${e.enlightenment.out}/bin/e_freqset";
security.wrappers = (import (builtins.toPath "${e.enlightenment}/e-wrappers.nix")).security.wrappers;
environment.etc = singleton
{ source = xcfg.xkbDir;

View File

@ -1,51 +1,56 @@
{ stdenv, fetchurl, pkgconfig, efl, xcbutilkeysyms, libXrandr, libXdmcp,
libxcb, libffi, pam, alsaLib, luajit, bzip2, libpthreadstubs, gdbm, libcap,
mesa_glu, xkeyboard_config, pcre }:
{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, efl,
xcbutilkeysyms, libXrandr, libXdmcp, libxcb, libffi, pam, alsaLib,
luajit, bzip2, libpthreadstubs, gdbm, libcap, mesa_glu,
xkeyboard_config, pcre
}:
stdenv.mkDerivation rec {
name = "enlightenment-${version}";
version = "0.21.10";
version = "0.22.0";
src = fetchurl {
url = "http://download.enlightenment.org/rel/apps/enlightenment/${name}.tar.xz";
sha256 = "053zmlpjx45xg2rbbxyjh0phhgbsnmsnypzz2bib545klp51bfcv";
sha256 = "0xmrvryr35idd7fyqgshfhvy2053bs3vwrxbx681pi6rgpdvjghv";
};
nativeBuildInputs = [ (pkgconfig.override { vanilla = true; }) ];
nativeBuildInputs = [
meson
ninja
(pkgconfig.override { vanilla = true; })
gettext
];
buildInputs = [
efl libXdmcp libxcb xcbutilkeysyms libXrandr libffi pam alsaLib
luajit bzip2 libpthreadstubs gdbm pcre
efl
libXdmcp
libxcb
xcbutilkeysyms
libXrandr
libffi
pam
alsaLib
luajit
bzip2
libpthreadstubs
gdbm
pcre
] ++
stdenv.lib.optionals stdenv.isLinux [ libcap ];
preConfigure = ''
export USER_SESSION_DIR=$prefix/lib/systemd/user
# Instead of setting owner to root and permissions to setuid/setgid
# (which is not allowed for files in /nix/store) of some
# enlightenment programs, the file $out/e-wrappers.nix is created,
# containing the needed configuration for that purpose. It can be
# used in the enlightenment module.
patches = [ ./enlightenment.suid-exes.patch ];
substituteInPlace src/modules/xkbswitch/e_mod_parse.c \
--replace "/usr/share/X11/xkb/rules/xorg.lst" "${xkeyboard_config}/share/X11/xkb/rules/base.lst"
substituteInPlace "src/bin/e_import_config_dialog.c" \
--replace "e_prefix_bin_get()" "\"${efl}/bin\""
'';
mesonFlags = [ "-Dsystemdunitdir=lib/systemd/user" ];
enableParallelBuilding = true;
# this is a hack and without this cpufreq module is not working. does the following:
# 1. moves the "freqset" binary to "e_freqset",
# 2. linkes "e_freqset" to enlightenment/bin so that,
# 3. wrappers.setuid detects it and places wrappers in /run/wrappers/bin/e_freqset,
# 4. and finally, links /run/wrappers/bin/e_freqset to original destination where enlightenment wants it
postInstall = ''
export CPUFREQ_DIRPATH=`readlink -f $out/lib/enlightenment/modules/cpufreq/linux-gnu-*`;
mv $CPUFREQ_DIRPATH/freqset $CPUFREQ_DIRPATH/e_freqset
ln -sv $CPUFREQ_DIRPATH/e_freqset $out/bin/e_freqset
ln -sv /run/wrappers/bin/e_freqset $CPUFREQ_DIRPATH/freqset
'';
meta = with stdenv.lib; {
description = "The Compositing Window Manager and Desktop Shell";
homepage = http://enlightenment.org/;
homepage = https://www.enlightenment.org;
license = licenses.bsd2;
platforms = platforms.linux;
maintainers = with maintainers; [ matejc tstrobel ftrvxmtrx romildo ];

View File

@ -0,0 +1,25 @@
--- enlightenment-0.22.0.orig/meson/meson_inst.sh 2017-09-25 10:55:43.000000000 -0300
+++ enlightenment-0.22.0/meson/meson_inst.sh 2017-11-12 09:04:33.356050746 -0200
@@ -1,6 +1,19 @@
-#!/bin/sh
+#!/bin/sh -x
+
+w="$out"/e-wrappers.nix
+
+echo "# Wrappers for programs installed by enlightenment that should be setuid" > $w
+echo "" >> $w
+echo "{" >> $w
+echo " security.wrappers = {" >> $w
for x in "$@" ; do
- chown root "$DESTDIR/$x"
- chmod a=rx,u+xs "$DESTDIR/$x"
+ f="$DESTDIR/$x";
+ b=$(basename "$f".orig)
+ mv -v "$f"{,.orig}
+ ln -sv /run/wrappers/bin/"$b" "$f"
+ echo " \"$b\".source = \"$f\";" >> $w
done
+
+echo " };" >> $w
+echo "}" >> $w