From a78c41d2a3922610bc66560f1bdf526ffaca05f5 Mon Sep 17 00:00:00 2001 From: Jehan Date: Mon, 8 Apr 2024 21:29:19 +0200 Subject: [PATCH] meson: on macOS temporarily update rpath to find libraries of non-installed GIMP. The DYLD_LIBRARY_PATH trick was working fine on CI, but not on local builds for Lukas. Apparently there are security measures disabling the environment variable. Instead let's temporarily add then remove libgimp libraries folders from rpath. See: https://gitlab.gnome.org/Infrastructure/gimp-macos-build/-/merge_requests/292#note_2075291 --- gimp-data | 2 +- libgimp/tests/meson.build | 5 +- meson.build | 44 ++++++++++++------ plug-ins/common/meson.build | 46 +++++++++--------- plug-ins/file-bmp/meson.build | 12 ++--- plug-ins/file-dds/meson.build | 20 ++++---- plug-ins/file-exr/meson.build | 20 ++++---- plug-ins/file-faxg3/meson.build | 12 ++--- plug-ins/file-fits/meson.build | 18 ++++---- plug-ins/file-fli/meson.build | 12 ++--- plug-ins/file-icns/meson.build | 18 ++++---- plug-ins/file-ico/meson.build | 18 ++++---- plug-ins/file-jpeg/meson.build | 22 ++++----- plug-ins/file-psd/meson.build | 24 +++++----- plug-ins/file-raw/meson.build | 12 ++--- plug-ins/file-sgi/meson.build | 12 ++--- plug-ins/file-tiff/meson.build | 20 ++++---- plug-ins/file-webp/meson.build | 20 ++++---- plug-ins/flame/meson.build | 18 ++++---- plug-ins/fractal-explorer/meson.build | 18 ++++---- plug-ins/gfig/meson.build | 18 ++++---- plug-ins/gimpressionist/meson.build | 30 ++++++------ plug-ins/gradient-flare/meson.build | 18 ++++---- plug-ins/help-browser/meson.build | 26 +++++------ plug-ins/help/meson.build | 26 +++++------ plug-ins/ifs-compose/meson.build | 18 ++++---- plug-ins/imagemap/meson.build | 18 ++++---- plug-ins/lighting/meson.build | 18 ++++---- plug-ins/map-object/meson.build | 18 ++++---- plug-ins/metadata/meson.build | 54 +++++++++++----------- plug-ins/pagecurl/meson.build | 18 ++++---- plug-ins/print/meson.build | 12 ++--- plug-ins/screenshot/meson.build | 16 +++---- plug-ins/script-fu/interpreter/meson.build | 30 ++++++------ plug-ins/script-fu/meson.build | 36 +++++++-------- plug-ins/script-fu/server/meson.build | 35 +++++++------- plug-ins/selection-to-path/meson.build | 10 ++-- plug-ins/twain/meson.build | 18 ++++---- tools/in-build-gimp.sh | 38 +++++++++++++++ 39 files changed, 442 insertions(+), 388 deletions(-) create mode 100755 tools/in-build-gimp.sh diff --git a/gimp-data b/gimp-data index b4a42ca66f..fed918868c 160000 --- a/gimp-data +++ b/gimp-data @@ -1 +1 @@ -Subproject commit b4a42ca66f7423d3315bd85e64b6fc881d98aee2 +Subproject commit fed918868c84c18d97147fb325f19d16f57f1569 diff --git a/libgimp/tests/meson.build b/libgimp/tests/meson.build index 681b98d21a..94a2839f50 100644 --- a/libgimp/tests/meson.build +++ b/libgimp/tests/meson.build @@ -28,7 +28,7 @@ foreach test_name : tests py_test = meson.current_source_dir() / basename + '.py' test(test_name, run_python_test, - args: [ gimp_exe, py_test ], + args: [ gimp_exe.full_path(), py_test ], env: gimp_run_env, suite: ['libgimp', 'python3'], timeout: 60) @@ -55,9 +55,10 @@ foreach test_name : tests '@OUTPUT@' ], build_by_default: true, install: false) + plugin_executables += [meson.current_build_dir() / 'c-tests' / basename / fs.name(c_test_exe.full_path())] test(test_name, run_c_test, - args: [ gimp_exe, meson.current_source_dir() / c_test_name, basename ], + args: [ gimp_exe.full_path(), meson.current_source_dir() / c_test_name, basename ], env: gimp_run_env, suite: ['libgimp', 'C'], timeout: 60) diff --git a/meson.build b/meson.build index 07e0f78064..c1f74b06ff 100644 --- a/meson.build +++ b/meson.build @@ -1831,6 +1831,7 @@ subdir('libgimpwidgets') subdir('libgimp') # Executables, plugins +plugin_executables = [] subdir('extensions') subdir('modules') subdir('plug-ins') @@ -1845,10 +1846,11 @@ gimp_run_env=environment() if meson.can_run_host_binaries() if enable_console_bin - gimp_exe=gimpconsole_exe + gimp_exe_depends = gimpconsole_exe else - gimp_exe=gimpmain_exe + gimp_exe_depends = gimpmain_exe endif + gimp_run_env.set('GIMP_SELF_IN_BUILD', gimp_exe_depends.full_path()) menu_paths=meson.global_build_root() / 'menus:' + meson.global_source_root() / 'menus' gimp_run_env.set('GIMP_TESTING_MENUS_PATH', menu_paths) @@ -1883,26 +1885,42 @@ if meson.can_run_host_binaries() gimp_run_env.prepend('PATH', meson.global_build_root() / 'libgimpthumb') gimp_run_env.prepend('PATH', meson.global_build_root() / 'libgimpwidgets') elif platform_osx - gimp_run_env.prepend('DYLD_LIBRARY_PATH', meson.global_build_root() / 'libgimp') - gimp_run_env.prepend('DYLD_LIBRARY_PATH', meson.global_build_root() / 'libgimpbase') - gimp_run_env.prepend('DYLD_LIBRARY_PATH', meson.global_build_root() / 'libgimpcolor') - gimp_run_env.prepend('DYLD_LIBRARY_PATH', meson.global_build_root() / 'libgimpconfig') - gimp_run_env.prepend('DYLD_LIBRARY_PATH', meson.global_build_root() / 'libgimpmath') - gimp_run_env.prepend('DYLD_LIBRARY_PATH', meson.global_build_root() / 'libgimpmodule') - gimp_run_env.prepend('DYLD_LIBRARY_PATH', meson.global_build_root() / 'libgimpthumb') - gimp_run_env.prepend('DYLD_LIBRARY_PATH', meson.global_build_root() / 'libgimpwidgets') + gimp_exe_depends += [gimp_exe_typelib] + + gimp_run_env.set('GIMP_GLOBAL_BUILD_ROOT', meson.global_build_root()) + + gimp_run_env.set('GIMP_GI_DIR', gi.get_variable('libdir')) + + gimp_run_env.set('GIMP_TEMP_UPDATE_RPATH', gimp_exe_depends.full_path()) + gimp_run_env.prepend('GIMP_TEMP_UPDATE_RPATH', libgimp.full_path()) + gimp_run_env.prepend('GIMP_TEMP_UPDATE_RPATH', libgimpbase.full_path()) + gimp_run_env.prepend('GIMP_TEMP_UPDATE_RPATH', libgimpcolor.full_path()) + gimp_run_env.prepend('GIMP_TEMP_UPDATE_RPATH', libgimpconfig.full_path()) + gimp_run_env.prepend('GIMP_TEMP_UPDATE_RPATH', libgimpmath.full_path()) + gimp_run_env.prepend('GIMP_TEMP_UPDATE_RPATH', libgimpmodule.full_path()) + gimp_run_env.prepend('GIMP_TEMP_UPDATE_RPATH', libgimpthumb.full_path()) + gimp_run_env.prepend('GIMP_TEMP_UPDATE_RPATH', libgimpwidgets.full_path()) + foreach plugin_exe : plugin_executables + gimp_run_env.prepend('GIMP_TEMP_UPDATE_RPATH', plugin_exe) + endforeach + gimp_run_env.prepend('GIMP_TEMP_UPDATE_RPATH', gi.get_variable('libdir') / 'libgirepository-1.0.dylib') endif else # Cross-builds require an existing native GIMP installed, unless we # can run target binaries. - gimp_exe = find_program([gimpconsole_exe_name, gimpmain_exe_name], - native: true, required: false) + native_gimp_exe = find_program([gimpconsole_exe_name, gimpmain_exe_name], + native: true, required: false) - if not gimp_exe.found() + 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.sh') + # Use a temporary config directory in the top build root for 2 reasons: first # because we don't want to pollute any existing user config folder; second # because the default directory may not be writable (we have the case in macOS diff --git a/plug-ins/common/meson.build b/plug-ins/common/meson.build index f6c65af385..c266ef10c4 100644 --- a/plug-ins/common/meson.build +++ b/plug-ins/common/meson.build @@ -1,4 +1,3 @@ - common_plugins_list = [ { 'name': 'align-layers', }, { 'name': 'animation-optimize', }, @@ -220,31 +219,30 @@ foreach plugin : common_plugins_list endif plugin_exe = executable(plugin_name, - plugin_sources, - include_directories: [ rootInclude, ], - link_with : [ - libgimp, - libgimpbase, - libgimpcolor, - libgimpconfig, - libgimpmath, - libgimpui, - libgimpwidgets, - ], - dependencies: [ plugin_deps, math ], - c_args: plugin_cflags, - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, - ) + plugin_sources, + include_directories: [ rootInclude, ], + link_with : [ + libgimp, + libgimpbase, + libgimpcolor, + libgimpconfig, + libgimpmath, + libgimpui, + libgimpwidgets, + ], + dependencies: [ plugin_deps, math ], + c_args: plugin_cflags, + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) # Ugly trick to copy executables into subfolders so that we can run GIMP from # the build directory without installing it. custom_target('test-' + plugin_name, - input: [ plugin_exe ], - output: [ plugin_name + '.dummy' ], - command: [ python, meson.project_source_root() / '.gitlab/cp-plug-in-subfolder.py', - plugin_exe, meson.current_build_dir() / 'test-plug-ins' / plugin_name, - '@OUTPUT@' ], - build_by_default: true, - ) + input: [ plugin_exe ], + output: [ plugin_name + '.dummy' ], + command: [ python, meson.project_source_root() / '.gitlab/cp-plug-in-subfolder.py', + plugin_exe, meson.current_build_dir() / 'test-plug-ins' / plugin_name, + '@OUTPUT@' ], + build_by_default: true) + plugin_executables += [meson.current_build_dir() / 'test-plug-ins' / plugin_name / fs.name(plugin_exe.full_path())] endforeach diff --git a/plug-ins/file-bmp/meson.build b/plug-ins/file-bmp/meson.build index 349e998a5c..3b41ba8153 100644 --- a/plug-ins/file-bmp/meson.build +++ b/plug-ins/file-bmp/meson.build @@ -20,9 +20,9 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - dependencies: libgimpui_dep, - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: libgimpui_dep, + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] diff --git a/plug-ins/file-dds/meson.build b/plug-ins/file-dds/meson.build index b50e260e09..de7b7df660 100644 --- a/plug-ins/file-dds/meson.build +++ b/plug-ins/file-dds/meson.build @@ -24,13 +24,13 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - dependencies: [ - libgimpui_dep, - math, - openmp, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: [ + libgimpui_dep, + math, + openmp, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] diff --git a/plug-ins/file-exr/meson.build b/plug-ins/file-exr/meson.build index f650496264..ed68cff0b6 100644 --- a/plug-ins/file-exr/meson.build +++ b/plug-ins/file-exr/meson.build @@ -21,15 +21,15 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - dependencies: [ - libgimpui_dep, - openexr, - lcms, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: [ + libgimpui_dep, + openexr, + lcms, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] endif diff --git a/plug-ins/file-faxg3/meson.build b/plug-ins/file-faxg3/meson.build index b21d30a905..0fdcf6de0f 100644 --- a/plug-ins/file-faxg3/meson.build +++ b/plug-ins/file-faxg3/meson.build @@ -19,9 +19,9 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - dependencies: libgimpui_dep, - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: libgimpui_dep, + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] diff --git a/plug-ins/file-fits/meson.build b/plug-ins/file-fits/meson.build index 74bc006672..2e93259f89 100644 --- a/plug-ins/file-fits/meson.build +++ b/plug-ins/file-fits/meson.build @@ -19,13 +19,13 @@ if cfitsio_dep.found() ) endif - executable(plugin_name, - plugin_sources, - dependencies: [ - libgimpui_dep, - cfitsio_dep, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, - ) + plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: [ + libgimpui_dep, + cfitsio_dep, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) + plugin_executables += [plugin_exe.full_path()] endif diff --git a/plug-ins/file-fli/meson.build b/plug-ins/file-fli/meson.build index 9ccc8ae1c5..2f138b28a7 100644 --- a/plug-ins/file-fli/meson.build +++ b/plug-ins/file-fli/meson.build @@ -19,9 +19,9 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - dependencies: libgimpui_dep, - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: libgimpui_dep, + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] diff --git a/plug-ins/file-icns/meson.build b/plug-ins/file-icns/meson.build index 7c625f3d3f..b39dcf7131 100644 --- a/plug-ins/file-icns/meson.build +++ b/plug-ins/file-icns/meson.build @@ -21,12 +21,12 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - dependencies: [ - libgimpui_dep, - libpng, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: [ + libgimpui_dep, + libpng, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] diff --git a/plug-ins/file-ico/meson.build b/plug-ins/file-ico/meson.build index fea223e832..1f682057bd 100644 --- a/plug-ins/file-ico/meson.build +++ b/plug-ins/file-ico/meson.build @@ -21,12 +21,12 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - dependencies: [ - libgimpui_dep, - libpng, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: [ + libgimpui_dep, + libpng, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] diff --git a/plug-ins/file-jpeg/meson.build b/plug-ins/file-jpeg/meson.build index 72bb0567da..b6c67e1b97 100644 --- a/plug-ins/file-jpeg/meson.build +++ b/plug-ins/file-jpeg/meson.build @@ -23,14 +23,14 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - dependencies: [ - libgimpui_dep, - libjpeg, - lcms, - gexiv2, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: [ + libgimpui_dep, + libjpeg, + lcms, + gexiv2, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] diff --git a/plug-ins/file-psd/meson.build b/plug-ins/file-psd/meson.build index 6b0511f2f8..d9cf84ff84 100644 --- a/plug-ins/file-psd/meson.build +++ b/plug-ins/file-psd/meson.build @@ -24,15 +24,15 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - c_args: '-DG_LOG_DOMAIN="file-psd"', - dependencies: [ - libgimpui_dep, - libjpeg, - math, - zlib, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + c_args: '-DG_LOG_DOMAIN="file-psd"', + dependencies: [ + libgimpui_dep, + libjpeg, + math, + zlib, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] diff --git a/plug-ins/file-raw/meson.build b/plug-ins/file-raw/meson.build index ce3667f4de..1aaf3fd05f 100644 --- a/plug-ins/file-raw/meson.build +++ b/plug-ins/file-raw/meson.build @@ -32,12 +32,12 @@ foreach plugin_name : file_raw_exes endif - executable(plugin_name, - plugin_sources, - dependencies: libgimpui_dep, - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, - ) + plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: libgimpui_dep, + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) + plugin_executables += [plugin_exe.full_path()] endforeach install_data([ diff --git a/plug-ins/file-sgi/meson.build b/plug-ins/file-sgi/meson.build index 762ddad7b9..74a525d3da 100644 --- a/plug-ins/file-sgi/meson.build +++ b/plug-ins/file-sgi/meson.build @@ -19,9 +19,9 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - dependencies: libgimpui_dep, - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: libgimpui_dep, + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] diff --git a/plug-ins/file-tiff/meson.build b/plug-ins/file-tiff/meson.build index a35d5cf8d4..adc11fd61b 100644 --- a/plug-ins/file-tiff/meson.build +++ b/plug-ins/file-tiff/meson.build @@ -21,13 +21,13 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - dependencies: [ - libgimpui_dep, - gexiv2, - libtiff, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: [ + libgimpui_dep, + gexiv2, + libtiff, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] diff --git a/plug-ins/file-webp/meson.build b/plug-ins/file-webp/meson.build index 8ad12b4e07..5fb81e19f5 100644 --- a/plug-ins/file-webp/meson.build +++ b/plug-ins/file-webp/meson.build @@ -23,15 +23,15 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - dependencies: [ - libgimpui_dep, - gexiv2, - webp_libs, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: [ + libgimpui_dep, + gexiv2, + webp_libs, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] endif diff --git a/plug-ins/flame/meson.build b/plug-ins/flame/meson.build index 14ef577ee4..77ca5a3de6 100644 --- a/plug-ins/flame/meson.build +++ b/plug-ins/flame/meson.build @@ -21,12 +21,12 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - dependencies: [ - libgimpui_dep, - math, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: [ + libgimpui_dep, + math, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] diff --git a/plug-ins/fractal-explorer/meson.build b/plug-ins/fractal-explorer/meson.build index fca1b283a1..e5fd3e7539 100644 --- a/plug-ins/fractal-explorer/meson.build +++ b/plug-ins/fractal-explorer/meson.build @@ -21,12 +21,12 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - dependencies: [ - libgimpui_dep, - math, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: [ + libgimpui_dep, + math, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] diff --git a/plug-ins/gfig/meson.build b/plug-ins/gfig/meson.build index d05740f327..022469d855 100644 --- a/plug-ins/gfig/meson.build +++ b/plug-ins/gfig/meson.build @@ -42,12 +42,12 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - dependencies: [ - libgimpui_dep, - math, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: [ + libgimpui_dep, + math, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] diff --git a/plug-ins/gimpressionist/meson.build b/plug-ins/gimpressionist/meson.build index 1a5f4d1c9c..33cc603f28 100644 --- a/plug-ins/gimpressionist/meson.build +++ b/plug-ins/gimpressionist/meson.build @@ -39,18 +39,18 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - dependencies: [ - libgimpui_dep, - math, - ], - c_args: [ - '-DDEFAULTPATH="@0@:@1@"'.format( - '~/' / gimpdir / 'gimpressionist', - prefix / gimpdatadir / 'gimpressionist' - ), - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: [ + libgimpui_dep, + math, + ], + c_args: [ + '-DDEFAULTPATH="@0@:@1@"'.format( + '~/' / gimpdir / 'gimpressionist', + prefix / gimpdatadir / 'gimpressionist' + ), + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] diff --git a/plug-ins/gradient-flare/meson.build b/plug-ins/gradient-flare/meson.build index 1c218c38d1..7d8423fa41 100644 --- a/plug-ins/gradient-flare/meson.build +++ b/plug-ins/gradient-flare/meson.build @@ -20,12 +20,12 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - dependencies: [ - libgimpui_dep, - math, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: [ + libgimpui_dep, + math, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] diff --git a/plug-ins/help-browser/meson.build b/plug-ins/help-browser/meson.build index a1879b557f..6143d773eb 100644 --- a/plug-ins/help-browser/meson.build +++ b/plug-ins/help-browser/meson.build @@ -27,18 +27,18 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - dependencies: [ - libgimpui_dep, - gio, - webkit, - ], - link_with: [ - help_plugin_lib, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: [ + libgimpui_dep, + gio, + webkit, + ], + link_with: [ + help_plugin_lib, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] endif diff --git a/plug-ins/help/meson.build b/plug-ins/help/meson.build index e1625f5956..2a43cdeb6b 100644 --- a/plug-ins/help/meson.build +++ b/plug-ins/help/meson.build @@ -32,16 +32,16 @@ help_plugin_lib = static_library('help_plugin', install: false, ) -executable(plugin_name, - 'help.c', - dependencies: [ - libgimpui_dep, - gio, - gdk_pixbuf, - ], - link_with: [ - help_plugin_lib, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + 'help.c', + dependencies: [ + libgimpui_dep, + gio, + gdk_pixbuf, + ], + link_with: [ + help_plugin_lib, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] diff --git a/plug-ins/ifs-compose/meson.build b/plug-ins/ifs-compose/meson.build index 9ccdc2118c..8f465cd190 100644 --- a/plug-ins/ifs-compose/meson.build +++ b/plug-ins/ifs-compose/meson.build @@ -25,12 +25,12 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - dependencies: [ - libgimpui_dep, - math, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: [ + libgimpui_dep, + math, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] diff --git a/plug-ins/imagemap/meson.build b/plug-ins/imagemap/meson.build index 8700f8328b..8784499948 100644 --- a/plug-ins/imagemap/meson.build +++ b/plug-ins/imagemap/meson.build @@ -145,12 +145,12 @@ else endforeach endif -executable(plugin_name, - plugin_sources, - dependencies: [ - libgimpui_dep, - math, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: [ + libgimpui_dep, + math, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] diff --git a/plug-ins/lighting/meson.build b/plug-ins/lighting/meson.build index 1c7cfcb4bd..297b870ade 100644 --- a/plug-ins/lighting/meson.build +++ b/plug-ins/lighting/meson.build @@ -27,12 +27,12 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - dependencies: [ - libgimpui_dep, - math, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: [ + libgimpui_dep, + math, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] diff --git a/plug-ins/map-object/meson.build b/plug-ins/map-object/meson.build index 104483828d..4127fa8d70 100644 --- a/plug-ins/map-object/meson.build +++ b/plug-ins/map-object/meson.build @@ -27,12 +27,12 @@ if platform_windows endif -executable(plugin_name, - plugin_sources, - dependencies: [ - libgimpui_dep, - math, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: [ + libgimpui_dep, + math, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] diff --git a/plug-ins/metadata/meson.build b/plug-ins/metadata/meson.build index 4247101282..e69e0ad218 100644 --- a/plug-ins/metadata/meson.build +++ b/plug-ins/metadata/meson.build @@ -27,15 +27,15 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - dependencies: [ - libgimpui_dep, - gexiv2, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: [ + libgimpui_dep, + gexiv2, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] ############################################################################### @@ -65,21 +65,21 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - include_directories: [ rootInclude, ], - dependencies: [ - gtk3, gegl, gexiv2, - ], - link_with: [ - libgimp, - libgimpbase, - libgimpcolor, - libgimpconfig, - libgimpmath, - libgimpui, - libgimpwidgets, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + include_directories: [ rootInclude, ], + dependencies: [ + gtk3, gegl, gexiv2, + ], + link_with: [ + libgimp, + libgimpbase, + libgimpcolor, + libgimpconfig, + libgimpmath, + libgimpui, + libgimpwidgets, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] diff --git a/plug-ins/pagecurl/meson.build b/plug-ins/pagecurl/meson.build index a14e093498..c5f7d80f53 100644 --- a/plug-ins/pagecurl/meson.build +++ b/plug-ins/pagecurl/meson.build @@ -51,12 +51,12 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - dependencies: [ - libgimpui_dep, - math, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: [ + libgimpui_dep, + math, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] diff --git a/plug-ins/print/meson.build b/plug-ins/print/meson.build index 1f2396e897..f76dcbebb2 100644 --- a/plug-ins/print/meson.build +++ b/plug-ins/print/meson.build @@ -27,11 +27,11 @@ if platform_windows ) endif -executable(plugin_name, - plugin_sources, - dependencies: libgimpui_dep, - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) +plugin_exe = executable(plugin_name, + plugin_sources, + dependencies: libgimpui_dep, + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [plugin_exe.full_path()] endif diff --git a/plug-ins/screenshot/meson.build b/plug-ins/screenshot/meson.build index ff04f9b602..61fd2bdfbe 100644 --- a/plug-ins/screenshot/meson.build +++ b/plug-ins/screenshot/meson.build @@ -39,11 +39,11 @@ if platform_windows endif screenshot = executable('screenshot', - plugin_sources, - dependencies: [ - libgimpui_dep, - x11, xmu, xext, xfixes, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) + plugin_sources, + dependencies: [ + libgimpui_dep, + x11, xmu, xext, xfixes, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [screenshot.full_path()] diff --git a/plug-ins/script-fu/interpreter/meson.build b/plug-ins/script-fu/interpreter/meson.build index f069a30499..60b1b8b13c 100644 --- a/plug-ins/script-fu/interpreter/meson.build +++ b/plug-ins/script-fu/interpreter/meson.build @@ -27,18 +27,18 @@ if not meson.is_cross_build() # GIMP queries scripts with shebangs, which invokes gimp-script-fu-interpreter-3.0. script_fu_interpreter = executable(executable_name, - plugin_sources, - dependencies: [ - libgimpui_dep, - math, - ], - c_args: [ - '-DG_LOG_DOMAIN="scriptfu"', - ], - include_directories: [ - scriptfuInclude, - ], - link_with : libscriptfu, - install: true, - ) -endif \ No newline at end of file + plugin_sources, + dependencies: [ + libgimpui_dep, + math, + ], + c_args: [ + '-DG_LOG_DOMAIN="scriptfu"', + ], + include_directories: [ + scriptfuInclude, + ], + link_with : libscriptfu, + install: true) + plugin_executables += [plugin_exe.full_path()] +endif diff --git a/plug-ins/script-fu/meson.build b/plug-ins/script-fu/meson.build index 34820e13ef..dbeff5fd18 100644 --- a/plug-ins/script-fu/meson.build +++ b/plug-ins/script-fu/meson.build @@ -59,21 +59,21 @@ if not meson.is_cross_build() # libscriptfu is installed to standard place; no rpath necessary - executable(executable_name, - plugin_sources, - dependencies: [ - libgimpui_dep, - math, - gi, - ], - c_args: [ - '-DG_LOG_DOMAIN="scriptfu"', - ], - include_directories: [ - libscriptfuInclude, - ], - link_with : [libscriptfuconsole, libscriptfu ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / executable_name, - ) -endif \ No newline at end of file + plugin_exe = executable(executable_name, + plugin_sources, + dependencies: [ + libgimpui_dep, + math, + gi, + ], + c_args: [ + '-DG_LOG_DOMAIN="scriptfu"', + ], + include_directories: [ + libscriptfuInclude, + ], + link_with : [libscriptfuconsole, libscriptfu ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / executable_name) + plugin_executables += [plugin_exe.full_path()] +endif diff --git a/plug-ins/script-fu/server/meson.build b/plug-ins/script-fu/server/meson.build index f1e236d8ea..4f6ee9915d 100644 --- a/plug-ins/script-fu/server/meson.build +++ b/plug-ins/script-fu/server/meson.build @@ -29,21 +29,20 @@ if not meson.is_cross_build() # Note the server rolls its own log, no need for a different G_LOG_DOMAIN - executable(executable_name, - plugin_sources, - dependencies: [ - libgimpui_dep, - math, - winsock, - ], - c_args: [ - '-DG_LOG_DOMAIN="scriptfu"', - ], - include_directories: [ - scriptfuInclude, - ], - link_with : libscriptfu, - install: true, - install_dir: gimpplugindir / 'plug-ins' / executable_name, - ) -endif \ No newline at end of file + plugin_exe = executable(executable_name, + plugin_sources, + dependencies: [ + libgimpui_dep, + math, + winsock, + ], + c_args: [ + '-DG_LOG_DOMAIN="scriptfu"', + ], + include_directories: [ + scriptfuInclude, + ], + link_with : libscriptfu, + install: true, + install_dir: gimpplugindir / 'plug-ins' / executable_name) +endif diff --git a/plug-ins/selection-to-path/meson.build b/plug-ins/selection-to-path/meson.build index c58192186d..c53532c4ef 100644 --- a/plug-ins/selection-to-path/meson.build +++ b/plug-ins/selection-to-path/meson.build @@ -31,8 +31,8 @@ plugin_selection_to_path_deps = [ ] selection_to_path = executable(plugin_name, - plugin_sources, - dependencies: plugin_selection_to_path_deps, - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) + plugin_sources, + dependencies: plugin_selection_to_path_deps, + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [selection_to_path.full_path()] diff --git a/plug-ins/twain/meson.build b/plug-ins/twain/meson.build index ad233e091b..6515cf67c0 100644 --- a/plug-ins/twain/meson.build +++ b/plug-ins/twain/meson.build @@ -24,12 +24,12 @@ plugin_sources += windows.compile_resources( ) twain = executable(plugin_name, - plugin_sources, - dependencies: [ - libgimp_dep, - glib, - gtk3, - ], - install: true, - install_dir: gimpplugindir / 'plug-ins' / plugin_name, -) + plugin_sources, + dependencies: [ + libgimp_dep, + glib, + gtk3, + ], + install: true, + install_dir: gimpplugindir / 'plug-ins' / plugin_name) +plugin_executables += [twain.full_path()] diff --git a/tools/in-build-gimp.sh b/tools/in-build-gimp.sh new file mode 100755 index 0000000000..285241c822 --- /dev/null +++ b/tools/in-build-gimp.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +if [ -n "$GIMP_TEMP_UPDATE_RPATH" ]; then + # Earlier code used to set DYLD_LIBRARY_PATH environment variable instead, but + # it didn't work on contributor's builds because of System Integrity + # Protection (SIP), though it did work in the CI. + export IFS=":" + for bin in $GIMP_TEMP_UPDATE_RPATH; + do + install_name_tool -add_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimp $bin + install_name_tool -add_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpbase $bin + install_name_tool -add_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpcolor $bin + install_name_tool -add_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpconfig $bin + install_name_tool -add_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpmath $bin + install_name_tool -add_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpmodule $bin + install_name_tool -add_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpthumb $bin + install_name_tool -add_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpwidgets $bin + done; + unset IFS +fi + +cat /dev/stdin | $GIMP_SELF_IN_BUILD "$@" + +if [ -n "$GIMP_TEMP_UPDATE_RPATH" ]; then + export IFS=":" + for bin in $GIMP_TEMP_UPDATE_RPATH; + do + install_name_tool -delete_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimp $bin + install_name_tool -delete_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpbase $bin + install_name_tool -delete_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpcolor $bin + install_name_tool -delete_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpconfig $bin + install_name_tool -delete_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpmath $bin + install_name_tool -delete_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpmodule $bin + install_name_tool -delete_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpthumb $bin + install_name_tool -delete_rpath ${GIMP_GLOBAL_BUILD_ROOT}/libgimpwidgets $bin + done; + unset IFS +fi