Commit Graph

169 Commits

Author SHA1 Message Date
Michael Natterer 26dce72d2c Remove autotools 2023-05-27 00:03:52 +02:00
Alx Sa 48e976725c build: Update Windows installer associations
Adds the following formats that GIMP now supports: .ani, .cur, .dcx,
.icns, .pam, .wbmp, .iff/acbm/ilbm/lbm
2023-05-15 19:26:48 +00:00
Daniel Novomeský 04b97dc97c build: enable QOI format on Windows
and associate in the installer.
2023-04-03 09:45:10 +02:00
Jacob Boerema ecbcc4c4a4 build: fix ci failure due to partial missing bg in windows installer
Bulgarian was added to the installer po files and LINGUAS, but the other
files needing updates were forgotten. Let's fix that.
2023-03-14 14:17:19 -04:00
Jehan cab8748c6c build: delete now outdated files.
It's probably unneeded as the 2.99 installers are transient and anything
installed by GIMP 2.99 won't be in stable 3.0 anymore. Still, it's nice not to
have any weird warnings even in dev releases.
2022-11-13 23:04:38 +00:00
Jehan ca230cb770 meson: fix warnings of deprecated features.
Now that we bumped our meson requirement, meson is complaining about
several features now deprecated even in the minimum required meson
version:

s/meson.source_root/meson.project_source_root/ to fix:

> WARNING: Project targets '>=0.56.0' but uses feature deprecated since '0.56.0': meson.source_root. use meson.project_source_root() or meson.global_source_root() instead.

s/meson.build_root/meson.project_build_root/ to fix:

> WARNING: Project targets '>=0.56.0' but uses feature deprecated since '0.56.0': meson.build_root. use meson.project_build_root() or meson.global_build_root() instead.

Fixing using path() on xdg_email and python ExternalProgram variables:

> WARNING: Project targets '>=0.56.0' but uses feature deprecated since '0.55.0': ExternalProgram.path. use ExternalProgram.full_path() instead

s/get_pkgconfig_variable *(\([^)]*\))/get_variable(pkgconfig: \1)/ to
fix:

> WARNING: Project targets '>=0.56.0' but uses feature deprecated since '0.56.0': dependency.get_pkgconfig_variable. use dependency.get_variable(pkgconfig : ...) instead
2022-08-31 01:29:37 +02:00
Jehan 7375116d46 po-windows-installer: fix double escaped ampersand in XML for the…
… Windows installer localization.

There are kind of 2 separate bugs here:

- Direct i18n.gettext() to the proper data directory where to find the
  ITS file. Otherwise `meson compile gimp30-windows-installer-pot` and
  `meson compile gimp30-windows-installer-update-po` complained about
  not knowing XML and falling back to C, which is obviously a problem:

> /usr/bin/xgettext: warning: file 'build/windows/installer/lang/setup.isl.xml.in' extension 'xml' is unknown; will try C

- Set gt:escapeRule to "no" in the ITS file, otherwise the XML entity is
  kept as-is in the po file (i.e. "&" stays "&" inside the po
  files), but it's considered as raw text when merged back to XML, i.e.
  that the '&' is properly converted to a XML entity, so we end up with
  a double escape "&".
  Now the po file will have a '&' which will still be converted to XML
  entity at merge time. This is actually most likely better than asking
  translators to handle XML entities themselves (with the possibility to
  make typos and break the XML entity).

See https://savannah.gnu.org/bugs/?58643
2022-08-22 20:50:59 +02:00
Jacob Boerema b0ade14957 build: fix Windows installer
The Hungarian language file for the Windows installer was recently moved
from unofficial to the officially supported languages. However, a new
release including Hungarian by default is not available yet. This causes
our CI to fail because it can't find Hungarian in unofficial.

We change our ci script to download Hungarian from the correct location
for official languages, and adapt gimp3264.iss to reflect the correct
location.
2022-08-15 23:32:47 +00:00
Jehan 218c78e76a build: search only once for the addbom.sh script.
This avoids repeated "found: YES" output (one per installer language) on
the project configuration.
2022-07-31 18:25:33 +02:00
Jehan 47ba11056f Issue #7386: fix languages non-provided by InnoSetup showing as English.
The language files provided by the InnoSetup project (either the main
ones or the "Unofficial" ones, i.e. less maintained ones) at least
provides the name of the language, possibly in English, ideally
self-localized in its own language.

