From 983e3f7d18f4b1f6b40fe6a754cae8a426d90234 Mon Sep 17 00:00:00 2001 From: OPNA2608 Date: Tue, 11 Jul 2023 11:02:23 +0200 Subject: lomiri.geonames: init at 0.3.0 --- pkgs/desktops/lomiri/default.nix | 1 + .../lomiri/development/geonames/default.nix | 117 +++++++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 pkgs/desktops/lomiri/development/geonames/default.nix (limited to 'pkgs/desktops') diff --git a/pkgs/desktops/lomiri/default.nix b/pkgs/desktops/lomiri/default.nix index 27869f6e9280..ba4c6446d4c0 100644 --- a/pkgs/desktops/lomiri/default.nix +++ b/pkgs/desktops/lomiri/default.nix @@ -10,6 +10,7 @@ let #### Development tools / libraries cmake-extras = callPackage ./development/cmake-extras { }; deviceinfo = callPackage ./development/deviceinfo { }; + geonames = callPackage ./development/geonames { }; gmenuharness = callPackage ./development/gmenuharness { }; lomiri-api = callPackage ./development/lomiri-api { }; }; diff --git a/pkgs/desktops/lomiri/development/geonames/default.nix b/pkgs/desktops/lomiri/development/geonames/default.nix new file mode 100644 index 000000000000..c4e327caf93f --- /dev/null +++ b/pkgs/desktops/lomiri/development/geonames/default.nix @@ -0,0 +1,117 @@ +{ stdenv +, lib +, fetchFromGitLab +, gitUpdater +, testers +, buildPackages +, cmake +, docbook-xsl-nons +, docbook_xml_dtd_45 +, gettext +, glib +, glibcLocales +, withExamples ? true +, gtk3 +# Uses gtkdoc-scan* tools, which produces a binary linked against lib for hostPlatform and executes it to generate docs +, withDocumentation ? stdenv.buildPlatform.canExecute stdenv.hostPlatform +, gtk-doc +, pkg-config +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "geonames"; + version = "0.3.0"; + + src = fetchFromGitLab { + owner = "ubports"; + repo = "development/core/geonames"; + rev = finalAttrs.version; + hash = "sha256-Mo7Khj2pgdJ9kT3npFXnh1WTSsY/B1egWTccbAXFNY8="; + }; + + outputs = [ + "out" + "dev" + ] ++ lib.optionals withExamples [ + "bin" + ] ++ lib.optionals withDocumentation [ + "doc" + ]; + + postPatch = '' + patchShebangs src/generate-locales.sh tests/setup-test-env.sh + + substituteInPlace doc/reference/CMakeLists.txt \ + --replace "\''${CMAKE_INSTALL_DATADIR}/gtk-doc/html/\''${PROJECT_NAME}" "\''${CMAKE_INSTALL_DOCDIR}" + substituteInPlace demo/CMakeLists.txt \ + --replace 'RUNTIME DESTINATION bin' 'RUNTIME DESTINATION ''${CMAKE_INSTALL_BINDIR}' + '' + lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' + # Built for hostPlatform, executed during build + substituteInPlace src/CMakeLists.txt \ + --replace 'COMMAND mkdb' 'COMMAND ${stdenv.hostPlatform.emulator buildPackages} mkdb' + ''; + + strictDeps = true; + + nativeBuildInputs = [ + cmake + gettext + glib # glib-compile-resources + pkg-config + ] ++ lib.optionals withDocumentation [ + docbook-xsl-nons + docbook_xml_dtd_45 + gtk-doc + ]; + + buildInputs = [ + glib + ] ++ lib.optionals withExamples [ + gtk3 + ]; + + # Tests need to be able to check locale + LC_ALL = lib.optionalString finalAttrs.doCheck "en_US.UTF-8"; + nativeCheckInputs = [ + glibcLocales + ]; + + makeFlags = [ + # gtkdoc-scan runs ld, can't find qsort & strncpy symbols + "LD=${stdenv.cc.targetPrefix}cc" + ]; + + cmakeFlags = [ + "-DWANT_DOC=${lib.boolToString withDocumentation}" + "-DWANT_DEMO=${lib.boolToString withExamples}" + "-DWANT_TESTS=${lib.boolToString finalAttrs.doCheck}" + # Keeps finding & using glib-compile-resources from buildInputs otherwise + "-DCMAKE_PROGRAM_PATH=${lib.makeBinPath [ buildPackages.glib.dev ]}" + ]; + + preInstall = lib.optionalString withDocumentation '' + # gtkdoc-mkhtml generates images without write permissions, errors out during install + chmod +w doc/reference/html/* + ''; + + doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; + + passthru = { + tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + updateScript = gitUpdater { }; + }; + + meta = with lib; { + description = "Parse and query the geonames database dump"; + homepage = "https://gitlab.com/ubports/development/core/geonames"; + license = licenses.gpl3Only; + maintainers = teams.lomiri.members; + platforms = platforms.all; + # Cross requires hostPlatform emulation during build + # https://gitlab.com/ubports/development/core/geonames/-/issues/1 + broken = stdenv.buildPlatform != stdenv.hostPlatform && !stdenv.hostPlatform.emulatorAvailable buildPackages; + pkgConfigModules = [ + "geonames" + ]; + }; +}) -- cgit 1.4.1 From 609c49f7406d0d44fabebf5eb6cd145faff52eab Mon Sep 17 00:00:00 2001 From: OPNA2608 Date: Wed, 12 Jul 2023 08:47:25 +0200 Subject: lomiri.geonames: Use CMAKE_CROSSCOMPILING_EMULATOR instead of patching in emulator call --- pkgs/desktops/lomiri/development/geonames/default.nix | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'pkgs/desktops') diff --git a/pkgs/desktops/lomiri/development/geonames/default.nix b/pkgs/desktops/lomiri/development/geonames/default.nix index c4e327caf93f..534ed28e106e 100644 --- a/pkgs/desktops/lomiri/development/geonames/default.nix +++ b/pkgs/desktops/lomiri/development/geonames/default.nix @@ -45,10 +45,6 @@ stdenv.mkDerivation (finalAttrs: { --replace "\''${CMAKE_INSTALL_DATADIR}/gtk-doc/html/\''${PROJECT_NAME}" "\''${CMAKE_INSTALL_DOCDIR}" substituteInPlace demo/CMakeLists.txt \ --replace 'RUNTIME DESTINATION bin' 'RUNTIME DESTINATION ''${CMAKE_INSTALL_BINDIR}' - '' + lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) '' - # Built for hostPlatform, executed during build - substituteInPlace src/CMakeLists.txt \ - --replace 'COMMAND mkdb' 'COMMAND ${stdenv.hostPlatform.emulator buildPackages} mkdb' ''; strictDeps = true; @@ -87,6 +83,9 @@ stdenv.mkDerivation (finalAttrs: { "-DWANT_TESTS=${lib.boolToString finalAttrs.doCheck}" # Keeps finding & using glib-compile-resources from buildInputs otherwise "-DCMAKE_PROGRAM_PATH=${lib.makeBinPath [ buildPackages.glib.dev ]}" + ] ++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [ + # only for cross without native execute support because the canExecute "emulator" call has a format that I can't get CMake to accept + "-DCMAKE_CROSSCOMPILING_EMULATOR=${stdenv.hostPlatform.emulator buildPackages}" ]; preInstall = lib.optionalString withDocumentation '' -- cgit 1.4.1 From b2f4cdf2fedf586e9d756f8aa2e01cc183fe1fa7 Mon Sep 17 00:00:00 2001 From: OPNA2608 Date: Fri, 14 Jul 2023 11:44:43 +0200 Subject: lomiri.geonames: Upstream better GNUInstallDirs variable usage --- pkgs/desktops/lomiri/development/geonames/default.nix | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'pkgs/desktops') diff --git a/pkgs/desktops/lomiri/development/geonames/default.nix b/pkgs/desktops/lomiri/development/geonames/default.nix index 534ed28e106e..b3ee9dc25ef7 100644 --- a/pkgs/desktops/lomiri/development/geonames/default.nix +++ b/pkgs/desktops/lomiri/development/geonames/default.nix @@ -1,6 +1,7 @@ { stdenv , lib , fetchFromGitLab +, fetchpatch , gitUpdater , testers , buildPackages @@ -38,13 +39,18 @@ stdenv.mkDerivation (finalAttrs: { "doc" ]; + patches = [ + # Improves install locations of demo & docs + # Remove when https://gitlab.com/ubports/development/core/geonames/-/merge_requests/3 merged & in release + (fetchpatch { + name = "0001-geonames-Use-GNUInstallDirs-more.patch"; + url = "https://gitlab.com/OPNA2608/geonames/-/commit/e64a391fc213b2629da1c8bbf975fd62a2973c51.patch"; + hash = "sha256-HPYDtIy1WUrZLPzvKh4aezrT/LniZkNX+PeQ9YB85RY="; + }) + ]; + postPatch = '' patchShebangs src/generate-locales.sh tests/setup-test-env.sh - - substituteInPlace doc/reference/CMakeLists.txt \ - --replace "\''${CMAKE_INSTALL_DATADIR}/gtk-doc/html/\''${PROJECT_NAME}" "\''${CMAKE_INSTALL_DOCDIR}" - substituteInPlace demo/CMakeLists.txt \ - --replace 'RUNTIME DESTINATION bin' 'RUNTIME DESTINATION ''${CMAKE_INSTALL_BINDIR}' ''; strictDeps = true; -- cgit 1.4.1