diff --git a/pkgs/development/python-modules/milksnake/default.nix b/pkgs/development/python-modules/milksnake/default.nix new file mode 100644 index 00000000000..014bb223225 --- /dev/null +++ b/pkgs/development/python-modules/milksnake/default.nix @@ -0,0 +1,26 @@ +{ lib, buildPythonPackage, fetchPypi, cffi }: + +buildPythonPackage rec { + pname = "milksnake"; + version = "0.1.5"; + + src = fetchPypi { + inherit pname version; + extension = "zip"; + sha256 = "120nprd8lqis7x7zy72536gk2j68f7gxm8gffmx8k4ygifvl7kfz"; + }; + + propagatedBuildInputs = [ + cffi + ]; + + # tests rely on pip/venv + doCheck = false; + + meta = with lib; { + description = "A python library that extends setuptools for binary extensions"; + homepage = https://github.com/getsentry/milksnake; + license = licenses.asl20; + maintainers = with maintainers; [ matthiasbeyer ]; + }; +} diff --git a/pkgs/tools/misc/vdirsyncer/default.nix b/pkgs/tools/misc/vdirsyncer/default.nix index 9d1e4096776..9e9ded5c3a7 100644 --- a/pkgs/tools/misc/vdirsyncer/default.nix +++ b/pkgs/tools/misc/vdirsyncer/default.nix @@ -1,18 +1,30 @@ -{ stdenv, fetchurl, python3Packages, glibcLocales }: +{ stdenv, python3Packages, glibcLocales, rustPlatform }: # Packaging documentation at: # https://github.com/untitaker/vdirsyncer/blob/master/docs/packaging.rst let pythonPackages = python3Packages; -in -pythonPackages.buildPythonApplication rec { - version = "0.16.4"; - name = "vdirsyncer-${version}"; - - src = fetchurl { - url = "mirror://pypi/v/vdirsyncer/${name}.tar.gz"; - sha256 = "03wva48bgv1ad3df6plc9b8xxh6k8bcaxrhlzwh81c9mzn5bspzv"; + version = "0.17.0a2"; + pname = "vdirsyncer"; + name = pname + "-" + version; + src = pythonPackages.fetchPypi { + inherit pname version; + sha256 = "0y464rsx5la6bp94z2g0nnkbl4nwfya08abynvifw4c84vs1gr4q"; }; + native = rustPlatform.buildRustPackage { + name = name + "-native"; + inherit src; + sourceRoot = name + "/rust"; + cargoSha256 = "1cr7xs11gbsc3x5slga9qahchwc22qq49amf28g4jgs9lzf57qis"; + postInstall = '' + mkdir $out/include $out/lib + cp $out/bin/libvdirsyncer_rustext* $out/lib + rm -r $out/bin + cp target/vdirsyncer_rustext.h $out/include + ''; + }; +in pythonPackages.buildPythonApplication rec { + inherit version pname src; propagatedBuildInputs = with pythonPackages; [ click click-log click-threading @@ -20,14 +32,33 @@ pythonPackages.buildPythonApplication rec { requests requests_oauthlib # required for google oauth sync atomicwrites + milksnake ]; - buildInputs = with pythonPackages; [hypothesis pytest pytest-localserver pytest-subtesthack setuptools_scm ] ++ [ glibcLocales ]; + buildInputs = with pythonPackages; [ setuptools_scm ]; + + checkInputs = with pythonPackages; [ hypothesis pytest pytest-localserver pytest-subtesthack ] ++ [ glibcLocales ]; + + postPatch = '' + sed -i "/cargo build/d" Makefile + ''; + + preBuild = '' + mkdir -p rust/target/release + ln -s ${native}/lib/libvdirsyncer_rustext* rust/target/release/ + ln -s ${native}/include/vdirsyncer_rustext.h rust/target/ + ''; LC_ALL = "en_US.utf8"; + preCheck = '' + ln -sf ../dist/tmpbuild/vdirsyncer/vdirsyncer/_native__lib.so vdirsyncer + ''; + checkPhase = '' + runHook preCheck make DETERMINISTIC_TESTS=true test + runHook postCheck ''; meta = with stdenv.lib; { diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 2eab753e491..127e4ac9c0e 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -7642,6 +7642,8 @@ in { micawber = callPackage ../development/python-modules/micawber { }; + milksnake = callPackage ../development/python-modules/milksnake { }; + minimock = buildPythonPackage rec { version = "1.2.8"; name = "minimock-${version}";