forked from mirrors/nixpkgs
68a72f1a47
Also made changes to lua package generation system to account for packages like cqueues that have one version per lua interpreter. The csv file also accepts comments now.
119 lines
2.5 KiB
Plaintext
Executable file
119 lines
2.5 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
|
|
|
|
if [ $# -lt 1 ]; then
|
|
print_help
|
|
exit 1
|
|
fi
|
|
|
|
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
|
|
}
|
|
trap exit_trap EXIT
|
|
|
|
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
|
|
}
|
|
|
|
|
|
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=""
|
|
if [ ! -z "$3" ]; then
|
|
server=" --server=$3"
|
|
fi
|
|
|
|
version="${3:-}"
|
|
|
|
echo "looking at $lua_pkg_name (version $version) from server [$server]" >&2
|
|
cmd="luarocks nix $server $lua_pkg_name $version"
|
|
drv="$nix_pkg_name = $($cmd)"
|
|
if [ $? -ne 0 ]; then
|
|
echo "Failed to convert $pkg" >&2
|
|
echo "$drv" >&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
|
|
# name,server,version
|
|
while IFS=, read -r nix_pkg_name lua_pkg_name server version
|
|
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" "$version"
|
|
done < "$CSV_FILE"
|
|
|
|
# close the set
|
|
echo "$FOOTER" | tee -a "$TMP_FILE"
|
|
|
|
cp "$TMP_FILE" "$GENERATED_NIXFILE"
|