2024-07-14 22:07:04 +00:00
|
|
|
{ lib, stdenv, fetchurl, fetchpatch2, substituteAll
|
2020-04-28 16:10:19 +00:00
|
|
|
, libtool, gettext, zlib, bzip2, flac, libvorbis
|
2023-10-16 23:03:35 +00:00
|
|
|
, exiv2, libgsf, pkg-config
|
|
|
|
, rpmSupport ? stdenv.hostPlatform.isLinux, rpm
|
2022-12-16 21:05:09 +00:00
|
|
|
, gstreamerSupport ? true, gst_all_1
|
2020-04-28 16:10:19 +00:00
|
|
|
# ^ Needed e.g. for proper id3 and FLAC support.
|
|
|
|
# Set to `false` to decrease package closure size by about 87 MB (53%).
|
|
|
|
, gstPlugins ? (gst: [ gst.gst-plugins-base gst.gst-plugins-good ])
|
|
|
|
# If an application needs additional gstreamer plugins it can also make them
|
|
|
|
# available by adding them to the environment variable
|
|
|
|
# GST_PLUGIN_SYSTEM_PATH_1_0, e.g. like this:
|
|
|
|
# postInstall = ''
|
|
|
|
# wrapProgram $out/bin/extract --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0"
|
|
|
|
# '';
|
|
|
|
# See also <https://nixos.org/nixpkgs/manual/#sec-language-gnome>.
|
2022-12-16 21:05:09 +00:00
|
|
|
, gtkSupport ? true, glib, gtk3
|
2024-07-14 22:07:04 +00:00
|
|
|
, videoSupport ? true, libmpeg2
|
2022-12-16 21:05:09 +00:00
|
|
|
}:
|
2010-01-05 11:16:30 +00:00
|
|
|
|
|
|
|
stdenv.mkDerivation rec {
|
2020-09-04 17:15:35 +00:00
|
|
|
pname = "libextractor";
|
2024-07-14 22:07:04 +00:00
|
|
|
version = "1.13";
|
2010-01-05 11:16:30 +00:00
|
|
|
|
|
|
|
src = fetchurl {
|
2020-09-04 17:15:35 +00:00
|
|
|
url = "mirror://gnu/libextractor/${pname}-${version}.tar.gz";
|
2024-07-14 22:07:04 +00:00
|
|
|
hash = "sha256-u48xLFHSAlciQ/ETxrYtghAwGrMMuu5gT5g32HjN91U=";
|
2010-01-05 11:16:30 +00:00
|
|
|
};
|
|
|
|
|
2023-08-08 07:47:07 +00:00
|
|
|
patches = [
|
2024-07-14 22:07:04 +00:00
|
|
|
# 0008513: test_exiv2 fails with Exiv2 0.28
|
|
|
|
# https://bugs.gnunet.org/view.php?id=8513
|
|
|
|
(fetchpatch2 {
|
|
|
|
url = "https://sources.debian.org/data/main/libe/libextractor/1%3A1.13-4/debian/patches/exiv2-0.28.diff";
|
|
|
|
hash = "sha256-Re5iwlSyEpWu3PcHibaRKSfmdyHSZGMOdMZ6svTofvs=";
|
2023-08-08 07:47:07 +00:00
|
|
|
})
|
|
|
|
] ++ lib.optionals gstreamerSupport [
|
2020-04-28 16:10:19 +00:00
|
|
|
|
|
|
|
# Libraries cannot be wrapped so we need to hardcode the plug-in paths.
|
|
|
|
(substituteAll {
|
|
|
|
src = ./gst-hardcode-plugins.patch;
|
2021-01-21 17:00:13 +00:00
|
|
|
load_gst_plugins = lib.concatMapStrings
|
2021-06-06 23:21:12 +00:00
|
|
|
(plugin: ''gst_registry_scan_path(gst_registry_get(), "${lib.getLib plugin}/lib/gstreamer-1.0");'')
|
2020-04-28 16:10:19 +00:00
|
|
|
(gstPlugins gst_all_1);
|
|
|
|
})
|
2019-06-27 01:54:11 +00:00
|
|
|
];
|
2019-01-11 05:47:24 +00:00
|
|
|
|
2024-10-21 17:58:13 +00:00
|
|
|
preConfigure = ''
|
|
|
|
echo "patching installation directory in \`extractor.c'..."
|
|
|
|
sed -i "src/main/extractor.c" \
|
|
|
|
-e "s|pexe[[:blank:]]*=.*$|pexe = strdup(\"$out/lib/\");|g"
|
|
|
|
'';
|
2010-01-05 11:16:30 +00:00
|
|
|
|
2022-09-25 02:49:25 +00:00
|
|
|
nativeBuildInputs = [ pkg-config ];
|
|
|
|
|
2010-01-05 11:16:30 +00:00
|
|
|
buildInputs =
|
2012-07-11 18:29:44 +00:00
|
|
|
[ libtool gettext zlib bzip2 flac libvorbis exiv2
|
2023-10-16 23:03:35 +00:00
|
|
|
libgsf
|
|
|
|
] ++ lib.optionals rpmSupport [ rpm ]
|
|
|
|
++ lib.optionals gstreamerSupport
|
2020-04-28 16:10:19 +00:00
|
|
|
([ gst_all_1.gstreamer ] ++ gstPlugins gst_all_1)
|
2021-01-21 17:00:13 +00:00
|
|
|
++ lib.optionals gtkSupport [ glib gtk3 ]
|
2024-07-14 22:07:04 +00:00
|
|
|
++ lib.optionals videoSupport [ libmpeg2 ];
|
2010-01-05 11:16:30 +00:00
|
|
|
|
|
|
|
# Checks need to be run after "make install", otherwise plug-ins are not in
|
|
|
|
# the search path, etc.
|
|
|
|
doCheck = false;
|
2023-10-16 23:03:35 +00:00
|
|
|
doInstallCheck = !stdenv.hostPlatform.isDarwin;
|
2020-09-04 17:15:35 +00:00
|
|
|
installCheckPhase = "make check";
|
2010-01-05 11:16:30 +00:00
|
|
|
|
2020-09-04 17:15:35 +00:00
|
|
|
meta = with lib; {
|
2014-08-24 14:21:08 +00:00
|
|
|
description = "Simple library for keyword extraction";
|
2024-03-19 02:14:51 +00:00
|
|
|
mainProgram = "extract";
|
2010-01-05 11:16:30 +00:00
|
|
|
|
2024-10-21 17:58:13 +00:00
|
|
|
longDescription = ''
|
|
|
|
GNU libextractor is a library used to extract meta-data from files
|
|
|
|
of arbitrary type. It is designed to use helper-libraries to perform
|
|
|
|
the actual extraction, and to be trivially extendable by linking
|
|
|
|
against external extractors for additional file types.
|
2010-01-05 11:16:30 +00:00
|
|
|
|
2024-10-21 17:58:13 +00:00
|
|
|
The goal is to provide developers of file-sharing networks or
|
|
|
|
WWW-indexing bots with a universal library to obtain simple keywords
|
|
|
|
to match against queries. libextractor contains a shell-command
|
|
|
|
extract that, similar to the well-known file command, can extract
|
|
|
|
meta-data from a file an print the results to stdout.
|
2010-01-05 11:16:30 +00:00
|
|
|
|
2024-10-21 17:58:13 +00:00
|
|
|
Currently, libextractor supports the following formats: HTML, PDF,
|
|
|
|
PS, OLE2 (DOC, XLS, PPT), OpenOffice (sxw), StarOffice (sdw), DVI,
|
|
|
|
MAN, FLAC, MP3 (ID3v1 and ID3v2), NSF(E) (NES music), SID (C64
|
|
|
|
music), OGG, WAV, EXIV2, JPEG, GIF, PNG, TIFF, DEB, RPM, TAR(.GZ),
|
|
|
|
ZIP, ELF, S3M (Scream Tracker 3), XM (eXtended Module), IT (Impulse
|
|
|
|
Tracker), FLV, REAL, RIFF (AVI), MPEG, QT and ASF. Also, various
|
|
|
|
additional MIME types are detected.
|
|
|
|
'';
|
2010-01-05 11:16:30 +00:00
|
|
|
|
2020-09-04 17:15:35 +00:00
|
|
|
license = licenses.gpl3Plus;
|
2010-01-05 11:16:30 +00:00
|
|
|
|
2020-09-04 17:15:35 +00:00
|
|
|
maintainers = [ maintainers.jorsn ];
|
2023-10-16 23:03:35 +00:00
|
|
|
platforms = platforms.unix;
|
2010-01-05 11:16:30 +00:00
|
|
|
};
|
|
|
|
}
|