the recent luarocks can install for a different interpreter than the one running luarocks. Due to the way the update is done on nix, it seems more practical to use this feature than running the script with different luarocks-nix ?
115 lines
2.6 KiB
Plaintext
Executable file
115 lines
2.6 KiB
Plaintext
Executable file
#!/usr/bin/env nix-shell
|
|
#!nix-shell -p nix-prefetch-scripts luarocks-nix -i bash
|
|
|
|
# You'll likely want to use
|
|
# ``
|
|
# nixpkgs $ maintainers/scripts/update-luarocks-packages pkgs/development/lua-modules/generated-packages.nix
|
|
# ``
|
|
# to update all libraries in that folder.
|
|
# to debug, redirect stderr to stdout with 2>&1
|
|
|
|
|
|
# stop the script upon C-C
|
|
set -eu -o pipefail
|
|
|
|
CSV_FILE="maintainers/scripts/luarocks-packages.csv"
|
|
TMP_FILE="$(mktemp)"
|
|
|
|
exit_trap()
|
|
{
|
|
local lc="$BASH_COMMAND" rc=$?
|
|
test $rc -eq 0 || echo -e "*** error $rc: $lc.\nGenerated temporary file in $TMP_FILE" >&2
|
|
}
|
|
|
|
print_help() {
|
|
echo "Usage: $0 <GENERATED_FILE>"
|
|
echo "(most likely pkgs/development/lua-modules/generated-packages.nix)"
|
|
echo ""
|
|
echo " -c <CSV_FILE> to set the list of luarocks package to generate"
|
|
exit 1
|
|
}
|
|
|
|
if [ $# -lt 1 ]; then
|
|
print_help
|
|
exit 1
|
|
fi
|
|
|
|
trap exit_trap EXIT
|
|
|
|
while getopts ":hc:" opt; do
|
|
case $opt in
|
|
h)
|
|
print_help
|
|
;;
|
|
c)
|
|
echo "Loading package list from $OPTARG !" >&2
|
|
CSV_FILE="$OPTARG"
|
|
;;
|
|
\?)
|
|
echo "Invalid option: -$OPTARG" >&2
|
|
;;
|
|
esac
|
|
shift $((OPTIND-1))
|
|
done
|
|
|
|
GENERATED_NIXFILE="$1"
|
|
|
|
HEADER="
|
|
/* ${GENERATED_NIXFILE} is an auto-generated file -- DO NOT EDIT!
|
|
Regenerate it with:
|
|
nixpkgs$ ${0} ${GENERATED_NIXFILE}
|
|
|
|
These packages are manually refined in lua-overrides.nix
|
|
*/
|
|
{ self, stdenv, fetchurl, fetchgit, pkgs, ... } @ args:
|
|
self: super:
|
|
with self;
|
|
{
|
|
"
|
|
|
|
FOOTER="
|
|
}
|
|
/* GENERATED */
|
|
"
|
|
|
|
|
|
function convert_pkg () {
|
|
nix_pkg_name="$1"
|
|
lua_pkg_name="$2"
|
|
server="${3:+--only-server=$3}"
|
|
pkg_version="${4:-}"
|
|
lua_version="${5:+--lua-dir=$(nix path-info nixpkgs.$5)/bin}"
|
|
|
|
echo "looking at $lua_pkg_name (version $pkg_version) from server [$server]" >&2
|
|
cmd="luarocks nix $server $lua_version $lua_pkg_name $pkg_version"
|
|
echo "Running $cmd" >&2
|
|
drv="$nix_pkg_name = $($cmd)"
|
|
if [ $? -ne 0 ]; then
|
|
echo "Failed to convert $pkg" >&2
|
|
else
|
|
echo "$drv" | tee -a "$TMP_FILE"
|
|
fi
|
|
}
|
|
|
|
# params needed when called via callPackage
|
|
echo "$HEADER" | tee "$TMP_FILE"
|
|
|
|
# list of packages with format
|
|
while IFS=, read -r nix_pkg_name lua_pkg_name server pkg_version luaversion
|
|
do
|
|
if [ "${nix_pkg_name:0:1}" == "#" ]; then
|
|
echo "Skipping comment ${nix_pkg_name}" >&2
|
|
continue
|
|
fi
|
|
if [ -z "$lua_pkg_name" ]; then
|
|
echo "Using nix_name as lua_pkg_name" >&2
|
|
lua_pkg_name="$nix_pkg_name"
|
|
fi
|
|
convert_pkg "$nix_pkg_name" "$lua_pkg_name" "$server" "$pkg_version" "$luaversion"
|
|
done < "$CSV_FILE"
|
|
|
|
# close the set
|
|
echo "$FOOTER" | tee -a "$TMP_FILE"
|
|
|
|
cp "$TMP_FILE" "$GENERATED_NIXFILE"
|