Testing Windows and QWT in R4.1

The same error occurs when trying the build with debian 10 under Qubes R4.1.

Yes. This is fedora-32 wine issues while you trying to install dotnet40 via winetricks
dotNetFx40_Full_x86_x64.exe - Microsoft .NET Framework 4
Dockerfile need some fixes.

I’ve fixed downgrade: https://github.com/fepitre/qwt-crossbuild/tree/fix-dockerfile

The part with winetricks is not working even if I tried with multiple dotnet4X versions. I don’t have time to debug winetricks issues so I hope that would help someone.

1 Like

I tried now several different configurations and came a bit farther with using fedora-32, where I got a rather funny result:

  • In a normal fedora-32 VM, I could install dotnet40 and dotnet45 via winetricks. If I specified --unattended, the installation ran to the end, o.k. Without this switch, several windows popped up, requiring confirmation of license issues, but in the ent, dotnet got installed, too.

  • Doing the same in the docker environment, produced different errors for dotnet40 and dotnet45 in step 7. While dotnet45 could not be installed due to an incompatibility between wine-5.22, which is documented, the dotnet40 installation terminated saying it was cancelled - seeming to hint that the --unattended switch might not have worked and one of the license dialogs went wrong.

I attach the corresponding logs (unfortuately as JPGs, because the forum software won’t let me do otherwise). I hope this might help further.

1 Like

I’ve got it working (up to video driver). I’ve removed docker stuff because there is no need for that. Let me polish things and send you my branch.

1 Like

I invite you to have a look to https://github.com/fepitre/qwt-crossbuild/ and you can check build instructions in README. Please note this is a version without GUI component. I’ve refactored a little bit things to have normal Qubes component build process :). I won’t probably go farther on this because I’ve decided to continue the work initiated from Marek to attempt to revive Qubes Windows components last year based on the work done in qwt-crossbuild. I’ll will focus on them in order to have us a build of QWT in R4.1 as in R4.0.

Tested on a Windows 10 PRO:

[user@windows-mgmt qwt-crossbuild]$ qvm-run -p work-qubesos-win "cmd.exe"
Microsoft Windows [Version 10.0.19042.631]
(c) 2020 Microsoft Corporation. All rights reserved.

C:\Windows\system32>cmd.exe& exit
Microsoft Windows [Version 10.0.19042.631]
(c) 2020 Microsoft Corporation. All rights reserved.

C:\Windows\system32>

Build failed. Message limit only 32000.
So, parts of qwt-crossbuild-dom0-fc32.log

