diff --git a/pkgs/development/libraries/libftdi/1.x.nix b/pkgs/development/libraries/libftdi/1.x.nix index ae599a97529..30c9e294ecc 100644 --- a/pkgs/development/libraries/libftdi/1.x.nix +++ b/pkgs/development/libraries/libftdi/1.x.nix @@ -1,47 +1,73 @@ -{ lib, stdenv, fetchurl, cmake, pkg-config, libusb1, libconfuse -, cppSupport ? true, boost ? null -, pythonSupport ? true, python3 ? null, swig ? null -, docSupport ? true, doxygen ? null +{ lib +, stdenv +, fetchgit +, cmake +, pkg-config +, libusb1 +, libconfuse +, cppSupport ? true +, boost +, pythonSupport ? true +, python3 +, swig +, docSupport ? true +, doxygen +, graphviz }: -assert cppSupport -> boost != null; -assert pythonSupport -> python3 != null && swig != null; -assert docSupport -> doxygen != null; - +let + inherit (lib) optionals optionalString; + onOff = a: if a then "ON" else "OFF"; +in stdenv.mkDerivation rec { - name = "libftdi1-1.4"; + pname = "libftdi"; + version = "1.5"; - src = fetchurl { - url = "https://www.intra2net.com/en/developer/libftdi/download/${name}.tar.bz2"; - sha256 = "0x0vncf6i92slgrn0h7ghkskqbglbs534220qa84d0qg114zndpc"; + src = fetchgit { + url = "git://developer.intra2net.com/libftdi"; + rev = "v${version}"; + sha256 = "0vipg3y0kbbzjhxky6hfyxy42mpqhvwn1r010zr5givcfp8ghq26"; }; - nativeBuildInputs = [ cmake pkg-config ]; - buildInputs = with lib; [ libconfuse ] - ++ optionals cppSupport [ boost ] - ++ optionals pythonSupport [ python3 swig ] - ++ optionals docSupport [ doxygen ]; + nativeBuildInputs = [ cmake pkg-config ] + ++ optionals docSupport [ doxygen graphviz ] + ++ optionals pythonSupport [ swig ]; - preBuild = lib.optionalString docSupport '' - make doc_i - ''; + buildInputs = [ libconfuse ] + ++ optionals cppSupport [ boost ] + ++ optionals pythonSupport [ python3 ]; + + cmakeFlags = [ + "-DFTDIPP=${onOff cppSupport}" + "-DBUILD_TESTS=${onOff cppSupport}" + "-DLINK_PYTHON_LIBRARY=${onOff pythonSupport}" + "-DPYTHON_BINDINGS=${onOff pythonSupport}" + "-DDOCUMENTATION=${onOff docSupport}" + ]; propagatedBuildInputs = [ libusb1 ]; postInstall = '' mkdir -p "$out/etc/udev/rules.d/" cp ../packages/99-libftdi.rules "$out/etc/udev/rules.d/" + '' + optionalString docSupport '' cp -r doc/man "$out/share/" - '' + lib.optionalString docSupport '' - mkdir -p "$out/share/libftdi/doc/" - cp -r doc/html "$out/share/libftdi/doc/" + cp -r doc/html "$out/share/doc/libftdi1/" + ''; + + postFixup = optionalString cppSupport '' + # This gets misassigned to the C++ version's path for some reason + for fileToFix in $out/{bin/libftdi1-config,lib/pkgconfig/libftdi1.pc}; do + substituteInPlace $fileToFix \ + --replace "$out/include/libftdipp1" "$out/include/libftdi1" + done ''; meta = with lib; { description = "A library to talk to FTDI chips using libusb"; homepage = "https://www.intra2net.com/en/developer/libftdi/"; - license = with licenses; [ lgpl2 gpl2 ]; - platforms = with platforms; linux ++ darwin; - maintainers = [ maintainers.bjornfor ]; + license = with licenses; [ lgpl2Only gpl2Only ]; + platforms = platforms.all; + maintainers = with maintainers; [ bjornfor ]; }; }