dolos fixed
CI / Nix Flake Check (push) Successful in 52s
CI / Build Packages (default) (push) Successful in 52s
CI / Build Packages (example-a) (push) Successful in 46s
CI / Build Packages (example-b) (push) Successful in 46s
CI / Build Packages (pyzotero) (push) Successful in 54s
CI / Build Packages (pyzotero-cli) (push) Successful in 56s
CI / Nix Flake Check (push) Successful in 52s
CI / Build Packages (default) (push) Successful in 52s
CI / Build Packages (example-a) (push) Successful in 46s
CI / Build Packages (example-b) (push) Successful in 46s
CI / Build Packages (pyzotero) (push) Successful in 54s
CI / Build Packages (pyzotero-cli) (push) Successful in 56s
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
}:
|
||||
let
|
||||
self = {
|
||||
dolos = pkgs.callPackage ./dolos { nodejs = pkgs.nodejs_22; };
|
||||
example-a = pkgs.callPackage ./example-a { };
|
||||
example-b = pkgs.callPackage ./example-b { };
|
||||
pyzotero = pkgs.callPackage ./pyzotero { };
|
||||
|
||||
@@ -0,0 +1,150 @@
|
||||
{
|
||||
lib,
|
||||
buildNpmPackage,
|
||||
fetchFromGitHub,
|
||||
python3,
|
||||
nodejs,
|
||||
}:
|
||||
|
||||
let
|
||||
version = "2.9.3";
|
||||
|
||||
tree-sitter-elixir = fetchFromGitHub {
|
||||
owner = "elixir-lang";
|
||||
repo = "tree-sitter-elixir";
|
||||
rev = "v0.3.5";
|
||||
hash = "sha256-C5/+t49pcFh45GqLZRjRs/sH8Ej+dklR/brad+snsyQ=";
|
||||
};
|
||||
in
|
||||
buildNpmPackage rec {
|
||||
pname = "dolos";
|
||||
inherit version;
|
||||
|
||||
inherit nodejs;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dodona-edu";
|
||||
repo = "dolos";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-kilCxSe4njHyoXVXpyLmx5HnGkzFptLYOypQmldGnzc=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
npmWorkspace = "cli";
|
||||
npmDepsHash = "sha256-3RMUWo6vybfi0BvQ12jjxuYFPDe3HkTv24L3BsuOCFg=";
|
||||
|
||||
nativeBuildInputs = [ python3 ];
|
||||
|
||||
TREE_SITTER_BUILD_FROM_SOURCE = "1";
|
||||
npm_config_build_from_source = "true";
|
||||
|
||||
dontNpmBuild = true;
|
||||
|
||||
npmRebuildFlags = [ "--ignore-scripts" ];
|
||||
|
||||
postConfigure = ''
|
||||
sed -i '2s/^/process.exit(0);\n/' node_modules/tree-sitter-cli/install.js
|
||||
npm rebuild
|
||||
'';
|
||||
|
||||
preBuild = ''
|
||||
cp -r ${tree-sitter-elixir} parsers/elixir
|
||||
chmod -R u+w parsers/elixir
|
||||
|
||||
cat > parsers/elixir/binding.gyp << 'GYPEOF'
|
||||
{
|
||||
"targets": [
|
||||
{
|
||||
"target_name": "tree_sitter_elixir_binding",
|
||||
"dependencies": [
|
||||
"<!(node -p \"require('node-addon-api').targets\"):node_addon_api_except",
|
||||
],
|
||||
"include_dirs": [
|
||||
"src",
|
||||
"src/tree_sitter",
|
||||
],
|
||||
"sources": [
|
||||
"bindings/node/binding.cc",
|
||||
"src/parser.c",
|
||||
"src/scanner.c",
|
||||
],
|
||||
"cflags_c": ["-std=c11"],
|
||||
}
|
||||
]
|
||||
}
|
||||
GYPEOF
|
||||
|
||||
cat > parsers/binding.gyp << 'GYPEOF'
|
||||
{
|
||||
"includes": [
|
||||
"bash/binding.gyp",
|
||||
"c/binding.gyp",
|
||||
"cpp/binding.gyp",
|
||||
"c_sharp/binding.gyp",
|
||||
"elm/binding.gyp",
|
||||
"elixir/binding.gyp",
|
||||
"go/binding.gyp",
|
||||
"groovy/binding.gyp",
|
||||
"java/binding.gyp",
|
||||
"javascript/binding.gyp",
|
||||
"modelica/binding.gyp",
|
||||
"ocaml/binding.gyp",
|
||||
"php/binding.gyp",
|
||||
"python/binding.gyp",
|
||||
"r/binding.gyp",
|
||||
"rust/binding.gyp",
|
||||
"scala/binding.gyp",
|
||||
"sql/binding.gyp",
|
||||
"typescript/binding.gyp",
|
||||
"verilog/binding.gyp"
|
||||
]
|
||||
}
|
||||
GYPEOF
|
||||
|
||||
sed -i '/^parsers.verilog/a \
|
||||
parsers.elixir = require("./build/Release/tree_sitter_elixir_binding");\
|
||||
parsers.elixir.nodeTypeInfo = require("./elixir/src/node-types.json");
|
||||
' parsers/index.js
|
||||
|
||||
npm run build -w parsers
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
npm run build -w cli
|
||||
npm run build -w lib
|
||||
npm run build -w core
|
||||
npm run build -w web
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
cp -r lib $out/lib/node_modules/dolos-meta/lib
|
||||
chmod -R u+w $out/lib/node_modules/dolos-meta/lib
|
||||
cp -r core $out/lib/node_modules/dolos-meta/core
|
||||
chmod -R u+w $out/lib/node_modules/dolos-meta/core
|
||||
cp -r parsers $out/lib/node_modules/dolos-meta/parsers
|
||||
chmod -R u+w $out/lib/node_modules/dolos-meta/parsers
|
||||
|
||||
dolonsDir="$out/lib/node_modules/dolos-meta/node_modules/@dodona"
|
||||
|
||||
rm -rf "$dolonsDir/dolos-web"
|
||||
mkdir -p "$dolonsDir/dolos-web"
|
||||
install -m644 web/index.js "$dolonsDir/dolos-web/index.js"
|
||||
install -m644 web/index.d.ts "$dolonsDir/dolos-web/index.d.ts" 2>/dev/null || true
|
||||
install -m644 web/package.json "$dolonsDir/dolos-web/package.json"
|
||||
cp -r web/dist "$dolonsDir/dolos-web/dist"
|
||||
chmod -R u+w "$dolonsDir/dolos-web"
|
||||
|
||||
rm "$dolonsDir/dolos"
|
||||
ln -s ../.. "$dolonsDir/dolos"
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Source code plagiarism detection tool for programming exercises";
|
||||
homepage = "https://dolos.ugent.be";
|
||||
license = lib.licenses.mit;
|
||||
mainProgram = "dolos";
|
||||
platforms = lib.platforms.linux ++ lib.platforms.darwin;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user