From 4a1d58323a5c9f018dcf5d51ba5dbdf1bf4ee41f Mon Sep 17 00:00:00 2001 From: Wildan M Date: Thu, 8 Oct 2026 10:24:17 +0200 Subject: [PATCH 1/6] Port GIMP --- recipes/libs/libarchive/recipe.toml | 12 +- recipes/terminal/bash-completion/recipe.toml | 2 +- recipes/web/netsurf/recipe.toml | 3 - recipes/wip/data/poppler-data/recipe.toml | 2 +- recipes/wip/fonts/noto/recipe.toml | 3 +- recipes/wip/gnome/gimp/recipe.toml | 64 +-- recipes/wip/gnome/gimp/redox.patch | 472 ++++++++++++++++++ recipes/wip/libs/gnome/gegl/recipe.toml | 18 +- recipes/wip/libs/gnome/gegl/redox.patch | 44 ++ recipes/wip/libs/gnome/gexiv2/recipe.toml | 7 +- recipes/wip/libs/media/exiv2/recipe.toml | 3 +- recipes/wip/libs/other/appstream/recipe.toml | 21 +- recipes/wip/libs/other/appstream/redox.patch | 87 ++++ recipes/wip/libs/other/babl/recipe.toml | 9 +- recipes/wip/libs/other/babl/redox.patch | 44 ++ recipes/wip/libs/other/libfyaml/recipe.toml | 6 + recipes/wip/libs/other/libfyaml/redox.patch | 35 ++ recipes/wip/libs/other/libicu/recipe.toml | 1 + recipes/wip/libs/other/libmypaint/recipe.toml | 14 +- recipes/wip/libs/other/libnsgif/recipe.toml | 22 + recipes/wip/libs/other/libstemmer/recipe.toml | 16 + recipes/wip/libs/other/libxmlb/recipe.toml | 13 + .../libs/other/mypaint-brushes/recipe.toml | 6 + .../other/netsurf-buildsystem/recipe.toml | 11 + recipes/wip/libs/other/poly2tri-c/recipe.toml | 24 + recipes/wip/libs/other/poly2tri-c/redox.patch | 49 ++ recipes/wip/libs/text/inih/recipe.toml | 3 +- 27 files changed, 936 insertions(+), 55 deletions(-) create mode 100644 recipes/wip/gnome/gimp/redox.patch create mode 100644 recipes/wip/libs/gnome/gegl/redox.patch create mode 100644 recipes/wip/libs/other/appstream/redox.patch create mode 100644 recipes/wip/libs/other/babl/redox.patch create mode 100644 recipes/wip/libs/other/libfyaml/recipe.toml create mode 100644 recipes/wip/libs/other/libfyaml/redox.patch create mode 100644 recipes/wip/libs/other/libnsgif/recipe.toml create mode 100644 recipes/wip/libs/other/libstemmer/recipe.toml create mode 100644 recipes/wip/libs/other/libxmlb/recipe.toml create mode 100644 recipes/wip/libs/other/mypaint-brushes/recipe.toml create mode 100644 recipes/wip/libs/other/netsurf-buildsystem/recipe.toml create mode 100644 recipes/wip/libs/other/poly2tri-c/recipe.toml create mode 100644 recipes/wip/libs/other/poly2tri-c/redox.patch diff --git a/recipes/libs/libarchive/recipe.toml b/recipes/libs/libarchive/recipe.toml index 19c17650a..72128d367 100644 --- a/recipes/libs/libarchive/recipe.toml +++ b/recipes/libs/libarchive/recipe.toml @@ -3,4 +3,14 @@ tar = "https://libarchive.org/downloads/libarchive-3.8.7.tar.xz" blake3 = "6b7f744132368a53ecf98a4586af09c255f81cebf37687edd857528a1bfd3bd3" [build] -template = "configure" +template = "cmake" +cmakeflags = [ + "-DENABLE_TEST=OFF" +] +dependencies = [ + "openssl3", + "libxml2", + "bzip2", + "zlib", + "zstd", +] diff --git a/recipes/terminal/bash-completion/recipe.toml b/recipes/terminal/bash-completion/recipe.toml index d363f869f..7a9ed093d 100644 --- a/recipes/terminal/bash-completion/recipe.toml +++ b/recipes/terminal/bash-completion/recipe.toml @@ -11,5 +11,5 @@ configureflags = [ [package] dependencies = [ - "sed", + "uutils-sed", ] diff --git a/recipes/web/netsurf/recipe.toml b/recipes/web/netsurf/recipe.toml index ae5bb7bf2..7aa3388b8 100644 --- a/recipes/web/netsurf/recipe.toml +++ b/recipes/web/netsurf/recipe.toml @@ -30,9 +30,6 @@ DYNAMIC_INIT # Netsurf does not currently support out-of-tree builds :( rsync -av --delete "${COOKBOOK_SOURCE}/" ./ -# obscure crash from sccache if jobs number is too much -COOKBOOK_MAKE_JOBS="$(( ${COOKBOOK_MAKE_JOBS} > 8 ? 8 : ${COOKBOOK_MAKE_JOBS} ))" - export TARGET="framebuffer" export CFLAGS="-I${PWD}/inst-${TARGET}/include" export LDFLAGS="${LDFLAGS} -L${COOKBOOK_SYSROOT}/lib -L${PWD}/inst-${TARGET}/lib -Wl,--allow-multiple-definition -Wl,-rpath-link,${COOKBOOK_SYSROOT}/lib" diff --git a/recipes/wip/data/poppler-data/recipe.toml b/recipes/wip/data/poppler-data/recipe.toml index 3262c088a..9ff376f19 100644 --- a/recipes/wip/data/poppler-data/recipe.toml +++ b/recipes/wip/data/poppler-data/recipe.toml @@ -2,4 +2,4 @@ [source] tar = "https://poppler.freedesktop.org/poppler-data-0.4.12.tar.gz" [build] -template = "custom" +template = "cmake" diff --git a/recipes/wip/fonts/noto/recipe.toml b/recipes/wip/fonts/noto/recipe.toml index c33429709..7de97f65b 100644 --- a/recipes/wip/fonts/noto/recipe.toml +++ b/recipes/wip/fonts/noto/recipe.toml @@ -7,6 +7,7 @@ template = "custom" script = """ mkdir -pv "${COOKBOOK_STAGE}"/usr/share/fonts/Noto for f in "${COOKBOOK_SOURCE}"/fonts/*; do -echo cp -rv "${f}/full/ttf/* "${COOKBOOK_STAGE}/usr/share/fonts/Noto/$(basename ${f})/" +mkdir "${COOKBOOK_STAGE}/usr/share/fonts/Noto/$(basename ${f})/" +cp -rv "${f}/googlefonts/ttf"/* "${COOKBOOK_STAGE}/usr/share/fonts/Noto/$(basename ${f})/" || true done """ diff --git a/recipes/wip/gnome/gimp/recipe.toml b/recipes/wip/gnome/gimp/recipe.toml index cd4d73156..96ce04ae9 100644 --- a/recipes/wip/gnome/gimp/recipe.toml +++ b/recipes/wip/gnome/gimp/recipe.toml @@ -1,36 +1,40 @@ -#TODO not compiled or tested -#TODO discover minimum dependencies from meson log +#TODO compiled but not tested # build instructions: https://developer.gimp.org/core/setup/build/3.0/INSTALL # all build options: https://gitlab.gnome.org/GNOME/gimp/-/blob/master/meson_options.txt?ref_type=heads [source] tar = "https://download.gimp.org/gimp/v3.2/gimp-3.2.4.tar.xz" [build] -template = "meson" -mesonflags = [ - "-Dcheck-update=no", - "-Dlibbacktrace=false", - "-Dlibunwind=false", - "-Dprint=false", +template = "custom" +script = """ +DYNAMIC_INIT +rsync -a -v ${COOKBOOK_SYSROOT}/usr/share/pkgconfig/*.pc ${COOKBOOK_SYSROOT}/lib/pkgconfig/ +COOKBOOK_MESON_FLAGS+=( + -Denable-default-bin=enabled + -Denable-console-bin=true + -Dcheck-update=no + -Dlibbacktrace=false + -Dlibunwind=false + -Dprint=false + -Dshmem-type=posix +) +cookbook_meson +""" +dependencies = [ + "appstream", + "atk", + "babl", + "gtk3", + "gegl", + "gexiv2", + "libarchive", + "liblcms", + "libmypaint", + "librsvg", + "mypaint-brushes", + "libpoppler", + "poppler-data", + "shared-mime-info", +] +dev-dependencies = [ + "host:libxml2" ] -# dependencies = [ -# "gtk3", -# "gobject-introspection", -# "glib", -# "cairo", -# "pango", -# "liblcms", -# "libmypaint", -# "gexiv2", -# "gegl", -# "babl", -# "librsvg", -# "libtiff", -# "libjpeg", -# "libpng", -# "fontconfig", -# "freetype2", -# "atk", -# "harfbuzz", -# "bzip2", -# "zlib", -# ] diff --git a/recipes/wip/gnome/gimp/redox.patch b/recipes/wip/gnome/gimp/redox.patch new file mode 100644 index 000000000..ded94e2a5 --- /dev/null +++ b/recipes/wip/gnome/gimp/redox.patch @@ -0,0 +1,472 @@ +diff -ruwN source/app/widgets/gimpdashboard.c source-new/app/widgets/gimpdashboard.c +--- source/app/widgets/gimpdashboard.c 2026-04-17 08:37:38.000000000 +0000 ++++ source-new/app/widgets/gimpdashboard.c 2026-10-08 08:12:01.951143761 +0000 +@@ -2243,7 +2243,7 @@ + clock_t curr_usage; + struct tms tms; + +- curr_clock = times (&tms); ++ curr_clock = (clock_t) -1;//times (&tms); + + if (curr_clock == (clock_t) -1) + { +diff -ruwN source/desktop/meson.build source-new/desktop/meson.build +--- source/desktop/meson.build 2026-04-17 08:37:38.000000000 +0000 ++++ source-new/desktop/meson.build 2026-10-08 06:34:47.957042051 +0000 +@@ -5,7 +5,7 @@ + desktop_conf.set('GIMP_VERSION', gimp_version) + desktop_conf.set('GIMP_APP_VERSION', gimp_app_version) + desktop_conf.set('GIMP_DESKTOP_NAME', gimp_desktop_name) +-desktop_conf.set('MIME_TYPES', 'image/x-xcf;' + MIMEtypes_dep.get_variable('MIMEtypes')) ++desktop_conf.set('MIME_TYPES', 'image/x-xcf;') + desktop_conf.set('BUG_REPORT_URL', bug_report_url) + + desktopfilein = configure_file( +diff -ruwN source/gimp-data/meson.build source-new/gimp-data/meson.build +--- source/gimp-data/meson.build 2026-04-07 19:54:05.000000000 +0000 ++++ source-new/gimp-data/meson.build 2026-10-08 06:34:28.962938109 +0000 +@@ -1,9 +1,5 @@ + ## Tools ## + +-native_glib_minver = '2.2.0' +-native_glib = dependency('glib-2.0', version: '>='+native_glib_minver, native: true) +-native_rsvg = dependency('librsvg-2.0', version: '>='+rsvg_minver, native: true) +- + subdir('tools') + + ## Data ## +diff -ruwN source/gimp-data/tools/colorsvg2png.c source-new/gimp-data/tools/colorsvg2png.c +--- source/gimp-data/tools/colorsvg2png.c 2026-04-07 19:54:05.000000000 +0000 ++++ source-new/gimp-data/tools/colorsvg2png.c 2026-10-08 06:34:20.069421216 +0000 +@@ -15,80 +15,52 @@ + * along with this program. If not, see . + */ + +-#include +-#include ++#include ++#include + ++// Stubbed to avoid compiling native glib/librsvg + int + main (int argc, char **argv) + { +- GError *error = NULL; +- RsvgHandle *handle; +- cairo_surface_t *surface; +- cairo_t *cr; +-#if LIBRSVG_CHECK_VERSION(2, 46, 0) +- RsvgRectangle target_rect; +-#endif +- +- gchar *input; +- gchar *output; +- gint dim; +- gint retval = 0; ++ FILE *in_file; ++ FILE *out_file; ++ size_t bytes_read; ++ char buffer[8192]; + + if (argc != 4) + { +- g_fprintf (stderr, "Usage: colorsvg2png svg-image png-output size\n"); ++ fprintf (stderr, "Usage: colorsvg2png svg-image png-output size\n"); + return 1; + } + +- input = argv[1]; +- output = argv[2]; +- dim = (gint) g_ascii_strtoull (argv[3], NULL, 10); +- if (dim < 1) ++ in_file = fopen (argv[1], "rb"); ++ if (!in_file) + { +- g_fprintf (stderr, "Usage: invalid dimension %d\n", dim); ++ fprintf (stderr, "Error: failed to open input file '%s'\n", argv[1]); + return 1; + } + +- handle = rsvg_handle_new_from_file (input, &error); +- if (! handle) ++ out_file = fopen (argv[2], "wb"); ++ if (!out_file) + { +- g_fprintf (stderr, +- "Error: failed to load '%s' as SVG: %s\n", +- input, error->message); +- g_error_free (error); ++ fprintf (stderr, "Error: failed to open output file '%s'\n", argv[2]); ++ fclose (in_file); + return 1; + } + +- surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, dim, dim); +- cr = cairo_create (surface); +- +-#if LIBRSVG_CHECK_VERSION(2, 46, 0) +- target_rect.x = target_rect.y = 0; +- target_rect.width = target_rect.height = dim; +- +- if (! rsvg_handle_render_document (handle, cr, &target_rect, NULL)) +-#else +- if (! rsvg_handle_render_cairo (handle, cr)) +-#endif ++ while ((bytes_read = fread (buffer, 1, sizeof(buffer), in_file)) > 0) + { +- g_fprintf (stderr, +- "Error: failed to render '%s'\n", +- input); +- retval = 1; +- } +- +- if (retval == 0 && +- cairo_surface_write_to_png (surface, output) != CAIRO_STATUS_SUCCESS) ++ if (fwrite (buffer, 1, bytes_read, out_file) != bytes_read) + { +- g_fprintf (stderr, +- "Error: failed to write '%s'\n", +- output); +- retval = 1; ++ fprintf (stderr, "Error: failed to write to '%s'\n", argv[2]); ++ fclose (in_file); ++ fclose (out_file); ++ return 1; ++ } + } + +- cairo_surface_destroy (surface); +- cairo_destroy (cr); +- g_object_unref (handle); ++ fclose (in_file); ++ fclose (out_file); + +- return retval; ++ return 0; + } +diff -ruwN source/gimp-data/tools/meson.build source-new/gimp-data/tools/meson.build +--- source/gimp-data/tools/meson.build 2026-04-07 19:54:05.000000000 +0000 ++++ source-new/gimp-data/tools/meson.build 2026-10-08 06:34:25.152716659 +0000 +@@ -2,8 +2,6 @@ + 'colorsvg2png.c', + native: true, + dependencies: [ +- native_glib, +- native_rsvg + ], + # In case b_sanitize was set, we don't really care if the tool has issues (in + # particular we experienced some memory leaks with b_sanitize=address, within +diff -ruwN source/libgimp/gimpplugin.c source-new/libgimp/gimpplugin.c +--- source/libgimp/gimpplugin.c 2026-04-17 08:37:38.000000000 +0000 ++++ source-new/libgimp/gimpplugin.c 2026-10-08 07:14:34.086664710 +0000 +@@ -24,6 +24,7 @@ + #include + #include + #include ++#include + + #include "gimp.h" + +diff -ruwN source/libgimp/meson.build source-new/libgimp/meson.build +--- source/libgimp/meson.build 2026-04-17 08:37:38.000000000 +0000 ++++ source-new/libgimp/meson.build 2026-10-08 08:06:39.354346391 +0000 +@@ -637,40 +637,3 @@ + ) + endif + endif +- +-if not platform_osx and host_cpu_family != 'x86' +- nm = find_program('nm', required: false) +- +- # Verify .def files for Windows linking. +- # We check this on non-Windows platform (Debian) on CI, and on Windows itself. +- custom_target('check-def-files', +- input: [ +- '../libgimpbase/gimpbase.def', +- '../libgimpcolor/gimpcolor.def', +- '../libgimpconfig/gimpconfig.def', +- '../libgimp/gimp.def', +- '../libgimp/gimpui.def', +- '../libgimpmath/gimpmath.def', +- '../libgimpmodule/gimpmodule.def', +- '../libgimpthumb/gimpthumb.def', +- '../libgimpwidgets/gimpwidgets.def', +- ], +- depends: [ +- libgimpbase, +- libgimpcolor, +- libgimpconfig, +- libgimp, +- libgimpui, +- libgimpmath, +- libgimpmodule, +- libgimpthumb, +- libgimpwidgets +- ], +- env: nm.found() ? { 'NM': nm.full_path() } : {}, +- output: [ 'check-def-files', ], +- command: [ +- python, meson.project_source_root() / 'tools' / 'defcheck.py', meson.project_source_root(), +- ], +- build_by_default: true, +- ) +-endif +diff -ruwN source/libgimpbase/meson.build source-new/libgimpbase/meson.build +--- source/libgimpbase/meson.build 2026-04-17 08:37:38.000000000 +0000 ++++ source-new/libgimpbase/meson.build 2026-10-08 06:37:40.002041333 +0000 +@@ -135,20 +135,3 @@ + libgimpbase_headers, + subdir: gimp_api_name / 'libgimpbase', + ) +- +-# Test program, not installed +-executable('test-cpu-accel', +- 'test-cpu-accel.c', +- include_directories: rootInclude, +- dependencies: [ +- glib, +- ], +- c_args: [ +- '-DG_LOG_DOMAIN="LibGimpBase"', +- '-DGIMP_BASE_COMPILATION', +- ], +- link_with: [ +- libgimpbase, +- ], +- install: false, +-) +diff -ruwN source/meson.build source-new/meson.build +--- source/meson.build 2026-04-17 08:37:38.000000000 +0000 ++++ source-new/meson.build 2026-10-08 07:11:16.124158097 +0000 +@@ -486,8 +486,6 @@ + # minimum requirement. + add_project_arguments('-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_76', language: 'c') + +-gi = dependency('gobject-introspection-1.0') +- + gobject = dependency('gobject-2.0', version: '>='+glib_minver) + gmodule = dependency('gmodule-no-export-2.0') + +@@ -573,38 +571,6 @@ + pangoft2 = dependency('pangoft2', version: '>='+pango_minver) + endif + +-if cc.run(''' +- #include +- #include +- #include +- +- int main () { +- const char *text = "ภาษาไทย"; +- int char_count = 7; +- int byte_len = strlen(text); +- int breaks_found = 0; +- +- PangoLogAttr *attrs = (PangoLogAttr *) calloc(char_count + 1, sizeof(PangoLogAttr)); +- +- pango_get_log_attrs (text, byte_len, -1, pango_language_from_string("th"), attrs, char_count + 1); +- for (int i = 1; i < char_count; i++) { +- if (attrs[i].is_line_break) +- breaks_found++; +- } +- +- if (breaks_found > 0) +- return 0; +- else +- return 1; +- } +- ''', +- name: 'pango is built with libthai support', +- dependencies: [pango]).returncode() != 0 +- thai_warning = 'Pango was not built with libthai support. Line breaking on Text tool may be incorrect on Thai language.' +- warning(thai_warning) +- warnings += thai_warning +-endif +- + conf.set('PANGO_DISABLE_DEPRECATED',pangocairo.version().version_compare('<1.43')) + + # Check if Pango is built with a recent fontconfig +@@ -801,7 +767,7 @@ + ################################################################################ + # Check for x11 support + +-x11_target = gtk3.get_variable(pkgconfig: 'targets').contains('x11') ++x11_target = false + + x11 = x11_target ? dependency('x11') : no_dep + xmu = x11_target ? dependency('xmu') : no_dep +@@ -1200,45 +1166,7 @@ + py_candidates += ['python3.' + i.to_string()] + endforeach + +-python = disabler() +-pygobject_found = '' +-pygobject_gexiv2_found = false +-foreach py : py_candidates +- #Check if PyGobject installation have pycairo (#13105) +- python_tmp = pythonmod.find_installation(py, modules: ['gi', 'cairo'], required: false) +- if python_tmp.found() and python_tmp.language_version().version_compare(python3_minver) +- python = python_tmp +- #Check if PyGObject installation have minimum version +- pygobject_found = run_command(python_tmp, '-c', +- '\n'.join([ +- '''import gi''', +- '''print(".".join(map(str, gi.version_info)))''']), +- check: false) +- #Check if PyGObject installation have gexiv2 (#15179) +- #(This is specially important on MacPorts where gexiv2 have many python variants) +- pygobject_gexiv2_found = run_command(python_tmp, '-c', +- '\n'.join([ +- '''import sys, gi''', +- '''try:''', +- ''' import gi.repository.GExiv2''', +- '''except (ImportError):''', +- ''' sys.exit(1)''']), +- check: false).returncode() == 0 +- if pygobject_found.returncode() == 0 and pygobject_found.stdout().strip().version_compare(pygobject_minver) and pygobject_gexiv2_found +- break +- endif +- endif +-endforeach +- +-if not python.found() or not python.language_version().version_compare(python3_minver) +- error('No suitable Python installation (with cairo and gi modules) found. Minimum supported version: @0@'.format(python3_minver)) +-endif +-message('Found Python @0@'.format(python.language_version())) +- +-if pygobject_found.returncode() != 0 or not pygobject_found.stdout().strip().version_compare(pygobject_minver) or not pygobject_gexiv2_found +- error('No suitable PyGObject (with GExiv2 submodule) found. Minimum supported version: @0@'.format(pygobject_minver)) +-endif +-message('Found PyGObject: @0@'.format(pygobject_found.stdout().strip())) ++python = pythonmod.find_installation('python3') + + ## Javascript + +@@ -1756,49 +1684,7 @@ + ).returncode() == 0 + + generate_version_h = is_git_repository or not has_version_h +-if generate_version_h +- gitversion_h1 = vcs_tag( +- input : 'app/git-version.h.in', +- output: 'git-version.h.in.1', +- command: [ 'git', 'describe', '--always', ], +- replace_string: '@GIMP_GIT_VERSION@', +- fallback: 'unknown (unsupported)', +- ) +- gitversion_h2 = vcs_tag( +- input : gitversion_h1, +- output: 'git-version.h.in.2', +- command: [ 'git', 'rev-parse', '--short', 'HEAD', ], +- replace_string: '@GIMP_GIT_VERSION_ABBREV@', +- fallback: 'unknown (unsupported)', +- ) +- gitversion_h = vcs_tag( +- input : gitversion_h2, +- output: 'git-version.h', +- command: [ 'git', 'log', '-n1', '--date=format:%Y', '--pretty=%cd', ], +- replace_string: '@GIMP_GIT_LAST_COMMIT_YEAR@', +- fallback: 'unknown (unsupported)', +- ) +- +- git = find_program('git', required: false) +- if not is_git_repository or not git.found() +- # We create git-version.h but know it will be useless because we are +- # not in a git repository. Output a warning. +- git_warning = ''' +- +- UNSUPPORTED BUILD! +- +- This is not a distribution tarball (git-version.h missing) and +- we could not establish the corresponding commit (either this is +- not a git repository or git command is missing). Therefore +- we have no reference for debugging. +- Please either use release tarballs or build from the repository. +- ''' +- warning(git_warning) +- warnings += git_warning +- endif +-else + gitversion_h = files('git-version.h') +-endif + + install_conf = configuration_data() + install_conf.set('GIMP_APP_VERSION', gimp_app_version) +@@ -2071,7 +1957,7 @@ + elif platform_osx + gimp_exe_depends += [patched_libgimp_gir, patched_libgimpui_gir] + +- gimp_run_env.set('GIMP_GI_DIR', gi.get_variable('libdir')) ++ gimp_run_env.set('GIMP_GI_DIR', '/usr/lib') + + gimp_run_env.set('GIMP_TEMP_UPDATE_RPATH', gimp_real_exe.full_path()) + gimp_run_env.prepend('GIMP_TEMP_UPDATE_RPATH', libgimp.full_path()) +@@ -2087,20 +1973,10 @@ + endforeach + endif + else +- # Cross-builds require an existing native GIMP installed, unless we +- # can run target binaries. +- native_gimp_exe = find_program([gimpconsole_exe_name, gimpmain_exe_name], +- native: true, required: false) +- +- if not native_gimp_exe.found() +- error('When cross-compiling, the build requires either an exe_wrapper or a native GIMP installed (@0@ or @1@).'.format(gimpconsole_exe_name, gimpmain_exe_name)) +- endif +- +- gimp_run_env.set('GIMP_SELF_IN_BUILD', native_gimp_exe.full_path()) + gimp_exe_depends = [] + endif + +-gimp_exe = find_program('tools'/'in-build-gimp.py') ++gimp_exe = disabler() # we're stripping native gimp build + + ################################################################################ + # Subdirs: part 2 +@@ -2108,14 +1984,6 @@ + # gimp-data submodule part 2 + subdir('gimp-data/images/') + +-# Unit testing +-subdir('app/tests') +-subdir('libgimp/tests') +- +-# Docs +-subdir('docs') +-subdir('devel-docs') +- + # Inno Windows installer + if get_option('windows-installer') + subdir('po-windows-installer') +diff -ruwN source/plug-ins/meson.build source-new/plug-ins/meson.build +--- source/plug-ins/meson.build 2026-04-17 08:37:38.000000000 +0000 ++++ source-new/plug-ins/meson.build 2026-10-08 07:53:23.381004527 +0000 +@@ -34,8 +34,8 @@ + { 'name': 'metadata', }, + { 'name': 'pagecurl', }, + { 'name': 'print', }, +- { 'name': 'screenshot', }, +- { 'name': 'script-fu', }, ++# screenshot need x11 ++# script-fu need 'gi' + { 'name': 'selection-to-path', } + ] + +@@ -92,17 +92,6 @@ + endif + endforeach + +- +-#Dynamically created list of supported files with the plugins lists above +-MIMEtypes_output = run_command( +- python, +- meson.current_source_dir() / 'generate_mime_ext.py', +- '--mime', +- meson.current_build_dir() / 'file_mimetypes.list', +- all_plugins_sources, check: true +-).stdout().strip() +-MIMEtypes_dep = declare_dependency(variables : {'MIMEtypes': MIMEtypes_output}) +- + if get_option('windows-installer') or get_option('ms-store') + custom_target('file_associations', + input : all_plugins_sources, diff --git a/recipes/wip/libs/gnome/gegl/recipe.toml b/recipes/wip/libs/gnome/gegl/recipe.toml index a0b36c722..51b101218 100644 --- a/recipes/wip/libs/gnome/gegl/recipe.toml +++ b/recipes/wip/libs/gnome/gegl/recipe.toml @@ -1,16 +1,28 @@ #TODO not compiled or tested # build instructions: https://gitlab.gnome.org/GNOME/gegl/-/blob/master/docs/development.adoc?ref_type=heads#user-content-debugging [source] -tar = "https://download.gimp.org/pub/gegl/0.4/gegl-0.4.46.tar.xz" +tar = "https://download.gimp.org/pub/gegl/0.4/gegl-0.4.72.tar.xz" [build] -template = "meson" +template = "custom" mesonflags = [ "-Ddocs=false", - "-Dgi-docgen=false", + "-Dgtk-doc=false", "-Dintrospection=false", "-Dparallel-tests=false", ] dependencies = [ + "cairo", "libpng", "glib", + "pango", + "babl", + "json-glib", + "libjpeg", + "libnsgif", + "poly2tri-c", ] +script = """ +DYNAMIC_INIT +CFLAGS="-std=c11" +cookbook_meson +""" diff --git a/recipes/wip/libs/gnome/gegl/redox.patch b/recipes/wip/libs/gnome/gegl/redox.patch new file mode 100644 index 000000000..58d5150c3 --- /dev/null +++ b/recipes/wip/libs/gnome/gegl/redox.patch @@ -0,0 +1,44 @@ +diff -ruwN source/meson.build source-new/meson.build +--- source/meson.build 2026-09-07 02:51:56.000000000 +0000 ++++ source-new/meson.build 2026-10-08 04:30:15.334232657 +0000 +@@ -696,40 +696,8 @@ + subdir('bin') + subdir('tools') + subdir('operations') +-subdir('examples') +-subdir('tests') + subdir('perf') + subdir('po') +-subdir('docs') +- +- +-if host_machine.system() != 'emscripten' +- nm = find_program('nm', required: false) +- +- # Verify .def files for Windows linking (and for macOS too when -Wl,-exported_symbols_list is used). +- # We check this on non-Windows/non-macOS platform (Debian) on CI, and on Windows and macOS itself. +- # (This also checks if .gir files have parity with the library so parity with .def files too) +- custom_target('check-def-files', +- input: [ +- gegl_def, +- g_ir.found() ? gegl_gir : [], +- gegl_npd_def, +- gegl_sc_def, +- ], +- depends: [ +- gegl_lib, +- gegl_npd_lib, +- seamlessclone_lib +- ], +- env: nm.found() ? { 'NM': nm.full_path() } : {}, +- output: [ 'check-def-files', ], +- command: [ +- python, meson.project_source_root() / 'tools' / 'defcheck.py', '@INPUT@', +- ], +- build_by_default: true, +- ) +-endif +- + + if w3m.found() + # Create NEWS file from html file diff --git a/recipes/wip/libs/gnome/gexiv2/recipe.toml b/recipes/wip/libs/gnome/gexiv2/recipe.toml index f62f8489c..799b237f2 100644 --- a/recipes/wip/libs/gnome/gexiv2/recipe.toml +++ b/recipes/wip/libs/gnome/gexiv2/recipe.toml @@ -5,8 +5,11 @@ tar = "https://download.gnome.org/sources/gexiv2/0.14/gexiv2-0.14.2.tar.xz" [build] template = "meson" mesonflags = [ - "-Dintrospection=false" + "-Dintrospection=false", + "-Dvapi=false", + "-Dpython3=false", ] dependencies = [ - "exiv2" + "exiv2", + "glib", ] diff --git a/recipes/wip/libs/media/exiv2/recipe.toml b/recipes/wip/libs/media/exiv2/recipe.toml index b60246de4..c89c746ce 100644 --- a/recipes/wip/libs/media/exiv2/recipe.toml +++ b/recipes/wip/libs/media/exiv2/recipe.toml @@ -1,4 +1,4 @@ -#TODO compile and test +#TODO compiled but not tested [source] git = "https://github.com/Exiv2/exiv2" rev = "v0.28.8" @@ -13,4 +13,5 @@ cmakeflags = [ dependencies = [ "zlib", "libiconv", + "inih", ] diff --git a/recipes/wip/libs/other/appstream/recipe.toml b/recipes/wip/libs/other/appstream/recipe.toml index 3941eb70a..67e508c3d 100644 --- a/recipes/wip/libs/other/appstream/recipe.toml +++ b/recipes/wip/libs/other/appstream/recipe.toml @@ -1,17 +1,30 @@ -#TODO not compiled or tested -# build instructions: https://github.com/ximion/appstream#build--install -#TODO missing dependencies +#TODO compiled but not tested [source] tar = "https://www.freedesktop.org/software/appstream/releases/AppStream-1.1.2.tar.xz" +script = """ +mv AppStream-1.1.2/{*,.*} . +rmdir AppStream-1.1.2 +""" +patches = [ + "redox.patch" +] + [build] template = "meson" mesonflags = [ "-Dsystemd=false", "-Dgir=false", - "-Dman=off", + "-Dman=false", ] dependencies = [ "glib", "libxml2", "curl", + "libfyaml", + "libxmlb", + "libstemmer", + "bash-completion" ] +dev-dependencies = [ + "host:gperf" +] \ No newline at end of file diff --git a/recipes/wip/libs/other/appstream/redox.patch b/recipes/wip/libs/other/appstream/redox.patch new file mode 100644 index 000000000..af8b1654a --- /dev/null +++ b/recipes/wip/libs/other/appstream/redox.patch @@ -0,0 +1,87 @@ +diff -ruwN source/AppStream-1.1.2/data/meson.build source-new/AppStream-1.1.2/data/meson.build +--- source/AppStream-1.1.2/data/meson.build 2026-01-28 20:15:58.000000000 +0000 ++++ source-new/AppStream-1.1.2/data/meson.build 2026-10-08 06:16:45.427081991 +0000 +@@ -7,52 +7,6 @@ + install_data('its/metainfo.loc', + install_dir: join_paths(get_option('datadir'), 'gettext', 'its')) + +-# Do not rely on an exe wrapper for rel-info, use the system one in that case +-if meson.is_cross_build() +- dependency('appstream', version: '>=' + as_version, native: true, +- not_found_message: 'Native appstream required for cross-building') +- ascli_exe = find_program('appstreamcli', native: true) +-endif +- +-# NOTE: We do not translate the release notes on purpose here. +-# If you do want to give translators a chance to translate them, +-# ascli news-to-metainfo needs to produce a temporary file to translate +-# prior to running (x)gettext on the file. +-metainfo_with_relinfo = custom_target('gen-output', +- input : ['../NEWS', 'org.freedesktop.appstream.cli.metainfo.xml'], +- output : ['nol10n_withrelinfo_org.freedesktop.appstream.cli.metainfo.xml'], +- command : [ascli_exe, 'news-to-metainfo', '--limit=6', '@INPUT0@', '@INPUT1@', '@OUTPUT@'] +-) +- +-metainfo_i18n = i18n.itstool_join( +- input: metainfo_with_relinfo, +- output: 'org.freedesktop.appstream.cli.metainfo.xml', +- mo_targets: i18n_result[0], +- its_files: [join_paths(meson.current_source_dir(), 'its', 'metainfo.its')], +- install: true, +- install_dir: metainfo_dir, +-) +- +-test('as-validate_metainfo.cli', +- ascli_exe, +- args: ['validate', +- '--pedantic', +- '--no-net', +- metainfo_i18n] +-) +- + # install appstream.conf default template + install_data('appstream.conf', + install_dir: as_data_installdir) +- +-if get_option('compose') +- ascompose_metainfo = 'org.freedesktop.appstream.compose.metainfo.xml' +- test('as-validate_metainfo.compose', +- ascli_exe, +- args: ['validate', +- '--pedantic', +- '--no-net', +- join_paths(meson.current_source_dir(), ascompose_metainfo)] +- ) +- install_data(ascompose_metainfo, install_dir: metainfo_dir) +-endif +diff -ruwN source/AppStream-1.1.2/meson.build source-new/AppStream-1.1.2/meson.build +--- source/AppStream-1.1.2/meson.build 2026-01-28 20:15:58.000000000 +0000 ++++ source-new/AppStream-1.1.2/meson.build 2026-10-08 06:22:27.470986289 +0000 +@@ -193,15 +193,10 @@ + stemmer_inc_dirs = include_directories() + if get_option('stemming') + stemmer_lib = cc.find_library('stemmer', required: true) +- stemmer_inc_dirs = include_directories(['/usr/include']) + if not cc.has_header('libstemmer.h') +- if cc.has_header('libstemmer/libstemmer.h') +- stemmer_inc_dirs = include_directories('/usr/include/libstemmer') +- else + error('Unable to find Snowball header "libstemmer.h". Please ensure libstemmer/Snowball is installed properly in order to continue.') + endif + endif +-endif + + # use gperf for faster string -> enum matching + gperf = find_program('gperf') +diff -ruwN source/AppStream-1.1.2/src/as-system-info.c source-new/AppStream-1.1.2/src/as-system-info.c +--- source/AppStream-1.1.2/src/as-system-info.c 2026-01-28 20:15:58.000000000 +0000 ++++ source-new/AppStream-1.1.2/src/as-system-info.c 2026-10-08 06:23:01.354958074 +0000 +@@ -513,7 +513,7 @@ + return 0; + } + return hbi.memory_size / MB_IN_BYTES; +-#elif defined(__sun) ++#elif defined(__sun) || defined(__redox__) + long physpages = sysconf (_SC_PHYS_PAGES); + long pagesize = sysconf (_SC_PAGESIZE); + if (physpages > 0 && pagesize > 0) diff --git a/recipes/wip/libs/other/babl/recipe.toml b/recipes/wip/libs/other/babl/recipe.toml index 39154ba61..0af789cc4 100644 --- a/recipes/wip/libs/other/babl/recipe.toml +++ b/recipes/wip/libs/other/babl/recipe.toml @@ -1,12 +1,15 @@ -#TODO not compiled or tested -# build instructions: https://gitlab.gnome.org/GNOME/babl/-/blob/master/INSTALL.in?ref_type=heads +#TODO compiled but not tested [source] tar = "https://download.gimp.org/pub/babl/0.1/babl-0.1.124.tar.xz" +blake3 = "30ef72ccc64771f876b4e42e0d5d05f8561fd6bb4baf225ad498056b1e896f92" +patches = [ + "redox.patch" +] [build] template = "meson" mesonflags = [ "-Dwith-docs=false", "-Denable-gir=false", "-Denable-vapi=false", - "-Dgi-docgen=false", + "-Dgi-docgen=disabled", ] diff --git a/recipes/wip/libs/other/babl/redox.patch b/recipes/wip/libs/other/babl/redox.patch new file mode 100644 index 000000000..687b3c624 --- /dev/null +++ b/recipes/wip/libs/other/babl/redox.patch @@ -0,0 +1,44 @@ +diff -ruwN source/babl/babl-conversion.c source-new/babl/babl-conversion.c +--- source/babl/babl-conversion.c 2026-03-10 15:56:45.000000000 +0000 ++++ source-new/babl/babl-conversion.c 2026-10-08 02:54:11.064600969 +0000 +@@ -18,6 +18,7 @@ + + + #include "config.h" ++#include + #include + #include + #include +diff -ruwN source/babl/babl-fish-path.c source-new/babl/babl-fish-path.c +--- source/babl/babl-fish-path.c 2026-03-10 15:56:45.000000000 +0000 ++++ source-new/babl/babl-fish-path.c 2026-10-08 02:54:11.064600969 +0000 +@@ -18,6 +18,7 @@ + + #include "config.h" + #include ++#include + #ifdef _WIN32 + #include + #endif +diff -ruwN source/babl/babl-polynomial.c source-new/babl/babl-polynomial.c +--- source/babl/babl-polynomial.c 2026-03-10 15:56:45.000000000 +0000 ++++ source-new/babl/babl-polynomial.c 2026-10-08 02:54:11.064600969 +0000 +@@ -51,6 +51,7 @@ + + #include "config.h" + #include ++#include + #include + #ifdef _WIN32 + #include +diff -ruwN source/extensions/sse2-float.c source-new/extensions/sse2-float.c +--- source/extensions/sse2-float.c 2026-03-10 15:56:45.000000000 +0000 ++++ source-new/extensions/sse2-float.c 2026-10-08 02:54:11.064600969 +0000 +@@ -25,6 +25,7 @@ + /* SSE 2 */ + #include + ++#include + #include + #include + diff --git a/recipes/wip/libs/other/libfyaml/recipe.toml b/recipes/wip/libs/other/libfyaml/recipe.toml new file mode 100644 index 000000000..69d32b071 --- /dev/null +++ b/recipes/wip/libs/other/libfyaml/recipe.toml @@ -0,0 +1,6 @@ + +[source] +tar = "https://github.com/pantoniou/libfyaml/releases/download/v0.9.6/libfyaml-0.9.6.tar.gz" + +[build] +template = "cmake" diff --git a/recipes/wip/libs/other/libfyaml/redox.patch b/recipes/wip/libs/other/libfyaml/redox.patch new file mode 100644 index 000000000..3f91626ae --- /dev/null +++ b/recipes/wip/libs/other/libfyaml/redox.patch @@ -0,0 +1,35 @@ +diff -ruwN source/CMakeLists.txt source-new/CMakeLists.txt +--- source/CMakeLists.txt 2026-03-15 13:48:50.000000000 +0000 ++++ source-new/CMakeLists.txt 2026-10-08 05:58:36.546675313 +0000 +@@ -686,6 +686,7 @@ + set(COMMON_C_DEFINITIONS WIN32_LEAN_AND_MEAN _CRT_SECURE_NO_WARNINGS) + else() + set(COMMON_C_DEFINITIONS _GNU_SOURCE) ++ set(COMMON_C_DEFINITIONS HAVE_ALLOCA_H) + endif() + + # MSVC requires C11 for stdatomic.h +diff -ruwN source/include/libfyaml/libfyaml-endian.h source-new/include/libfyaml/libfyaml-endian.h +--- source/include/libfyaml/libfyaml-endian.h 2026-03-15 13:48:50.000000000 +0000 ++++ source-new/include/libfyaml/libfyaml-endian.h 2026-10-08 05:53:56.988388856 +0000 +@@ -42,7 +42,7 @@ + extern "C" { + #endif + +-#if defined(__linux__) || defined(__CYGWIN__) || defined(__OpenBSD__) || defined(__GNU__) || defined(__EMSCRIPTEN__) ++#if defined(__linux__) || defined(__CYGWIN__) || defined(__OpenBSD__) || defined(__GNU__) || defined(__redox__) || defined(__EMSCRIPTEN__) + # include + #elif defined(__APPLE__) + # include +diff -ruwN source/src/util/fy-utils.c source-new/src/util/fy-utils.c +--- source/src/util/fy-utils.c 2026-03-15 13:48:50.000000000 +0000 ++++ source-new/src/util/fy-utils.c 2026-10-08 06:03:33.209958279 +0000 +@@ -960,7 +960,7 @@ + if (!fyms) + return NULL; + memset(fyms, 0, sizeof(*fyms)); +-#if !defined(_WIN32) ++#if !defined(_WIN32) && !defined(__redox__) + fyms->fp = open_memstream(&fyms->buf, &fyms->size); + #else + fyms->fp = tmpfile(); diff --git a/recipes/wip/libs/other/libicu/recipe.toml b/recipes/wip/libs/other/libicu/recipe.toml index 5cef02e38..e4e2dbb92 100644 --- a/recipes/wip/libs/other/libicu/recipe.toml +++ b/recipes/wip/libs/other/libicu/recipe.toml @@ -12,6 +12,7 @@ compiler = "no-lto" template = "custom" script = """ DYNAMIC_INIT +CPPFLAGS+=" -fno-lto" COOKBOOK_CONFIGURE="${COOKBOOK_SOURCE}/source/configure" COOKBOOK_CONFIGURE_FLAGS+=( icu_cv_host_frag=mh-linux diff --git a/recipes/wip/libs/other/libmypaint/recipe.toml b/recipes/wip/libs/other/libmypaint/recipe.toml index 49968016c..3e14a1e6b 100644 --- a/recipes/wip/libs/other/libmypaint/recipe.toml +++ b/recipes/wip/libs/other/libmypaint/recipe.toml @@ -1,9 +1,17 @@ -#TODO probably missing dependencies: https://github.com/mypaint/libmypaint/#dependencies +#TODO compiled but not tested [source] tar = "https://github.com/mypaint/libmypaint/releases/download/v1.6.0/libmypaint-1.6.0.tar.xz" +script = """ +GNU_CONFIG_GET config.sub +""" [build] -template = "configure" +template = "custom" +script = """ +DYNAMIC_INIT +export CPPFLAGS+=" -I${COOKBOOK_SYSROOT}/include/glib-2.0 -I${COOKBOOK_SYSROOT}/lib/glib-2.0/include" +cookbook_configure +""" dependencies = [ "glib", - "gobject-introspection", + "json-c", ] diff --git a/recipes/wip/libs/other/libnsgif/recipe.toml b/recipes/wip/libs/other/libnsgif/recipe.toml new file mode 100644 index 000000000..2ba4cc019 --- /dev/null +++ b/recipes/wip/libs/other/libnsgif/recipe.toml @@ -0,0 +1,22 @@ +[source] +tar = "https://download.netsurf-browser.org/libs/releases/libnsgif-1.0.0-src.tar.gz" + +[build] +template = "custom" +dev-dependencies = [ + "netsurf-buildsystem" +] +script = """ +DYNAMIC_INIT + +# Netsurf does not currently support out-of-tree builds :( +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + +# netsurf mixes up CFLAGS for host and build +export CC="${CC} ${CPPFLAGS}" +export NSSHARED=${COOKBOOK_SYSROOT}/usr/share/netsurf-buildsystem +export PREFIX=/usr +export COMPONENT_TYPE=lib-shared +"$COOKBOOK_MAKE" V=1 -j"$COOKBOOK_MAKE_JOBS" +"$COOKBOOK_MAKE" DESTDIR="$COOKBOOK_STAGE" install -j"$COOKBOOK_MAKE_JOBS" +""" diff --git a/recipes/wip/libs/other/libstemmer/recipe.toml b/recipes/wip/libs/other/libstemmer/recipe.toml new file mode 100644 index 000000000..0ad0ce334 --- /dev/null +++ b/recipes/wip/libs/other/libstemmer/recipe.toml @@ -0,0 +1,16 @@ + +[source] +tar = "https://snowballstem.org/dist/libstemmer_c-3.1.1.tar.gz" + +[build] +template = "custom" +compiler = "no-lto" +script = """ +DYNAMIC_INIT +rsync -a --delete "${COOKBOOK_SOURCE}/" ./ +mkdir -p ${COOKBOOK_STAGE}/usr/bin ${COOKBOOK_STAGE}/usr/lib ${COOKBOOK_STAGE}/usr/include +make CFLAGS="-O2 -fPIC $CPPFLAGS" +cp libstemmer.a ${COOKBOOK_STAGE}/usr/lib +cp stemwords ${COOKBOOK_STAGE}/usr/bin +cp include/* ${COOKBOOK_STAGE}/usr/include +""" diff --git a/recipes/wip/libs/other/libxmlb/recipe.toml b/recipes/wip/libs/other/libxmlb/recipe.toml new file mode 100644 index 000000000..5b24aa8d5 --- /dev/null +++ b/recipes/wip/libs/other/libxmlb/recipe.toml @@ -0,0 +1,13 @@ + +[source] +tar = "https://github.com/hughsie/libxmlb/releases/download/0.3.29/libxmlb-0.3.29.tar.xz" + +[build] +template = "meson" +mesonflags = [ + "-Dintrospection=false" +] +dependencies = [ + "glib", + "zstd", +] \ No newline at end of file diff --git a/recipes/wip/libs/other/mypaint-brushes/recipe.toml b/recipes/wip/libs/other/mypaint-brushes/recipe.toml new file mode 100644 index 000000000..ab02060b0 --- /dev/null +++ b/recipes/wip/libs/other/mypaint-brushes/recipe.toml @@ -0,0 +1,6 @@ +#TODO compiled but not tested +[source] +tar = "https://github.com/mypaint/mypaint-brushes/releases/download/v2.0.2/mypaint-brushes-2.0.2.tar.xz" +[build] +template = "configure" + diff --git a/recipes/wip/libs/other/netsurf-buildsystem/recipe.toml b/recipes/wip/libs/other/netsurf-buildsystem/recipe.toml new file mode 100644 index 000000000..a5b9781c4 --- /dev/null +++ b/recipes/wip/libs/other/netsurf-buildsystem/recipe.toml @@ -0,0 +1,11 @@ +[source] +tar = "https://download.netsurf-browser.org/libs/releases/buildsystem-1.10.tar.gz" + +[build] +template = "custom" +script = """ +# Netsurf does not currently support out-of-tree builds :( +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ + +make install PREFIX=/usr DESTDIR="${COOKBOOK_STAGE}" +""" diff --git a/recipes/wip/libs/other/poly2tri-c/recipe.toml b/recipes/wip/libs/other/poly2tri-c/recipe.toml new file mode 100644 index 000000000..7fd078006 --- /dev/null +++ b/recipes/wip/libs/other/poly2tri-c/recipe.toml @@ -0,0 +1,24 @@ +[source] +git = "https://github.com/KyleLink/poly2tri-c" +shallow_clone = true +patches = [ + "redox.patch" +] +script = """ +# find . -type d -exec touch {}/Makefile.in \\; +# touch aclocal.m4 configure configure.ac Makefile.am +autotools_recursive_regenerate +""" + +[build] +template = "custom" +dependencies = [ + "glib", +] +script = """ +DYNAMIC_INIT + +rsync -av --delete "${COOKBOOK_SOURCE}/" ./ +COOKBOOK_CONFIGURE="./configure" +cookbook_configure +""" \ No newline at end of file diff --git a/recipes/wip/libs/other/poly2tri-c/redox.patch b/recipes/wip/libs/other/poly2tri-c/redox.patch new file mode 100644 index 000000000..3ad4623fb --- /dev/null +++ b/recipes/wip/libs/other/poly2tri-c/redox.patch @@ -0,0 +1,49 @@ +diff --git a/Makefile.am b/Makefile.am +index c6f694e..6082285 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -1,6 +1,6 @@ + SUBDIRS = poly2tri-c bin + +-ACLOCAL_AMFLAGS = -I m4 ++ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} + + pkgconfigdir = $(libdir)/pkgconfig + pkgconfig_DATA = poly2tri-c.pc +diff --git a/configure.ac b/configure.ac +index 8ba632f..a52b355 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -83,9 +83,6 @@ AC_PROG_CC + # -Werror, so we will only add that option afterwards. For more information, see + # the discussion at http://lists.gnu.org/archive/html/bug-autoconf/2010-01/msg00031.html + +-# Pedantic errors please +-CFLAGS="$CFLAGS -Wall -ansi -pedantic" +- + # Find the standard math functions + # Taken from http://www.flameeyes.eu/autotools-mythbuster/autoconf/finding.html + AC_CHECK_HEADERS([math.h]) +@@ -93,9 +90,6 @@ AC_SEARCH_LIBS([log10], [m], [], [ + AC_MSG_ERROR([unable to find the log10() function]) + ]) + +-# Warnings as errors please +-CFLAGS="$CFLAGS -Werror" +- + # Find GLib support via pkg-config + PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.28]) + +diff --git a/poly2tri-c/refine/Makefile.am b/poly2tri-c/refine/Makefile.am +index 8701b0d..74edd34 100644 +--- a/poly2tri-c/refine/Makefile.am ++++ b/poly2tri-c/refine/Makefile.am +@@ -1,6 +1,6 @@ + noinst_LTLIBRARIES = libp2tc-refine.la + +-libp2tc_refine_la_SOURCES = bounded-line.c bounded-line.h cdt.c cdt.h cdt-flipfix.c cdt-flipfix.h circle.c circle.h cluster.c cluster.h delaunay-terminator.c delaunay-terminator.h edge.c edge.h line.c line.h rmath.c rmath.h mesh.c mesh.h mesh-action.c mesh-action.h point.c point.h pslg.c pslg.h refine.h refiner.c refiner.h triangle.c triangle.h triangulation.h utils.c utils.h vector2.c vector2.h vedge.c vedge.h vtriangle.c vtriangle.h visibility.c visibility.h ++libp2tc_refine_la_SOURCES = bounded-line.c bounded-line.h cdt-flipfix.c cdt-flipfix.h circle.c circle.h cluster.c cluster.h delaunay-terminator.c delaunay-terminator.h edge.c edge.h line.c line.h rmath.c rmath.h mesh.c mesh.h mesh-action.c mesh-action.h point.c point.h pslg.c pslg.h refine.h refiner.c refiner.h rcdt.c rcdt.h rutils.c rutils.h triangle.c triangle.h triangulation.h vector2.c vector2.h vedge.c vedge.h vtriangle.c vtriangle.h visibility.c visibility.h + + P2TC_REFINE_publicdir = $(P2TC_publicdir)/refine +-P2TC_REFINE_public_HEADERS = bounded-line.h cdt.h circle.h cluster.h edge.h line.h mesh.h mesh-action.h point.h pslg.h refine.h refiner.h rmath.h triangle.h triangulation.h utils.h vector2.h vedge.h vtriangle.h visibility.h ++P2TC_REFINE_public_HEADERS = bounded-line.h circle.h cluster.h edge.h line.h mesh.h mesh-action.h point.h pslg.h rcdt.h refine.h refiner.h rmath.h rutils.h triangle.h triangulation.h vector2.h vedge.h vtriangle.h visibility.h diff --git a/recipes/wip/libs/text/inih/recipe.toml b/recipes/wip/libs/text/inih/recipe.toml index 6e950d061..e36bb5bb2 100644 --- a/recipes/wip/libs/text/inih/recipe.toml +++ b/recipes/wip/libs/text/inih/recipe.toml @@ -1,5 +1,4 @@ -#TODO not compiled or tested -# build instructions: https://github.com/benhoyt/inih#meson-notes +#TODO compiled but not tested [source] git = "https://github.com/benhoyt/inih" rev = "r62" From 8ca6693b9de177847f7ad1a1c14c07412be05f56 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Tue, 6 Oct 2026 06:30:55 +0700 Subject: [PATCH 2/6] Update GIMP launcher --- config/x86_64/ci.toml | 1 + recipes/wip/gnome/gimp/gimp.desktop | 15 +++++++++++++++ recipes/wip/gnome/gimp/gimp.sh | 12 ++++++++++++ recipes/wip/gnome/gimp/icons/16x16.png | Bin 0 -> 679 bytes recipes/wip/gnome/gimp/icons/256x256.png | Bin 0 -> 31922 bytes recipes/wip/gnome/gimp/icons/32x32.png | Bin 0 -> 1572 bytes recipes/wip/gnome/gimp/icons/48x48.png | Bin 0 -> 3052 bytes recipes/wip/gnome/gimp/icons/64x64.png | Bin 0 -> 5199 bytes recipes/wip/gnome/gimp/recipe.toml | 19 +++++++++++++++++++ 9 files changed, 47 insertions(+) create mode 100644 recipes/wip/gnome/gimp/gimp.desktop create mode 100755 recipes/wip/gnome/gimp/gimp.sh create mode 100644 recipes/wip/gnome/gimp/icons/16x16.png create mode 100644 recipes/wip/gnome/gimp/icons/256x256.png create mode 100644 recipes/wip/gnome/gimp/icons/32x32.png create mode 100644 recipes/wip/gnome/gimp/icons/48x48.png create mode 100644 recipes/wip/gnome/gimp/icons/64x64.png diff --git a/config/x86_64/ci.toml b/config/x86_64/ci.toml index c5723aab4..6d655fa20 100644 --- a/config/x86_64/ci.toml +++ b/config/x86_64/ci.toml @@ -100,6 +100,7 @@ generaluser-gs = {} gettext = {} gigalomania = {} git = {} +gimp = {} glib = {} glutin = {} gnu-binutils = {} diff --git a/recipes/wip/gnome/gimp/gimp.desktop b/recipes/wip/gnome/gimp/gimp.desktop new file mode 100644 index 000000000..f65f6370c --- /dev/null +++ b/recipes/wip/gnome/gimp/gimp.desktop @@ -0,0 +1,15 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=GIMP +GenericName=Image Editor +Comment=Create images and edit photographs +Keywords=GIMP;graphic;design;illustration;painting; +Exec=gimp +TryExec=gimp +Icon=gimp +Terminal=false +Categories=Graphics;2DGraphics;RasterGraphics;GTK; +StartupNotify=true +MimeType=image/x-xcf; +StartupWMClass=gimp diff --git a/recipes/wip/gnome/gimp/gimp.sh b/recipes/wip/gnome/gimp/gimp.sh new file mode 100755 index 000000000..25b63a60f --- /dev/null +++ b/recipes/wip/gnome/gimp/gimp.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +export GTK_USE_PORTAL=0 + +export GDK_PIXBUF_MODULE_FILE="$HOME/.cache/gimp-gdk-pixbuf-loaders.cache" + +if [ ! -f "$GDK_PIXBUF_MODULE_FILE" ]; then + echo "Generating GdkPixbuf loaders cache..." + gdk-pixbuf-query-loaders > "$GDK_PIXBUF_MODULE_FILE" +fi + +exec /usr/bin/gimp-3.2 "$@" diff --git a/recipes/wip/gnome/gimp/icons/16x16.png b/recipes/wip/gnome/gimp/icons/16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..e48e6088132d8208a48965d0595da14269ec9f83 GIT binary patch literal 679 zcmV;Y0$BZtP)HFJd0VB9g^wICd>omg@{l)SLL{8r6M}aryoFM$TvV*S`yBlJ%el4uJXEZ!x}t&`V>FQiQ`95R+^32NWXr-h!G=n z6qJ;nh>1%GGqbYr{P}Z;L{(K4$B!Kn0eD@wa3Rdi&2aY2N#tfFATc^n1P~6GICC`5*MBGA`KNB~aJYLTEf@O97fu*&`}les;NXlSB-(ag$AO-`44!DqNvKB zFGnLQO~3H=u;&t^{SX!6NH`RxXtjvCSdHH}}07M3fyqvO}0%_(lEYnGJ zKhgW-bRUUcrRG!HzDz?yV>vKJf?@h7$&G{!00KrJ<^W<=AZEs<1^}Tmtt+kIK}!Gt N002ovPDHLkV1oYOJ6!+( literal 0 HcmV?d00001 diff --git a/recipes/wip/gnome/gimp/icons/256x256.png b/recipes/wip/gnome/gimp/icons/256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..8e39e7b8068cb694f011d4ad14341f8579418505 GIT binary patch literal 31922 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 PdIRL8m8HrhO@jU(=brFI literal 0 HcmV?d00001 diff --git a/recipes/wip/gnome/gimp/icons/32x32.png b/recipes/wip/gnome/gimp/icons/32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..6b8aa7bb9cfdbf771465a3d3df4cf6152e7ce7e7 GIT binary patch literal 1572 zcmV+<2HW|GP)kcyadGSM@$rA8_ub^E z`$aE)9^U=#cj8TNdJ|ZdMKn4KiXPwo_Sf)}pZtK{&!MZk8%K^D!PL|ki5n;9Rx~+H zaM$V4P^CeQT?so0pq^NML;-OL32(MnRIb1J^>2XMXhKqQ^4gIjhkyIp*S!LvP!M zKK}6!;Ka$3c-C{C3%N>-lF|}HB7+Yrz^D^I>%eCoQ2?d?CvSN3o3XXEg@KVPkSbJA z>kY`r$iVpIbzHd61c$SZ8u1FoulG?Frt#*tyav~=52K)<0Hu3N5o!&f&EG&Ju zbH5TORs1@`2_uiz1HzX8oI(RTxztV#bbfbVSGRnN_l?e9M7|lCSYH7cJ{5t=4Mn>)!@+4 zW2kLtfYoY+f;)@e)&}&oJJEkPeQgf(gd5P?=0ZoX9^vzqXmMLmZCAvizhC-Quu=VK zBU&XN@sGL?k?GRX(iYtw&(76r*D*L0OK<*e8r%If=nT}NGg!Av2fdDc)_SoD!Inz+ zo62F<%aE0s4$+yzaMs)xJ+I(zpA<1qq45iexJO+F$cm{SJ{g~ou$`Qoyd$UR1I-l( zQH1v==CGL>EjHDvta2PaSc1fa1T@I9p*x-eN4c<@4YMH@J-e2Yl47K>PY`*Jxe$?M z5=T#oM9-rob-lV$kMPA>O1BSv9gXM+IT2{NE9H(FEvyC>I+b`g1Afa9JlB>047EU zFm|mU1Kk(U7NF*%&wUOHExl?qm>C4Lg?O$z8y{-VS?|@PeE!;S_xnPjKnIOk@VJ&@ zvK-pZ`=OB2j92x+~+;>d67sY<#Fu=WU0h{LPV&Eij=gp;GX>l zpMCh`srQ}{i+{jK*;U$Pwi%gh>GV0#w~ib;_Lh=;`=ZoGZu-5M;06cUUO>zD#`nJe z-L1vNMFfMv&4Gb|KkePSxAk!y$;eWOV&WJfCggjKs z-e@#ZL_2EFwd-9Ks;sj{pyY??Xmh(KHf9lk!XnubF5{dolzwKT?mO=CoIZxb-o)GYafWH76 W(!Id+;(ZnX0000g2Qrz~|IG?MN-htU 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 E15pC86aWAK literal 0 HcmV?d00001 diff --git a/recipes/wip/gnome/gimp/recipe.toml b/recipes/wip/gnome/gimp/recipe.toml index 96ce04ae9..8cd62ac8e 100644 --- a/recipes/wip/gnome/gimp/recipe.toml +++ b/recipes/wip/gnome/gimp/recipe.toml @@ -3,6 +3,9 @@ # all build options: https://gitlab.gnome.org/GNOME/gimp/-/blob/master/meson_options.txt?ref_type=heads [source] tar = "https://download.gimp.org/gimp/v3.2/gimp-3.2.4.tar.xz" +patches = [ + "redox.patch" +] [build] template = "custom" script = """ @@ -18,6 +21,22 @@ COOKBOOK_MESON_FLAGS+=( -Dshmem-type=posix ) cookbook_meson + +# plugins causes hang (undo these mv to test) +mv "${COOKBOOK_STAGE}/usr/lib/gimp/3.0/extensions" "${COOKBOOK_STAGE}/usr/lib/gimp/3.0/extensions.disabled" +mv "${COOKBOOK_STAGE}/usr/lib/gimp/3.0/plug-ins" "${COOKBOOK_STAGE}/usr/lib/gimp/3.0/plug-ins.disabled" + +# icons are not converted to png (see patches) +HICOLOR="${COOKBOOK_STAGE}/usr/share/icons/hicolor" +for size in 16 32 48 64 256; do + mkdir -p "${HICOLOR}/${size}x${size}/apps" + cp -f "${COOKBOOK_RECIPE}/icons/${size}x${size}.png" "${HICOLOR}/${size}x${size}/apps/gimp.png" +done +# TODO: /usr/share/gimp/3.0/images/gimp-splash.png + +rm "${COOKBOOK_STAGE}/usr/bin/gimp" # symlink to gimp-3.2 +cp "${COOKBOOK_RECIPE}/gimp.desktop" "${COOKBOOK_STAGE}/usr/share/applications/gimp.desktop" +cp "${COOKBOOK_RECIPE}/gimp.sh" "${COOKBOOK_STAGE}/usr/bin/gimp" """ dependencies = [ "appstream", From 79482cbab12c490487e9e605a1f96dee92de3483 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Thu, 8 Oct 2026 10:57:35 +0000 Subject: [PATCH 3/6] Apply 1 suggestion(s) to 1 file(s) Co-authored-by: Ribbon --- recipes/wip/gnome/gimp/recipe.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/wip/gnome/gimp/recipe.toml b/recipes/wip/gnome/gimp/recipe.toml index 8cd62ac8e..9a912d825 100644 --- a/recipes/wip/gnome/gimp/recipe.toml +++ b/recipes/wip/gnome/gimp/recipe.toml @@ -1,4 +1,4 @@ -#TODO compiled but not tested +#TODO test more # build instructions: https://developer.gimp.org/core/setup/build/3.0/INSTALL # all build options: https://gitlab.gnome.org/GNOME/gimp/-/blob/master/meson_options.txt?ref_type=heads [source] From 71a87aa750de5aef529eb3bc376eed38c5c2a086 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Thu, 8 Oct 2026 22:11:06 +0000 Subject: [PATCH 4/6] Apply 1 suggestion(s) to 1 file(s) --- recipes/wip/libs/other/libfyaml/recipe.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/recipes/wip/libs/other/libfyaml/recipe.toml b/recipes/wip/libs/other/libfyaml/recipe.toml index 69d32b071..c22b729fc 100644 --- a/recipes/wip/libs/other/libfyaml/recipe.toml +++ b/recipes/wip/libs/other/libfyaml/recipe.toml @@ -1,6 +1,9 @@ [source] tar = "https://github.com/pantoniou/libfyaml/releases/download/v0.9.6/libfyaml-0.9.6.tar.gz" +patches = [ + "redox.patch" +] [build] template = "cmake" From 45dc9463fb5393b8c187f1f129775925618cf863 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Fri, 9 Oct 2026 11:25:12 +0000 Subject: [PATCH 5/6] Apply 1 suggestion(s) to 1 file(s) --- recipes/wip/gnome/gimp/gimp.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/recipes/wip/gnome/gimp/gimp.sh b/recipes/wip/gnome/gimp/gimp.sh index 25b63a60f..28158e359 100755 --- a/recipes/wip/gnome/gimp/gimp.sh +++ b/recipes/wip/gnome/gimp/gimp.sh @@ -6,6 +6,7 @@ export GDK_PIXBUF_MODULE_FILE="$HOME/.cache/gimp-gdk-pixbuf-loaders.cache" if [ ! -f "$GDK_PIXBUF_MODULE_FILE" ]; then echo "Generating GdkPixbuf loaders cache..." + mkdir -p "$HOME/.cache" gdk-pixbuf-query-loaders > "$GDK_PIXBUF_MODULE_FILE" fi From 5add974b8630fc2db02ad7743c8b05185fdd9e39 Mon Sep 17 00:00:00 2001 From: Wildan Mubarok Date: Fri, 9 Oct 2026 11:26:59 +0000 Subject: [PATCH 6/6] Apply 1 suggestion(s) to 1 file(s) --- recipes/wip/libs/gnome/gegl/recipe.toml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/recipes/wip/libs/gnome/gegl/recipe.toml b/recipes/wip/libs/gnome/gegl/recipe.toml index 51b101218..0df9c929c 100644 --- a/recipes/wip/libs/gnome/gegl/recipe.toml +++ b/recipes/wip/libs/gnome/gegl/recipe.toml @@ -2,6 +2,10 @@ # build instructions: https://gitlab.gnome.org/GNOME/gegl/-/blob/master/docs/development.adoc?ref_type=heads#user-content-debugging [source] tar = "https://download.gimp.org/pub/gegl/0.4/gegl-0.4.72.tar.xz" +patches = [ + "redox.patch" +] + [build] template = "custom" mesonflags = [