On Sun, Aug 19, 2018 at 11:55 PM Ben Cooksley <bcooks...@kde.org> wrote:
>
> On Sun, 19 Aug 2018, 12:19 David Faure, <fa...@kde.org> wrote:
>>
>> On lundi 13 août 2018 11:06:12 CEST Ben Cooksley wrote:
>> > On Mon, Aug 13, 2018 at 1:16 AM David Faure <fa...@kde.org> wrote:
>> > > On samedi 11 août 2018 07:02:18 CEST Ben Cooksley wrote:
>> > > > On Fri, Aug 10, 2018 at 7:28 PM David Faure <fa...@kde.org> wrote:
>> > > > > Any idea why purpose can't find the KIO http and file protocols -- on
>> > > > > Windows?
>> > > > >
>> > > > > https://build.kde.org/view/Frameworks/job/Frameworks%20purpose%20kf5-q
>> > > > > t5%2
>> > > > > 0WindowsMSVCQt5.10/76/testReport/junit/(root)/TestSuite/alternativesmo
>> > > > > delt
>> > > > > est/
>> > > > >
>> > > > > That's very odd, because the dependency from purpose on kio is there
>> > > > > in
>> > > > > kde-build-metadata (it wouldn't build otherwise), and using kio_file
>> > > > > from
>> > > > > other frameworks surely works (e.g. in KParts).
>> > > > >
>> > > > > The lookup for protocols looks for "kf5/kio" under all Qt plugin
>> > > > > directories, i.e. $QT_PLUGIN_PATH.
>> > > > >
>> > > > > The CI log says
>> > > > > QT_PLUGIN_PATH            = 'C:\CI\workspace\Frameworks purpose
>> > > > > kf5-qt5
>> > > > > WindowsMSVCQt5.10\install-prefix\lib\plugins;C:\Craft\CI\windows-msvc2
>> > > > > 017
>> > > > > _64-cl-debug\lib\qca-qt5'
>> > > > >
>> > > > > => is there a kf5\kio subdir in C:\CI\workspace\Frameworks purpose
>> > > > > kf5-qt5
>> > > > > WindowsMSVCQt5.10\install-prefix\lib\plugins ?
>> > > >
>> > > > I've checked and the following seem to be present in that directory,
>> > > > which looks correct to me:
>> > > >
>> > > > Mode                LastWriteTime         Length Name
>> > > > ----                -------------         ------ ----
>> > > > -a----        8/10/2018   8:39 PM         274944 file.dll
>> > > > -a----        8/10/2018   8:40 PM         352256 ftp.dll
>> > > > -a----        8/10/2018   8:40 PM         185856 ghelp.dll
>> > > > -a----        8/10/2018   8:39 PM         185856 help.dll
>> > > > -a----        8/10/2018   8:45 PM         946688 http.dll
>> > > > -a----        8/10/2018   8:40 PM         189440 remote.dll
>> > > > -a----        8/10/2018   8:40 PM         122880 trash.dll
>> > > >
>> > > > Is there any debug output we can enable to see how it is searching for
>> > > > the plugins?
>> > >
>> > > I have now added debug output to kcoreaddons and kio, and the result is:
>> > >     Checking for plugins in ("C:/CI/workspace/Frameworks purpose kf5-qt5
>> > >     WindowsMSVCQt5.10/build/bin/kf5/kio",
>> > >     "C:/Craft/CI/windows-msvc2017_64-cl-debug/plugins/kf5/kio")>
>> > > This list doesn't include the above directory, C:\CI\workspace\Frameworks
>> > > purpose kf5-qt5 WindowsMSVCQt5.10\install-prefix\lib\plugins.
>> > >
>> > > Yet, ECMAddTests.cmake adds to QT_PLUGIN_PATH, it doesn't overwrite it...
>> > > I wonder if set(PATHSEP "\\;") is correct though (why double backslash?)
>> > > QCoreApplication::libraryPaths reads that env var and splits it using
>> > > QDir::listSeparator() which is ';' on Windows. Kevin, any reason for the
>> > > backslash?
>> > > Do you see any other reason for this to fail, otherwise?
>> >
>> > Hi all,
>> >
>> > I've done some investigation work on this on the CI system this
>> > morning and it seems that it isn't even necessary to set
>> > QT_PLUGIN_PATH within ECMAddTests (at least on Windows anyway)
>>
>> I'm confused. Do you mean that *NOT* setting QT_PLUGIN_PATH actually fixes 
>> the
>> finding of kio_file, while setting that env var (as in the CI) breaks finding
>> it?
>> I can't make sense of that, because QCoreApplication::libraryPaths only 
>> *adds*
>> the contents of QT_PLUGIN_PATH into the list of dirs, it doesn't replace or
>> remove anything...
>
>
>
> Sorry - not setting QT_PLUGIN_PATH in the CMake code makes it work.
>
> The CI Tooling sets it when it runs so leaving that undisturbed seems to make 
> it happy.
>
>>
>> > QDEBUG : AlternativesModelTest::bigBufferTest() org.kde.kcoreaddons:
>> > Checking for plugins in ("C:/CI/workspace/Frameworks purpose kf5-qt5
>> > WindowsMSVCQt5.10/install-prefix/lib/plugins/kf5/kio",
>> > "C:/Craft/CI/windows-msvc2017_64-cl-debug/lib/qca-qt5/kf5/kio",
>> > "C:/Craft/CI/windows-msvc2017_64-cl-debug/plugins/kf5/kio",
>> > "C:/CI/workspace/Frameworks purpose kf5-qt5
>> > WindowsMSVCQt5.10/build/bin/kf5/kio")
>>
>> That's definitely more search paths than what CI currently shows:
>>
>> Checking for plugins in ("C:/CI/workspace/Frameworks purpose kf5-qt5
>> WindowsMSVCQt5.10/build/bin/kf5/kio", "C:/Craft/CI/windows-msvc2017_64-cl-
>> debug/plugins/kf5/kio")
>
>
> Yep. That is the additional ones the CI sets.
>
>>
>> > QDEBUG : AlternativesModelTest::bigBufferTest() kf5.kio.core:
>> > "C:/CI/workspace/Frameworks purpose kf5-qt5
>> > WindowsMSVCQt5.10/install-prefix/lib/plugins/kf5/kio/file.dll"
>> > supports protocols ("file")
>>
>> That's success indeed.
>>
>> > Unfortunately doing this doesn't fix the test as it's unable to find
>> > kioslave.exe, even though it exists in $workspace/install-prefix/bin/
>> > so not sure what's happening there:
>> > " Can not find 'kioslave' executable at 'C:/CI/workspace/Frameworks purpose
>> > kf5-qt5 WindowsMSVCQt5.10/build/bin,
>> > C:/Craft/CI/windows-msvc2017_64-cl-debug/bin,
>> > C:/CI/workspace/Frameworks kio kf5-qt5
>> > WindowsMSVCQt5.10/install-prefix/bin'"
>>
>> According to the last entry in this path, it's looking into the install 
>> prefix
>> for *KIO*, which is indeed where I would expect kioslave.exe to be.
>> But you're saying below that somehow kioslave.exe ends up in the install
>> prefix for *purpose* instead?
>
>
> Yeah. Each of those workspaces is throw away and is erased at the end of each 
> run of a job.
>
> In the prepare-dependencies.py script we unpack all the dependencies into 
> $workspace/install-prefix, then set PATH, etc accordingly to ensure 
> everything is found.
>
> This test will be working on Linux and FreeBSD because we use 
> $home/install-prefix there due to Wayland framework hardcoding limitations.
>
> We could potentially do something similar on Windows, however my concern 
> there would be code that only relies on hardcoded paths would pass on CI 
> while then failing in production (as our hardcoded install prefix will never 
> match where a user will install our software)

Any update on this?

In regards to the QT_PLUGIN_PATH issue above, this also appears to be
causing tests in KDevelop to fail (causing runs there to take 8
hours..) so i'd like to find a solution to that somewhat soonish if we
can.

Cheers,
Ben

>
>
>>
>> > Directory of C:\CI\workspace\Frameworks purpose kf5-qt5
>> > WindowsMSVCQt5.10\install-prefix\bin
>> > 08/12/2018  06:21 AM            62,464 kioslave.exe
>>
>> That's the purpose install prefix. How did kioslave.exe get there?
>>
>> Seems like the wrong place --- it's logical that the purpose unittest are not
>> going to depend on anything in the purpose install prefix, we're trying to 
>> run
>> tests with the framework being uninstalled.
>>
>> The issue is likely that kioslave is installed into libexec and not bin.
>
>
> Yeah, it will work for all other executables as they're found in PATH.
>
>>
>> Was there some manual copying done long ago to fix that, but at the time
>> copying into the install prefix was enough, while nowadays that can't work
>> (now that the install prefix isn't supposed to exist yet)?
>
>
> A long time ago workspaces weren't erased at the end of jobs on the CI (back 
> when the builders weren't SSD based) which would have let this test pass most 
> of the time (by accident).
>
> Cheers,
> Ben
>
>>
>> Copying from kio's libexec to kio's bin should fix that.
>>
>> --
>> David Faure, fa...@kde.org, http://www.davidfaure.fr
>> Working on KDE Frameworks 5
>>
>>
>>

Reply via email to