diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/science/astronomy/indilib')
5 files changed, 306 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/science/astronomy/indilib/default.nix b/nixpkgs/pkgs/development/libraries/science/astronomy/indilib/default.nix new file mode 100644 index 000000000000..0b4526e6e1eb --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/science/astronomy/indilib/default.nix @@ -0,0 +1,80 @@ +{ stdenv +, lib +, fetchFromGitHub +, bash +, cmake +, cfitsio +, libusb1 +, kmod +, zlib +, boost +, libev +, libnova +, curl +, libjpeg +, gsl +, fftw +, gtest +}: + +stdenv.mkDerivation rec { + pname = "indilib"; + version = "2.0.3"; + + src = fetchFromGitHub { + owner = "indilib"; + repo = "indi"; + rev = "v${version}"; + hash = "sha256-YhUwRbpmEybezvopbqFj7M1EE3pufkNrN8yi/zbnJ3U="; + }; + + nativeBuildInputs = [ + cmake + ]; + + buildInputs = [ + curl + cfitsio + libev + libusb1 + zlib + boost + libnova + libjpeg + gsl + fftw + ]; + + cmakeFlags = [ + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DUDEVRULES_INSTALL_DIR=lib/udev/rules.d" + ] ++ lib.optional doCheck [ + "-DINDI_BUILD_UNITTESTS=ON" + "-DINDI_BUILD_INTEGTESTS=ON" + ]; + + checkInputs = [ gtest ]; + + doCheck = true; + + # Socket address collisions between tests + enableParallelChecking = false; + + postFixup = lib.optionalString stdenv.isLinux '' + for f in $out/lib/udev/rules.d/*.rules + do + substituteInPlace $f --replace "/bin/sh" "${bash}/bin/sh" \ + --replace "/sbin/modprobe" "${kmod}/sbin/modprobe" + done + ''; + + + meta = with lib; { + homepage = "https://www.indilib.org/"; + description = "Implementation of the INDI protocol for POSIX operating systems"; + changelog = "https://github.com/indilib/indi/releases/tag/v${version}"; + license = licenses.lgpl2Plus; + maintainers = with maintainers; [ hjones2199 sheepforce ]; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/science/astronomy/indilib/indi-3rdparty.nix b/nixpkgs/pkgs/development/libraries/science/astronomy/indilib/indi-3rdparty.nix new file mode 100644 index 000000000000..fdbdb4db24bf --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/science/astronomy/indilib/indi-3rdparty.nix @@ -0,0 +1,98 @@ +{ stdenv +, lib +, bash +, cmake +, coreutils +, cfitsio +, libusb1 +, zlib +, boost +, libnova +, curl +, libjpeg +, gsl +, fftw +, indilib +, libgphoto2 +, libraw +, libftdi1 +, libdc1394 +, gpsd +, ffmpeg +, limesuite +, version +, src +, withFirmware ? false +, firmware ? null +}: + +let + libusb-with-fxload = libusb1.override { withExamples = true;}; +in + +stdenv.mkDerivation rec { + pname = "indi-3rdparty"; + + inherit version src; + + nativeBuildInputs = [ cmake ]; + + buildInputs = [ + indilib libnova curl cfitsio libusb1 zlib boost gsl gpsd + libjpeg libgphoto2 libraw libftdi1 libdc1394 ffmpeg fftw + limesuite + ] ++ lib.optionals withFirmware [ + firmware + ]; + + postPatch = '' + for f in $(find . -name "CMakeLists.txt"); do + substituteInPlace $f \ + --replace "/lib/udev/rules.d" "lib/udev/rules.d" \ + --replace "/etc/udev/rules.d" "lib/udev/rules.d" \ + --replace "/lib/firmware" "lib/firmware" + done + + substituteInPlace libpktriggercord/CMakeLists.txt \ + --replace "set (PK_DATADIR /usr/share/pktriggercord)" "set (PK_DATADIR $out/share/pkgtriggercord)" + + sed '1i#include <ctime>' -i indi-duino/libfirmata/src/firmata.cpp # gcc12 + ''; + + cmakeFlags = [ + "-DINDI_DATA_DIR=share/indi" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DUDEVRULES_INSTALL_DIR=lib/udev/rules.d" + "-DRULES_INSTALL_DIR=lib/udev/rules.d" + ] ++ lib.optionals (!withFirmware) [ + "-DWITH_ATIK=off" + "-DWITH_APOGEE=off" + "-DWITH_DSI=off" + "-DWITH_QHY=off" + "-DWITH_ARMADILLO=off" + "-DWITH_FISHCAMP=off" + "-DWITH_SBIG=off" + ]; + + postFixup = lib.optionalString stdenv.isLinux '' + for f in $out/lib/udev/rules.d/*.rules + do + substituteInPlace $f --replace "/sbin/fxload" "${libusb-with-fxload}/sbin/fxload" \ + --replace "/lib/firmware/" "$out/lib/firmware/" \ + --replace "/bin/sleep" "${coreutils}/bin/sleep" \ + --replace "/bin/cat" "${coreutils}/bin/cat" \ + --replace "/bin/echo" "${coreutils}/bin/echo" \ + --replace "/bin/sh" "${bash}/bin/sh" + done + ''; + + + meta = with lib; { + homepage = "https://www.indilib.org/"; + description = "Third party drivers for the INDI astronomical software suite"; + changelog = "https://github.com/indilib/indi-3rdparty/releases/tag/v${version}"; + license = licenses.lgpl2Plus; + maintainers = with maintainers; [ hjones2199 sheepforce ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/science/astronomy/indilib/indi-firmware.nix b/nixpkgs/pkgs/development/libraries/science/astronomy/indilib/indi-firmware.nix new file mode 100644 index 000000000000..102a8b901cce --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/science/astronomy/indilib/indi-firmware.nix @@ -0,0 +1,81 @@ +{ stdenv +, lib +, bash +, cmake +, cfitsio +, coreutils +, libusb1 +, zlib +, boost +, libnova +, curl +, libjpeg +, gsl +, fftw +, indilib +, libgphoto2 +, libraw +, libftdi1 +, libdc1394 +, gpsd +, ffmpeg +, version +, src +, autoPatchelfHook +}: +let + libusb-with-fxload = libusb1.override { withExamples = true;}; +in +stdenv.mkDerivation rec { + pname = "indi-firmware"; + + inherit version src; + + nativeBuildInputs = [ cmake autoPatchelfHook ]; + + buildInputs = [ + indilib libnova curl cfitsio libusb1 zlib boost gsl gpsd + libjpeg libgphoto2 libraw libftdi1 libdc1394 ffmpeg fftw + ]; + + cmakeFlags = [ + "-DINDI_DATA_DIR=\${CMAKE_INSTALL_PREFIX}/share/indi" + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DUDEVRULES_INSTALL_DIR=lib/udev/rules.d" + "-DRULES_INSTALL_DIR=lib/udev/rules.d" + "-DFIRMWARE_INSTALL_DIR=lib/firmware" + "-DQHY_FIRMWARE_INSTALL_DIR=\${CMAKE_INSTALL_PREFIX}/lib/firmware/qhy" + "-DCONF_DIR=etc" + "-DBUILD_LIBS=1" + "-DWITH_PENTAX=off" + ]; + + postPatch = '' + for f in {libfishcamp,libsbig,libqhy}/CMakeLists.txt + do + substituteInPlace $f --replace "/lib/firmware" "lib/firmware" + done + ''; + + postFixup = lib.optionalString stdenv.isLinux '' + for f in $out/lib/udev/rules.d/*.rules + do + substituteInPlace "$f" --replace "/sbin/fxload" "${libusb-with-fxload}/sbin/fxload" \ + --replace "/bin/sleep" "${coreutils}/bin/sleep" \ + --replace "/bin/cat" "${coreutils}/bin/cat" \ + --replace "/bin/echo" "${coreutils}/bin/echo" \ + --replace "/bin/sh" "${bash}/bin/sh" \ + --replace "/lib/firmware/" "$out/lib/firmware/" + sed -e 's|-D $env{DEVNAME}|-p $env{BUSNUM},$env{DEVNUM}|' -i "$f" + done + ''; + + meta = with lib; { + homepage = "https://www.indilib.org/"; + description = "Third party firmware for the INDI astronomical software suite"; + changelog = "https://github.com/indilib/indi-3rdparty/releases/tag/v${version}"; + license = licenses.lgpl2Plus; + maintainers = with maintainers; [ hjones2199 sheepforce ]; + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/science/astronomy/indilib/indi-full.nix b/nixpkgs/pkgs/development/libraries/science/astronomy/indilib/indi-full.nix new file mode 100644 index 000000000000..6b110a152ee3 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/science/astronomy/indilib/indi-full.nix @@ -0,0 +1,29 @@ +{ stdenv, lib, callPackage, fetchFromGitHub, indilib }: + +let + inherit (indilib) version; + indi-3rdparty-src = fetchFromGitHub { + owner = "indilib"; + repo = "indi-3rdparty"; + rev = "v${version}"; + hash = "sha256-xAGSFTOfO9P8JldzY59OnQULzf2Mlx3vWjoP+IDdEFE="; + }; + indi-firmware = callPackage ./indi-firmware.nix { + inherit version; + src = indi-3rdparty-src; + }; + indi-3rdparty = callPackage ./indi-3rdparty.nix { + inherit version; + src = indi-3rdparty-src; + withFirmware = stdenv.isx86_64 || stdenv.isAarch64; + firmware = indi-firmware; + }; +in +callPackage ./indi-with-drivers.nix { + pname = "indi-full"; + inherit version; + extraDrivers = [ + indi-3rdparty + ] ++ lib.optional (stdenv.isx86_64 || stdenv.isAarch64) indi-firmware + ; +} diff --git a/nixpkgs/pkgs/development/libraries/science/astronomy/indilib/indi-with-drivers.nix b/nixpkgs/pkgs/development/libraries/science/astronomy/indilib/indi-with-drivers.nix new file mode 100644 index 000000000000..f1201df1d8a0 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/science/astronomy/indilib/indi-with-drivers.nix @@ -0,0 +1,18 @@ +{ buildEnv, makeBinaryWrapper, indilib ? indilib, pname ? "indi-with-drivers", version ? null, extraDrivers ? null }: + +buildEnv { + name = "${pname}-${version}"; + paths = [ + indilib + ] + ++ extraDrivers; + + nativeBuildInputs = [ makeBinaryWrapper ]; + + postBuild = '' + makeBinaryWrapper ${indilib}/bin/indiserver $out/bin/indiserver --set-default INDIPREFIX $out + ''; + + + inherit (indilib) meta; +} |