-> Updating sources for qwt-crossbuild...
--> Fetching from https://github.com/fepitre/qwt-crossbuild master...
--> NOT verifying tags
--> Merging...
-> Installing core RPM packages...
Created symlink /etc/systemd/system/sockets.target.wants/dbus.socket → /usr/lib/systemd/system/dbus.socket.
Created symlink /etc/systemd/user/sockets.target.wants/dbus.socket → /usr/lib/systemd/user/dbus.socket.
Created symlink /etc/systemd/system/dbus.service → /usr/lib/systemd/system/dbus-broker.service.
Created symlink /etc/systemd/user/dbus.service → /usr/lib/systemd/user/dbus-broker.service.
Created symlink /etc/systemd/system/timers.target.wants/unbound-anchor.timer → /usr/lib/systemd/system/unbound-anchor.timer.
Created symlink /etc/systemd/system/timers.target.wants/dnf-makecache.timer → /usr/lib/systemd/system/dnf-makecache.timer.
-> Installing package groups...-> Building qwt-crossbuild (qubes-windows-tools.spec) for fc32 dom0 (logfile: build-logs/qwt-crossbuild-dom0-fc32.log)
--> build failed!
  vulkan-loader-1.2.148.1-1.fc32.x86_64                                         
  wine-5.22-1.fc32.x86_64                                                       
  wine-alsa-5.22-1.fc32.i686                                                    
  wine-alsa-5.22-1.fc32.x86_64                                                  
  wine-arial-fonts-5.22-1.fc32.noarch                                           
  wine-capi-5.22-1.fc32.i686                                                    
  wine-capi-5.22-1.fc32.x86_64                                                  
  wine-cms-5.22-1.fc32.i686                                                     
  wine-cms-5.22-1.fc32.x86_64                                                   
  wine-common-5.22-1.fc32.noarch                                                
  wine-core-5.22-1.fc32.i686                                                    
  wine-core-5.22-1.fc32.x86_64                                                  
  wine-courier-fonts-5.22-1.fc32.noarch                                         
  wine-desktop-5.22-1.fc32.noarch                                               
  wine-filesystem-5.22-1.fc32.noarch                                            
  wine-fixedsys-fonts-5.22-1.fc32.noarch                                        
  wine-fonts-5.22-1.fc32.noarch                                                 
  wine-ldap-5.22-1.fc32.i686                                                    
  wine-ldap-5.22-1.fc32.x86_64                                                  
  wine-marlett-fonts-5.22-1.fc32.noarch                                         
  wine-mono-5.1.1-1.fc32.noarch                                                 
  wine-ms-sans-serif-fonts-5.22-1.fc32.noarch                                   
  wine-openal-5.22-1.fc32.i686                                                  
  wine-openal-5.22-1.fc32.x86_64                                                
  wine-opencl-5.22-1.fc32.i686                                                  
  wine-opencl-5.22-1.fc32.x86_64                                                
  wine-pulseaudio-5.22-1.fc32.i686                                              
  wine-pulseaudio-5.22-1.fc32.x86_64                                            
  wine-small-fonts-5.22-1.fc32.noarch                                           
  wine-symbol-fonts-5.22-1.fc32.noarch                                          
  wine-system-fonts-5.22-1.fc32.noarch                                          
  wine-systemd-5.22-1.fc32.noarch                                               
  wine-tahoma-fonts-5.22-1.fc32.noarch                                          
  wine-times-new-roman-fonts-5.22-1.fc32.noarch                                 
  wine-twain-5.22-1.fc32.i686                                                   
  wine-twain-5.22-1.fc32.x86_64                                                 
  wine-webdings-fonts-5.22-1.fc32.noarch                                        
  wine-wingdings-fonts-5.22-1.fc32.noarch                                       
  xml-common-0.6.3-54.fc32.noarch                                               
  xz-libs-5.2.5-1.fc32.i686                                                     
  zlib-1.2.11-21.fc32.i686                                                      

Complete!
rm -rf /home/user/qubes-builder/chroot-dom0-fc32//home/user/qubes-src/qwt-crossbuild/pkgs/dom0-fc32/*
sudo chroot /home/user/qubes-builder/chroot-dom0-fc32 su -c 'cd /home/user/qubes-src/qwt-crossbuild; env BACKEND_VMM=xen  rpmbuild --define "dist .fc32" --define "fedora 32" --define "_rpmdir pkgs/dom0-fc32/" --define "qubes_builder 1" --define "backend_vmm xen" --define "source_date_epoch_from_changelog Y" --define "clamp_mtime_to_source_date_epoch Y" --define "use_source_date_epoch_as_buildtime Y" --define "dist .fc32" --define "fedora 32" --define "_rpmdir pkgs/dom0-fc32/" --define "qubes_builder 1" --define "backend_vmm xen" --define "source_date_epoch_from_changelog Y" --define "clamp_mtime_to_source_date_epoch Y" --define "use_source_date_epoch_as_buildtime Y"  --define "_sourcedir /home/user/qubes-src/qwt-crossbuild" -bb qubes-windows-tools.spec' - user
warning: line 7: It's not recommended to have unversioned Obsoletes: Obsoletes:	qubes-core-dom0-pvdrivers
warning: line 7: It's not recommended to have unversioned Obsoletes: Obsoletes:	qubes-core-dom0-pvdrivers
error: Bad source: /home/user/qubes-src/qwt-crossbuild/243329.tar.gz: No such file or directory
make[2]: *** [/home/user/qubes-builder/qubes-src/builder-rpm/Makefile-legacy.rpmbuilder:82: dist-package-build] Error 1
make[2]: Leaving directory '/home/user/qubes-builder'
make[1]: *** [Makefile.generic:191: packages] Error 1
make[1]: Leaving directory '/home/user/qubes-builder'
make: *** [Makefile:262: qwt-crossbuild-dom0] Error 1

