commit
6b8bbdfdc0
@ -0,0 +1,17 @@ |
||||
diff --git a/udiskie/locale.py b/udiskie/locale.py
|
||||
index f12bea9..450e38b 100644
|
||||
--- a/udiskie/locale.py
|
||||
+++ b/udiskie/locale.py
|
||||
@@ -10,10 +10,8 @@ from gettext import translation
|
||||
testdirs = [
|
||||
# manual override:
|
||||
os.environ.get('TEXTDOMAINDIR'),
|
||||
- # editable installation:
|
||||
- os.path.join(os.path.dirname(__file__), '../build/locale'),
|
||||
- # user or virtualenv installation:
|
||||
- os.path.join(sys.prefix, 'share/locale'),
|
||||
+ # Nix installation:
|
||||
+ os.path.join('@out@', 'share/locale'),
|
||||
]
|
||||
testfile = 'en_US/LC_MESSAGES/udiskie.mo'
|
||||
localedir = next(
|
@ -1,70 +0,0 @@ |
||||
{ lib, stdenv, fetchFromGitHub, fetchpatch, autoconf, automake, libtool, pkg-config, python2 |
||||
, boost, db, openssl, geoip, libiconv, miniupnpc, srcOnly |
||||
}: |
||||
|
||||
let |
||||
twisterHTML = srcOnly { |
||||
name = "twister-html"; |
||||
src = fetchFromGitHub { |
||||
owner = "miguelfreitas"; |
||||
repo = "twister-html"; |
||||
rev = "01e7f7ca9b7e42ed90f91bc42da2c909ca5c0b9b"; |
||||
sha256 = "sha256-Hi/VAEwujWhKAPaYIuvrxRIuPQa9AYwXiHUGbWxckmk="; |
||||
}; |
||||
}; |
||||
|
||||
boostPython = boost.override { |
||||
enablePython = true; |
||||
python = python2; |
||||
}; |
||||
|
||||
in stdenv.mkDerivation rec { |
||||
pname = "twister"; |
||||
version = "2019-08-19"; |
||||
|
||||
src = fetchFromGitHub { |
||||
owner = "miguelfreitas"; |
||||
repo = "twister-core"; |
||||
rev = "31faf3f63e461ea0a9b23081567a4a552cf06873"; |
||||
sha256 = "0xh1lgnl9nd86jr0mp7m8bkd7r5j4d6chd0y73h2xv4aq5sld0sp"; |
||||
}; |
||||
|
||||
configureFlags = [ |
||||
"--with-libgeoip" |
||||
"--with-libiconv" |
||||
"--disable-deprecated-functions" |
||||
"--enable-tests" |
||||
"--enable-python-binding" |
||||
"--with-boost-libdir=${boostPython.out}/lib" |
||||
]; |
||||
|
||||
nativeBuildInputs = [ pkg-config automake autoconf ]; |
||||
buildInputs = [ |
||||
libtool python2 |
||||
boostPython db openssl geoip miniupnpc libiconv |
||||
]; |
||||
|
||||
postPatch = '' |
||||
sed -i -e '/-htmldir/s|(default: [^)]*)|(default: ${twisterHTML})|' \ |
||||
src/init.cpp |
||||
sed -i -e '/GetDataDir.*html/s|path *= *[^;]*|path = "${twisterHTML}"|' \ |
||||
src/util.cpp |
||||
''; |
||||
|
||||
preConfigure = '' |
||||
sh autotool.sh |
||||
''; |
||||
|
||||
installPhase = '' |
||||
install -vD twisterd "$out/bin/twisterd" |
||||
''; |
||||
|
||||
enableParallelBuilding = true; |
||||
|
||||
meta = { |
||||
homepage = "http://www.twister.net.co/"; |
||||
description = "Peer-to-peer microblogging"; |
||||
license = lib.licenses.mit; |
||||
platforms = lib.platforms.linux; |
||||
}; |
||||
} |
@ -0,0 +1,50 @@ |
||||
{ lib, stdenv, fetchFromGitHub, ocamlPackages, why3 }: |
||||
|
||||
stdenv.mkDerivation rec { |
||||
pname = "easycrypt"; |
||||
version = "2022.04"; |
||||
|
||||
src = fetchFromGitHub { |
||||
owner = pname; |
||||
repo = pname; |
||||
rev = "r${version}"; |
||||
sha256 = "sha256:09rdwcj70lkamkhd895p284rfpz4bcnsf55mcimhiqncd2a21ml7"; |
||||
}; |
||||
|
||||
nativeBuildInputs = with ocamlPackages; [ |
||||
dune_3 |
||||
findlib |
||||
menhir |
||||
ocaml |
||||
]; |
||||
buildInputs = with ocamlPackages; [ |
||||
batteries |
||||
dune-build-info |
||||
inifiles |
||||
yojson |
||||
zarith |
||||
]; |
||||
|
||||
propagatedBuildInputs = [ why3 ]; |
||||
|
||||
strictDeps = true; |
||||
|
||||
postPatch = '' |
||||
substituteInPlace dune-project --replace '(name easycrypt)' '(name easycrypt)(version ${version})' |
||||
''; |
||||
|
||||
installPhase = '' |
||||
runHook preInstall |
||||
dune install --prefix $out ${pname} |
||||
rm $out/bin/ec-runtest |
||||
runHook postInstall |
||||
''; |
||||
|
||||
meta = { |
||||
license = lib.licenses.mit; |
||||
maintainers = [ lib.maintainers.vbgl ]; |
||||
platforms = lib.platforms.all; |
||||
homepage = "https://easycrypt.info/"; |
||||
description = "Computer-Aided Cryptographic Proofs"; |
||||
}; |
||||
} |
@ -0,0 +1,24 @@ |
||||
{ python3Packages, easycrypt }: |
||||
|
||||
python3Packages.buildPythonApplication rec { |
||||
inherit (easycrypt) src version; |
||||
|
||||
pname = "easycrypt-runtest"; |
||||
|
||||
dontConfigure = true; |
||||
dontBuild = true; |
||||
doCheck = false; |
||||
|
||||
pythonPath = with python3Packages; [ pyyaml ]; |
||||
|
||||
installPhase = '' |
||||
runHook preInstall |
||||
mkdir -p $out/bin |
||||
cp scripts/testing/runtest $out/bin/ec-runtest |
||||
runHook postInstall |
||||
''; |
||||
|
||||
meta = easycrypt.meta // { |
||||
description = "Testing program for EasyCrypt formalizations"; |
||||
}; |
||||
} |
@ -1,151 +0,0 @@ |
||||
{ stdenv, lib, config, fetchFromGitHub |
||||
, cmake |
||||
, glog, gflags, gtest |
||||
, protobuf, snappy |
||||
, python, future, six, python-protobuf, numpy, pydot |
||||
, eigen |
||||
, doxygen |
||||
, useCuda ? (config.cudaSupport or false), cudaPackages ? {} |
||||
, useCudnn ? (config.cudnnSupport or false) |
||||
, useOpenmp ? false, openmp ? null |
||||
, useOpencv3 ? true, opencv3 ? null |
||||
, useLeveldb ? false, leveldb ? null |
||||
, useLmdb ? true, lmdb ? null |
||||
, useRocksdb ? false, rocksdb ? null |
||||
, useZeromq ? false, zeromq ? null |
||||
, useMpi ? false, mpi ? null |
||||
# TODO: distributed computations |
||||
#, useGloo ? false |
||||
#, useNccl ? false |
||||
#, useNnpack ? false |
||||
}: |
||||
|
||||
let |
||||
inherit (cudaPackages) cudatoolkit cudnn; |
||||
in |
||||
|
||||
assert useCuda -> cudatoolkit != null; |
||||
assert useCudnn -> (useCuda && cudnn != null); |
||||
assert useOpencv3 -> opencv3 != null; |
||||
assert useLeveldb -> leveldb != null; |
||||
assert useLmdb -> lmdb != null; |
||||
assert useRocksdb -> rocksdb != null; |
||||
assert useZeromq -> zeromq != null; |
||||
assert useMpi -> mpi != null; |
||||
|
||||
let |
||||
# Third party modules that caffe2 holds as git submodules. |
||||
# Download them and create symlinks from caffe2/third_party. |
||||
installExtraSrc = extra: '' |
||||
rmdir "third_party/${extra.dst}" |
||||
ln -s "${extra.src}" "third_party/${extra.dst}" |
||||
''; |
||||
|
||||
cub = { |
||||
src = fetchFromGitHub { |
||||
owner = "NVlabs"; |
||||
repo = "cub"; |
||||
rev = "v1.7.4"; |
||||
sha256 = "0ksd5n1lxqhm5l5cd2lps4cszhjkf6gmzahaycs7nxb06qci8c66"; |
||||
}; |
||||
dst = "cub"; |
||||
}; |
||||
|
||||
pybind11 = { |
||||
src = fetchFromGitHub { |
||||
owner = "pybind"; |
||||
repo = "pybind11"; |
||||
rev = "86e2ad4f77442c3350f9a2476650da6bee253c52"; |
||||
sha256 = "05gi58dirvc8fgm0avpydvidzsbh2zrzgfaq671ym09f6dz0bcgz"; |
||||
}; |
||||
dst = "pybind11"; |
||||
}; |
||||
|
||||
ccVersion = lib.getVersion stdenv.cc; |
||||
in |
||||
|
||||
stdenv.mkDerivation rec { |
||||
pname = "caffe2"; |
||||
version = "0.8.1"; |
||||
src = fetchFromGitHub { |
||||
owner = "caffe2"; |
||||
repo = "caffe2"; |
||||
rev = "v${version}"; |
||||
sha256 = "18y7zjc69j6n5642l9caddl641b0djf3pjn4wacdsc1wk1jiyqk8"; |
||||
}; |
||||
|
||||
nativeBuildInputs = [ cmake doxygen gtest ]; |
||||
outputs = [ "bin" "out" ]; |
||||
propagatedBuildOutputs = [ ]; # otherwise propagates out -> bin cycle |
||||
|
||||
buildInputs = [ glog gflags protobuf snappy eigen ] |
||||
++ lib.optional useCuda cudatoolkit |
||||
++ lib.optional useCudnn cudnn |
||||
++ lib.optional useOpenmp openmp |
||||
++ lib.optional useOpencv3 opencv3 |
||||
++ lib.optional useLeveldb leveldb |
||||
++ lib.optional useLmdb lmdb |
||||
++ lib.optional useRocksdb rocksdb |
||||
++ lib.optional useZeromq zeromq |
||||
; |
||||
propagatedBuildInputs = [ numpy future six python-protobuf pydot ]; |
||||
|
||||
patches = lib.optional (stdenv.cc.isGNU && lib.versionAtLeast ccVersion "7.0.0") [ |
||||
./fix_compilation_on_gcc7.patch |
||||
] ++ lib.optional stdenv.cc.isClang [ ./update_clang_cvtsh_bugfix.patch ]; |
||||
|
||||
cmakeFlags = [ "-DBUILD_TEST=OFF" |
||||
"-DBUILD_PYTHON=ON" |
||||
''-DUSE_CUDA=${if useCuda then "ON"else "OFF"}'' |
||||
''-DUSE_OPENMP=${if useOpenmp then "ON"else "OFF"}'' |
||||
''-DUSE_OPENCV=${if useOpencv3 then "ON"else "OFF"}'' |
||||
''-DUSE_MPI=${if useMpi then "ON"else "OFF"}'' |
||||
''-DUSE_LEVELDB=${if useLeveldb then "ON"else "OFF"}'' |
||||
''-DUSE_LMDB=${if useLmdb then "ON"else "OFF"}'' |
||||
''-DUSE_ROCKSDB=${if useRocksdb then "ON"else "OFF"}'' |
||||
''-DUSE_ZMQ=${if useZeromq then "ON"else "OFF"}'' |
||||
"-DUSE_GLOO=OFF" |
||||
"-DUSE_NNPACK=OFF" |
||||
"-DUSE_NCCL=OFF" |
||||
"-DUSE_REDIS=OFF" |
||||
"-DUSE_FFMPEG=OFF" |
||||
] |
||||
++ lib.optional useCuda [ |
||||
"-DCUDA_TOOLKIT_ROOT_DIR=${cudatoolkit}" |
||||
"-DCUDA_FAST_MATH=ON" |
||||
"-DCUDA_HOST_COMPILER=${cudatoolkit.cc}/bin/gcc" |
||||
]; |
||||
|
||||
preConfigure = '' |
||||
${installExtraSrc cub} |
||||
${installExtraSrc pybind11} |
||||
# XXX hack |
||||
export NIX_CFLAGS_COMPILE="-I ${eigen}/include/eigen3/ $NIX_CFLAGS_COMPILE" |
||||
''; |
||||
|
||||
postInstall = '' |
||||
moveToOutput "bin" "$bin" |
||||
mkdir -p $out/lib/${python.libPrefix} |
||||
ln -s $out/ $out/${python.sitePackages} |
||||
''; |
||||
|
||||
doCheck = false; |
||||
|
||||
meta = { |
||||
homepage = "https://caffe2.ai/"; |
||||
description = "A new lightweight, modular, and scalable deep learning framework"; |
||||
longDescription = '' |
||||
Caffe2 aims to provide an easy and straightforward way for you to experiment |
||||
with deep learning and leverage community contributions of new models and |
||||
algorithms. You can bring your creations to scale using the power of GPUs in the |
||||
cloud or to the masses on mobile with Caffe2's cross-platform libraries. |
||||
''; |
||||
platforms = with lib.platforms; linux; |
||||
license = lib.licenses.asl20; |
||||
maintainers = with lib.maintainers; [ yuriaisaka ]; |
||||
# fails to compile with |
||||
# error: invalid conversion from 'const char*' to 'char*' |
||||
# TODO: Remove usage of python2, protobuf overwrite |
||||
broken = true; |
||||
}; |
||||
} |
@ -1,46 +0,0 @@ |
||||
diff --git a/caffe2/operators/recurrent_network_op.cc b/caffe2/operators/recurrent_network_op.cc
|
||||
index dd4fded..5995e8a 100644
|
||||
--- a/caffe2/operators/recurrent_network_op.cc
|
||||
+++ b/caffe2/operators/recurrent_network_op.cc
|
||||
@@ -1,4 +1,4 @@
|
||||
-#include "recurrent_network_op.h"
|
||||
+#include "caffe2/operators/recurrent_network_op.h"
|
||||
#include "caffe2/core/workspace.h"
|
||||
|
||||
namespace caffe2 {
|
||||
diff --git a/caffe2/operators/recurrent_network_op.h b/caffe2/operators/recurrent_network_op.h
|
||||
index 55328e5..ea898bc 100644
|
||||
--- a/caffe2/operators/recurrent_network_op.h
|
||||
+++ b/caffe2/operators/recurrent_network_op.h
|
||||
@@ -762,8 +762,8 @@ class AccumulateInputGradientOp : public Operator<Context> {
|
||||
USE_OPERATOR_CONTEXT_FUNCTIONS;
|
||||
|
||||
bool RunOnDevice() override {
|
||||
- const auto t =
|
||||
- OperatorBase::Input<Tensor<CPUContext>>(0).template data<int32_t>()[0];
|
||||
+ const auto& t0 = OperatorBase::Input<Tensor<CPUContext>>(0);
|
||||
+ const auto t = t0.template data<int32_t>()[0];
|
||||
auto& og = Input(1);
|
||||
auto* g = Output(0);
|
||||
|
||||
diff --git a/caffe2/queue/queue_ops.h b/caffe2/queue/queue_ops.h
|
||||
index f2c0a33..642343f 100644
|
||||
--- a/caffe2/queue/queue_ops.h
|
||||
+++ b/caffe2/queue/queue_ops.h
|
||||
@@ -17,13 +17,10 @@ class CreateBlobsQueueOp final : public Operator<Context> {
|
||||
name(operator_def.output().Get(0)) {}
|
||||
|
||||
bool RunOnDevice() override {
|
||||
- const auto capacity =
|
||||
- OperatorBase::template GetSingleArgument<int>("capacity", 1);
|
||||
- const auto numBlobs =
|
||||
- OperatorBase::template GetSingleArgument<int>("num_blobs", 1);
|
||||
+ const auto capacity = GetSingleArgument("capacity", 1);
|
||||
+ const auto numBlobs = GetSingleArgument("num_blobs", 1);
|
||||
const auto enforceUniqueName =
|
||||
- OperatorBase::template GetSingleArgument<int>(
|
||||
- "enforce_unique_name", false);
|
||||
+ GetSingleArgument("enforce_unique_name", false);
|
||||
const auto fieldNames =
|
||||
OperatorBase::template GetRepeatedArgument<std::string>("field_names");
|
||||
CAFFE_ENFORCE_EQ(this->OutputSize(), 1);
|
@ -1,55 +0,0 @@ |
||||
diff --git a/caffe2/perfkernels/cvtsh_ss_bugfix.h b/caffe2/perfkernels/cvtsh_ss_bugfix.h
|
||||
index bd06681..00172b7 100644
|
||||
--- a/caffe2/perfkernels/cvtsh_ss_bugfix.h
|
||||
+++ b/caffe2/perfkernels/cvtsh_ss_bugfix.h
|
||||
@@ -1,10 +1,36 @@
|
||||
+/**
|
||||
+ * Copyright (c) 2016-present, Facebook, Inc.
|
||||
+ *
|
||||
+ * Licensed under the Apache License, Version 2.0 (the "License");
|
||||
+ * you may not use this file except in compliance with the License.
|
||||
+ * You may obtain a copy of the License at
|
||||
+ *
|
||||
+ * http://www.apache.org/licenses/LICENSE-2.0
|
||||
+ *
|
||||
+ * Unless required by applicable law or agreed to in writing, software
|
||||
+ * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
+ * See the License for the specific language governing permissions and
|
||||
+ * limitations under the License.
|
||||
+ */
|
||||
+
|
||||
#pragma once
|
||||
|
||||
-#if defined(__APPLE__) && (__clang_major__ < 8)
|
||||
+// Apple clang was fixed in 8.1
|
||||
+#if defined(__apple_build_version__) && ((__clang_major__ < 8) || ((__clang_major__ == 8) && (__clang_minor__ < 1)))
|
||||
+#define __APPLE_NEED_FIX 1
|
||||
+#endif
|
||||
+
|
||||
+// Regular clang was fixed in 3.9
|
||||
+#if defined(__clang__) && (__clang_major__ < 4) && (__clang_minor__ < 9)
|
||||
+#define __CLANG_NEED_FIX 1
|
||||
+#endif
|
||||
+
|
||||
+#if __APPLE_NEED_FIX || __CLANG_NEED_FIX
|
||||
|
||||
#include <emmintrin.h>
|
||||
|
||||
-// This version of apple clang has a bug that _cvtsh_ss is not defined, see
|
||||
+// This version of clang has a bug that _cvtsh_ss is not defined, see
|
||||
// https://reviews.llvm.org/D16177
|
||||
static __inline float
|
||||
__attribute__((__always_inline__, __nodebug__, __target__("f16c")))
|
||||
@@ -15,7 +41,10 @@ _cvtsh_ss(unsigned short a)
|
||||
return r[0];
|
||||
}
|
||||
|
||||
-#endif // defined(__APPLE__) && (__clang_major__ < 8)
|
||||
+#endif // __APPLE_NEED_FIX || __CLANG_NEED_FIX
|
||||
+
|
||||
+#undef __APPLE_NEED_FIX
|
||||
+#undef __CLANG_NEED_FIX
|
||||
|
||||
#ifdef _MSC_VER
|
||||
|
@ -1,67 +0,0 @@ |
||||
{ lib, python3, fetchFromGitHub }: |
||||
|
||||
let |
||||
py = python3.override { |
||||
packageOverrides = self: super: { |
||||
self = py; |
||||
# use click 7 |
||||
click = self.callPackage ../../../development/python2-modules/click/default.nix { }; |
||||
# needs pyyaml 5 |
||||
pyyaml = super.pyyaml.overridePythonAttrs (oldAttrs: rec { |
||||
name = "${oldAttrs.pname}-${version}"; |
||||
version = "5.4.1"; |
||||
src = fetchFromGitHub { |
||||
owner = "yaml"; |
||||
repo = "pyyaml"; |
||||
rev = version; |
||||
sha256 = "sha256-VUqnlOF/8zSOqh6JoEYOsfQ0P4g+eYqxyFTywgCS7gM="; |
||||
}; |
||||
checkPhase = '' |
||||
runHook preCheck |
||||
PYTHONPATH="tests/lib3:$PYTHONPATH" ${self.python.interpreter} -m test_all |
||||
runHook postCheck |
||||
''; |
||||
}); |
||||
}; |
||||
}; |
||||
in |
||||
with py.pkgs; |
||||
|
||||
buildPythonApplication rec { |
||||
pname = "lookatme"; |
||||
version = "2.3.2"; |
||||
format = "setuptools"; |
||||
|
||||
src = fetchPypi { |
||||
inherit pname version; |
||||
sha256 = "sha256-qIZMkgOm5jXmxTFLTqMBhpLBhfCL8xvUxxqpS6NjcVw="; |
||||
}; |
||||
|
||||
checkInputs = [ |
||||
pytest-mock |
||||
pytestCheckHook |
||||
six |
||||
]; |
||||
|
||||
disabledTests = [ |
||||
# https://github.com/d0c-s4vage/lookatme/issues/126 |
||||
"test_sanity_check_that_errors_are_detected" |
||||
"test_styles_defaults" |
||||
]; |
||||
|
||||
propagatedBuildInputs = [ |
||||
click |
||||
pyyaml |
||||
pygments |
||||
marshmallow |
||||
mistune |
||||
urwid |
||||
]; |
||||
|
||||
meta = with lib; { |
||||
description = "An interactive, terminal-based markdown presenter"; |
||||
homepage = "https://github.com/d0c-s4vage/lookatme"; |
||||
license = licenses.mit; |
||||
maintainers = with maintainers; [ ameer ]; |
||||
}; |
||||
} |
@ -0,0 +1,52 @@ |
||||
{ lib, buildGoModule, fetchFromGitHub, testers, runitor }: |
||||
|
||||
buildGoModule rec { |
||||
pname = "runitor"; |
||||
version = "0.9.2"; |
||||
vendorSha256 = null; |
||||
|
||||
src = fetchFromGitHub { |
||||
owner = "bdd"; |
||||
repo = "runitor"; |
||||
rev = "v${version}"; |
||||
sha256 = "sha256-LuCxn4j0MlnJjSh3d18YNzNrtbqtMPxgkZttqKUGJd4"; |
||||
}; |
||||
|
||||
ldflags = [ |
||||
"-s" "-w" "-X main.Version=v${version}" |
||||
]; |
||||
|
||||
# TODO(cole-h): |
||||
# End-to-end tests requiring localhost networking currently under |
||||
# OfBorg's Linux builders, while passing under Darwin. |
||||
# |
||||
# Ref: https://github.com/NixOS/nixpkgs/pull/170566#issuecomment-1114034891 |
||||
# |
||||
# Temporarily disable tests. |
||||
doCheck = false; |
||||
|
||||
passthru.tests.version = testers.testVersion { |
||||
package = runitor; |
||||
command = "runitor -version"; |
||||
version = "v${version}"; |
||||
}; |
||||
|
||||
# Unit tests require binding to local addresses for listening sockets. |
||||
__darwinAllowLocalNetworking = true; |
||||
|
||||
meta = with lib; { |
||||
homepage = "https://bdd.fi/x/runitor"; |
||||
description = "A command runner with healthchecks.io integration"; |
||||
longDescription = '' |
||||
Runitor runs the supplied command, captures its output, and based on its exit |
||||
code reports successful or failed execution to https://healthchecks.io or your |
||||
private instance. |
||||
|
||||
Healthchecks.io is a web service for monitoring periodic tasks. It's like a |
||||
dead man's switch for your cron jobs. You get alerted if they don't run on time |
||||
or terminate with a failure. |
||||
''; |
||||
license = licenses.bsd0; |
||||
maintainers = with maintainers; [ bdd ]; |
||||
}; |
||||
} |
@ -1,21 +0,0 @@ |
||||
{lib, stdenv, fetchurl, python2, libxml2}: |
||||
|
||||
assert libxml2.pythonSupport == true; |
||||
|
||||
stdenv.mkDerivation rec { |
||||
pname = "xpf"; |
||||
version = "0.2"; |
||||
|
||||
src = fetchurl { |
||||
url = "http://tarballs.nixos.org/xpf-${version}.tar.gz"; |
||||
sha256 = "0ljx91w68rnh4871c0xlq2whlmhqz8dr39wcdczfjjpniqz1fmpz"; |
||||
}; |
||||
|
||||
buildInputs = [ python2 libxml2 ]; |
||||
|
||||
meta = { |
||||
description = "XML Pipes and Filters - command line tools for manipulating and querying XML data"; |
||||
homepage = "http://www.cs.uu.nl/wiki/bin/view/Martin/XmlPipesAndFilters"; |
||||
platforms = lib.platforms.unix; |
||||
}; |
||||
} |
Loading…
Reference in new issue