Commit Graph

632 Commits

Author SHA1 Message Date
Bruno de556c0734
build/windows: Move Installer (fully) to Win32 Vista design
Following e93e0f49

This defaults 'Segoe UI' for Installer texts and for license's body. This
font is still used as the default in Windows 11 and even in online docs.

We are also bumping to 9 pt as outlined in the final Win32 guidelines:
https://learn.microsoft.com/en-us/windows/win32/uxguide/vis-fonts
I've done microscopic pixel checks and confirmed that this produces a Win32
compliant design, which renders kerning and spacing equal as 'Win + R' and
UWP Notepad (please note that some "legacier" Win32 apps renders different)

---

Also, change from Lucida Console to 'Consolas' (default console font since
at least Win8). Today it is Cascadia Mono but not included with Win 10.
2024-06-16 08:17:20 -03:00
Bruno 8315967735 build/windows: Little fix after b38d0455 2024-06-15 15:40:45 +00:00
Bruno b38d0455c3
build/windows: Make clear crossbuild awful situation
Some contributors got confused about how to crossbuild on IRC. Let's help them.
2024-06-15 08:47:18 -03:00
Bruno c808d13b6e build/windows: Debloat a bit Windows bundling
This makes the output more complete but at the same time less
polluted regarding the bundling scripts (base, deps and sym).

---

