Commit 6427d04c authored by Matthieu C.'s avatar Matthieu C.
Browse files

lua:: reworked setup-hook to source utils.sh

which contains lua shell utilities that can be reused during the
creation of an environment.
Makes sense because the generation of LUA_PATH is a bit different than
other ecosystems.
parent 80011bef
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -168,6 +168,7 @@ let
  buildPhase = ''
    runHook preBuild

    source ${lua}/nix-support/utils.sh
    nix_debug "Using LUAROCKS_CONFIG=$LUAROCKS_CONFIG"

    LUAROCKS_EXTRA_ARGS=""
+0 −13
Original line number Diff line number Diff line
@@ -10,19 +10,6 @@ let
  callPackage = lua.pkgs.callPackage;
in {

  lua-setup-hook = LuaPathSearchPaths: LuaCPathSearchPaths:
    let
      hook = ./setup-hook.sh;
    in runCommand "lua-setup-hook.sh" {
      # hum doesn't seem to like caps !! BUG ?
      luapathsearchpaths=lib.escapeShellArgs LuaPathSearchPaths;
      luacpathsearchpaths=lib.escapeShellArgs LuaCPathSearchPaths;
    } ''
      cp ${hook} hook.sh
      substituteAllInPlace hook.sh
      mv hook.sh $out
    '';

  luarocksCheckHook = callPackage ({ luarocks }:
    makeSetupHook {
      name = "luarocks-check-hook";
+1 −53
Original line number Diff line number Diff line
# set -e

nix_print() {
  if [ ${NIX_DEBUG:-0} -ge $1 ]; then
    echo "$2"
  fi
}

nix_debug() {
  nix_print 3 "$1"
}

addToLuaSearchPathWithCustomDelimiter() {
  local varName="$1"
  local absPattern="$2"

  # export only if we haven't already got this dir in the search path
  if [[ ${!varName-} == *"$absPattern"* ]]; then return; fi

  # if the path variable has not yet been set, initialize it to ";;"
  # this is a magic value that will be replaced by the default,
  # allowing relative modules to be used even when there are system modules.
  if [[ ! -v "${varName}" ]]; then export "${varName}=;;"; fi

  # export only if the folder contains lua files
  shopt -s globstar

  local adjustedPattern="${absPattern/\?/\*\*\/\*}"
  for _file in $adjustedPattern; do
    export "${varName}=${!varName:+${!varName};}${absPattern}"
    shopt -u globstar
    return;
  done
  shopt -u globstar
}

addToLuaPath() {
  local dir="$1"

  if [[ ! -d "$dir" ]]; then
    nix_debug "$dir not a directory abort"
    return 0
  fi
  cd "$dir"
  for pattern in @luapathsearchpaths@; do
    addToLuaSearchPathWithCustomDelimiter LUA_PATH "$PWD/$pattern"
  done

  # LUA_CPATH
  for pattern in @luacpathsearchpaths@; do
    addToLuaSearchPathWithCustomDelimiter LUA_CPATH "$PWD/$pattern"
  done
  cd - >/dev/null
}

source ./utils.sh
addEnvHooks "$hostOffset" addToLuaPath
+11 −4
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
, makeWrapper
, self
, packageOverrides ? (final: prev: {})
, substituteAll
, pkgsBuildBuild
, pkgsBuildHost
, pkgsBuildTarget
@@ -51,9 +52,10 @@ stdenv.mkDerivation (finalAttrs:

  LuaPathSearchPaths  = luaPackages.luaLib.luaPathList;
  LuaCPathSearchPaths = luaPackages.luaLib.luaCPathList;
  setupHook = luaPackages.lua-setup-hook
    finalAttrs.LuaPathSearchPaths
    finalAttrs.LuaCPathSearchPaths;
  setupHook = builtins.toFile "lua-setup-hook" ''
      source @out@/nix-support/utils.sh
      addEnvHooks "$hostOffset" addToLuaPath
      '';

  nativeBuildInputs = [ makeWrapper ];
  buildInputs = [ readline ];
@@ -107,7 +109,12 @@ stdenv.mkDerivation (finalAttrs:
  inherit postBuild;

  postInstall = ''
    mkdir -p "$out/share/doc/lua" "$out/lib/pkgconfig"
    mkdir -p "$out/nix-support" "$out/share/doc/lua" "$out/lib/pkgconfig"
    cp ${substituteAll {
      src = ./utils.sh;
      luapathsearchpaths=lib.escapeShellArgs finalAttrs.LuaPathSearchPaths;
      luacpathsearchpaths=lib.escapeShellArgs finalAttrs.LuaCPathSearchPaths;
    }} $out/nix-support/utils.sh
    mv "doc/"*.{gif,png,css,html} "$out/share/doc/lua/"
    rmdir $out/{share,lib}/lua/${luaversion} $out/{share,lib}/lua
    mkdir -p "$out/lib/pkgconfig"
+54 −0
Original line number Diff line number Diff line
#!/bin/sh
nix_print() {
  if [ ${NIX_DEBUG:-0} -ge $1 ]; then
    echo "$2"
  fi
}

nix_debug() {
  nix_print 3 "$1"
}

addToLuaSearchPathWithCustomDelimiter() {
  local varName="$1"
  local absPattern="$2"

  # export only if we haven't already got this dir in the search path
  if [[ ${!varName-} == *"$absPattern"* ]]; then return; fi

  # if the path variable has not yet been set, initialize it to ";;"
  # this is a magic value that will be replaced by the default,
  # allowing relative modules to be used even when there are system modules.
  if [[ ! -v "${varName}" ]]; then export "${varName}=;;"; fi

  # export only if the folder contains lua files
  shopt -s globstar

  local adjustedPattern="${absPattern/\?/\*\*\/\*}"
  for _file in $adjustedPattern; do
    export "${varName}=${!varName:+${!varName};}${absPattern}"
    shopt -u globstar
    return;
  done
  shopt -u globstar
}

addToLuaPath() {
  local dir="$1"

  if [[ ! -d "$dir" ]]; then
    nix_debug "$dir not a directory abort"
    return 0
  fi
  cd "$dir"
  for pattern in @luapathsearchpaths@; do
    addToLuaSearchPathWithCustomDelimiter LUA_PATH "$PWD/$pattern"
  done

  # LUA_CPATH
  for pattern in @luacpathsearchpaths@; do
    addToLuaSearchPathWithCustomDelimiter LUA_CPATH "$PWD/$pattern"
  done
  cd - >/dev/null
}
Loading