Overview

Request 1127192 accepted

Viking Windows build on an open platform


Ralf Habacker's avatar

According to https://en.opensuse.org/Build:projects:windows:mingw:win32#Porting_native_autotools_packages_to_mingw64 you can remove these dependencies:

+BuildRequires: mingw64-filesystem

+BuildRequires: mingw64-binutils

+BuildRequires: mingw64-runtime

+BuildRequires: mingw64-cross-binutils

+BuildRequires: mingw64-cross-pkg-config

except

BuildRequires: mingw64-cross-gcc

because they are already added as reference, see https://build.opensuse.org/projects/windows:mingw:win64/packages/mingw64-gcc:mingw64-cross-gcc/repositories/openSUSE_Leap_15.4/binaries/x86_64/mingw64-cross-gcc-13.2.0-lp154.42.1.x86_64.rpm


Ralf Habacker's avatar

+BuildRequires: mingw64-libmagic1

+BuildRequires: mingw64-libbz2-1

These are run time libraries and should normally not be required as build dependency except the package runs cross compiled applications for example with wine.


Ralf Habacker's avatar

Most, if not all, of these packages are runtime packages that provide shared libraries. In this project, when creating packages, required shared libraries are recognized and added as a runtime requirement by default, see entries mingw64(....dll) on the "Requires" tab at https://build.opensuse.org/projects/home:robbieonsea/packages/mingw64-viking/repositories/15.5/binaries/x86_64/mingw64-viking-1.10-lp155.1.1.noarch.rpm. Please remove these.



Ralf Habacker's avatar

Are there tabs in this file ? - please use spaces


Rob Norris's avatar
author source maintainer target maintainer

"For building setup installer or portable packages a dedicated package is available ...<snip> "

I'm trying to understand the capabilities of mingw64-installer-base; seems a little opaque in how to use it, even with the GDB example - is it meant to replace / reuse NSIS? Even if it is somehow using NSIS in the background - can one make it use an existing .nsi script definition?

Since for the Windows installer I want it to do at least these things:

  1. I18n for the installer itself
  2. Extra registry values that provide more information for the Add/Remove Programs displays in Windows Settings
  3. Installation of 'system' things (normally provided by system wide dependencies in Linux) into a place that will get used by the Viking install:

    a. File magic database

    b. GTK3 Theme - mainly for the basic stock toolbar/menu icons

    c. Supporting GTK/Glib programs like gspawn

    d. Help system (just a PDF - as not using ghelp/yelp)

    e. File associations (.vik and .gpx, etc...)

    f. Ideally use a CA certificate store, but I've not worked out how to do this.

Otherwise ATM, I'm quite happy with the existing NSIS installer generation being outside of OBS.


Ralf Habacker's avatar

Basically, the mingwxx-installer-base package creates three different packages: a portable package with all files installed under %{_mingw32_prefix}, a setup installer with additional options and an archive with debug information, which contains symbols and source code for gdb.

  • Installation of 'system' things (normally provided by system wide dependencies in Linux) into a place that will get used by the Viking install:

Files/directories provided by an available package are included by default by adding the related package as build requirement.

  • Adding the main package (in your case mingw64-viking will add all packages providing dll's used by the mentioned package by default)
BuildRequires: mingw64-viking
  • to have the magic database and associated tools include:
BuildRequires: mingw64-shared-mime-info
#  language packages
BuildRequires: mingw64-shared-mime-info-lang
  • to add GTK3 Theme, if not already as implicit dll dependency
BuildRequires:    mingw64-gtk3
 # if required
BuildRequires:    mingw64-gtk3-data  
BuildRequires:    mingw64-gtk3-tools

# language packages
BuildRequires:    mingw64-gtk3-lang
# for debug package
BuildRequires:  mingw64-gtk3-debug
  • to have glib utilities add

BuildRequires: mingw64-glib2

%_mingw64_installer_prep mkdir -p tmp/share/kmymoney cp %{_mingw64_kf5_appsdir}/icons/breeze/breeze-icons.rcc tmp/share/kmymoney/icontheme.rcc ```

  • d. Help system (just a PDF - as not using ghelp/yelp)

If this is a simple file, you can add it as mentioned above

  • e. File associations (.vik and .gpx, etc...)

If nsis can use an additional configuration file that is included when creating the installation program, this can be added with an additional macro option (see below). Other option would also be possible.

  • f. Ideally use a CA certificate store, but I've not worked out how to do this.

If this is file or directory based, adding such store is already provided as mentioned above.

I should mention that there is also support to add a dedicated start.bat file for the portable package, to add a license file and a few more options. The rpm macros used in the *-installer.spec file are located and documented at https://build.opensuse.org/package/view_file/windows:mingw:win64/mingw64-installer-base/macros.mingw64-installer?expand=1



Rob Norris's avatar
author source maintainer target maintainer

@rhabacker: Thank you for the detailed reply about how to improve the installer.

However, for now I'd like to at least get Viking v1.10 in OBS, with the .spec file updated to address the other simpler issues.

Then longer term seek to automate the installer in conjunction with v1.11 (which I'm in the process of getting closer to creating...). Since if I understand correctly, it seems one needs the primary program uploaded first in order for it to be a dependency of the installer.spec anyway.

NB I also have a 32bit package version, which I'll add soon too.

Request History
Rob Norris's avatar

robbieonsea created request

Viking Windows build on an open platform


Ralf Habacker's avatar

rhabacker accepted request

Superseeded by https://build.opensuse.org/request/show/1128623

In these cases, you can check the "superseeds ..." box when opening an updated request, which will automatically close this request.

openSUSE Build Service is sponsored by