Unfortunately Kabyle didn't have any language file so we were using the
Default one, which ended up showing the lang as a duplicate (and very
wrong) "English".

With this commit, I add code to provide our own very basic base language
file, which would at least contain the language name. There is also a
concept of language ID to be verified in Windows-provided list.
Unfortunately it doesn't have any (actually it was id-ed 0x1000 like
many other languages, which looked therefore to be the code for an
unsupported lang). InnoSetup docs tells us to leave 0 then. We can add
the ability to set a specific code later in the template if we add other
un-provided languages and if they have their own lang id.

With this base infrastructure, we should be able to better support more
languages.
2022-07-31 15:10:04 +00:00
Jehan 195ed374f4 Issue #8338: add BOM to ISL file as external script.
Unfortunately the weird encoding of a string to bytes to get the UTF-8
BOM worked on my local machine, but not on the Windows CI. I'm not going
to fight it and fallback to a shell script.

I am guessing it should work fine on all platform since we use basically
the same sed call in build/windows/gitlab-ci/installer-gimp-msys2.sh
already.
2022-07-31 01:43:05 +02:00
Jehan 4293d05dda Issue #8338: add a BOM to ISL files.
Inno-Setup absolutely requires it to recognize UTF-8 translation files.
This should hopefully be the final fix to #8338.

Note that this fix is full of workaround for meson bugs or limitations.
While it was a one-liner in autotools, added to the existing rule, here
I have to add an additional (non-relevant) target rule, then uglily work
around 2 bugs:
https://github.com/mesonbuild/meson/issues/1564
https://github.com/mesonbuild/meson/issues/7696

I can't say I'm so happy about the resulting change, even though it
seems to work. If anyone can propose a nicer build rule, it would be
welcome.
2022-07-30 23:28:39 +02:00
Niels De Graef 7186907c16 build: Fix windows installer i18n
Whenever we have an element without translation, we try to use the value
without a `xml:lang` attribute. That selector was wrong though, which
leads to https://gitlab.gnome.org/GNOME/gimp/-/issues/8338, which should
now be fixed.
2022-07-29 20:40:41 +02:00
Niels De Graef 1308df4dc1 meson: Fix windows installer translations 2022-07-08 10:08:14 +02:00
Anders Jonsson e601a6c7de Change GTK+ to GTK
GTK got rid of the + in 2019:
https://lwn.net/Articles/779305/
2022-07-07 14:02:36 +00:00
lloyd konneker d5a83429b4 ScriptFu: Add script-fu-interpreter akin to other interpreters
Why:
1) users can install .scm scripts to plug-ins dir
2) Crashing scripts do not crash extension-script-fu

Scripts (.scm files) have a shebang and are executable
and in a same-named subdir of plugin dir.

Interpreter/scripts create PDB procs of type PLUGIN unlike extension-script-fu
which creates PDB procs of type TEMPORARY, owned by extension-script-fu.

Unlike other interpreters, the interpreter is-a plugin outright,
not by virtue of the script subclassing GimpPlugin and using GI.

More details in /plug-ins/script-fu/interpreter/README
2022-06-30 13:39:45 +00:00
Jehan 66812c8862 build: fix the distcheck.
MR !653 was merged too early as Gitlab bugged on us! Anyway this fixes
the distribution contents.
2022-06-25 17:06:21 +02:00
Jehan 8122e8cf36 extensions: fix builds after MR !653 (migrating to gettext).
(1) On recent meson versions, it fixes this error:

> extensions/goat-exercises/meson.build:108:0: ERROR: i18n.merge_file keyword argument 'output' was of type array[str] but should have been str

As docs explains, 'output' only accepts one item in i18n.merge_file().

