about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/grantlee
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/grantlee')
-rw-r--r--nixpkgs/pkgs/development/libraries/grantlee/5/default.nix55
-rw-r--r--nixpkgs/pkgs/development/libraries/grantlee/5/grantlee-nix-profiles.patch19
-rw-r--r--nixpkgs/pkgs/development/libraries/grantlee/5/grantlee-no-canonicalize-filepath.patch27
-rw-r--r--nixpkgs/pkgs/development/libraries/grantlee/5/setup-hook.sh13
-rw-r--r--nixpkgs/pkgs/development/libraries/grantlee/default.nix34
5 files changed, 148 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/grantlee/5/default.nix b/nixpkgs/pkgs/development/libraries/grantlee/5/default.nix
new file mode 100644
index 000000000000..b115e1c8d7b6
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/grantlee/5/default.nix
@@ -0,0 +1,55 @@
+{ mkDerivation, lib, fetchFromGitHub, qtbase, qtscript, cmake }:
+
+mkDerivation rec {
+  pname = "grantlee";
+  version = "5.3.1";
+  grantleePluginPrefix = "lib/grantlee/${lib.versions.majorMinor version}";
+
+  src = fetchFromGitHub {
+    owner = "steveire";
+    repo = "grantlee";
+    rev = "v${version}";
+    sha256 = "sha256-enP7b6A7Ndew2LJH569fN3IgPu2/KL5rCmU/jmKb9sY=";
+  };
+
+  buildInputs = [ qtbase qtscript ];
+  nativeBuildInputs = [ cmake ];
+
+  patches = [
+    ./grantlee-nix-profiles.patch
+    ./grantlee-no-canonicalize-filepath.patch
+  ];
+
+  outputs = [ "out" "dev" ];
+  postFixup =
+    # Disabuse CMake of the notion that libraries are in $dev
+    ''
+      for way in release debug; do
+          cmake="$dev/lib/cmake/Grantlee5/GrantleeTargets-$way.cmake"
+          if [ -f "$cmake" ]; then
+              sed -i "$cmake" -e "s|\''${_IMPORT_PREFIX}|$out|"
+          fi
+      done
+    '';
+
+  setupHook = ./setup-hook.sh;
+
+  doCheck = false; # fails all the tests (ctest)
+
+  meta = with lib; {
+    description = "Qt5 port of Django template system";
+    longDescription = ''
+      Grantlee is a plugin based String Template system written using the Qt
+      framework. The goals of the project are to make it easier for application
+      developers to separate the structure of documents from the data they
+      contain, opening the door for theming.
+
+      The syntax is intended to follow the syntax of the Django template system,
+      and the design of Django is reused in Grantlee.'';
+
+    homepage = "https://github.com/steveire/grantlee";
+    maintainers = [ maintainers.ttuegel ];
+    license = licenses.lgpl21;
+    inherit (qtbase.meta) platforms;
+  };
+}
diff --git a/nixpkgs/pkgs/development/libraries/grantlee/5/grantlee-nix-profiles.patch b/nixpkgs/pkgs/development/libraries/grantlee/5/grantlee-nix-profiles.patch
new file mode 100644
index 000000000000..f6c13dbd6d55
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/grantlee/5/grantlee-nix-profiles.patch
@@ -0,0 +1,19 @@
+Index: grantlee-5.1.0/templates/lib/engine.cpp
+===================================================================
+--- grantlee-5.1.0.orig/templates/lib/engine.cpp
++++ grantlee-5.1.0/templates/lib/engine.cpp
+@@ -48,6 +48,14 @@ Engine::Engine(QObject *parent)
+ 
+   d_ptr->m_pluginDirs = QCoreApplication::instance()->libraryPaths();
+   d_ptr->m_pluginDirs << QString::fromLocal8Bit(GRANTLEE_PLUGIN_PATH);
++
++  // Add library paths derived from NIX_PROFILES.
++  const QByteArrayList profiles = qgetenv("NIX_PROFILES").split(' ');
++  for (const QByteArray &profile: profiles) {
++    if (!profile.isEmpty()) {
++      d_ptr->m_pluginDirs << (QFile::decodeName(profile) + QStringLiteral("/lib"));
++    }
++  }
+ }
+ 
+ Engine::~Engine()
diff --git a/nixpkgs/pkgs/development/libraries/grantlee/5/grantlee-no-canonicalize-filepath.patch b/nixpkgs/pkgs/development/libraries/grantlee/5/grantlee-no-canonicalize-filepath.patch
new file mode 100644
index 000000000000..b29911bcfcdb
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/grantlee/5/grantlee-no-canonicalize-filepath.patch
@@ -0,0 +1,27 @@
+Index: grantlee-5.1.0/templates/lib/templateloader.cpp
+===================================================================
+--- grantlee-5.1.0.orig/templates/lib/templateloader.cpp
++++ grantlee-5.1.0/templates/lib/templateloader.cpp
+@@ -142,10 +142,6 @@ Template FileSystemTemplateLoader::loadByName(const QString &fileName,
+                      + QLatin1Char('/') + fileName);
+     const QFileInfo fi(file);
+
+-    if (file.exists()
+-        && !fi.canonicalFilePath().contains(
+-            QDir(d->m_templateDirs.at(i)).canonicalPath()))
+-      return {};
+     ++i;
+   }
+
+@@ -173,11 +169,6 @@ FileSystemTemplateLoader::getMediaUri(co
+                      + QLatin1Char('/') + fileName);
+ 
+     const QFileInfo fi(file);
+-    if (!fi.canonicalFilePath().contains(
+-            QDir(d->m_templateDirs.at(i)).canonicalPath())) {
+-      ++i;
+-      continue;
+-    }
+ 
+     if (file.exists()) {
+       auto path = fi.absoluteFilePath();
diff --git a/nixpkgs/pkgs/development/libraries/grantlee/5/setup-hook.sh b/nixpkgs/pkgs/development/libraries/grantlee/5/setup-hook.sh
new file mode 100644
index 000000000000..b51cb4a31909
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/grantlee/5/setup-hook.sh
@@ -0,0 +1,13 @@
+grantleePluginPrefix=@grantleePluginPrefix@
+
+providesGrantleeRuntime() {
+    [ -d "$1/$grantleePluginPrefix" ]
+}
+
+_grantleeEnvHook() {
+    if providesGrantleeRuntime "$1"; then
+        propagatedBuildInputs+=" $1"
+        propagatedUserEnvPkgs+=" $1"
+    fi
+}
+addEnvHooks "$hostOffset" _grantleeEnvHook
diff --git a/nixpkgs/pkgs/development/libraries/grantlee/default.nix b/nixpkgs/pkgs/development/libraries/grantlee/default.nix
new file mode 100644
index 000000000000..3301d6c47cff
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/grantlee/default.nix
@@ -0,0 +1,34 @@
+{ lib, stdenv, fetchurl, qt4, cmake }:
+
+stdenv.mkDerivation rec {
+  pname = "grantlee";
+  version = "0.5.1";
+
+# Upstream download server has country code firewall, so I made a mirror.
+  src = fetchurl {
+    urls = [
+      "http://downloads.grantlee.org/grantlee-${version}.tar.gz"
+      "http://www.loegria.net/grantlee/grantlee-${version}.tar.gz"
+    ];
+    sha256 = "1b501xbimizmbmysl1j5zgnp48qw0r2r7lhgmxvzhzlv9jzhj60r";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ qt4 ];
+
+  meta = {
+    description = "Qt4 port of Django template system";
+    longDescription = ''
+      Grantlee is a plugin based String Template system written using the Qt
+      framework. The goals of the project are to make it easier for application
+      developers to separate the structure of documents from the data they
+      contain, opening the door for theming.
+
+      The syntax is intended to follow the syntax of the Django template system,
+      and the design of Django is reused in Grantlee.'';
+
+    homepage = "https://github.com/steveire/grantlee";
+    license = lib.licenses.lgpl21;
+    inherit (qt4.meta) platforms;
+  };
+}