in qubes-builder/qubes-src/qwt-crossbuild, run make get-sources, it should have been pulled earlier. I’ll check.

I’ve pushed force master branch to have the same than nogui one so you would certainly need to clean the sources first. Sorry this is very developing stuff. Also, normally sources for archive dependencies in qwt-crossbuild are now fixed.

1 Like

yahooo :slight_smile: hugely thanks to @fepitre.

-> Installing package groups...-> Building qwt-crossbuild (qubes-windows-tools.spec) for fc32 dom0 (logfile: build-logs/qwt-crossbuild-dom0-fc32.log)
--> Done:
      qubes-src/qwt-crossbuild/pkgs/dom0-fc32/noarch/qubes-windows-tools-4.1-1.noarch.rpm
make[1]: Leaving directory '/home/user/qubes-builder

I just tried to build under Fedora-32 and got to make qubes-dom0 COMPONENTS="qwt-crossbuild", which aborts with the following message:

-> Preparing fc32 build environment
-> Initializing RPM database...
-> Retrieving core RPM packages...
-> Verifying signatures...
Filename: /home/user/qubes-builder/cache/fc32/base_rpms/acl-2.2.53-5.fc32.x86_64.rpm is not signed. Exiting!
make[1]: *** [/home/user/qubes-builder/qubes-src/builder-rpm/Makefile-legacy.rpmbuilder:44: /home/user/qubes-builder/chroot-dom0-fc32/home/user/.prepared_base] Fehler 1
make[1]: Verzeichnis „/home/user/qubes-builder“ wird verlassen
make: *** [Makefile:262: qwt-crossbuild-dom0] Fehler 1

Are qubes-developers keys imported in your qubes-builder AppVM ?

Sorry - I Just imported the Qubes keys. I’l retry with the developers keys.

Rebuilt the qwt utilities again, it works for me 100%

[user@new-qwt-builder qubes-builder]$ history
    1  git clone https://github.com/QubesOS/qubes-builder
    2  cd qubes-builder/
    3  cd
    4  wget https://keys.qubes-os.org/keys/qubes-master-signing-key.asc
    5  gpg --import qubes-master-signing-key.asc 
    6  gpg --edit-key 36879494
    7  wget https://keys.qubes-os.org/keys/qubes-developers-keys.asc
    8  gpg --import qubes-developers-keys.asc
    9  cd qubes-builder/
   10  git tag -v `git describe`
   11  mkdir -p keyrings/git
   12  cp ~/.gnupg/pubring.kbx ~/.gnupg/trustdb.gpg keyrings/git
   13  sudo dnf install gnupg git createrepo rpm-build make wget rpmdevtools python3-sh dialog rpm-sign dpkg-dev debootstrap python3-pyyaml devscripts perl-Digest-MD5 perl-Digest-SHA
   14  ln -s example-configs/qubes-os-master.conf builder.conf
   15  make install-deps get-sources COMPONENTS='$(BUILDER_PLUGINS) qwt-crossbuild' GIT_URL_qwt_crossbuild=https://github.com/fepitre/qwt-crossbuild INSECURE_SKIP_CHECKING="qwt-crossbuild"
   16  make qubes-dom0 COMPONENTS="qwt-crossbuild"
   17  make remount
   18  make qubes-dom0 COMPONENTS="qwt-crossbuild"
   19  history
