From kde-community Sat Feb 24 09:27:16 2024 From: Konstantin Kharlamov Date: Sat, 24 Feb 2024 09:27:16 +0000 To: kde-community Subject: Re: Post-MegaRelease projects Message-Id: <6715ee546860f81b8306c77f11924b976673f3b1.camel () yandex ! ru> X-MARC-Message: https://marc.info/?l=kde-community&m=170877103029989 MIME-Version: 1 Content-Type: multipart/mixed; boundary="--=-8DV+rjiLls3w1LPRxnbH" --=-8DV+rjiLls3w1LPRxnbH Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, 2024-02-24 at 22:16 +1300, Ben Cooksley wrote: > On Sat, Feb 24, 2024 at 8:37=E2=80=AFPM Konstantin Kharlamov > wrote: > > On Sat, 2024-02-24 at 16:31 +1300, Ben Cooksley wrote: > > > On Fri, Feb 23, 2024 at 11:12=E2=80=AFPM Sune Vuorela > > > wrote: > > > > On 2024-02-22, Nate Graham wrote: > > > > > I've started pondering post-megarelease projects. We've spent > > > > so long on=20 > > > > > porting and bugfixing that I think it might be useful to > > > > shift gears to=20 > > > > > feature work, and I'd like to brainstorm potential large- > > > > scale projects=20 > > > > > and gauge the level of interest in putting resources into > > > > them soon. > > > >=20 > > > > A bit more from the devops end that I'd love to see people > > > > tackle: > > > >=20 > > > > =C2=A0- Ensure frameworks and app unit tests interacting with > > > > windows can run > > > > =C2=A0 =C2=A0on Windows. > > > > =C2=A0 =C2=A0More details: The following fails on our windows CI > > > > =C2=A0 > > > > =C2=A0https://invent.kde.org/sune/windows-test-thingie/-/blob/maste= r/main.cpp > > > > =C2=A0 =C2=A0I find it weird that we are spending resources on putt= ing > > > > things in > > > > =C2=A0 =C2=A0the windows store and making apps available on windows= , but > > > > we can't > > > > =C2=A0 =C2=A0actually have passing tests in our CI. > > > >=20 > > >=20 > > >=20 > > > This unfortunately will not be easy to solve.=C2=A0 > > >=20 > > > One of the key things that we've learned out of doing CI, as has > > > been showcased=C2=A0by FreeBSD in particular, is that the builders > > > need to be ephemeral - that is only around for the build in > > > question that is being run. > > > We're currently accomplishing this by using containers - via > > > Podman (for Linux/Android/FreeBSD) and Docker (for Windows). > > >=20 > > > Containers also offer us the advantage of allowing people to > > > easily reproduce the CI environment on their local system without > > > too much trouble. > > >=20 > > > For Windows however, Microsoft has limited the container stack to > > > not allow anything GUI related to work. The underlying libraries > > > may be there, but the equivalent display server components are > > > not operational. > > >=20 > > > To complicate things further, on Windows certain permissions are > > > restricted to the interactive console and are not possible to do > > > as either a scheduled task or as a system service. > > > Usage of existing Windows automation frameworks such as > > > Powershell Remoting or SSH will therefore not work if we want > > > things to perfectly replicate a end user environment - because > > > those will run the command(s) as part of a non-interactive > > > session (even if the user we connect as is the same one logged in > > > on the desktop console). > >=20 > >=20 > > Idk if it's a silly question, but=E2=80=A6 If Windows native containers > > have so many restrictions, why not just use Linux containers with > > WINE inside? > >=20 >=20 >=20 > Because Wine is not Windows either, and there could be subtle > differences in how things run / interact with the system. > Plus some of our software would like to test certain system level > infrastructure (like say KDE Connect). Out of curiosity, what does this infrastructure include? I thought KDE connect only uses network sockets and system tray. > Plus, we have to have native Windows to compile things anyway as we > need to use MSVC (otherwise you have no Qt Web Engine support, as > that cannot be built with MingW) But I presume it can be built with Clang? In particular, Google Chrome on Windows is being built with Clang =E2=80=94 and Web Engine is basically = a fork of Chromium. > (and you cannot really mix MingW / MSVC binaries due to incompatible > compiler ABIs for C++ code) Well, if for testing purposes Qt was pre-built with Clang, I guess there won't be any ABI issues. --=-8DV+rjiLls3w1LPRxnbH Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable
On Sat, 2024-02-24 at 22:16 +1300, Ben Cooksley w= rote:
On = Sat, Feb 24, 2024 at 8:37=E2=80=AFPM Konstantin Kharlamov <Hi-Angel@yandex.ru> wrote:
On Sat, 2024-02-24 at 16:31 +1300, Ben Cooksley wrote:=
On Fri, = Feb 23, 2024 at 11:12=E2=80=AFPM Sune Vuorela <nospam@vuorela.dk> wrote:

 - Ens= ure frameworks and app unit tests interacting with windows can run
 = ;  on Windows.
   More details: The following fails on ou= r windows CI
   
= https://invent.kde.org/sune/windows-test-thingie/-/blob/master/main.cpp=
   I find it weird that we are spending resources on putting = things in
   the windows store and making apps available on wi= ndows, but we can't
   actually have passing tests in our CI.<= br>


This unfortunately= will not be easy to solve. 

One of the key t= hings that we've learned out of doing CI, as has been showcased by Fre= eBSD in particular, is that the builders need to be ephemeral - that is onl= y around for the build in question that is being run.
We're curre= ntly accomplishing this by using containers - via Podman (for Linux/Android= /FreeBSD) and Docker (for Windows).

Containers= also offer us the advantage of allowing people to easily reproduce the CI = environment on their local system without too much trouble.

<= /div>
For Windows however, Microsoft has limited the container stack to= not allow anything GUI related to work. The underlying libraries may be th= ere, but the equivalent display server components are not operational.

To complicate things further, on Windows certain = permissions are restricted to the interactive console and are not possible = to do as either a scheduled task or as a system service.
Usa= ge of existing Windows automation frameworks such as Powershell Remoting or= SSH will therefore not work if we want things to perfectly replicate a end= user environment - because those will run the command(s) as part of a non-= interactive session (even if the user we connect as is the same one logged = in on the desktop console).
=
Idk if it's a silly question, but=E2=80=A6 If Windows native= containers have so many restrictions, why not just use Linux containers wi= th WINE inside?


Becau= se Wine is not Windows either, and there could be subtle differences in how= things run / interact with the system.
Plus some of our software= would like to test certain system level infrastructure (like say KDE Conne= ct).

Out of curiosity, wh= at does this infrastructure include? I thought KDE connect only uses networ= k sockets and system tray.

<= div dir=3D"ltr">
Plus, we have to have nativ= e Windows to compile things anyway as we need to use MSVC (otherwise you ha= ve no Qt Web Engine support, as that cannot be built with MingW)

But I presume it can be built with = Clang? In particular, Google Chrome on Windows is being built with Clang = =E2=80=94 and Web Engine is basically a fork of Chromium.

<= div>(and you cannot really mix MingW / MSVC binaries due to incompatible co= mpiler ABIs for C++ code)

Well, if for testing purposes Qt was pre-built with Clang, I guess there w= on't be any ABI issues.
--=-8DV+rjiLls3w1LPRxnbH--