diff --git a/pkgs/development/libraries/grantlee/5/default.nix b/pkgs/development/libraries/grantlee/5/default.nix index 7025877c8477..571ad98c38cc 100644 --- a/pkgs/development/libraries/grantlee/5/default.nix +++ b/pkgs/development/libraries/grantlee/5/default.nix @@ -1,8 +1,10 @@ -{ stdenv, lib, copyPathsToStore, fetchurl, qtbase, qtscript, cmake }: +{ mkDerivation, lib, copyPathsToStore, fetchurl, qtbase, qtscript, cmake }: -stdenv.mkDerivation rec { +mkDerivation rec { name = "grantlee-${version}"; version = "5.1.0"; + grantleeCompatVersion = "5.1"; + grantleePluginPrefix = "lib/grantlee/${grantleeCompatVersion}"; src = fetchurl { url = "https://github.com/steveire/grantlee/archive/v${version}.tar.gz"; @@ -15,7 +17,22 @@ stdenv.mkDerivation rec { buildInputs = [ qtbase qtscript ]; nativeBuildInputs = [ cmake ]; - meta = with stdenv.lib; { + outputs = [ "out" "dev" "bin" ]; + postInstall = '' + moveToOutput "$grantleePluginPrefix" "$bin" + + # CMake checks that the provided libraries and plugins exist + # Link libraries into $dev to satisfy CMake + mkdir -p $dev/lib + find $out/lib -name '*.so.*' -exec ln -s \{\} $dev/lib \; + + # Link plugins into $dev to satisfy CMake + ln -s $bin/lib/grantlee $dev/lib + ''; + + setupHook = ./setup-hook.sh; + + meta = with lib; { description = "Qt5 port of Django template system"; longDescription = '' Grantlee is a plugin based String Template system written using the Qt diff --git a/pkgs/development/libraries/grantlee/5/setup-hook.sh b/pkgs/development/libraries/grantlee/5/setup-hook.sh new file mode 100644 index 000000000000..d11ef5883a1f --- /dev/null +++ b/pkgs/development/libraries/grantlee/5/setup-hook.sh @@ -0,0 +1,23 @@ +grantleePluginPrefix=@grantleePluginPrefix@ + +providesGrantleeRuntime() { + [ -d "$1/$grantleePluginPrefix" ] +} + +_grantleeCrossEnvHook() { + if providesQtRuntime "$1"; then + propagatedBuildInputs+=" $1" + propagatedUserEnvPkgs+=" $1" + fi +} +crossEnvHooks+=(_grantleeCrossEnvHook) + +_grantleeEnvHook() { + if providesGrantleeRuntime "$1"; then + propagatedNativeBuildInputs+=" $1" + if [ -z "$crossConfig" ]; then + propagatedUserEnvPkgs+=" $1" + fi + fi +} +envHooks+=(_grantleeEnvHook)