From c20cd1834f675153f87bb8544053b4069688f0c8 Mon Sep 17 00:00:00 2001 From: Symphorien Gibol Date: Fri, 19 Feb 2021 18:04:09 +0100 Subject: sane-backends: 1.0.30 -> 1.0.32 sane-backends-git: remove, it's not updated often enough to be useful --- .../graphics/sane/backends/default.nix | 109 +++++++++++++++++++-- 1 file changed, 103 insertions(+), 6 deletions(-) (limited to 'pkgs/applications/graphics/sane/backends/default.nix') diff --git a/pkgs/applications/graphics/sane/backends/default.nix b/pkgs/applications/graphics/sane/backends/default.nix index ad2681d25fe..821a97e3587 100644 --- a/pkgs/applications/graphics/sane/backends/default.nix +++ b/pkgs/applications/graphics/sane/backends/default.nix @@ -1,10 +1,107 @@ -{ callPackage, fetchurl, ... } @ args: +{ stdenv, lib, fetchurl, runtimeShell +, gettext, pkg-config, python3 +, avahi, libgphoto2, libieee1284, libjpeg, libpng, libtiff, libusb1, libv4l, net-snmp +, curl, systemd, libxml2, poppler -callPackage ./generic.nix (args // rec { - version = "1.0.30"; +# List of { src name backend } attibute sets - see installFirmware below: +, extraFirmware ? [] + +# For backwards compatibility with older setups; use extraFirmware instead: +, gt68xxFirmware ? null, snapscanFirmware ? null +}: + +stdenv.mkDerivation { + pname = "sane-backends"; + version = "1.0.32"; src = fetchurl { - url = "https://gitlab.com/sane-project/backends/uploads/c3dd60c9e054b5dee1e7b01a7edc98b0/sane-backends-${version}.tar.gz"; - sha256 = "18vryaycps3zpjzxh0wjgg8nv2f4pdvcfxxmdfj28qbzqjlrcp9z"; + # raw checkouts of the repo do not work because, the configure script is + # only functional in manually uploaded release tarballs. + # https://gitlab.com/sane-project/backends/-/issues/440 + # unfortunately this make the url unpredictable on update, to find the link + # go to https://gitlab.com/sane-project/backends/-/releases and choose + # the link with other in the URL. + url = "https://gitlab.com/sane-project/backends/uploads/104f09c07d35519cc8e72e604f11643f/sane-backends-1.0.32.tar.gz"; + sha256 = "055iicihxa6b28iv5fnz13n67frdr5nrydq2c846f9x7q0vw4a1s"; + }; + + outputs = [ "out" "doc" "man" ]; + + nativeBuildInputs = [ + gettext + pkg-config + python3 + ]; + + buildInputs = [ + avahi + libgphoto2 + libieee1284 + libjpeg + libpng + libtiff + libusb1 + libv4l + net-snmp + curl + systemd + libxml2 + poppler + ]; + + enableParallelBuilding = true; + + configureFlags = + lib.optional (avahi != null) "--with-avahi" + ++ lib.optional (libusb1 != null) "--with-usb" + ; + + postInstall = let + + compatFirmware = extraFirmware + ++ lib.optional (gt68xxFirmware != null) { + src = gt68xxFirmware.fw; + inherit (gt68xxFirmware) name; + backend = "gt68xx"; + } + ++ lib.optional (snapscanFirmware != null) { + src = snapscanFirmware; + name = "your-firmwarefile.bin"; + backend = "snapscan"; + }; + + installFirmware = f: '' + mkdir -p $out/share/sane/${f.backend} + ln -sv ${f.src} $out/share/sane/${f.backend}/${f.name} + ''; + + in '' + mkdir -p $out/etc/udev/rules.d/ + ./tools/sane-desc -m udev > $out/etc/udev/rules.d/49-libsane.rules || \ + cp tools/udev/libsane.rules $out/etc/udev/rules.d/49-libsane.rules + # the created 49-libsane references /bin/sh + substituteInPlace $out/etc/udev/rules.d/49-libsane.rules \ + --replace "RUN+=\"/bin/sh" "RUN+=\"${runtimeShell}" + + substituteInPlace $out/lib/libsane.la \ + --replace "-ljpeg" "-L${lib.getLib libjpeg}/lib -ljpeg" + + # net.conf conflicts with the file generated by the nixos module + rm $out/etc/sane.d/net.conf + '' + lib.concatStrings (builtins.map installFirmware compatFirmware); + + meta = with lib; { + description = "SANE (Scanner Access Now Easy) backends"; + longDescription = '' + Collection of open-source SANE backends (device drivers). + SANE is a universal scanner interface providing standardized access to + any raster image scanner hardware: flatbed scanners, hand-held scanners, + video- and still-cameras, frame-grabbers, etc. For a list of supported + scanners, see http://www.sane-project.org/sane-backends.html. + ''; + homepage = "http://www.sane-project.org/"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ peti ]; + platforms = platforms.linux; }; -}) +} -- cgit 1.4.1