Hi, Joshua Branson 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’.