2024-05-13 21:24:10 +00:00
{ stdenv , lib , fetchurl , gettext , meson , mesonEmulatorHook , ninja , pkg-config
, asciidoc , gobject-introspection , buildPackages , withIntrospection ?
lib . meta . availableOn stdenv . hostPlatform gobject-introspection
&& stdenv . hostPlatform . emulatorAvailable buildPackages , vala , python3
, gi-docgen , graphviz , libxml2 , glib , wrapGAppsNoGuiHook , sqlite , libstemmer
, gnome , icu , libuuid , libsoup , libsoup_3 , json-glib , systemd , dbus , writeText
2024-05-02 00:46:19 +00:00
# for passthru
# , testers
} :
stdenv . mkDerivation ( finalAttrs : {
pname = " t r a c k e r " ;
version = " 3 . 6 . 0 " ;
outputs = [ " o u t " " d e v " " d e v d o c " ] ;
src = fetchurl {
2024-05-13 21:24:10 +00:00
url = with finalAttrs ;
" m i r r o r : / / g n o m e / s o u r c e s / ${ pname } / ${
lib . versions . majorMinor version
} / $ { pname } - $ { version } . tar . xz " ;
2024-05-02 00:46:19 +00:00
sha256 = " U l k s / h m 6 / 9 F t v k d H W + f a d Q 2 9 C 2 M z / X r L Y P q p 2 l v E D f I = " ;
} ;
strictDeps = true ;
2024-05-13 21:24:10 +00:00
depsBuildBuild = [ pkg-config ] ;
2024-05-02 00:46:19 +00:00
nativeBuildInputs = [
meson
ninja
pkg-config
asciidoc
gettext
glib
wrapGAppsNoGuiHook
gi-docgen
graphviz
( python3 . pythonOnBuildForHost . withPackages ( p : [ p . pygobject3 ] ) )
2024-05-13 21:24:10 +00:00
] ++ lib . optionals withIntrospection [ gobject-introspection vala ]
++ lib . optionals ( ! stdenv . buildPlatform . canExecute stdenv . hostPlatform )
[ mesonEmulatorHook ] ;
2024-05-02 00:46:19 +00:00
buildInputs = [
glib
libxml2
sqlite
icu
libsoup
libsoup_3
libuuid
json-glib
libstemmer
dbus
2024-05-13 21:24:10 +00:00
] ++ lib . optionals stdenv . isLinux [ systemd ] ;
2024-05-02 00:46:19 +00:00
2024-05-13 21:24:10 +00:00
nativeCheckInputs = [ dbus ] ;
2024-05-02 00:46:19 +00:00
mesonFlags = [
" - D d o c s = t r u e "
( lib . mesonEnable " i n t r o s p e c t i o n " withIntrospection )
( lib . mesonEnable " v a p i " withIntrospection )
( lib . mesonBool " t e s t _ u t i l s " withIntrospection )
2024-05-13 21:24:10 +00:00
] ++ ( let
# https://gitlab.gnome.org/GNOME/tracker/-/blob/master/meson.build#L159
crossFile = writeText " c r o s s - f i l e . c o n f " ''
[ properties ]
sqlite3_has_fts5 = ' $ {
lib . boolToString
( lib . hasInfix " - D S Q L I T E _ E N A B L E _ F T S 3 " sqlite . NIX_CFLAGS_COMPILE )
} '
'' ;
in [ " - - c r o s s - f i l e = ${ crossFile } " ] )
++ lib . optionals ( ! stdenv . isLinux ) [ " - D s y s t e m d _ u s e r _ s e r v i c e s = f a l s e " ] ;
2024-05-02 00:46:19 +00:00
doCheck =
# https://gitlab.gnome.org/GNOME/tracker/-/issues/402
! stdenv . isDarwin
# https://gitlab.gnome.org/GNOME/tracker/-/issues/398
&& ! stdenv . is32bit ;
postPatch = ''
chmod + x \
docs/reference/libtracker-sparql/embed-files.py \
docs/reference/libtracker-sparql/generate-svgs.sh
patchShebangs \
utils/data-generators/cc/generate \
docs/reference/libtracker-sparql/embed-files.py \
docs/reference/libtracker-sparql/generate-svgs.sh
'' ;
2024-05-13 21:24:10 +00:00
preCheck = let
linuxDot0 = lib . optionalString stdenv . isLinux " . 0 " ;
darwinDot0 = lib . optionalString stdenv . isDarwin " . 0 " ;
extension = stdenv . hostPlatform . extensions . sharedLibrary ;
in ''
# (tracker-store:6194): Tracker-CRITICAL **: 09:34:07.722: Cannot initialize database: Could not open sqlite3 database:'/homeless-shelter/.cache/tracker/meta.db': unable to open database file
export HOME = $ ( mktemp - d )
# Our gobject-introspection patches make the shared library paths absolute
# in the GIR files. When running functional tests, the library is not yet installed,
# though, so we need to replace the absolute path with a local one during build.
# We are using a symlink that will be overridden during installation.
mkdir - p $ out/lib
ln - s $ PWD/src/libtracker-sparql/libtracker-sparql-3.0 $ { darwinDot0 } $ { extension } $ out/lib/libtracker-sparql-3.0 $ { darwinDot0 } $ { extension } $ { linuxDot0 }
'' ;
2024-05-02 00:46:19 +00:00
checkPhase = ''
runHook preCheck
dbus-run-session \
- - config-file = $ { dbus } /share/dbus-1/session.conf \
meson test \
- - timeout-multiplier 2 \
- - print-errorlogs
runHook postCheck
'' ;
postCheck = ''
# Clean up out symlinks
rm - r $ out/lib
'' ;
postFixup = ''
# Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
moveToOutput " s h a r e / d o c " " $ d e v d o c "
'' ;
# passthru = {
# updateScript = gnome.updateScript {
# packageName = finalAttrs.pname;
# };
# tests.pkg-config = testers.hasPkgConfigModules {
# package = finalAttrs.finalPackage;
# };
# };
meta = with lib ; {
homepage = " h t t p s : / / t r a c k e r . g n o m e . o r g / " ;
2024-05-13 21:24:10 +00:00
description =
" D e s k t o p - n e u t r a l u s e r i n f o r m a t i o n s t o r e , s e a r c h t o o l a n d i n d e x e r " ;
2024-05-02 00:46:19 +00:00
mainProgram = " t r a c k e r 3 " ;
2024-05-13 19:05:39 +00:00
# maintainers = teams.gnome.members;
2024-05-02 00:46:19 +00:00
license = licenses . gpl2Plus ;
platforms = platforms . unix ;
pkgConfigModules = [ " t r a c k e r - s p a r q l - 3 . 0 " " t r a c k e r - t e s t u t i l s - 3 . 0 " ] ;
} ;
} )