[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#44053: ‘xdg-mime-database’ profile hook is slow
From: |
Ludovic Courtès |
Subject: |
bug#44053: ‘xdg-mime-database’ profile hook is slow |
Date: |
Mon, 02 Nov 2020 12:12:40 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) |
Hi,
Joshua Branson <jbranso@dismail.de> skribis:
> The "XDG MIME database" takes a while.
>
> #+BEGIN_SRC sh :results output :exports both
> time guix build --check $(guix gc -R $(guix gc --derivers $(readlink -f
> ~/.guix-profile)) |grep xdg-mime-database.drv)
> #+END_SRC
>
>
> #+RESULTS:
> : The following profile hook will be built:
> : /gnu/store/lmhklgdscbfp5c6gl81skyz0azfg156m-xdg-mime-database.drv
> : building XDG MIME database...
> : successfully built
> /gnu/store/lmhklgdscbfp5c6gl81skyz0azfg156m-xdg-mime-database.drv
> : successfully built
> /gnu/store/lmhklgdscbfp5c6gl81skyz0azfg156m-xdg-mime-database.drv
> : /gnu/store/x8q8g9l0jhrpmjjm3xsh3ib1z8l79cyx-xdg-mime-database
> :
> : real 0m43.716s
> : user 0m3.626s
> : sys 0m0.258s
I found that the MIME database is computed only over the subset of the
packages in your profile that provide ‘share/mime/packages’, plus
‘shared-mime-info’.
In my profile, only LibreOffice provides that directory, so the union is
made over these two directories and that’s what ‘update-mime-database’
works on.
Apart from LibreOffice, I found that ‘share/mime/packages’ is provided
by at least: hugin, gcr, fontforge. Most GUI packages don’t have it.
So in practice, we’re often rebuilding the exact same database.
Here’s the time taken by ‘update-mime-database’ alone:
--8<---------------cut here---------------start------------->8---
ludo@ribbon ~$ mkdir -p /tmp/mime/share/mime/packages
ludo@ribbon ~$ cd /tmp/mime/share/mime/packages
ludo@ribbon /tmp/mime/share/mime/packages$ for i in $(guix build libreoffice ^C
ludo@ribbon /tmp/mime/share/mime/packages$ for i in
~/.guix-profile/share/mime/packages/* ; do ln -s $i ; done
ludo@ribbon /tmp/mime/share/mime/packages$ ls -l
totalo 8
lrwxrwxrwx 1 ludo users 64 Nov 2 11:46 freedesktop.org.xml ->
/home/ludo/.guix-profile/share/mime/packages/freedesktop.org.xml
lrwxrwxrwx 1 ludo users 60 Nov 2 11:46 libreoffice.xml ->
/home/ludo/.guix-profile/share/mime/packages/libreoffice.xml
ludo@ribbon /tmp/mime/share/mime/packages$ cd /tmp/mime/
ludo@ribbon /tmp/mime$ time update-mime-database -V /tmp/mime/share/mime
Updating MIME database in /tmp/mime/share/mime...
Parsing source file /tmp/mime/share/mime/packages/freedesktop.org.xml...
Parsing source file /tmp/mime/share/mime/packages/libreoffice.xml...
Wrote 1124 strings at 2c - 6310
Wrote aliases at 6310 - 6be4
Wrote parents at 6be4 - 8468
Wrote literal globs at 8468 - 855c
Wrote suffix globs at 855c - 13514
Wrote full globs at 13514 - 13554
Wrote magic at 13554 - 2065c
Wrote namespace list at 2065c - 20798
Wrote icons list at 20798 - 2079c
Wrote generic icons list at 2079c - 213b8
Wrote types list at 213b8 - 22020
Note that '/tmp/mime/share' is not in the search path
set by the XDG_DATA_HOME and XDG_DATA_DIRS
environment variables, so applications may not
be able to find it until you set them. The
directories currently searched are:
- /home/ludo/.local/share
- /home/ludo/.guix-profile/share
- /run/current-system/profile/share
- /home/ludo/.guix-profile/share
- /run/current-system/profile/share
real 0m2.166s
user 0m0.278s
sys 0m0.056s
--8<---------------cut here---------------end--------------->8---
To be compared with:
--8<---------------cut here---------------start------------->8---
$ drv="$(guix gc -R $(guix gc --derivers $(readlink -f ~/.guix-profile)) |grep
xdg-mime-database.drv)"
$ time guix build --check $drv
The following profile hook will be built:
/gnu/store/jrmwsxpz3wmq37zx29lvb0r9nvcmdviz-xdg-mime-database.drv
building XDG MIME database...
successfully built
/gnu/store/jrmwsxpz3wmq37zx29lvb0r9nvcmdviz-xdg-mime-database.drv
/gnu/store/npvj2sr9kxx48znh7zc8zmzwzs6brc90-xdg-mime-database
real 0m3.670s
user 0m1.428s
sys 0m0.029s
--8<---------------cut here---------------end--------------->8---
Thus, the build time itself is entirely taken by ‘update-mime-database’
(the 1.4s above is “overhead” in ‘guix build’ it would seem).
Ludo’.
- bug#44053: ‘xdg-mime-database’ profile hook is slow,
Ludovic Courtès <=