-> Installing package groups...-> Building qwt-crossbuild (qubes-windows-tools.spec) for fc32 dom0 (logfile: build-logs/qwt-crossbuild-dom0-fc32.log)
--> Done:
      qubes-src/qwt-crossbuild/pkgs/dom0-fc32/noarch/qubes-windows-tools-4.1-1.noarch.rpm
make[1]: Leaving directory '/home/user/qubes-builder'

With the developers’ keys imported, the error stays the same. It seems to be a problem of the rpm-File.

I repeated make get-sources again, and got an additional error there:

[user@fedora-32 qubes-builder]$ make get-sources
-> Updating sources for builder...
--> Fetching from https://github.com/QubesOS/qubes-builder.git master...
--> Verifying tags...
---> No valid signed tag found!
---> One invalid tag: 284f4b7eac69eccf36e904485726151b62d56160
make: *** [Makefile:217: builder.get-sources] Fehler 1

I’ll retry now with the commands of your history.

The error remains. Is there an option to ignore the fact that the rpm is not signed?

Do you ultimate trust to qubes-master-signing-key ?
I have also fully updated fedora-32 host.

gpg --edit-key 36879494
fpr
trust
5
y
q
-> Updating sources for builder-rpm...
--> Fetching from https://github.com/QubesOS/qubes-builder-rpm.git master...
--> Verifying tags...
gpg: keybox '/home/user/qubes-builder/keyrings/git/builder-rpm/pubring.kbx' created
gpg: key E2A783B8C37BB66B: 1 signature not checked due to a missing key
gpg: /home/user/qubes-builder/keyrings/git/builder-rpm/trustdb.gpg: trustdb created
gpg: key E2A783B8C37BB66B: public key "Joanna Rutkowska (Qubes OS signing key) <joanna@invisiblethingslab.com>" imported
gpg: key C235DF9A1E30A75D: 1 signature not checked due to a missing key
gpg: key C235DF9A1E30A75D: public key "Joanna Rutkowska (Qubes OS signing key) <joanna@invisiblethingslab.com>" imported
gpg: key A14B0A7874EADABC: 1 signature not checked due to a missing key
gpg: key A14B0A7874EADABC: public key "Joanna Rutkowska (Qubes OS signing key) <joanna@invisiblethingslab.com>" imported
gpg: key F2804017B298547C: 1 signature not checked due to a missing key
gpg: key F2804017B298547C: public key "Marek Marczykowski (Qubes OS signing key) <marmarek@mimuw.edu.pl>" imported
gpg: key 928DD427AB5EEF90: 1 signature not checked due to a missing key
gpg: key 928DD427AB5EEF90: public key "Marek Marczykowski (Qubes OS signing key) <marmarek@invisiblethingslab.com>" imported
gpg: key FB5DAEE165EF29CA: 1 signature not checked due to a missing key
gpg: key FB5DAEE165EF29CA: public key "Joanna Rutkowska (Qubes OS Signing Key) <joanna@invisiblethingslab.com>" imported
gpg: key EE570349A603BCB6: 1 signature not checked due to a missing key
gpg: key EE570349A603BCB6: public key "Marek Marczykowski (Qubes OS signing key) <marmarek@invisiblethingslab.com>" imported
gpg: key DDFA1A3E36879494: public key "Qubes Master Signing Key" imported
gpg: key 7397C8B034898310: public key "Joanna Rutkowska (Qubes OS Signing Key) <joanna@invisiblethingslab.com>" imported
gpg: key 063938BA42CFA724: public key "Marek Marczykowski-Górecki (Qubes OS signing key) <marmarek@invisiblethingslab.com>" imported
gpg: key 5BA92D6DAF975A7D: 1 signature not checked due to a missing key
gpg: key 5BA92D6DAF975A7D: public key "Wojciech Zygmunt Porczyk (Qubes OS signing key) <wojciech@porczyk.eu>" imported
gpg: key 045A13284C85173A: 1 signature not checked due to a missing key
gpg: key 045A13284C85173A: public key "Rafał Wojdyła (Qubes OS signing key) <omeg@invisiblethingslab.com>" imported
gpg: key 70483D0A15CE40BF: 1 signature not checked due to a missing key
gpg: key 70483D0A15CE40BF: public key "Wojciech Zygmunt Porczyk (Qubes OS signing key) <woju@invisiblethingslab.com>" imported
gpg: key C92A047EF2CD312B: public key "Wojtek Porczyk (Qubes OS signing key) <woju@invisiblethingslab.com>" imported
gpg: key DA0434BC706E1FCF: public key "Simon Gaiser (Qubes OS signing key) <simon@invisiblethingslab.com>" imported
gpg: Total number processed: 15
gpg:               imported: 15
gpg: no ultimately trusted keys found
gpg: inserting ownertrust of 6
gpg: key E2A783B8C37BB66B: "Joanna Rutkowska (Qubes OS signing key) <joanna@invisiblethingslab.com>" not changed
gpg: key C235DF9A1E30A75D: "Joanna Rutkowska (Qubes OS signing key) <joanna@invisiblethingslab.com>" not changed
gpg: key A14B0A7874EADABC: "Joanna Rutkowska (Qubes OS signing key) <joanna@invisiblethingslab.com>" not changed
gpg: key F2804017B298547C: "Marek Marczykowski (Qubes OS signing key) <marmarek@mimuw.edu.pl>" not changed
gpg: key 928DD427AB5EEF90: "Marek Marczykowski (Qubes OS signing key) <marmarek@invisiblethingslab.com>" not changed
gpg: key FB5DAEE165EF29CA: "Joanna Rutkowska (Qubes OS Signing Key) <joanna@invisiblethingslab.com>" not changed
gpg: key EE570349A603BCB6: "Marek Marczykowski (Qubes OS signing key) <marmarek@invisiblethingslab.com>" not changed
gpg: key DDFA1A3E36879494: "Qubes Master Signing Key" not changed
gpg: key 7397C8B034898310: "Joanna Rutkowska (Qubes OS Signing Key) <joanna@invisiblethingslab.com>" not changed
gpg: key 063938BA42CFA724: "Marek Marczykowski-Górecki (Qubes OS signing key) <marmarek@invisiblethingslab.com>" not changed
gpg: key 5BA92D6DAF975A7D: 1 signature not checked due to a missing key
gpg: key 5BA92D6DAF975A7D: "Wojciech Zygmunt Porczyk (Qubes OS signing key) <wojciech@porczyk.eu>" not changed
gpg: key 045A13284C85173A: 1 signature not checked due to a missing key
gpg: key 045A13284C85173A: "Rafał Wojdyła (Qubes OS signing key) <omeg@invisiblethingslab.com>" not changed
gpg: key 70483D0A15CE40BF: 1 signature not checked due to a missing key
gpg: key 70483D0A15CE40BF: "Wojciech Zygmunt Porczyk (Qubes OS signing key) <woju@invisiblethingslab.com>" not changed
gpg: key C92A047EF2CD312B: "Wojtek Porczyk (Qubes OS signing key) <woju@invisiblethingslab.com>" not changed
gpg: key DA0434BC706E1FCF: "Simon Gaiser (Qubes OS signing key) <simon@invisiblethingslab.com>" not changed
gpg: Total number processed: 15
gpg:              unchanged: 15
---> Good tag 40c6d2547fdb8756c9424c366613105296e99961

Retrying - will take some time …

No change, the error stays the same - all developers’ keys installed, so I suppose that it is a problem of the rpm file. Maybe there are different versions of this file?

@fepitre did you test a seamless mode?
is it possible to make this option work?
Also net doesn’t work too.
I have not read build scripts yet,
but most likely for 4.1 everything needs to be changed (new qubes policy, python)
trying to reinstall manually with extracted iso from qwt rpm
i can only cmd from dom0