diff --git a/.envrc b/.envrc index 1d953f4bd..051d09d29 100644 --- a/.envrc +++ b/.envrc @@ -1 +1 @@ -use nix +eval "$(lorri direnv)" diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index 09a4043ce..d129fa509 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -9,15 +9,19 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2.3.4 - - uses: cachix/install-nix-action@v12 + - uses: cachix/install-nix-action@v13 with: - nix_path: nixpkgs=channel:nixos-unstable + install_url: https://nixos-nix-install-tests.cachix.org/serve/i6laym9jw3wg9mw6ncyrk6gjx4l34vvx/install + install_options: '--tarball-url-prefix https://nixos-nix-install-tests.cachix.org/serve' + extra_nix_config: | + experimental-features = nix-command flakes + access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} - uses: cachix/cachix-action@v8 with: - name: knowsys + name: knowsys-rulewerk authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - env: BRANCH_NAME_OR_REF: ${{ github.head_ref || github.ref }} run: echo "name=BRANCH_NAME::${BRANCH_NAME_OR_REF#refs/heads/}" >> $GITHUB_ENV - run: echo "name=PR_NUMBER::$(jq --raw-output .pull_request.number "$GITHUB_EVENT_PATH")" >> $GITHUB_ENV - - run: nix-shell --run "mvn --no-transfer-progress verify" + - run: nix-shell --pure --run "maven clean verify" diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 5cb3cc663..d5b41b5d6 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -7,15 +7,19 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2.3.4 - - uses: cachix/install-nix-action@v12 + - uses: cachix/install-nix-action@v13 with: - nix_path: nixpkgs=channel:nixos-unstable + install_url: https://nixos-nix-install-tests.cachix.org/serve/i6laym9jw3wg9mw6ncyrk6gjx4l34vvx/install + install_options: '--tarball-url-prefix https://nixos-nix-install-tests.cachix.org/serve' + extra_nix_config: | + experimental-features = nix-command flakes + access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} - uses: cachix/cachix-action@v8 with: - name: knowsys + name: knowsys-rulewerk authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}' - env: BRANCH_NAME_OR_REF: ${{ github.head_ref || github.ref }} run: echo "name=BRANCH_NAME::${BRANCH_NAME_OR_REF#refs/heads/}" >> $GITHUB_ENV - run: echo "name=PR_NUMBER::$(jq --raw-output .pull_request.number "$GITHUB_EVENT_PATH")" >> $GITHUB_ENV - - run: nix-shell --run "mvn --no-transfer-progress test jacoco:report && mvn --no-transfer-progress coveralls:report -D repoToken=${{ secrets.COVERALLS_TOKEN }} -D serviceBuildUrl=https://github.com/${{ github.repository }}/commit/${{ github.sha }}/checks -D branch=$BRANCH_NAME -D pullRequest=$PR_NUMBER" + - run: nix-shell --pure --run "maven clean test jacoco:report && maven coveralls:report -D repoToken=${{ secrets.COVERALLS_TOKEN }} -D serviceBuildUrl=https://github.com/${{ github.repository }}/commit/${{ github.sha }}/checks -D branch=$BRANCH_NAME -D pullRequest=$PR_NUMBER" diff --git a/flake.lock b/flake.lock new file mode 100644 index 000000000..8e61286c9 --- /dev/null +++ b/flake.lock @@ -0,0 +1,77 @@ +{ + "nodes": { + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-utils": { + "locked": { + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "gitignoresrc": { + "flake": false, + "locked": { + "lastModified": 1611672876, + "narHash": "sha256-qHu3uZ/o9jBHiA3MEKHJ06k7w4heOhA+4HCSIvflRxo=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "211907489e9f198594c0eb0ca9256a1949c9d412", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1628165821, + "narHash": "sha256-I/e2Y1TjUkaM787s3gaeaB8X2OvinP/ueZpYnJjN6G4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ff1ea3a36c1dfafdf0490e0d144c5a0ed0891bb9", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-21.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": "flake-utils", + "gitignoresrc": "gitignoresrc", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 000000000..0b83d37f4 --- /dev/null +++ b/flake.nix @@ -0,0 +1,54 @@ +{ + description = "Rulewerk, a java toolkit for reasoning with existential rules"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-21.05"; + flake-utils.url = "github:numtide/flake-utils"; + flake-compat = { + url = "github:edolstra/flake-compat"; + flake = false; + }; + gitignoresrc = { + url = "github:hercules-ci/gitignore.nix"; + flake = false; + }; + }; + + outputs = { self, nixpkgs, flake-utils, flake-compat, gitignoresrc, ... }@inputs: + let getJdk = pkgs: pkgs.jdk8_headless; + in + { + overlay = import ./nix { inherit getJdk gitignoresrc; }; + } // (flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { + inherit system; + overlays = [ self.overlay ]; + }; + in + rec { + packages = flake-utils.lib.flattenTree { + inherit (pkgs) kognac trident vlog rulewerk; + }; + defaultPackage = pkgs.rulewerk; + apps.rulewerk = flake-utils.lib.mkApp { drv = packages.rulewerk; }; + defaultApp = apps.rulewerk; + devShell = + let jdk = getJdk pkgs; + in + pkgs.mkShell { + buildInputs = [ + jdk + (pkgs.maven.override { inherit jdk; }) + pkgs.kognac + pkgs.trident + pkgs.sparsehash + pkgs.curl + pkgs.lz4 + pkgs.zlib + pkgs.rulewerk + ]; + }; + } + )); +} diff --git a/nix/default.nix b/nix/default.nix new file mode 100644 index 000000000..be7d5638a --- /dev/null +++ b/nix/default.nix @@ -0,0 +1,13 @@ +{ getJdk, gitignoresrc }: final: prev: + +let + jdk = getJdk final.pkgs; + maven = prev.maven.override { inherit jdk; }; + gitignoreSource = (import gitignoresrc { inherit (final.pkgs) lib; }).gitignoreSource; +in +{ + kognac = final.pkgs.callPackage ./pkgs/kognac { }; + trident = final.pkgs.callPackage ./pkgs/trident { }; + vlog = final.pkgs.callPackage ./pkgs/vlog { inherit jdk maven; }; + rulewerk = final.pkgs.callPackage ./pkgs/rulewerk { inherit jdk maven gitignoreSource; }; +} diff --git a/nix/pkgs/kognac/default.nix b/nix/pkgs/kognac/default.nix new file mode 100644 index 000000000..bfd833424 --- /dev/null +++ b/nix/pkgs/kognac/default.nix @@ -0,0 +1,50 @@ +{ pkgs +, cacert +, cmake +, git +, lib +, lz4 +, sparsehash +, stdenv +, zlib +, ... +}: + +stdenv.mkDerivation { + pname = "kognac"; + version = "unstable-2021-07-07"; + src = pkgs.fetchFromGitHub { + owner = "karmaresearch"; + repo = "kognac"; + rev = "9b75357f87cdbfdb4561437f0000e0a0eb5394e8"; + sha256 = "+ElTpGVFz4Gqyc2lcFfjA3W0H+FaH3hInsS51tYGk7Y="; + }; + + buildInputs = [ zlib sparsehash lz4 ]; + nativeBuildInputs = [ cmake git cacert ]; + + cmakeFlags = [ "-DCMAKE_CXX_FLAGS=-w" ]; + patches = [ ./patches/kognac-lz4.patch ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + cp ./kognac_exec $out/bin + + mkdir -p $out/lib + cp ./libkognac-core.so $out/lib/ + + mkdir -p $out/share/include + cp -R $src/include/kognac/ $out/share/include + cp -R $src/include/zstr/ $out/share/include + + runHook postInstall + ''; + + meta = with lib; { + description = "A library handling compressed storage of RDF triples"; + license = licenses.asl20; + homepage = "https://github.com/karmaresearch/kognac"; + }; +} diff --git a/vlog/kognac-lz4.patch b/nix/pkgs/kognac/patches/kognac-lz4.patch similarity index 100% rename from vlog/kognac-lz4.patch rename to nix/pkgs/kognac/patches/kognac-lz4.patch diff --git a/nix/pkgs/rulewerk/default.nix b/nix/pkgs/rulewerk/default.nix new file mode 100644 index 000000000..45060c3a1 --- /dev/null +++ b/nix/pkgs/rulewerk/default.nix @@ -0,0 +1,66 @@ +{ pkgs +, gitignoreSource +, curl +, jdk +, lib +, lz4 +, makeWrapper +, maven +, sparsehash +, stdenv +}: + +let + rulewerk-dependencies = pkgs.callPackage ./dependencies.nix { inherit gitignoreSource jdk maven; }; +in +stdenv.mkDerivation rec { + pname = "rulewerk"; + version = "0.9.0-SNAPSHOT"; + src = gitignoreSource ../../..; + + modules = [ + "core" + "vlog" + "rdf" + "owlapi" + "graal" + "parser" + "commands" + "examples" + "client" + ]; + + buildInputs = [ makeWrapper lz4 curl sparsehash ]; + nativeBuildInputs = [ maven ]; + + buildPhase = '' + runHook preBuild + + mvn package -Pclient --offline -Dmaven.repo.local=${rulewerk-dependencies}/.m2 -DskipTests + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin $out/share/java + ln -s ${rulewerk-dependencies}/.m2 $out/lib + for module in ${toString modules} + do + cp ${pname}-$module/target/${pname}-$module-${version}.jar $out/share/java + done + + cp rulewerk-client/target/standalone-rulewerk-client-${version}.jar $out/share/java + makeWrapper ${jdk}/bin/java $out/bin/${pname} --add-flags "-jar $out/share/java/standalone-rulewerk-client-${version}.jar" + makeWrapper ${maven}/bin/mvn $out/bin/maven --add-flags "--offline -Dmaven.repo.local=${rulewerk-dependencies}/.m2" + + runHook postInstall + ''; + + meta = with lib; { + description = "A java toolkit for reasoning with existential rules"; + license = licenses.asl20; + homepage = "https://github.com/knowsys/rulewerk"; + }; +} diff --git a/nix/pkgs/rulewerk/dependencies.nix b/nix/pkgs/rulewerk/dependencies.nix new file mode 100644 index 000000000..ae4078a46 --- /dev/null +++ b/nix/pkgs/rulewerk/dependencies.nix @@ -0,0 +1,40 @@ +{ pkgs +, gitignoreSource +, jdk +, lib +, maven +, stdenv +, vlog +}: + +stdenv.mkDerivation { + name = "rulewerk-dependencies"; + nativeBuildInputs = [ maven ]; + src = gitignoreSource ../../..; + + preBuild = '' + mkdir -p rulewerk-vlog/lib/ + cp ${vlog}/share/java/jvlog.jar rulewerk-vlog/lib/jvlog-local.jar + mvn --no-transfer-progress initialize -Pdevelopment -Dmaven.repo.local=$out/.m2 + ''; + + buildPhase = '' + runHook preBuild + + mvn --no-transfer-progress go-offline:resolve-dependencies -Pclient -Dmaven.repo.local=$out/.m2 + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + find $out/.m2 -type f -regex '.+\(\.lastUpdated\|resolver-status\.properties\|_remote\.repositories\|maven-metadata-local\.xml\)' -delete + + runHook postInstall + ''; + + outputHashAlgo = "sha256"; + outputHashMode = "recursive"; + outputHash = "vzLyWvgAlNXvYWocB+hyKm9m9sMS+SMtzys1SdhDLso="; +} diff --git a/nix/pkgs/trident/default.nix b/nix/pkgs/trident/default.nix new file mode 100644 index 000000000..16061e2b9 --- /dev/null +++ b/nix/pkgs/trident/default.nix @@ -0,0 +1,57 @@ +{ pkgs +, cacert +, cmake +, git +, kognac +, lib +, lz4 +, sparsehash +, stdenv +, zlib +, ... +}: +stdenv.mkDerivation { + pname = "trident"; + version = "unstable-2021-07-07"; + src = pkgs.fetchFromGitHub { + owner = "karmaresearch"; + repo = "trident"; + rev = "15d8d6754b1021175bd42c7336f2f97f38c516e3"; + sha256 = "4CC1MyH9vVgAQy1+ATg4sUuRtTrRvhWWfCRqew2ic34="; + }; + + buildInputs = [ zlib sparsehash lz4 ]; + nativeBuildInputs = [ cmake git cacert ]; + + cmakeFlags = [ + "-DSPARQL=1" + "-DCMAKE_CXX_FLAGS=-w" + "-DKOGNAC_LIB=${kognac}/lib" + "-DKOGNAC_INC=${kognac}/share/include" + ]; + patches = [ ./patches/trident-lz4.patch ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + cp ./trident $out/bin + + mkdir -p $out/lib + cp ./libtrident-core.so $out/lib/ + cp ./libtrident-sparql.so $out/lib/ + + mkdir -p $out/share/include + cp -R $src/include/trident $out/share/include + cp -R $src/include/layers $out/share/include + cp -R $src/rdf3x/include $out/share/ + + runHook postInstall + ''; + + meta = with lib; { + description = "A read-only RDF triple store"; + license = licenses.asl20; + homepage = "https://github.com/karmaresearch/trident"; + }; +} diff --git a/vlog/trident-lz4.patch b/nix/pkgs/trident/patches/trident-lz4.patch similarity index 100% rename from vlog/trident-lz4.patch rename to nix/pkgs/trident/patches/trident-lz4.patch diff --git a/nix/pkgs/vlog/default.nix b/nix/pkgs/vlog/default.nix new file mode 100644 index 000000000..4de4d0b78 --- /dev/null +++ b/nix/pkgs/vlog/default.nix @@ -0,0 +1,58 @@ +{ pkgs +, cacert +, cmake +, curl +, git +, jdk +, kognac +, lib +, lz4 +, sparsehash +, stdenv +, trident +, zlib +, ... +}: + +stdenv.mkDerivation rec { + pname = "vlog"; + version = "1.3.5"; + src = pkgs.fetchFromGitHub { + owner = "karmaresearch"; + repo = "vlog"; + rev = "v${version}"; + sha256 = "sxgiTya2Qqq/mTJGr/BOIPRKDLgIdWGzeuNn5TBis4M="; + }; + + buildInputs = [ kognac trident sparsehash jdk curl lz4 ]; + nativeBuildInputs = [ cmake git cacert ]; + + cmakeFlags = [ + "-DJAVA=1" + "-DSPARQL=1" + "-DCMAKE_CXX_FLAGS=-w" + "-DKOGNAC_LIB=${kognac}/lib" + "-DKOGNAC_INC=${kognac}/share/include" + "-DTRIDENT_LIB=${trident}/lib" + "-DTRIDENT_INC=${trident}/share/include" + ]; + # TODO(mx): the JAR is not reproducible, as it contains the build time & date. + patches = [ ./patches/vlog-lz4.patch ]; + + postInstall = '' + mkdir -p $out/bin + cp ./vlog $out/bin + + mkdir -p $out/lib + cp ./libvlog-core.so $out/lib/ + + mkdir -p $out/share/java + cp ./jvlog.jar $out/share/java + ''; + + meta = with lib; { + description = "A reasoner for Datalog and Existential Rules"; + license = licenses.asl20; + homepage = "https://github.crom/karmaresearch/vlog"; + }; +} diff --git a/vlog/vlog-lz4.patch b/nix/pkgs/vlog/patches/vlog-lz4.patch similarity index 100% rename from vlog/vlog-lz4.patch rename to nix/pkgs/vlog/patches/vlog-lz4.patch diff --git a/pom.xml b/pom.xml index bb8f5d302..cddd2787b 100644 --- a/pom.xml +++ b/pom.xml @@ -225,6 +225,33 @@ jacoco-maven-plugin 0.8.5 + + de.qaware.maven + go-offline-maven-plugin + 1.2.8 + + + + org.apache.maven.surefire + surefire-junit4 + 3.0.0-M5 + PLUGIN + + + org.codehaus.plexus + plexus-utils + 1.1 + MAIN + + + org.codehaus.mojo + javacc-maven-plugin + 2.6 + PLUGIN + + + + diff --git a/rulewerk-vlog/pom.xml b/rulewerk-vlog/pom.xml index 4c0837a50..a6a6a61f0 100644 --- a/rulewerk-vlog/pom.xml +++ b/rulewerk-vlog/pom.xml @@ -48,6 +48,24 @@ pom), and place jar dependency there. --> + + + io.github.zlika + reproducible-build-maven-plugin + 0.13 + + + initialize + + strip-jar + + + ./lib/ + + + + org.apache.maven.plugins diff --git a/shell.nix b/shell.nix index 9d8842c07..9eb132a58 100644 --- a/shell.nix +++ b/shell.nix @@ -1,14 +1,13 @@ -let pkgs = import {}; - - maven = pkgs.maven; - dependencies = import ./vlog; - deps = dependencies.deps // { maven = maven; }; -in pkgs.mkShell { - buildInputsNative = [ maven deps.jdk dependencies.vlog ]; - shellHook = '' - mkdir -p rulewerk-vlog/lib/ - ln -sf ${dependencies.vlog.dev}/jvlog.jar rulewerk-vlog/lib/jvlog-local.jar - mvn --no-transfer-progress initialize -Pdevelopment - mvn --no-transfer-progress install -DskipTests - ''; -} +(import + ( + let + lock = builtins.fromJSON (builtins.readFile ./flake.lock); + in + fetchTarball { + url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz"; + sha256 = lock.nodes.flake-compat.locked.narHash; + } + ) + { + src = ./.; + }).shellNix diff --git a/vlog/default.nix b/vlog/default.nix deleted file mode 100644 index 3b68e8943..000000000 --- a/vlog/default.nix +++ /dev/null @@ -1,24 +0,0 @@ -let pkgs = import {}; - - args = { pkgs = pkgs; - lz4 = pkgs.lz4.override { enableStatic = true; }; - git = pkgs.git; - jdk = pkgs.jdk8_headless; - curl = pkgs.curl; - zlib = pkgs.zlib; - cmake = pkgs.cmake; - cacert = pkgs.cacert; - sparsehash = pkgs.sparsehash; - }; - - kognac = import ./kognac.nix args; - trident = import ./trident.nix (args // { inherit kognac; }); - vlog = import ./vlog.nix (args // { inherit kognac; inherit trident; }); - - deps = builtins.removeAttrs args [ "pkgs" ]; -in -{ inherit vlog; - inherit trident; - inherit kognac; - inherit deps; -} diff --git a/vlog/kognac.nix b/vlog/kognac.nix deleted file mode 100644 index 9faa9400e..000000000 --- a/vlog/kognac.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ pkgs, lz4, git, zlib, cmake, cacert, sparsehash, ...}: -pkgs.stdenv.mkDerivation { - name = "kognac-unstable"; - version = "2020-12-01"; - src = pkgs.fetchgit { - url = "git://github.com/karmaresearch/kognac"; - rev = "8430b081f8d76b11fa6858f3ec31a9ea5a5cf6a9"; - sha256 = "0mhmidbmcwql5h2qjfz3yvfhp79farx5j3cbdpisimk1zmwlzxjf"; - }; - - buildInputs = [ zlib sparsehash lz4 ]; - nativeBuildInputs = [ cmake git cacert ]; - outputs = [ "out" "lib" "dev" ]; - - cmakeFlags = [ "-DCMAKE_CXX_FLAGS=-w" ]; - patches = [ ./kognac-lz4.patch ]; - - installPhase = '' - mkdir -p $out - cp ./kognac_exec $out/ - - mkdir -p $lib - cp ./libkognac-core.so $lib/ - - mkdir -p $dev - cp -R $src/include/kognac/ $dev/ - cp -R $src/include/zstr/ $dev/ - ''; - - postFixup = '' - patchelf --set-rpath $lib:$(patchelf --print-rpath $out/kognac_exec) $out/kognac_exec - ''; -} diff --git a/vlog/trident.nix b/vlog/trident.nix deleted file mode 100644 index b6b0b8a1b..000000000 --- a/vlog/trident.nix +++ /dev/null @@ -1,40 +0,0 @@ -{ pkgs, lz4, git, zlib, cmake, cacert, sparsehash, kognac, ... }: -pkgs.stdenv.mkDerivation { - name = "trident-unstable"; - version = "2021-05-18"; - src = pkgs.fetchgit { - url = "git://github.com/karmaresearch/trident"; - rev = "c24179a17fac7d3ec8214aff9b97b41b21e981b4"; - sha256 = "0bi0366ngk162xjll1cxys6hfynw2xksz1yr7l6hdsx0bx9qvrw4"; - }; - - buildInputs = [ zlib sparsehash lz4 ]; - nativeBuildInputs = [ cmake git cacert ]; - outputs = [ "out" "lib" "dev" ]; - - cmakeFlags = [ "-DSPARQL=1" - "-DCMAKE_CXX_FLAGS=-w" - "-DKOGNAC_LIB=${kognac.lib}" - "-DKOGNAC_INC=${kognac.dev}" - ]; - patches = [ ./trident-lz4.patch ]; - - installPhase = '' - mkdir -p $out - cp ./trident $out/ - - mkdir -p $lib/ - cp ./libtrident-core.so $lib/ - cp ./libtrident-sparql.so $lib/ - - mkdir -p $dev/ - cp -R $src/include/trident $dev/ - cp -R $src/include/layers $dev/ - cp -R $src/rdf3x/include $dev/ - ''; - - postFixup = '' - patchelf --set-rpath $lib:$(patchelf --print-rpath $out/trident) $out/trident - patchelf --set-rpath $lib:$(patchelf --print-rpath $lib/libtrident-sparql.so) $lib/libtrident-sparql.so - ''; -} diff --git a/vlog/vlog.nix b/vlog/vlog.nix deleted file mode 100644 index 761784481..000000000 --- a/vlog/vlog.nix +++ /dev/null @@ -1,39 +0,0 @@ -{ pkgs, lz4, git, jdk, curl, zlib, cmake, cacert, sparsehash, kognac, trident, ... }: -pkgs.stdenv.mkDerivation { - name = "vlog"; - version = "1.35"; - src = pkgs.fetchgit { - url = "git://github.com/karmaresearch/vlog"; - rev = "ca0669424963765d08a63a29a0d89e27cf33ef51"; - sha256 = "10xkc8qfarz3garn2x88p064mx109vqayiijk6zslhmn4r7j465k"; - }; - - buildInputs = [ kognac trident sparsehash jdk curl lz4 ]; - nativeBuildInputs = [ cmake git cacert ]; - outputs = [ "out" "lib" "dev" ]; - - cmakeFlags = [ "-DJAVA=1" - "-DSPARQL=1" - "-DCMAKE_CXX_FLAGS=-w" - "-DKOGNAC_LIB=${kognac.lib}" - "-DKOGNAC_INC=${kognac.dev}" - "-DTRIDENT_LIB=${trident.lib}" - "-DTRIDENT_INC=${trident.dev}" - ]; - patches = [ ./vlog-lz4.patch ]; - - postInstall = '' - mkdir -p $out - cp ./vlog $out/ - - mkdir -p $lib - cp ./libvlog-core.so $lib/ - - mkdir -p $dev - cp ./jvlog.jar $dev/ - ''; - - postFixup = '' - patchelf --set-rpath $lib:$(patchelf --print-rpath $out/vlog) $out/vlog - ''; -}