1
0
Fork 1
mirror of https://github.com/NixOS/nixpkgs.git synced 2024-11-24 14:41:17 +00:00

deja-dup: 38.3 → 40.4

The main news is that GNOME Online Accounts are no longer used so if one wants to back up to Google Drive, they need to install Duplicity with PyDrive support. The credentials should be migrated automatically.

https://gitlab.gnome.org/World/deja-dup/blob/40.4/NEWS.md#anchor-404
This commit is contained in:
Jan Tojnar 2019-11-19 16:15:20 +01:00
parent 77e6622d22
commit 6bddcf4645
No known key found for this signature in database
GPG key ID: 7FAB2A15F7A607A4
2 changed files with 71 additions and 49 deletions

View file

@ -1,20 +1,46 @@
{ stdenv, fetchFromGitLab, substituteAll, meson, ninja, pkgconfig, vala_0_40, gettext
, gnome3, libnotify, itstool, glib, gtk3, libxml2, gnome-online-accounts
, coreutils, libpeas, libsecret, pcre, libxkbcommon, wrapGAppsHook
, libpthreadstubs, libXdmcp, epoxy, at-spi2-core, dbus, libgpgerror
, appstream-glib, desktop-file-utils, duplicity
{ stdenv
, fetchFromGitLab
, substituteAll
, meson
, ninja
, pkgconfig
, vala
, gettext
, gnome3
, libnotify
, itstool
, glib
, gtk3
, libxml2
, gnome-online-accounts
, coreutils
, libsoup
, libsecret
, pcre
, libxkbcommon
, wrapGAppsHook
, libpthreadstubs
, libXdmcp
, epoxy
, at-spi2-core
, dbus
, libgpgerror
, json-glib
, appstream-glib
, desktop-file-utils
, duplicity
}:
stdenv.mkDerivation rec {
pname = "deja-dup";
version = "38.3";
version = "40.4";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "World";
repo = pname;
rev = version;
sha256 = "1bnvmdlm67k1b6115x75j3nl92x5yl4psq5pna2w6cg9npxdd3fa";
sha256 = "0x9z8z1mh1sxi28ilml3pvbc0g6ghcbyiy002rziwwlarxnbwkky";
};
patches = [
@ -22,37 +48,55 @@ stdenv.mkDerivation rec {
src = ./fix-paths.patch;
inherit coreutils;
})
# Hardcode GSettings path for Nautilus extension to avoid crashes from missing schemas
./hardcode-gsettings.patch
];
postPatch = ''
substituteInPlace deja-dup/nautilus/NautilusExtension.c --subst-var-by DEJA_DUP_GSETTINGS_PATH ${glib.makeSchemaPath "$out" "${pname}-${version}"}
# substitute variable from hardcode-gsettings.patch
substituteInPlace deja-dup/nautilus/NautilusExtension.c --subst-var-by DEJA_DUP_GSETTINGS_PATH "${glib.makeSchemaPath (placeholder "out") "${pname}-${version}"}"
'';
nativeBuildInputs = [
meson ninja pkgconfig vala_0_40 gettext itstool
appstream-glib desktop-file-utils libxml2 wrapGAppsHook
meson
ninja
pkgconfig
vala
gettext
itstool
appstream-glib
desktop-file-utils
libxml2
wrapGAppsHook
];
buildInputs = [
libnotify libpeas glib gtk3 libsecret
pcre libxkbcommon libpthreadstubs libXdmcp epoxy gnome3.nautilus
at-spi2-core dbus gnome-online-accounts libgpgerror
libnotify
libsoup
glib
gtk3
libsecret
pcre
libxkbcommon
libpthreadstubs
libXdmcp
epoxy
gnome3.nautilus
at-spi2-core
dbus
gnome-online-accounts # GOA not used any more, only for transferring legacy keys
libgpgerror
json-glib
];
# TODO: hard code the path
# https://gitlab.gnome.org/World/deja-dup/merge_requests/32
propagatedUserEnvPkgs = [ duplicity ];
# install nautilus plug-in to correct path
PKG_CONFIG_LIBNAUTILUS_EXTENSION_EXTENSIONDIR = "${placeholder "out"}/lib/nautilus/extensions-3.0";
postInstall = ''
glib-compile-schemas $out/share/glib-2.0/schemas
'';
postFixup = ''
# Unwrap accidentally wrapped library
mv $out/libexec/deja-dup/tools/.libduplicity.so-wrapped $out/libexec/deja-dup/tools/libduplicity.so
'';
meta = with stdenv.lib; {
description = "A simple backup tool";
longDescription = ''
@ -60,7 +104,7 @@ stdenv.mkDerivation rec {
of backing up the Right Way (encrypted, off-site, and regular) \
and uses duplicity as the backend.
'';
homepage = https://wiki.gnome.org/Apps/DejaDup;
homepage = "https://wiki.gnome.org/Apps/DejaDup";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ jtojnar joncojonathan ];
platforms = platforms.linux;

View file

@ -1,38 +1,16 @@
--- a/deja-dup/nautilus/NautilusExtension.c
+++ b/deja-dup/nautilus/NautilusExtension.c
@@ -24,6 +24,8 @@
#include <glib/gi18n-lib.h>
GList *dirs = NULL;
+GSettingsSchemaSource *schema_source = NULL;
+GSettingsSchema *schema = NULL;
GSettings *settings = NULL;
// This will treat a < b iff a is 'lower' in the file tree than b
@@ -313,7 +315,13 @@
@@ -313,7 +313,12 @@
bindtextdomain(GETTEXT_PACKAGE, LOCALE_DIR);
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
- settings = g_settings_new("org.gnome.DejaDup");
+ schema_source = g_settings_schema_source_new_from_directory ("@DEJA_DUP_GSETTINGS_PATH@",
- settings = g_settings_new(APPLICATION_ID);
+ g_autoptr (GSettingsSchemaSource) schema_source = g_settings_schema_source_new_from_directory ("@DEJA_DUP_GSETTINGS_PATH@",
+ g_settings_schema_source_get_default (), TRUE, NULL);
+
+ schema = g_settings_schema_source_lookup (schema_source,
+ "org.gnome.DejaDup", FALSE);
+ g_autoptr (GSettingsSchema) schema = g_settings_schema_source_lookup (schema_source, APPLICATION_ID, FALSE);
+
+ settings = g_settings_new_full (schema, NULL, NULL);
g_signal_connect(settings, "changed::include-list",
update_include_excludes, NULL);
g_signal_connect(settings, "changed::exclude-list",
@@ -329,7 +337,11 @@
void nautilus_module_shutdown(void)
{
+ g_settings_schema_source_unref(schema_source);
+ g_settings_schema_unref(schema);
g_object_unref(settings);
+ schema_source = NULL;
+ schema = NULL;
settings = NULL;
update_include_excludes(); /* will clear it now that settings is NULL */