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.
This commit is contained in:
parent
80011bef3c
commit
6427d04c23
|
@ -168,6 +168,7 @@ let
|
|||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
source ${lua}/nix-support/utils.sh
|
||||
nix_debug "Using LUAROCKS_CONFIG=$LUAROCKS_CONFIG"
|
||||
|
||||
LUAROCKS_EXTRA_ARGS=""
|
||||
|
|
|
@ -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,56 +1,4 @@
|
|||
# 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
|
||||
|
|
|
@ -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
pkgs/development/interpreters/lua-5/utils.sh
Normal file
54
pkgs/development/interpreters/lua-5/utils.sh
Normal file
|
@ -0,0 +1,54 @@
|
|||
#!/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
|
||||
}
|
||||
|
|
@ -11,6 +11,4 @@ makeSetupHook {
|
|||
propagatedBuildInputs = [ makeWrapper ];
|
||||
substitutions.executable = lua.interpreter;
|
||||
substitutions.lua = lua;
|
||||
substitutions.LuaPathSearchPaths = lib.escapeShellArgs lua.LuaPathSearchPaths;
|
||||
substitutions.LuaCPathSearchPaths = lib.escapeShellArgs lua.LuaPathSearchPaths;
|
||||
} ./wrap.sh
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
# variable is passed in from the buildLuarocksPackage function.
|
||||
set -e
|
||||
|
||||
source @lua@/nix-support/utils.sh
|
||||
|
||||
wrapLuaPrograms() {
|
||||
wrapLuaProgramsIn "$out/bin" "$out $luaPath"
|
||||
}
|
||||
|
|
|
@ -20,11 +20,11 @@ let
|
|||
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
(lua.pkgs.lua-setup-hook lua.LuaPathSearchPaths lua.LuaCPathSearchPaths)
|
||||
];
|
||||
|
||||
# we create wrapper for the binaries in the different packages
|
||||
postBuild = ''
|
||||
source ${lua}/nix-support/utils.sh
|
||||
if [ -L "$out/bin" ]; then
|
||||
unlink "$out/bin"
|
||||
fi
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
, buildPackages
|
||||
, version
|
||||
, src
|
||||
, substituteAll
|
||||
, extraMeta ? { }
|
||||
, self
|
||||
, packageOverrides ? (final: prev: {})
|
||||
|
@ -73,7 +74,7 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
if test -n "''${dontStrip-}"; then
|
||||
# CCDEBUG must be non-empty or everything will be stripped, -g being
|
||||
# passed by nixpkgs CC wrapper is insufficient on its own
|
||||
substituteInPlace src/Makefile --replace "#CCDEBUG= -g" "CCDEBUG= -g"
|
||||
substituteInPlace src/Makefile --replace-fail "#CCDEBUG= -g" "CCDEBUG= -g"
|
||||
fi
|
||||
'';
|
||||
|
||||
|
@ -95,6 +96,12 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
env.NIX_CFLAGS_COMPILE = toString XCFLAGS;
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/nix-support
|
||||
cp ${substituteAll {
|
||||
src = ../lua-5/utils.sh;
|
||||
luapathsearchpaths=lib.escapeShellArgs finalAttrs.LuaPathSearchPaths;
|
||||
luacpathsearchpaths=lib.escapeShellArgs finalAttrs.LuaCPathSearchPaths;
|
||||
}} $out/nix-support/utils.sh
|
||||
( cd "$out/include"; ln -s luajit-*/* . )
|
||||
ln -s "$out"/bin/luajit-* "$out"/bin/lua
|
||||
if [[ ! -e "$out"/bin/luajit ]]; then
|
||||
|
@ -105,7 +112,10 @@ stdenv.mkDerivation (finalAttrs: {
|
|||
LuaPathSearchPaths = luaPackages.luaLib.luaPathList;
|
||||
LuaCPathSearchPaths = luaPackages.luaLib.luaCPathList;
|
||||
|
||||
setupHook = luaPackages.lua-setup-hook luaPackages.luaLib.luaPathList luaPackages.luaLib.luaCPathList;
|
||||
setupHook = builtins.toFile "lua-setup-hook" ''
|
||||
source @out@/nix-support/utils.sh
|
||||
addEnvHooks "$hostOffset" addToLuaPath
|
||||
'';
|
||||
|
||||
# copied from python
|
||||
passthru = let
|
||||
|
|
|
@ -42,7 +42,7 @@ rec {
|
|||
getLuaCPath = drv: getPath drv luaLib.luaCPathList;
|
||||
|
||||
inherit (callPackage ../development/interpreters/lua-5/hooks { })
|
||||
luarocksMoveDataFolder luarocksCheckHook lua-setup-hook;
|
||||
luarocksMoveDataFolder luarocksCheckHook;
|
||||
|
||||
inherit lua;
|
||||
inherit buildLuaPackage buildLuarocksPackage buildLuaApplication;
|
||||
|
|
Loading…
Reference in New Issue
Block a user