about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/geoclue
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/geoclue')
-rw-r--r--nixpkgs/pkgs/development/libraries/geoclue/add-option-for-installation-sysconfdir.patch92
-rw-r--r--nixpkgs/pkgs/development/libraries/geoclue/default.nix107
2 files changed, 199 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/geoclue/add-option-for-installation-sysconfdir.patch b/nixpkgs/pkgs/development/libraries/geoclue/add-option-for-installation-sysconfdir.patch
new file mode 100644
index 000000000000..832ae945aa2c
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/geoclue/add-option-for-installation-sysconfdir.patch
@@ -0,0 +1,92 @@
+diff --git i/data/meson.build w/data/meson.build
+index 6ac2a11..73f433b 100644
+--- i/data/meson.build
++++ w/data/meson.build
+@@ -1,6 +1,6 @@
+ if get_option('enable-backend')
+     conf = configuration_data()
+-    conf.set('sysconfdir', sysconfdir)
++    conf.set('sysconfdir', sysconfdir_install)
+ 
+     if get_option('demo-agent')
+         conf.set('demo_agent', 'geoclue-demo-agent;')
+@@ -8,7 +8,7 @@ if get_option('enable-backend')
+         conf.set('demo_agent', '')
+     endif
+ 
+-    conf_dir = join_paths(sysconfdir, 'geoclue')
++    conf_dir = join_paths(sysconfdir_install, 'geoclue')
+     configure_file(output: 'geoclue.conf',
+                    input: 'geoclue.conf.in',
+                    configuration: conf,
+@@ -17,7 +17,7 @@ if get_option('enable-backend')
+     conf = configuration_data()
+     conf.set('libexecdir', libexecdir)
+     conf.set('dbus_srv_user', get_option('dbus-srv-user'))
+-    conf.set('sysconfdir', sysconfdir)
++    conf.set('sysconfdir', sysconfdir_install)
+ 
+     confd_dir = join_paths(conf_dir, 'conf.d')
+     install_emptydir(confd_dir)
+@@ -37,7 +37,7 @@ if get_option('enable-backend')
+     # DBus Service policy file
+     dbus_service_dir = get_option('dbus-sys-dir')
+     if dbus_service_dir == ''
+-        dbus_service_dir = join_paths(sysconfdir, 'dbus-1', 'system.d')
++        dbus_service_dir = join_paths(sysconfdir_install, 'dbus-1', 'system.d')
+     endif
+     configure_file(output: 'org.freedesktop.GeoClue2.conf',
+                    input: 'org.freedesktop.GeoClue2.conf.in',
+diff --git i/demo/meson.build w/demo/meson.build
+index 1427fbe..2623f16 100644
+--- i/demo/meson.build
++++ w/demo/meson.build
+@@ -54,7 +54,7 @@ if get_option('demo-agent')
+                                    install_dir: desktop_dir)
+ 
+     # Also install in the autostart directory.
+-    autostart_dir = join_paths(sysconfdir, 'xdg', 'autostart')
++    autostart_dir = join_paths(sysconfdir_install, 'xdg', 'autostart')
+     meson.add_install_script('install-file.py',
+                              desktop_file.full_path(),
+                              autostart_dir)
+diff --git i/meson.build w/meson.build
+index 220ae2b..dbf6458 100644
+--- i/meson.build
++++ w/meson.build
+@@ -12,7 +12,11 @@ gclue_api_version='2.0'
+ datadir = join_paths(get_option('prefix'), get_option('datadir'))
+ includedir = join_paths(get_option('prefix'), get_option('includedir'))
+ libexecdir = join_paths(get_option('prefix'), get_option('libexecdir'))
+-sysconfdir = join_paths(get_option('prefix'), get_option('sysconfdir'))
++if get_option('sysconfdir_install') != ''
++  sysconfdir_install = join_paths(get_option('prefix'), get_option('sysconfdir_install'))
++else
++  sysconfdir_install = get_option('sysconfdir')
++endif
+ localedir = join_paths(datadir, 'locale')
+ 
+ header_dir = 'libgeoclue-' + gclue_api_version
+@@ -29,7 +33,7 @@ conf.set_quoted('PACKAGE_URL', 'https://gitlab.freedesktop.org/geoclue/geoclue/w
+ conf.set_quoted('PACKAGE_BUGREPORT', 'https://gitlab.freedesktop.org/geoclue/geoclue/issues/new')
+ conf.set_quoted('TEST_SRCDIR', meson.project_source_root() + '/data/')
+ conf.set_quoted('LOCALEDIR', localedir)
+-conf.set_quoted('SYSCONFDIR', sysconfdir)
++conf.set_quoted('SYSCONFDIR', get_option('sysconfdir'))
+ conf.set_quoted('MOZILLA_API_KEY', get_option('mozilla-api-key'))
+ conf.set10('GCLUE_USE_3G_SOURCE', get_option('3g-source'))
+ conf.set10('GCLUE_USE_CDMA_SOURCE', get_option('cdma-source'))
+diff --git i/meson_options.txt w/meson_options.txt
+index 5b8c42d..945dfd5 100644
+--- i/meson_options.txt
++++ w/meson_options.txt
+@@ -40,6 +40,9 @@ option('systemd-system-unit-dir',
+ option('dbus-srv-user',
+        type: 'string', value: 'root',
+        description: 'The user (existing) as which the service will run')
++option('sysconfdir_install',
++       type: 'string', value: '',
++       description: 'sysconfdir to use during installation')
+ option('mozilla-api-key',
+        type: 'string', value: 'geoclue',
+        description: 'Your API key for Mozilla Location Service')
diff --git a/nixpkgs/pkgs/development/libraries/geoclue/default.nix b/nixpkgs/pkgs/development/libraries/geoclue/default.nix
new file mode 100644
index 000000000000..c2bf28d71045
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/geoclue/default.nix
@@ -0,0 +1,107 @@
+{ lib
+, stdenv
+, fetchFromGitLab
+, fetchpatch
+, intltool
+, meson
+, mesonEmulatorHook
+, ninja
+, pkg-config
+, gtk-doc
+, docbook-xsl-nons
+, docbook_xml_dtd_412
+, glib
+, json-glib
+, libsoup_3
+, libnotify
+, gdk-pixbuf
+, modemmanager
+, avahi
+, glib-networking
+, python3
+, wrapGAppsHook
+, gobject-introspection
+, vala
+, withDemoAgent ? false
+}:
+
+stdenv.mkDerivation rec {
+  pname = "geoclue";
+  version = "2.7.0";
+
+  outputs = [ "out" "dev" "devdoc" ];
+
+  src = fetchFromGitLab {
+    domain = "gitlab.freedesktop.org";
+    owner = "geoclue";
+    repo = "geoclue";
+    rev = version;
+    hash = "sha256-vzarUg4lBEXYkH+n9SY8SYr0gHUX94PSTDmKd957gyc=";
+  };
+
+  patches = [
+    ./add-option-for-installation-sysconfdir.patch
+  ];
+
+  nativeBuildInputs = [
+    pkg-config
+    intltool
+    meson
+    ninja
+    wrapGAppsHook
+    python3
+    vala
+    gobject-introspection
+    # devdoc
+    gtk-doc
+    docbook-xsl-nons
+    docbook_xml_dtd_412
+  ] ++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [
+    mesonEmulatorHook
+  ];
+
+  buildInputs = [
+    glib
+    json-glib
+    libsoup_3
+    avahi
+  ] ++ lib.optionals withDemoAgent [
+    libnotify gdk-pixbuf
+  ] ++ lib.optionals (!stdenv.isDarwin) [
+    modemmanager
+  ];
+
+  propagatedBuildInputs = [
+    glib
+    glib-networking
+  ];
+
+  mesonFlags = [
+    "-Dsystemd-system-unit-dir=${placeholder "out"}/etc/systemd/system"
+    "-Ddemo-agent=${lib.boolToString withDemoAgent}"
+    "--sysconfdir=/etc"
+    "-Dsysconfdir_install=${placeholder "out"}/etc"
+    "-Dmozilla-api-key=5c28d1f4-9511-47ff-b11a-2bef80fc177c"
+    "-Ddbus-srv-user=geoclue"
+    "-Ddbus-sys-dir=${placeholder "out"}/share/dbus-1/system.d"
+  ] ++ lib.optionals stdenv.isDarwin [
+    "-D3g-source=false"
+    "-Dcdma-source=false"
+    "-Dmodem-gps-source=false"
+    "-Dnmea-source=false"
+  ];
+
+  postPatch = ''
+    chmod +x demo/install-file.py
+    patchShebangs demo/install-file.py
+  '';
+
+  meta = with lib; {
+    broken = stdenv.isDarwin && withDemoAgent;
+    description = "Geolocation framework and some data providers";
+    homepage = "https://gitlab.freedesktop.org/geoclue/geoclue/wikis/home";
+    maintainers = with maintainers; [ raskin mimame ];
+    platforms = with platforms; linux ++ darwin;
+    license = licenses.lgpl2Plus;
+  };
+}