summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/enlightenment.scm39
-rw-r--r--gnu/packages/patches/enlightenment-fix-setuid-path.patch223
-rw-r--r--gnu/services/desktop.scm29
3 files changed, 68 insertions, 223 deletions
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index 38e5dbf1cb..08a52f9d92 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -292,7 +292,7 @@ Libraries with some extra bells and whistles.")
 (define-public enlightenment
   (package
     (name "enlightenment")
-    (version "0.23.1")
+    (version "0.24.0")
     (source (origin
               (method url-fetch)
               (uri
@@ -300,27 +300,27 @@ Libraries with some extra bells and whistles.")
                               "enlightenment/enlightenment-" version ".tar.xz"))
               (sha256
                (base32
-                "0d1cyl07w9pvi2pf029kablazks2q9aislzl46b6fq5m1465jc75"))
+                "01053hxdmyjfb6gmz1pqmw0llrgc4356np515h5vsqcn59mhvfz7"))
               (patches (search-patches "enlightenment-fix-setuid-path.patch"))))
     (build-system meson-build-system)
     (arguments
-     `(#:configure-flags '("-Dsystemd=false")
+     `(#:configure-flags
+       (let ((efl (assoc-ref %build-inputs "efl")))
+         (list "-Dsystemd=false"
+               "-Dpackagekit=false"
+               (string-append "-Dedje-cc=" efl "/bin/edje_cc")
+               (string-append "-Deldbus-codegen=" efl "/bin/eldbus-codegen")
+               (string-append "-Deet=" efl "/bin/eet")))
        #:phases
        (modify-phases %standard-phases
          (delete 'bootstrap) ; We don't want to run the autogen script.
-         (add-after 'unpack 'fix-dot-desktop-creation
-           (lambda _
-             (substitute* "data/session/meson.build"
-               (("HAVE_WAYLAND'.*") "HAVE_WAYLAND') == true\n"))
-             #t))
          (add-before 'configure 'set-system-actions
            (lambda* (#:key inputs #:allow-other-keys)
-            (setenv "HOME" "/tmp")
+             (setenv "HOME" "/tmp")
              (let ((xkeyboard (assoc-ref inputs "xkeyboard-config"))
                    (setxkbmap (assoc-ref inputs "setxkbmap"))
                    (utils     (assoc-ref inputs "util-linux"))
                    (libc      (assoc-ref inputs "libc"))
-                   (bluez     (assoc-ref inputs "bluez"))
                    (bc        (assoc-ref inputs "bc"))
                    (efl       (assoc-ref inputs "efl")))
                ;; We need to patch the path to 'base.lst' to be able
@@ -337,23 +337,22 @@ Libraries with some extra bells and whistles.")
                                   "src/modules/conf_intl/e_int_config_intl.c"
                                   "src/modules/wizard/page_010.c")
                  (("locale -a") (string-append libc "/bin/locale -a")))
-               (substitute* "src/bin/e_import_config_dialog.c"
-                 (("%s/edje_cc -v %s %s %s\", e_prefix_bin_get\\(\\)")
-                  (string-append efl "/bin/edje_cc -v %s %s %s\"")))
                (substitute* "src/modules/everything/evry_plug_apps.c"
                  (("/usr/bin/") ""))
+               (substitute* '("src/bin/e_sys_main.c"
+                              "src/bin/e_util_suid.h")
+                 (("PATH=/bin:/usr/bin:/sbin:/usr/sbin")
+                  (string-append "PATH=/run/setuid-programs:"
+                                 "/run/current-system/profile/bin:"
+                                 "/run/current-system/profile/sbin")))
                (substitute* "src/modules/everything/evry_plug_calc.c"
                  (("bc -l") (string-append bc "/bin/bc -l")))
                (substitute* "data/etc/meson.build"
                  (("/bin/mount") "/run/setuid-programs/mount")
                  (("/bin/umount") "/run/setuid-programs/umount")
-                 (("/usr/bin/eject") (string-append utils "/bin/eject"))
-                 (("/usr/bin/l2ping") (string-append bluez "/bin/l2ling"))
-                 (("/bin/rfkill") (string-append utils "/sbin/rfkill"))
-                 (("SUSPEND   = ''") "SUSPEND   = '/run/current-system/profile/bin/loginctl suspend'")
-                 (("HIBERNATE = ''") "HIBERNATE = '/run/current-system/profile/bin/loginctl hibernate'")
-                 (("/sbin/shutdown -h now") "/run/current-system/profile/bin/loginctl poweroff now")
-                 (("/sbin/shutdown -r now") "/run/current-system/profile/bin/loginctl reboot now"))
+                 (("/usr/bin/eject") (string-append utils "/bin/eject")))
+               (substitute* "src/bin/system/e_system_power.c"
+                 (("systemctl") "loginctl"))
                #t))))))
     (native-inputs
      `(("gettext" ,gettext-minimal)
diff --git a/gnu/packages/patches/enlightenment-fix-setuid-path.patch b/gnu/packages/patches/enlightenment-fix-setuid-path.patch
index c48f18c8ec..f2930845ba 100644
--- a/gnu/packages/patches/enlightenment-fix-setuid-path.patch
+++ b/gnu/packages/patches/enlightenment-fix-setuid-path.patch
@@ -1,34 +1,31 @@
 diff --git a/src/bin/e_auth.c b/src/bin/e_auth.c
-index 00b0e5d84..98ab4518f 100644
+index 8b0aa6641..f15d2c2a2 100644
 --- a/src/bin/e_auth.c
 +++ b/src/bin/e_auth.c
-@@ -9,8 +9,7 @@ e_auth_begin(char *passwd)
+@@ -11,9 +11,7 @@ e_auth_begin(char *passwd)
+    pwlen = strlen(passwd);
+    if (pwlen == 0) goto out;
  
-    if (strlen(passwd) == 0) goto out;
- 
--   snprintf(buf, sizeof(buf), "%s/enlightenment/utils/enlightenment_ckpasswd",
+-   snprintf(buf, sizeof(buf),
+-            "%s/enlightenment/utils/enlightenment_ckpasswd pw",
 -            e_prefix_lib_get());
 +   snprintf(buf, sizeof(buf), "/run/setuid-programs/enlightenment_ckpasswd");
+    exe = ecore_exe_pipe_run(buf, ECORE_EXE_PIPE_WRITE, NULL);
+    if (!exe) goto out;
+    if (ecore_exe_send(exe, passwd, pwlen) != EINA_TRUE) goto out;
+@@ -46,9 +44,7 @@ e_auth_polkit_begin(char *passwd, const char *cookie, unsigned int uid)
+    pwlen = strlen(passwd);
+    if (pwlen == 0) goto out;
  
+-   snprintf(buf, sizeof(buf),
+-            "%s/enlightenment/utils/enlightenment_ckpasswd pk",
+-            e_prefix_lib_get());
++   snprintf(buf, sizeof(buf), "/run/setuid-programs/enlightenment_ckpasswd");
     exe = ecore_exe_pipe_run(buf, ECORE_EXE_PIPE_WRITE, NULL);
-    if (ecore_exe_send(exe, passwd, strlen(passwd)) != EINA_TRUE) goto out;
-diff --git a/src/bin/e_backlight.c b/src/bin/e_backlight.c
-index 2bced6766..208e583ba 100644
---- a/src/bin/e_backlight.c
-+++ b/src/bin/e_backlight.c
-@@ -521,8 +521,8 @@ _bl_sys_level_set(double val)
-      }
- //   fprintf(stderr, "SET: %1.3f\n", val);
-    snprintf(buf, sizeof(buf),
--            "%s/enlightenment/utils/enlightenment_backlight %i %s",
--            e_prefix_lib_get(), (int)(val * 1000.0), bl_sysval);
-+            "/run/setuid-programs/enlightenment_backlight %i %s",
-+            (int)(val * 1000.0), bl_sysval);
-    bl_sys_set_exe = ecore_exe_run(buf, NULL);
- }
- #endif  // HAVE_EEZE || __FreeBSD_kernel__
+    if (!exe) goto out;
+    snprintf(buf, sizeof(buf), "%s %u %s", cookie, uid, passwd);
 diff --git a/src/bin/e_fm/e_fm_main_eeze.c b/src/bin/e_fm/e_fm_main_eeze.c
-index 0fcffa249..c1921121d 100644
+index 9b10b3117..74e6b72ad 100644
 --- a/src/bin/e_fm/e_fm_main_eeze.c
 +++ b/src/bin/e_fm/e_fm_main_eeze.c
 @@ -318,7 +318,7 @@ _e_fm_main_eeze_volume_eject(E_Volume *v)
@@ -58,163 +55,29 @@ index 0fcffa249..c1921121d 100644
          eeze_disk_mount_wrapper_set(v->disk, buf2);
       }
     v->guard = ecore_timer_loop_add(E_FM_MOUNT_TIMEOUT, (Ecore_Task_Cb)_e_fm_main_eeze_vol_mount_timeout, v);
-diff --git a/src/bin/e_sys.c b/src/bin/e_sys.c
-index 671fbcd9a..90ee04cf1 100644
---- a/src/bin/e_sys.c
-+++ b/src/bin/e_sys.c
-@@ -702,20 +702,16 @@ _e_sys_cb_timer(void *data EINA_UNUSED)
- 
-    e_init_status_set(_("Checking System Permissions"));
-    snprintf(buf, sizeof(buf),
--            "%s/enlightenment/utils/enlightenment_sys -t halt",
--            e_prefix_lib_get());
-+            "/run/setuid-programs/enlightenment_sys -t halt");
-    _e_sys_halt_check_exe = ecore_exe_run(buf, NULL);
-    snprintf(buf, sizeof(buf),
--            "%s/enlightenment/utils/enlightenment_sys -t reboot",
--            e_prefix_lib_get());
-+            "/run/setuid-programs/enlightenment_sys -t reboot");
-    _e_sys_reboot_check_exe = ecore_exe_run(buf, NULL);
-    snprintf(buf, sizeof(buf),
--            "%s/enlightenment/utils/enlightenment_sys -t suspend",
--            e_prefix_lib_get());
-+            "/run/setuid-programs/enlightenment_sys -t suspend");
-    _e_sys_suspend_check_exe = ecore_exe_run(buf, NULL);
-    snprintf(buf, sizeof(buf),
--            "%s/enlightenment/utils/enlightenment_sys -t hibernate",
--            e_prefix_lib_get());
-+            "/run/setuid-programs/enlightenment_sys -t hibernate");
-    _e_sys_hibernate_check_exe = ecore_exe_run(buf, NULL);
-    return ECORE_CALLBACK_CANCEL;
- }
-@@ -1134,8 +1130,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
-         if (e_util_immortal_check()) return 0;
-         e_fm2_die();
-         snprintf(buf, sizeof(buf),
--                 "%s/enlightenment/utils/enlightenment_sys halt",
--                 e_prefix_lib_get());
-+                 "/run/setuid-programs/enlightenment_sys halt");
-         if (_e_sys_exe)
-           {
-              if ((ecore_time_get() - _e_sys_begin_time) > 2.0)
-@@ -1170,8 +1165,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
-         if (e_util_immortal_check()) return 0;
-         e_fm2_die();
-         snprintf(buf, sizeof(buf),
--                 "%s/enlightenment/utils/enlightenment_sys reboot",
--                 e_prefix_lib_get());
-+                 "/run/setuid-programs/enlightenment_sys reboot");
-         if (_e_sys_exe)
-           {
-              if ((ecore_time_get() - _e_sys_begin_time) > 2.0)
-@@ -1204,8 +1198,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
-       case E_SYS_SUSPEND:
-         /* /etc/acpi/sleep.sh force */
-         snprintf(buf, sizeof(buf),
--                 "%s/enlightenment/utils/enlightenment_sys suspend",
--                 e_prefix_lib_get());
-+                 "/run/setuid-programs/enlightenment_sys suspend");
-         if (_e_sys_exe)
-           {
-              if ((ecore_time_get() - _e_sys_begin_time) > 2.0)
-@@ -1265,8 +1258,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
-       case E_SYS_HIBERNATE:
-         /* /etc/acpi/hibernate.sh force */
-         snprintf(buf, sizeof(buf),
--                 "%s/enlightenment/utils/enlightenment_sys hibernate",
--                 e_prefix_lib_get());
-+                 "/run/setuid-programs/enlightenment_sys hibernate");
-         if (_e_sys_exe)
-           {
-              if ((ecore_time_get() - _e_sys_begin_time) > 2.0)
-diff --git a/src/modules/bluez4/e_mod_main.c b/src/modules/bluez4/e_mod_main.c
-index 4b5148634..47d34b07f 100644
---- a/src/modules/bluez4/e_mod_main.c
-+++ b/src/modules/bluez4/e_mod_main.c
-@@ -49,8 +49,8 @@ _ebluez_l2ping_poller(void *data EINA_UNUSED)
- 
-    if (tmp)
-      {
--        eina_strbuf_append_printf(buf, "%s/enlightenment/utils/enlightenment_sys l2ping %s",
--				  e_prefix_lib_get(), tmp);
-+        eina_strbuf_append_printf(buf, "/run/setuid-programs/enlightenment_sys l2ping %s",
-+				  tmp);
- 	autolock_exe = ecore_exe_run(eina_strbuf_string_get(buf), NULL);
-      }
- 
-@@ -692,8 +692,7 @@ e_modapi_init(E_Module *m)
-    autolock_desklock = ecore_event_handler_add(E_EVENT_DESKLOCK, _ebluez_desklock, NULL);
- 
-    buf = eina_strbuf_new();
--   eina_strbuf_append_printf(buf, "%s/enlightenment/utils/enlightenment_sys -t l2ping",
--			     e_prefix_lib_get());
-+   eina_strbuf_append_printf(buf, "/run/setuid-programs/enlightenment_sys -t l2ping");
-    autolock_exe = ecore_exe_run(eina_strbuf_string_get(buf), NULL);
-    eina_strbuf_free(buf);
- 
-diff --git a/src/modules/bluez5/e_mod_main.c b/src/modules/bluez5/e_mod_main.c
-index a581c466c..095d8f360 100644
---- a/src/modules/bluez5/e_mod_main.c
-+++ b/src/modules/bluez5/e_mod_main.c
-@@ -321,8 +321,8 @@ ebluez5_rfkill_unblock(const char *name)
-    if (buf)
-      {
-         eina_strbuf_append_printf
--          (buf, "%s/enlightenment/utils/enlightenment_sys rfkill-unblock %s",
--           e_prefix_lib_get(), name);
-+          (buf, "/run/setuid-programs/enlightenment_sys rfkill-unblock %s",
-+           name);
-         _rfkill_exe = ecore_exe_run(eina_strbuf_string_get(buf), NULL);
-         eina_strbuf_free(buf);
-      }
-diff --git a/src/modules/cpufreq/e_mod_main.c b/src/modules/cpufreq/e_mod_main.c
-index b66b365d8..bab0802cc 100644
---- a/src/modules/cpufreq/e_mod_main.c
-+++ b/src/modules/cpufreq/e_mod_main.c
-@@ -1452,8 +1452,7 @@ e_modapi_init(E_Module *m)
-      }
-    E_CONFIG_LIMIT(cpufreq_config->poll_interval, 1, 1024);
- 
--   snprintf(buf, sizeof(buf), "%s/%s/freqset",
--            e_module_dir_get(m), MODULE_ARCH);
-+   snprintf(buf, sizeof(buf), "/run/setuid-programs/freqset");
-    cpufreq_config->set_exe_path = strdup(buf);
-    
-    if (stat(buf, &st) < 0)
-diff --git a/src/modules/sysinfo/cpuclock/cpuclock.c b/src/modules/sysinfo/cpuclock/cpuclock.c
-index 938916e53..00d5067d0 100644
---- a/src/modules/sysinfo/cpuclock/cpuclock.c
-+++ b/src/modules/sysinfo/cpuclock/cpuclock.c
-@@ -80,8 +80,7 @@ _cpuclock_set_governor(const char *governor)
-    char buf[4096 + 100], exe[4096];
-    struct stat st;
- 
--   snprintf(exe, 4096, "%s/%s/cpuclock_sysfs",
--            e_module_dir_get(sysinfo_config->module), MODULE_ARCH);
-+   snprintf(exe, 4096, "/run/setuid-programs/cpuclock_sysfs");
-    if (stat(exe, &st) < 0) return;
- 
-    snprintf(buf, sizeof(buf),
-@@ -108,8 +107,7 @@ _cpuclock_set_frequency(int frequency)
-    if (system(buf) != 0)
-      ERR("Error code from trying to run \"%s\"", buf);
- #else
--   snprintf(exe, 4096, "%s/%s/cpuclock_sysfs",
--            e_module_dir_get(sysinfo_config->module), MODULE_ARCH);
-+   snprintf(exe, 4096, "/run/setuid-programs/cpuclock_sysfs");
-    if (stat(exe, &st) < 0) return;
-    snprintf(buf, sizeof(buf),
-             "%s %s %i", exe, "frequency", frequency);
-@@ -127,8 +125,7 @@ _cpuclock_set_pstate(int min, int max, int turbo)
-    char buf[4096 + 100], exe[4096];
-    struct stat st;
+diff --git a/src/bin/e_start_main.c b/src/bin/e_start_main.c
+index b2c439455..cb16c7bd4 100644
+--- a/src/bin/e_start_main.c
++++ b/src/bin/e_start_main.c
+@@ -710,7 +710,7 @@ main(int argc, char **argv)
+             "E_ALERT_FONT_DIR=%s/data/fonts", eina_prefix_data_get(pfx));
+    putenv(buf2);
+    snprintf(buf3, sizeof(buf3),
+-            "E_ALERT_SYSTEM_BIN=%s/enlightenment/utils/enlightenment_system", eina_prefix_lib_get(pfx));
++            "E_ALERT_SYSTEM_BIN=/run/setuid-programs/enlightenment_system");
+    putenv(buf3);
  
--   snprintf(exe, 4096, "%s/%s/cpuclock_sysfs",
--            e_module_dir_get(sysinfo_config->module), MODULE_ARCH);
-+   snprintf(exe, 4096, "/run/setuid-programs/cpuclock_sysfs");
-    if (stat(exe, &st) < 0) return;
+    if ((valgrind_mode || valgrind_tool) &&
+diff --git a/src/bin/e_system.c b/src/bin/e_system.c
+index 1e7aabb64..dc0173219 100644
+--- a/src/bin/e_system.c
++++ b/src/bin/e_system.c
+@@ -132,7 +132,7 @@ _system_spawn(void)
+    else _respawn_count = 0;
+    if (_respawn_count > 5) return;
     snprintf(buf, sizeof(buf),
-             "%s %s %i %i %i", exe, "pstate", min, max, turbo);
--- 
-2.23.0
-
+-            "%s/enlightenment/utils/enlightenment_system", e_prefix_lib_get());
++            "/run/setuid-programs/enlightenment_system");
+    _system_exe = ecore_exe_pipe_run
+      (buf, ECORE_EXE_NOT_LEADER | ECORE_EXE_TERM_WITH_PARENT |
+       ECORE_EXE_PIPE_READ | ECORE_EXE_PIPE_WRITE, NULL);
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index 93f2ae576c..9e45743586 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -1036,29 +1036,12 @@ with the administrator's password."
   (match-record enlightenment-desktop-configuration
                 <enlightenment-desktop-configuration>
                 (enlightenment)
-    (let ((module-arch (match (string-tokenize (%current-system)
-                                               (char-set-complement (char-set #\-)))
-                              ((arch "linux") (string-append "linux-gnu-" arch))
-                              ((arch "gnu")   (string-append "gnu-" arch)))))
-      (list (file-append enlightenment
-                         "/lib/enlightenment/utils/enlightenment_sys")
-            (file-append enlightenment
-                         "/lib/enlightenment/utils/enlightenment_backlight")
-            ;; TODO: Move this binary to a screen-locker service.
-            (file-append enlightenment
-                         "/lib/enlightenment/utils/enlightenment_ckpasswd")
-            (file-append enlightenment
-                         (string-append
-                           "/lib/enlightenment/modules/cpufreq/"
-                           module-arch "-"
-                           (package-version enlightenment)
-                           "/freqset"))
-            (file-append enlightenment
-                         (string-append
-                           "/lib/enlightenment/modules/sysinfo/"
-                           module-arch "-"
-                           (package-version enlightenment)
-                           "/cpuclock_sysfs"))))))
+    (list (file-append enlightenment
+                       "/lib/enlightenment/utils/enlightenment_sys")
+          (file-append enlightenment
+                       "/lib/enlightenment/utils/enlightenment_system")
+          (file-append enlightenment
+                       "/lib/enlightenment/utils/enlightenment_ckpasswd"))))
 
 (define enlightenment-desktop-service-type
   (service-type