This bug also happens on older meson (but there the reported error is a
lot less useful as it doesn't mention local meson build code).

(2) `setup.isl.xml` is a temporary intermediary file used to create the
    Windows installer. It must not be installed.

(3) `gimp30-windows-installer.mo` itself is only used to create
    `setup.isl.xml`. It must not be installed as well.

(4) gimp-tips.(its|loc) files (same for gimp-tags ones) should not be
    installed. They are only temporary data.

(5) Fix environment variable: s/GETTEXT_DATA_DIRS/GETTEXTDATADIRS/

Fixes:

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

(6) Fix various bugs in the *.setup.isl files creation in autotools
    build (typo, wrong files used, order of options in `xsltproc`
    apparently meaningful, and so on. I guess the autotools build was
    not as well tested as the meson one :P).

(7) Fixing the unit test verifying language lists consistency.

(8) `setup.isl.xml.in` must be added to the distribution.
2022-06-25 12:41:21 +02:00
Niels De Graef f663d26ab5 Migrate from intltool to gettext
intltool has long been dead upstream. Let's not poke the dead corpse,
please.

This commit is quite large, but that's mostly since trying to support a
hybrid of both gettext and intltool with both Meson and Autotools was
really hard, so I stopped trying.

Due to gettext relying on quite some things being at the exactly right
place in the autotools build (like `ABOUT-NLS` and `config.rpath`) we
really needed to cleanup the `autogen.sh` to only call `aclocal` and
`autoreconf`. No more strange magic; I tried to do it without changing
too much in the file, and things just broke. If people want to do
something more custom, they can just change the script directly. This
change also uncovered some problems in our `configure.ac`, like using
deprecated macros.

The following major changes happened:

* meson: Changed `custom_target()` to `i18n.merge_file()` for all
  supported file types
* Added `.its` and `.loc`  files for the GIMP-specific XML formats, so
  that gettext understands them
* For the `.isl` (Window installer stuff) file, there's no easy way to
  do this in gettext, so instead we start from an XML file (again with
  its own ITS rules etc), translate that with gettext, and then use
  `xsltproc` with a bit of magic to output the .isl file for each
  language
* the `po*/Makefile.in.in` files are migrated to `Makevars` files,
  which gettext natively understands.

Fixes: https://gitlab.gnome.org/GNOME/gimp/-/issues/8028
2022-06-25 10:25:49 +02:00
lloyd konneker 1c50e60e9c build:windows: migrate to Python3.10 on MSYS
Evidently MSYS no longer has 3.9, see recent pipeline failures.

Note reports of issues with meson on 3.10, but it might not impact this build.
2022-06-24 14:52:02 +00:00
Jehan 10145bb938 build: add an option in the Windows installer to disable update check.
This will allow to use the official Windows installer directly in the
Windows Store, as per the new proposed workflow by Microsoft.

Nevertheless our GIMP for Windows has a built-in update check which
would check if a new version exist and warn people (advising them to go
on the website and download the new installer to update). We obviously
don't want this on the Windows Store which has its own update channel.
It would be confusing.

Therefore I added a feature to disable the built-in update check (not
even showing in Preferences) by tweaking a single package variable. The
installer now comes with new option /DISABLECHECKUPDATE=true which will
add said variable.
2022-06-07 17:52:52 +02:00
Jehan 89fc542fad build: build Georgian localization for Windows installer.
Georgian added in commit 2e07b2d5cc.

This will fix the CI.
2022-05-03 20:57:58 +02:00
Jehan 58353a940a build, extensions, po-windows-installer: update gitignore. 2022-03-28 21:46:02 +02:00
Jehan 7785f96f05 build, po-windows-installer: add ability to leave translator comments.
Similar to the change I pushed to gimp-help repository:

intltool-extract does not consider the `;` isl-syntax comments because
we tell it it is in the ini format. So let's have our source in actual
ini format (POTFILES does not like to look for translated strings in
constructed files, only from source files), then create the .isl files
from it in 3 steps (first, transform the comments in isl format; then
merge all language in a single .isl file; last generate one .isl per
language).

There were already a bunch of comments in the setup.isl.in file (though
not showing in the po files until now). I checked if they seemed
relevant, fixed some, completed others, duplicated the ones which match
several strings, etc.

(This improvement to allow comments for translators in the installer po
files was requested by Piotr Drąg on the gnome-i18n mailing list)
2022-03-28 21:42:25 +02:00
Jehan 2c6cde8218 build: 7 mandatory parameters in our installer bat script. 2022-03-21 15:09:05 +01:00
Jehan 4b9f7b2512 build: make clearer mandatory installer-needed macros.
Instead of replacing various needed macros with random hardcoded values,
just make them mandatory and exit with explicit error when a needed
macro is missing.
2022-03-19 13:48:37 +01:00
Jehan 368e1d7b8a build: add Galician to the Windows installer scripts.
Now that we have a brand new Galician translation for the Windows
installer.
2022-03-13 16:02:02 +01:00
Jehan 1101c237b9 build: package the AppStream file into the Windows installer.
Now needed by the welcome dialog.
2022-02-25 21:42:19 +01:00
Jehan 407472f091 build: fix windows-installer-langs unit test.
Also improving a bit the download script by specifying the .isl or .islu
file extension. It's nicer than trying to download randomly, and also it
allows to better compare the list of downloaded files with the list in
gimp3264.iss script.
2022-01-10 23:58:00 +01:00
Jehan 201cbe7e3e build: no need to chmod the test file which is already executable.
Also when working on out-of-tree builds, it would not find the file
anyway and we get this output:

> chmod: cannot access 'test-installer-langs.sh': No such file or directory

Though this was not breaking the tests, it has clearly been useless
until we see this one today.
2021-12-22 17:13:07 +01:00
Jehan bf9c488560 build: fix Windows installer lang test after recent re-encoding drop. 2021-12-22 16:30:04 +01:00
Jehan 3e1b783adb build: drop codepage conversion, use UTF-8 for Win install lang files.
Rewriting commit f8cdec1883 by Jernej Simončič for the development
code (which has a slightly different list of languages).

Also adding the meson version of this change.

Since now InnoSetup fully supports UTF-8 isl (as long as they have a
BOM), let's stop converting translations. Then we also avoid all
conversion errors and get a simpler/more robust build process.
2021-12-20 18:50:50 +01:00
Daniel Novomesky 7834fc9c53 windows installer: associate avif and jxl 2021-10-20 12:28:34 +00:00
Jehan 4055ac95e6 build: add more help text to the windows-installer-langs test.
I always have to search again the InnoSetup repository for the language
file. Add the link in the failed test output so that we don't waste time
searching the next time.

Also when the new lang is "Unofficial", the installer script has to be
updated as well, because these lang files must be downloaded. Add a help
text saying this as well.
2021-10-01 21:51:22 +02:00
Jehan 3ace66ecbb build: add Portuguese translation to installer.
Translation files were added in commit cec3c3a159 but not to the
installer and build files, which is why "gimp-distcheck-debian" job was
failing in the CI.
2021-10-01 21:18:43 +02:00
Jehan 9cd9c34251 build: improve gimp:build / windows-installer-langs unit test.
Also sort the po files to make sure all lists are ordered the same way.
2021-10-01 21:17:24 +02:00
Jehan ad83fd04ba build: improve Windows installer language test.
For the installer, we must also manually pull all used official
language, so I am adding a test checking that the list of pulled file
matches the list from the installer script.
2021-09-08 10:20:25 +02:00
Jehan 3e1143595e build: fix typo s/en_GN/en_GB/ 2021-09-04 01:18:07 +02:00
Jehan 3b3f5c8562 build: add new Lithuanian translation to the Windows installer.
This new unit test (test-installer-langs.sh) is great, showing us
inconsistencies between files!
2021-09-04 00:54:42 +02:00
Jehan 681d8e7454 build: MSYS2 python package is now Python 3.9.
The MSYS2 package got recently bumped from 3.8 to 3.9.6.

At first I wanted to update our packaging and installer scripts to be
more generic using glob patterns (so that they should work now and
should continue to work even if bumping to a higher minor version in the
future). Unfortunately this would work for `package-gimp-msys2.sh` but
in `files.isi`, it would only work for `libpython3.*.dll`, not for the
python3.9/ folder. InnoSetup apparently doesn't support using a folder
as source (or maybe just a folder with glob like `python3.*`) as it
resulted in a "No files found matching" error.

So leave everything with the accurate version (because anyway it's much
better to get an early failure than only at the very last step).
2021-07-17 15:25:22 +02:00
Jehan 0e4263d800 build, gitlab-ci: generated files should be in the build dir.
Also update the CI script to copy the generated language files before
creating the installer so that the gimp3264.iss script finds them.
2021-06-18 20:40:04 +02:00
Jehan 602add8c45 build: improve the script to test for Windows installer languages.
We were only comparing the po list with the language list in the
gimp3264.iss. Nevertheless since we also generate the <code>.setup.isl
files, we should also verify generated files corresponds exactly to the
same list of languages.
This commit does it for meson and autotools build.

This is also how I fixed the meson list (cf. previous commit).
2021-06-18 20:27:33 +02:00
Jehan a6c44a7191 build: complete Windows installer lang list in meson and fix iconv…
… conversion when some characters are not convertible.

Currently failed conversion ended up in incomplete .isl files (autotools
build) or would break the build (meson build). Ideally we should use a
target encoding which contains all source characters, but we use the
encoding as set upstream in the LanguageCodePage for the given language
file.
I'm not sure if maybe we can mix the encoding by adding our own
LanguageCodePage at the top of our generated <code>.setup.isl, then we
could just use UTF-8 for any language. It will have to be tested.

For now let's just discard non-convertible characters, assuming there
shouldn't be too many of these. It's the lesser evil in this situation.
2021-06-18 20:22:04 +02:00
Jehan 8c54a0caa9 build: fix installer creation.
My commit 3fbe59cd3c broke the installer making as I forgot to remove
some rules about lua files. Proof that I should always test first!
2021-05-23 00:53:07 +02:00
Jehan 3fbe59cd3c build: do not add the same files twice for lua in the installer.
Since we moved most of them to bin/, share/lua*/ and lib/lua/ files are
not necessary anymore (according to my tests so far at least). Let's not
include them.

Also exclude the lua DLL from the generic libraries. It is only for when
the lua option is set.
2021-05-22 16:23:44 +02:00
Jehan 2d15aa00cc build: move lua import files into bin/.
It looks like the DLL ends up searched into bin/lgi/ and other lua files
from bin/lua/. There might be better solutions for the issue, but for
the time being, it seems to work ok.

Note that ender used instead to rebuild lua with the following changes
(cf. IRC):

> src/luaconf.h:
> #define LUA_PATH_DEFAULT \
>   "!\\..\\share\\lua\\5.1\\?.lua;" "!\\..\\share\\lua\\5.1\\?\\init.lua;" LUA_LDIR"?.lua;" LUA_LDIR"?\\init.lua;"
> #define LUA_CPATH_DEFAULT \
>   LUA_CDIR"..\\lib\\lua\\5.1\\?.dll;" LUA_CDIR"?.dll;" LUA_CDIR"loadall.dll"

But moving files around in the installed tree is much simpler than
rebuilding the whole lua just for this.
2021-05-22 10:35:06 +02:00
Jehan 49349c78cc build: add lua support to the Windows installer.
Note that I must not install both lua51 with luajit because these are
conflicting. Let's go with luajit from feedback we had on the best
choice (though this topic itself seems a bit heated actually).

Also clean-out the unexpected file removal because now I had the
opposite case, i.e. a CI problem because of this. And from my latest
tests, it seems to work ok for the time being without, which is much
cleaner anyway. So let's go like this for the time being.
2021-05-22 10:35:06 +02:00
Jehan 9c62dfd4d4 build: extensions are gimp32/64 specific.
Otherwise the extension files from the 32-bit build override the ones
from the 64-build. This is wrong first because we get 32-bit executables
uselessly (even though Windows 64-bit can run them, we should install
the right ones) and also because we don't build Vala plug-ins on 32-bit
(doesn't work for some reason) and as we override the extension
manifest, the Vala goat exercise is not made available even though it's
installed.
2021-05-19 22:01:21 +02:00
Jehan 8a42c6ccc2 build: add a test to check the Windows installer languages.
This way, we will avoid in the future any discrepancies between
languages set in the Windows installer and available translations (po
files in po-windows-installer/) because `make check`/`ninja test` will
fail.
2021-05-19 21:59:18 +02:00
Jehan 9d065b8718 build: create installer with debug symbols and Python support. 2021-05-19 21:59:09 +02:00