MimeType issues on CI

Daniel Vrátil me at dvratil.cz
Sun Apr 3 13:54:00 UTC 2016


On 2016-04-03 15:28, Scarlett Clark wrote:
> On Sun, Apr 3, 2016 at 5:16 AM, Daniel Vrátil <dvratil at kde.org>
> wrote:
> 
>> On Sunday, April 3, 2016 12:58:24 PM CEST David Faure wrote:
>>> On Sunday 03 April 2016 12:43:27 Daniel Vrátil wrote:
>>>> Turns out when you include /usr/share in XDG_DATA_DIRS, all mime
>> types
>>>> that
>>>> might have been provided by other dependencies in
>>>> /srv/jenkins/.../foo/inst/ usr/share/mime are ignored, possibly
>> due to
>>>> update-mime-database not being ran for those directories.
>>> 
>>> I'm not sure I fully understand this sentence. Do you mean the
>> value of
>>> XDG_DATA_DIRS at update-mime-database time or during the running
>> of unit
>>> tests?
>> 
>> XDG_DATA_DIRS value when running the unit tests.
>> 
>>> update-mime-database works on one specific install dir and creates
>> files
>>> there. The value of XDG_DATA_DIRS during the run of
>> update-mime-database
>>> shouldn't matter.
>>> 
>>> If the stuff /srv/jenkins/.../foo/inst/usr/share/mime is ignored,
>> it can be
>>> either
>> 
>>> 1) because update-mime-database wasn't run on that dir
>>> (which is my current hypothesis for the KIO kfileitemtest
>> failure which
>>> needs a mimetype from kcoreaddons)
>> 
>> The thing is that the content of
>> /srv/jenkins/.../foo/inst/usr/share/mime is
>> NOT ignored, when /usr/share is NOT in XDG_DATA_DIRS.
>> 
>> Once you include /usr/share in XDG_DATA_DIRS, the content of the
>> /srv/.../mime
>> folders IS ignored.
>> 
>> Akonadi installs a mime file to share/mime/packages/akonadi-mime.xml
>> which
>> introduces some new mimetypes and are used to find the right
>> serialize plugins
>> for those types. With /usr/share in XDG_DATA_DIRS Akonadi is not
>> able to find
>> serializer plugins for application/x-vnd.akonadi.calendar.todo for
>> instance,
>> because it (using QMimeDatabase) does not know about this mime type.
>> Removing
>> /usr/share from XDG_DATA_DIRS makes Akonadi (QMimeDatabase) find
>> application/
>> x-vnd.akonadi.calendar.todo just find and thus find a respective
>> serializer
>> plugin for the type.
>> 
>>> 2) because that dir isn't in
>>> XDG_DATA_DIRS (this is not the problem) later on.
>> 
>> I verified that it is there.
>> 
>>> 3) because
>>> update-mime-database ran but didn't create the stuff it's supposed
>> to
>>> create -- I understand your email as saying this might be the
>> problem, but
>>> I can't confirm it:
>> 
>> If I compare output of "make install" from CI and running it
>> locally, it
>> indeed appears that update-mime-database is not run on the CI at
>> all:
>> 
>> CI:
>> 16:22:17 Install the project...
>> 16:22:17 -- Install configuration: "Debug"
>> 16:22:17 -- Installing:
>> /home/jenkins/sources/akonadi/kf5-qt5/local-inst/srv/
>> 
> jenkins/install/ubuntu/x86_64/g++/kf5-qt5/kde/pim/akonadi/inst/usr/share/mime/
>> packages/akonadi-mime.xml
>> 16:22:17 -- Installing:
>> /home/jenkins/sources/akonadi/kf5-qt5/local-inst/srv/
>> 
> jenkins/install/ubuntu/x86_64/g++/kf5-qt5/kde/pim/akonadi/inst/usr/lib/x86_64-
>> linux-gnu/cmake/KF5Akonadi/KF5AkonadiConfig.cmake
>> 
>> Locally:
>> -- Install configuration: "Debug"
>> -- Up-to-date: /opt/kde-devel/share/mime/packages/akonadi-mime.xml
>> -- Updating MIME database at /opt/kde-devel/share/mime
>> -- Up-to-date:
>> /opt/kde-devel/lib64/cmake/KF5Akonadi/KF5AkonadiConfig.cmake
>> 
>>> 
>>> on my own system, I have /usr/share/mime/packages/kde.xml defining
>>> application/x-smb-workgroup and /usr/share in XDG_DATA_DIRS, and
>> yet
>>> running update-mime-database on
>> /d/kde/inst/kde_frameworks/share/mime
>>> creates
>>> 
>> 
> /d/kde/inst/kde_frameworks/share/mime/application/x-smb-workgroup.xml
>> as
>>> expected.
>>>> I manually ran update-mime-database on the akonadi and
>> kdepim-runtime
>>>> install dirs on Jenkins and the Zanshin tests magically started
>> passing
>>>> again.
>>> Yes, which only proves that the problem was that it didn't run,
>> not that the
>>> value of XDG_DATA_DIRS is the problem.
>>> 
>>>> Our idea for a quick dirty fix was to simply run
>> update-mime-database once
>>>> CI sets up the environment variables but before the test is
>> executed.
>>>> 
>>>> David, do you have any better suggestions?
>>> 
>>> Yes, I'd like to know why "make install" in e.g. kcoreaddons
>> doesn't seem to
>>> run update-mime-database on CI while it does here (and given that
>>> update-mime-database *is* found in the CI).
>>> With the new CI I'm having trouble debugging this, there are no
>> sources and
>>> build dirs from previous runs anymore :-)
>> 
>> update-mime-database  seems to be run by ECM, the documentation says
>> 
>> # The follow macro is available::
>> #
>> #   update_xdg_mimetypes(<path>)
>> #
>> # Updates the XDG mime database at install time (unless the
>> ``$DESTDIR``
>> # environment variable is set, in which case it is up to
>> package managers
>> to
>> # perform this task).
>> 
>> I suspect that CI uses "make DESTDIR=/srv/jenkins/...../foo/inst
>> install" to
>> install stuff, thus not triggering the update, as documented and
>> it's up to
>> the CI script to run it manually....
> 
>> Dan
> 
> Sorry I have not been more responsive. I am visiting family and have
> been traveling.
> 
> I think I found the issue. The function that checks whether our
> scripts should run it was not looking in /usr/share/mime
> 
> Just commited a fix.
> 
> Scarlett

Looks like update-mime-database is now executed, but there's still some 
issue. I triggerd Akonadi build manually and after "make install" phase 
I can now see

    Directory 'share/mime/packages' does not exist!

and our MimeTypeCheck is still fails. Looks like  
/srv/jenkins/.../akonadi/inst/usr/ is missing in the path that 
update-mime-database is passed?

Dan

> 

-- 
--
Daniel Vrátil
www.dvratil.cz | me at dvratil.cz
facebook.com/danvratil | @danvratil | +DanVrátil


More information about the Kde-frameworks-devel mailing list