Also, packaging scripts (inno and msix) were touched as consequence
of experiments about drop bundling, for saving space (~20MB), of:
- etc/gtk (MSYS2 don't build immodules)

- share/ghostscript (macOS .dmg don't package it)
- share/libthai (macOS .dmg don't package it)
- share/locale (???, decided to kept only gtk and iso-codes to test)
- share/man (installer don't package it, maybe because Windows can't open)
- share/poppler (macOS .dmg don't package it)

- bin/bzip2.exe (???)
- bin/gdk-pixbuf-query-loaders.exe (loaders.cache already bundled)
- bin/gspawn*.exe. (???)

- share/gir-1.0 (installer don't package it)
- share/lua (???)
- share/vala (installer don't package it)

The "???" ones seems to not be used according to my local tests. If
they are, a bug will appear so we will be able to know, comment in
the script (for maximum clarity towards the future) then revert.
2024-06-15 00:34:54 +00:00
Bruno Lopes 21ffb58903
Issue #811: Make each language a component for the Installer
In the process, make the Installer localization process less 'masochist'
(in other words: less manual). The custom '.xml' was the only way since
the iso-codes, Dammed Lies and Inno namings don't match.
2024-06-12 11:38:36 -03:00
Bruno c02160a949
build/windows: No need to download Inno Korean translation
It is shipped with Inno by default in version 6.3.
2024-06-09 18:26:02 -03:00
Bruno 2f74496ebf
build/windows: No need to add BOM anymore
Inno Installer 6.3 added support to UTF-8 *.isl files without a BOM
2024-06-09 18:21:27 -03:00
Bruno 8e576fb741 build/windows: Add fractional scaling to Installer Intro (actually End) image
Following a1ce459a
2024-06-09 16:58:03 +00:00
Bruno 12707592c2 build/windows: Add 'libxslt' to unified deps list
Some package stopped to need 'libxslt' out of nowhere.
Don't know when and why that happened, best I found was:
c3a5cacbaf
2024-06-06 14:07:10 +00:00
Bruno a8b9bedf3c
Issue #5146: Change Installer ProductInfo in revisions
This allows better versioning control by ITs.
2024-06-05 20:33:16 -03:00
Bruno fb5474ae4d
Issue #4053: Add "*default_bin" support on Windows and enable it
Almost every program have a non-versioned .exe on Windows. MSYS2 does this too.
2024-06-05 11:51:14 -03:00
Bruno a2bd501cee build/windows: Move Store assets generation to gimp-data
gimp-data is the correct place, along with the installer assets.
2024-06-04 16:29:59 +00:00
Bruno 1a70eba570 Revert "build/windows: generate a default XCF file to be copied by Windows"
This reverts commit 085d8a02b5.

For some reason, Windows doesn't allow us to use that feature
(confirmed this after using the version from the Store itself,
not the .msixbundle)
2024-06-04 16:29:59 +00:00
Bruno fad40afe45
build/windows: Organize *gimp3264.iss [Code] to not look like Assembly
The installer is probably the most complex packaging format so one of the
biggest examples of packaging love over the years into it in our repo.
But the readability of installer scripts... leave a lot to be desired.

Now, the main script is organized following the order of installer pages
with some comments. This will make easier to future contributors work
(but this commit probably isn't perfect since it's a big change to read)
2024-06-03 16:42:13 -03:00
Bruno 09d6402a5b
build/windows: Update Installer dir code following latest changes 2024-06-03 06:49:22 -03:00
Bruno Lopes 57012174fb build/windows: Don't allow multiple Installers at same time
We have counter measures to avoid installing while gimp opened at 'prep time',
but until now none for the installer itself. Let's fix it with SetupMutex.

The final UX is just less worse (than today): the user needs first to select a
language, then only after this the dialog about two installer will be prompt.
Seems that Inno devs willn't fix: https://github.com/jrsoftware/issrc/pull/461
2024-06-01 20:42:06 +00:00
Bruno 796005216d build/windows: Very small clean-up to PowerShell scripts 2024-06-01 13:47:35 +00:00
Bruno Lopes 884b05f168 gitlab-ci, build/windows: Move back split of 32-bit symbols to gimp job
Following 0199faac

We use arm64 runners for the installer job to avoid queues, but...
llvm-objcopy is well know to lack parity and one sympthom is the
'invalid SymbolTableIndex' warning when handling x86 debug symbols.
2024-06-01 10:57:24 +00:00
Bruno Lopes 2f49ff0810 build/windows: Offer option to launch GIMP after install
This commit just makes the installer display a (unchecked) checkbox, like Win
pkg manager (WinGet) so it's doesn't change the actual behavior. It also don't
break string freeze since the .isl string already exists and have translations.

The benefit to some users is having one less click to launch GIMP: [checkbox] >
[close]; instead of: [close] > [start menu icon] > [gimp in 'recommendations'].
2024-06-01 10:53:14 +00:00
Bruno Lopes 9a4d46f077 build/windows: Don't generate .interp files for Native .zip bundles
Following 59b62c33
2024-05-29 10:43:39 +00:00
Bruno Lopes cb8c8711a6 build/windows: Enable GEGL dev docs building on Windows
This is not broken according to my tests but babl is.
2024-05-28 13:32:03 +00:00
Bruno Lopes 2e748ddbfc build/windows: Make crossroad GIMP script work locally
Following fdc2f080.
2024-05-28 09:39:16 +00:00
Bruno Lopes 00af02fa19 build/windows: Make crossroad Deps script work locally
Following fdc2f080.

Also, do some cleanups.
2024-05-28 09:39:16 +00:00
Bruno Lopes ed97f08d0b build/windows: Delete Splash images from 2.9 era not used anymore
They should have been deleted by !1373 but there were so many things to
do that it is completely natural that these two files went unnoticed.
2024-05-25 17:44:22 -03:00
Bruno Lopes e93e0f49a0 build/windows: Move Inno installer to 'modern' style
This style mimics the color scheme used by Win32 applications since Vista (and
still used in Win11). The all grey scheme ended in XP. Let's move on.

But we will keep the actual window size and without being able to resize since
these two Inno features (WizardSizePercent and WizardResizable) are broken.

(The progress bar was changed too to conform with the defaults and uninstaller)
2024-05-25 19:15:54 +00:00
Bruno Lopes c7d271d892 build/windows: Silence Inno warnings regarding langs
We have no control over lang teams. No reason to keep the output polluted.
2024-05-25 07:44:57 -03:00
Bruno Lopes f34f55dd65 build/windows: Organize Installer [Setup] to make some sense 2024-05-25 07:44:49 -03:00
Bruno Lopes 6276d9d777 build/windows: Drop hardcoded Installer right-top icon
Now, the icon is generated from the (new) logo .svg in gimp-data.
Also, it now have full HiPPI (aka fractional scaling) support.
2024-05-24 16:22:23 -03:00
Bruno Lopes a1ce459a1b build/windows: Drop hardcoded Intro image from 2.9 (pre-2.10) series
Now, the image is generated from splash image in gimp-data
2024-05-24 12:16:07 -03:00
Bruno Lopes c6634d66ff build/windows: Make Installer versioning vars more neutral
Now, the installer files match the meson config.h naming:
'gimp_version', 'gimp_app_version' and 'gimp_api_version'.
"devel" was replaced by meson 'gimp_unstable' too.

util_version was dropped since it lost its utility.
2024-05-24 13:22:03 +00:00
Bruno Lopes 0199faac2c gitlab-ci, build: Make DWARF (.debug) symbols splitting an Installer only script
Splitted .debug are not needed by crossbuilds, and breaks .msix certification.
2024-05-24 13:11:18 +00:00
Bruno Lopes dc21fb7601 meson, build: Disable CodeView (.pdb) generation and bundling for now
1) Right now, MS Partner Center doesn't tell us if the .pdb bunbled as .appxsym
are fine and we only have "Unknow" dumps in the Health page from MS Par. Cen.

My theory, according to my tests with 'SymChk', 'PDBCopy' and 'llvm-pdbutil',
is that this is happening because .pdb from clang or gcc are not "perfect", but
I really have no proof to afirm this, since Partner Center tell us nothing
about them, and we don't even know if the .appxsym were uploaded to begin with.

---

2) The compiler can't generate DWARF (.debug*) symbols when generating .pdb,
which breaks debugging in DrMingw and even lldb according to my tests.
(This is not a fault of the .pdb format but a circumstance: our debuggers
only support DWARF, which is the format already used by MSYS2 packages)

---

So, the .pdb will return probably only in the potential vcpkg transition.
2024-05-24 13:11:18 +00:00
Bruno Lopes edddb83784 build/windows: Fixes and cleanup to native scripts
Previous changes broken local building courtesy and probably DirectInput too.
Noticed that the universal variables can not work in some contexts, fixed.

Also, done some little cleanups.
2024-05-21 22:59:44 +00:00
Bruno Lopes fdc2f080a8 gitlab-ci, build/windows: Make crossroad scripts self-contained
This make them easier to understand and to run local, as we do with native ones

(They can't be run local yet, further changes will try to acomplish this a bit)
2024-05-16 10:05:38 -03:00
Bruno Lopes 26e2f693dc build/windows: Enable .pdb bundling in x86 (32-bit)
Following 8cf688ac. Since GCC 14 was finally released with this feature.
Clang have it for years in advance so no change is needed for arm64 and x64.
2024-05-15 21:20:36 -03:00
Bruno Lopes 36ce192a53 build/windows: Reduce some bashisms on Windows scripts 2024-05-16 00:02:25 +00:00
Alx Sa 443947c6aa plug-ins: Remove n_drawables parameter
Port all plug-ins to retrieve the layers
directly from the image rather than
having them passed in. This resolves some
issues with introspection and sets the
foundation for future API work.
2024-05-03 15:22:39 +00:00
Bruno Lopes 59b62c3355 build/windows: Make possible to execute Win cross artifact without the wrapper
The wrapper, like in native artifact, exists just for avoid searching the exe.
But, if the user wanted, wasn't possible to execute gimp-*.exe directly since
the wrapper was needed to generate loaders.cache. Now, loaders.cache are built.
2024-04-29 15:51:33 +00:00
Bruno Lopes bf0671dac2 build/windows: Make clear that our Windows builds are not incomplete
This improves the gimp.cmd wrapper wording a bit to not need the README
anymore. Our dev site was improved some time ago to clarify this:
the Windows builds aren't not incomplete if run correctly (under MSYS2)

Also, add cleanup commands to make the .typelib wizardy less invasive.
2024-04-29 15:51:33 +00:00
Bruno Lopes 649f0c7747 build/windows: Update 'project_subdir' in gimp.cmd wrapper following 973c2dd7 2024-04-29 15:51:33 +00:00
Bruno Lopes f7c5c5a6e0 build/windows: Update 'project_subdir' in MSIX following 973c2dd7
Also, drops manual removing of test plug-ins since they willn't be
installed at build time for stable versions, I suppose.
2024-04-28 19:05:18 -03:00
Bruno Lopes e53d6df611 build/windows: Add 'GIMP.GIMPPreview' identity for testing purposes
Without this, Partner Center refuses the .MSIX by not matching the
entry Identity and DisplayName (which isn't the same as the stable).

Also, rework the naming of the .msix's to be more Microsoft-ish
2024-04-28 17:55:22 -03:00
Bruno Lopes 7503dd449a build/windows: Add 'qoi' back to the unified deps list
Following 93722e81. I forgot adding into the list
2024-04-27 16:37:05 -03:00
Bruno Lopes 93722e81b5 build/windows: Remove a bit of actually dead code in msys2 scripts
This commit is mostly a little cleanup:
- Reduce redundancy in Local compatibility layer regarding build commands,
  which partily reverts !1171 regarding buggy "ninja && ninja install"
- Reduce redundancy of some variables (MSYS_PREFIX and GIMP_DISTRIB)
- Remove manual QOI install since MSYS2 granted a exception in the win32 drop

This commit also reverts 7cca69cd, a fix from the autotools era that isn't
actually needed according to my tests in CI.
2024-04-27 17:00:43 +00:00
Bruno Lopes f40ecca648 gitlab-ci, build: Enable ccache for win crossbuilds
Due to design, crossroad install everything in the same prefix. So, let's
drop the pkg caching (.cache) and reuse ccache path inherited from .default.
2024-04-23 14:08:55 +00:00
Bruno Lopes bffe62d43e gitlab-ci, build: Drop custom "CI_*" variables
Let's figure out what job is running using the predefined GitLab variables.
2024-04-23 13:20:29 +00:00
Bruno Lopes 42356db4b4 gitlab-ci, build: Clarify DWARF debug symbols "extraction"
Partially reverts af79bbe0 (regarding .debug "extraction" in cross builds)

Now, we call the split debug script from the main bundling script, which makes
similar to our macOS .app bundling script. This cleans a bit of code in .yml
and make things clearer to the mere mortals in the scripts.
2024-04-23 07:53:48 -03:00
Bruno Lopes 8ef4b40c8c build/windows: Fix Installer after native x64 and arm64 TWAIN drop
Native arm64 and x64 TWAIN binaries are not built anymore. No need to
discard at dist time what doesn't exist. (32-bit TWAIN not affected)

Also, start to using our own ARM64 runners to do the dist. This is more
reliable since the shared x64 runners can (and indeed) cause long queue.
2024-04-22 18:52:25 +00:00
Bruno Lopes 28ba5d6918 gitlab-ci: Silence universal variables
They were generating a distracting output in CLANG* shells, as noted by
@lillolollo in a comment from MR: Infrastructure/gimp-web-devel!65

In the process, make AppImage and Windows (native) scripts use these
variables, without hardcoding the same variables from .yml anymore.
2024-04-22 13:22:31 +00:00
Jehan 2f9881c03f build, tools, gimp-data: removing gimp_exe_config_dir from the root meson.build.
Creating a temporary config directory for the in-build GIMP (run as a tool or
for unit-testing) is not done as a build target anymore, but in the
in-build-gimp.sh script as a unique temp directory, then cleaned out on exit.
This has a few advantages:

- It is properly cleaned out once the build ends (instead of leaving a full
  config dir as trash inside the build dir).
- It is not reused from one build to another (with risk of carrying bugs and
  issues over).
- Every use of the in-build GIMP will have its own config directory, and in
  particular when they are called in parallel.

As a side update, make sure that all `gimp_exe` runs depend on
`gimp_exe_depends`.
2024-04-21 20:43:29 -03:00
Jehan a54253db04 build, gimp-data: all 'file-*-save' plug-in procedures got renamed to 'file-*-export'. 2024-04-21 18:18:44 -03:00
Bruno Lopes a56cfc9080 build/windows: add UTF-8 support to non MS Store manifest
This is recommended by Microsoft for "*nix apps" and adding it to the
.exe manifest will avoid disparity between MSIX and other versions
(e.g. CI crossbuilds and CI native builds/installer/local builds).
2024-04-21 18:18:44 -03:00
Jehan a9c8420368 build/windows: fix submodule checkout failure
Bruno note: This commit was repurposed after ad132ad0.

---

For some reason, on the Windows/Aarch64 runners only, submodule updates fails
with:

> + git submodule update --init
> From https://gitlab.gnome.org/GNOME/gimp-data
>  * branch            d1041a4d97871c85538938872d0ace69d2fc44c2 -> FETCH_HEAD
> error: Your local changes to the following files would be overwritten by checkout:
>         images/README.md
>         images/logo/meson.build
>         images/meson.build

The big question was: why are there edits to begin with? This is supposed to be
a brand new clone!
After a bit of investigation, it turns out that the whole files have incorrect
EOL endings (a `git diff` returns every possible lines in the whole
repositories, but `git diff --ignore-cr-at-eol` returns nothing). It looks like
this breaks the submodule update.
2024-04-21 18:15:32 -03:00
Jehan 194eaf1312 build/windows: drop plug-ins .ico (it is now generated by gimp-data) 2024-04-21 18:15:32 -03:00
Jehan b41fe61698 build/windows: generate fileicon .png's for MS Store and drop .ico
Also update the gimp.rc and delete the committed fileicon.ico now that
gimp-data generates this file the same way as these PNG fileicon-s.
2024-04-21 18:15:32 -03:00
Jehan 085d8a02b5 build/windows: generate a default XCF file to be copied by Windows
Attribute uap4:ShellNewFileName is meant as a template file to be copied when
someone initiate the Shell "New" command (via the Explorer context menu).
2024-04-21 18:15:31 -03:00
Bruno Lopes 4c968d9aa0 meson, build/windows: generate AppList, StoreLogo and *Tile .png's
Most of the work in this commit is by @Jehan.

These icons are used only by the .msix (MS Store) distribution of GIMP.

Some legacy icons are used only by Windows 10 and need to have smaller logo
than full image dimensions, so let's not use colorsvg2png. We just pass the
dimensions to use by configuring variants of the same base script.
2024-04-21 18:15:31 -03:00
Bruno Lopes 37045e477b gitlab-ci, build/windows: Add MS Store job to CI
The new dist job can produce two artifacts: a *.msixupload file
ready for submission and/or a *.msixbundle only for testing.

See the commit about the script for more details.
2024-04-21 18:15:18 -03:00
Jehan 8cf688ac16 meson, build/windows: generate .pdb (CodeView) debug symbols
This makes possible to debug with DIA SDK, if wanted by the developer.
Also, this is needed to create .appxsym files for MS Store debugging.

Ideally meson should be able to install for us, but apparently it doesn't.
See https://github.com/mesonbuild/meson/issues/12977
2024-04-21 18:13:47 -03:00
Bruno Lopes 184e2704a4 build/windows: Add MS Store dist script
Adds PowerShell script and proper manifest for making .msixupload
(only for releases) and/or .msixbundle (always, for testing).

As authorized by Jehan, 32-bit willn't be supported. The reasons are:
1. 32-bit is going to die when WIA plug-in is done. This can hurt reviews
2. 32-bit is being restricted in ARM64 version. This causes disparity
3. 32-bit is generating a big footprint. "This is bad for the environment"
   To be clear: we are discarding most of 32-bit artifact (see point 1)
   and what could not (TWAIN for x64 only, point 2) almost doubles .msix.

There is one small circumstantial reason too:
4. 32-bit wouldn't have .pdb even after GCC 14 because bins have same name
   as x64, and MS don't allow multiarch debug symbols in the same .appxsym
2024-04-21 18:12:38 -03:00
Jacob Boerema 9d133add5b build: openjpeg dependency was missing
Both in our Debian and Windows deps the openjpeg dependency was
missing, so let's add it back.
2024-04-21 12:40:41 -04:00
Bruno Lopes 2dc6f41114 gitlab-ci, build: Use 'bundling' naming instead of 'packaging'
As hinted in d09a2a6f

We now use the word 'bundle' to signify "program files in the same prefix"
(e.g. .appimage, .zip, .app). This is in line with our source and dev-docs
(just take a search in the repo). So, appimage and windows scripts changed.

The word 'package' normally means "program files distributed for install in
the same prefix or not" (e.g. .deb, .msi, .dmg). This is in line with CMake
naming of some commands, but meson prefers to call 'dist', which we use more.

So, this partly reverts some things of GNOME/gimp!1171 and reinforce others
for even more "rationality" in the overall build structure of GIMP.
2024-04-20 22:32:46 -03:00
Bruno Lopes d09a2a6f7a gitlab-ci: Drop 'packaging' stage
This stage was introduced in 076e4d68 and it fulfilled well its purpose. But
the side effects were: more (sometimes slow) uploading and downloading of
packages and artifacts. Even if we have caching, this is far from ideal.

Now, the so-called "packaging" jobs were moved inside in the "build" jobs.
The advantages are: just one pacman install (ideally cached from deps job);
direct packaging without waiting for upload/download; and less confusion,
since "packaging" naming was implying that the .zips are somewhat official,
which isn't totally true, and sometimes overlaps the dist/deploy concept.

---

Also, the flatpak job now uses config.h instead of triggering a GIMP build.
In other words, I'm reverting part of my work in some old commits.
2024-04-16 12:08:07 -03:00
Bruno Lopes 18079e176f gitlab-ci, build/windows: Unify a bit Windows (cross and native) jobs 2024-04-14 10:36:04 +00:00
Bruno Lopes ad132ad0fa gitlab-ci, build/windows: Organize 'git' variables 2024-04-13 20:47:47 -03:00
Bruno Lopes 28c65b8a5f gitlab-ci: Drop x86 (aka 32-bit) cross builds for Windows
This isn't directly related with #10922 and does NOT affect 32-bit support.

After talk with @Jehan, author of 'crossroad' and main dev of crossbuilds,
we decided that the x86 crossroad builds can be dropped by these reasons:

1) 32-bit crossbuilds weren't being built. They are used since c8ec0ae7 but
after the native 32-bit builds they ended in a state that they are the only
pipeline that isn't automatically triggered in any way, a complete limbo.

2) 32-bit crossbuilds weren't being autonomous. They are not working fine
with wine32 so the win-x64-cross artifact is a 'need' and now debian-x64,
so we were spending way more time fixing than using the 32-bit cross jobs
(sometimes the 32-bit cross jobs are just broken and we even noticed).
We have other jobs not autonomous but they don't have additional bugs
like not being able to build with .mng and .wmf (32-bit cross only bugs).

---

The x64 crossbuilds will continue to be supported. They are very useful to
develop on Linux, and test MRs on Windows. I'm an assiduous user of them :)
2024-04-13 18:25:47 +00:00
Bruno Lopes 28f893293a gitlab-ci: Reduce redundancy on Windows cross jobs (take 3)
Following 2c2e779f and 70886e55.
2024-04-13 15:51:32 +00:00
Bruno Lopes 2c2e779f92 gitlab-ci: Reduce redundancy on Windows cross jobs (take 2)
Following 129c1637a9
2024-04-13 10:00:56 -03:00
Bruno Lopes a22393a67e gitlab-ci: Reduce redundancy on Windows native jobs
This commit uses definitions and references to reduce repetition of CI code.
Some people (like the GitLab devs?) prefer (almost imposes) this to be done in
multiple .yml's using 'worfklow:' but this makes the CI way more complicated
and very slow to read. So, let's just keep simple in one human readable file.

---
Other changes are:
- The custom native arch pipelines now they always generate a .zip package.
  This helps to ensure that everything is in place and facilitate testing;
- The pacman update (-Syyuu) was removed since it is auto done by runners;
- The ccache config was moved to .yml. This does NOT affect local builds
  since meson saves ccache by default for user in '%LocalAppData%/ccache'.
2024-04-11 19:02:49 +00:00
Bruno Lopes 70886e554f Partially reverts 9d279a60 and 4f965557
These commits introduced sensible drawbacks in our CI file organization.
Some of them I already commented in the MR but was "ignored" back then
probably due to the complexity of the MR. So, the let's revert:
- Unecessary repetition of libomp installation (4 times, now 1)
- Unecessary repetition of submodule initialization (6 times, now 4)
- Creation of new variables in the hope of more clarity. But,
  they aren't consistent with the gimp-web-devel instructions
  nor with other systems variables. This is terrible to undestand.
  Please, let's not reinvent the wheel since this is a bad example to
  packagers, since they tends to isolation and overly-engineering.

Also, made some little adjustments that I should have done in previous MR.

---

This MR was splitted. Even more simplification will be done in the future.
2024-04-02 11:55:33 +00:00
Bruno Lopes 2f2027b757 gitlab-ci, build: Unify variables following gimp-web-devel
We should avoid disparity with the build instructions since
contributors will look at the CI files. See:
Infrastructure/gimp-web-devel!54 and Infrastructure/gimp-web-devel!65
2024-04-01 19:01:52 -03:00
Jehan c3840c63e8 build: gimp.ico now generated from the new icon. 2024-03-28 00:19:10 +01:00
Jehan 4f9655573f build, gitlab-ci: update dependencies.
- With last commit, the Windows installer pipeline doesn't depend on
  "gimp-debian-x64" job anymore since a native Windows build is now able to run
  GIMP (or gimp-console) as a build-time tool as well. It makes the Windows
  installer pipeline (and full custom native builds) self-sufficient.
- On the other hand, "gimp-win-x64-cross" and "gimp-win-x86-cross" now require
  "gimp-debian-x64" since cross-compiling GIMP now requires a native GIMP in
  order to generate some image data (such as the splash image, and probably soon
  logo or icons, etc.). See gimp-data@5a03c71.
- Getting rid of "image-win-x64-cross" and "image-win-x86-cross" in favor of
  "image-debian-x64" for all Debian as well as the cross-compilation jobs. They
  are all based on the same Debian image (it was debian:bookworm for native
  Linux jobs and debian:testing for cross-builds; now it will be debian:bookwork
  for all) and it's just a few more packages (cross-compilation C and C++
  toolchains) for the cross-builds. Moreover now the cross-builds also need the
  native GIMP binary around, therefore native dependencies are needed as well.
  It makes sense to factorize all 3 images into 1.
- Make sure we don't build bindings when cross-compiling since these won't work
  in this case.
2024-03-28 00:19:10 +01:00
Jehan 0b5b4173ab build, data: moving splash image to gimp-data repository.
- Splash images will now be stored from gimp-data.
- The installer BMP image scripts also move in the same time.
- We don't need devel and non-devel variants of the BMP images in InnoSetup
  scripts since the images are generated from the actual splash.
2024-03-28 00:19:10 +01:00
Jehan dbb2f67e66 build: exit in error when ninja fails.
Not sure why it doesn't already since `set -e` stops the script immediately and
crossroad is supposed to pass the return value through.
2024-03-28 00:19:10 +01:00
Jehan 9d279a60ce meson: moving away from meson subprojects in favor of git submodules.
Meson subprojects just have too many problems and limitations and I can foresee
the maintenance headache and the future incoming false-positive bug reports if
we start using meson subprojects.

Comparing to the simplicity of git submodule which also has much better
notifications to help people understand when the submodule is not in sync and
how to remedy to it.

See commit gimp-data@c364adb explaining the main reasons in detail.
2024-03-28 00:19:10 +01:00
Jehan 1854e65667 build: use the icon file from the gimp-data subproject. 2024-03-28 00:19:10 +01:00
Bruno Lopes 8c3cce1737 build/windows: Remove redundant build options
These options are already auto set by babl and GEGL.
2024-03-25 15:55:34 +00:00
Bruno Lopes 5de967aae9 gitlab-ci: Drop Windows resource .patch since MSYS2 now have LLVM 18 2024-03-23 20:07:54 -03:00
Bruno Lopes e61b7e05ed build/windows: Port Installer script to .ps1
This commit unites two scripts (.sh + .bat) in one .ps1. PS was choosed, since:
1) We don't need MSYS2 to distribute with Inno at first. Now, who wants to
   just distribute GIMP can do it easier natively without a separate environ.
2) PS is actually pretty solid and have a good number of cmdlets, unlike the
   ancient CMD, which barely supported more than 9 parameters in .bat files.
   Consequently, some redundant variable checks have been removed from the .ISS.

Also, changes the name of the job and script for better consistency with the
upcoming MS Store job.
2024-03-16 15:24:45 +00:00
Bruno Lopes a4e94d86ea Issue #8209: Don't install unselected components 2024-03-16 00:13:44 +00:00
Bruno Lopes e89bca35c7 gitlab-ci, build: Move to Clang in Windows (native)
This makes possible to use the Universal C library provided by Microsoft.
2024-03-15 17:08:31 +00:00
Bruno Lopes b51e0bc464 build/windows: Update some Installer strings
- Remove obsolete GtkWimp and Compat strings
* Update 32-bit string
2024-03-07 10:42:34 +00:00
Bruno Lopes a0512f5aae build/windows: Clean *gimp3264.iss regarding 2.0 series InstallDelete
These files are not deleted when the Unstable (GIMP 2.99) or Stable (GIMP 3)
version are installed because the root is different. So, they can be removed.
2024-03-07 10:08:34 +00:00
Jehan 341ab7212b build: remove a LLVM patch.
It was only used for the gimp-win-a64 job and was coming from MSYS2 repository
which already dropped it:
a98352b2ba

The first patch is still needed as the upstream fix is meant to appear in clang
18 according to bug report, yet our CI still uses clang 17.0.6. See:
https://github.com/llvm/llvm-project/issues/51286
2024-02-26 19:56:53 +00:00
Bruno Lopes 98d6542745 build/windows: Fix iso-codes correctly
This fix only applies to local builds. iso-codes warning was fixed again
with proper option indicated by Jehan.
2024-02-25 15:15:16 +00:00
Bruno Lopes 368bee2d64 build/windows: Rework scripts local compatibility layer
Since !1171 we can use the CI scripts locally, but the initial implementation,
after some commits, revealed to be troublesome. So, now reworked to be simple.
2024-02-18 19:28:47 +00:00
Bruno Lopes 43c0fdcbba build/windows: Follow meson defined versions
As noted by Jehan, the way of defining the (many) GIMP versions can change.
So, let's take the GIMP version directly from the generated config.h file.

Also, changes the declaration of some variables to conform with "best pratices".
2024-02-18 19:28:47 +00:00
Bruno Lopes 3db6639375 build/windows: Make unified deps list more conventional
This list is referenced in the gimp-web-devel site, and my initial
implementation, in terms of ease to use, was a throwback.

Also, make the CI code more simple without changing the list file.
2024-02-18 19:28:47 +00:00
Bruno Lopes 265fb09ce6 build/windows: Make deps install "modular"
Since almost the same code is used in the 3 stages, let's reuse it.
2024-02-18 19:28:47 +00:00
Bruno Lopes 09a26ddb72 build/windows: Conform scripts to Coding Style
Self-explanatory. Also, make the structure a little more cohesive.
2024-02-18 19:28:47 +00:00
Jehan 017b82b0d5 build: use tagged releases of babl/GEGL dependencies when building releases.
The rest of the time, we want to use HEAD of their main branches.

The last ctx update seem to have broken the CI build on Windows. While we'll
have to fix this, let's do this after we release GIMP.

Anyway we obviously don't want to use unstable code for actual point releases,
so it's a good thing that this made me think of adding such rules.
2024-02-16 22:31:33 +00:00
Bruno Lopes 96e7673348 build/windows: (Finally) Drop lua5.1 in ARM
This become unnoticed in !1171 and was breaking .lua plug-ins use in
ARM installs. See: https://gitlab.gnome.org/GNOME/gimp/-/issues/10554#note_2014768
2024-02-16 00:08:02 +00:00
Bruno Lopes c435184735 build/windows: Update manifest to conform with 5c96851431 2024-02-14 11:20:31 +00:00
Jehan f8ddc94a8b build: fix splash2installer.py with updated API using GeglColor instead of GimpRGB.
Fixes:

> TypeError: argument background: Expected Gegl.Color, but got gi.repository.Gimp.RGB
2024-02-11 23:28:04 +01:00
Jehan 979900fcdf gitlab-ci, build: BUILD_TYPE not set for packaging-win-a64 job.
Aaaargh! I think this was the main issue which would explain why the problem was
mostly happening on the packaging job. In this job, we were still consistently
calling `pacman --noconfirm -Suy` (i.e.g "Synchronizing package databases")
which we had stopped to do for the CI builds as that was highly increasing
chances of locking pacman's process.
2024-02-08 21:00:07 +00:00
Jehan effe39d688 build: add gettext-tools dependency from MSYS2 repo.
gettext was recently split into 2 packages. While we didn't have the issue on
hmartinez82's runner, because old packages are not wiped out (as they should),
this issue first appeared on our new Arm runners.

This fixes the following error in our Windows build:

> /usr/bin/msgfmt: cannot locate ITS rules for ../data/tips/gimp-tips.xml.in

See:
* https://gitlab.gnome.org/Infrastructure/gimp-web-devel/-/merge_requests/52
* https://github.com/msys2/MINGW-packages/pull/19913
2024-02-08 21:00:07 +00:00
Jehan 5040eb88fb build: break `ninja && ninja install` into 2 calls.
Fixing a case where the script continued after a failed `ninja`. After further
testing on how `set -e` works, it looks like a toplevel `false && true` command
will fail the script (which is what we want), but it won't when inside an `if`
block!

Breaking it down into 2 separate calls fail the script correctly though. So
let's do this.
2024-02-08 21:00:07 +00:00
Jehan ea3ec94bfb build: work around repetitive pacman failures by retrying.
MSYS2 pacman gets randomly stuck on Windows/Aarch64. The actual issue is still
being investigated by upstream projects, though anyway it's bad for us right
now, to the point that there are discussions to remove Aarch64 support from the
Windows installer (whereas it just got added recently!) in #10729.

This is an attempt to a workaround. Instead of getting stuck forever and waiting
until the whole job times out (per Gitlab CI settings), I time-out (after 3
minutes) the pacman command within our script and try again, up to 2 more times.
Hopefully one of the calls would succeed.

I also send a SIGKILL through the timeout (though I have no idea how signals
translate to Windows processes) and run again taskkill after this, which may
seem overkill. Interestingly I get output for both, which seems to indicate that
the kill succeeds in both cases (because of several processes?).

Anyway clearly it's a bit of random code not completely understood, but the
inability to test this all locally clearly doesn't help so it's good enough for
the time being.

See: https://github.com/msys2/MSYS2-packages/issues/4340
2024-02-08 21:00:07 +00:00
Jehan 0902e45901 build: jobs must return in failure when a dependency build fails.
While this is the job of `set -e`, putting parts of the script in shell
functions hid error returns in the build-deps-msys2 script.
Cf. #10729.

For the build-gimp-crossroad script, let's just add `set -e`.
Cf. #10725.
2024-02-01 15:46:55 +00:00