Date: Monday, January 17, 2022 @ 22:23:37 Author: heftig Revision: 434651
4.6.0-2: remove gcp deps; noexecstack Added: gtk4/trunk/fix-resources.diff Modified: gtk4/trunk/PKGBUILD --------------------+ PKGBUILD | 12 ++++-- fix-resources.diff | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 111 insertions(+), 3 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2022-01-17 22:04:50 UTC (rev 434650) +++ PKGBUILD 2022-01-17 22:23:37 UTC (rev 434651) @@ -3,7 +3,7 @@ pkgbase=gtk4 pkgname=(gtk4 gtk-update-icon-cache gtk4-docs gtk4-demos) pkgver=4.6.0 -pkgrel=1 +pkgrel=2 epoch=1 pkgdesc="GObject-based multi-platform GUI toolkit" url="https://www.gtk.org/" @@ -13,15 +13,17 @@ libgl libegl harfbuzz libxkbcommon graphene iso-codes tracker3 libcolord wayland libxrandr libx11 libxrender libxi libxext libxcursor libxdamage libxfixes fontconfig libxinerama libcloudproviders libcups - rest json-glib gst-plugins-bad-libs librsvg dconf shared-mime-info - desktop-file-utils adwaita-icon-theme cantarell-fonts) + gst-plugins-bad-libs librsvg dconf shared-mime-info desktop-file-utils + adwaita-icon-theme cantarell-fonts) makedepends=(git meson gi-docgen shaderc sassc gobject-introspection docbook-xsl wayland-protocols python-gobject python-docutils) checkdepends=(weston) _commit=70cb61fb7104c76a15bc6494a10e6ff1d470f6d8 # tags/4.6.0^0 source=("git+https://gitlab.gnome.org/GNOME/gtk.git#commit=$_commit" + fix-resources.diff gtk-update-icon-cache.{hook,script} gtk4-querymodules.hook) sha256sums=('SKIP' + 'd458d2b9621f5131510238f1167a758d1f6c4baabc2a7fe5f445c7bdba2b0802' '2d435e3bec8b79b533f00f6d04decb1d7c299c6e89b5b175f20be0459f003fe8' 'f1d3a0dbfd82f7339301abecdbe5f024337919b48bd0e09296bb0e79863b2541' 'cd8e607eddd9941f279084e1d15309941423d26cca1897f43524a02e58e48816') @@ -33,6 +35,10 @@ prepare() { cd gtk + + # Ensure noexecstack + git cherry-pick -n 46509b6dd28c58ae 17c2a1cb4ea2093d + git apply -3 ../fix-resources.diff } build() { Added: fix-resources.diff =================================================================== --- fix-resources.diff (rev 0) +++ fix-resources.diff 2022-01-17 22:23:37 UTC (rev 434651) @@ -0,0 +1,102 @@ +diff --git i/demos/gtk-demo/meson.build w/demos/gtk-demo/meson.build +index 5b79dfad5f..7f82c2d6d6 100644 +--- i/demos/gtk-demo/meson.build ++++ w/demos/gtk-demo/meson.build +@@ -174,42 +174,46 @@ if build_machine.system() == 'linux' and objcopy.found() and objcopy_supports_ad + depfile : 'gtkdemo.gresource.d', + command : [glib_compile_resources, + '--generate', ++ '--internal', + '--target=@OUTPUT@', + '--dependency-file=@DEPFILE@', + '--sourcedir=' + meson.current_source_dir(), + '--sourcedir=' + meson.current_build_dir(), + '@INPUT@']) + + # Create resource data file + gtkdemo_resources_c = custom_target('gtkdemo_resources.c', + input : 'demo.gresource.xml', + output : 'gtkdemo_resources.c', + depfile : 'gtkdemo_resources.c.d', + command : [glib_compile_resources, + '--generate-source', ++ '--internal', + '--target=@OUTPUT@', + '--dependency-file=@DEPFILE@', + '--sourcedir=' + meson.current_source_dir(), + '--sourcedir=' + meson.current_build_dir(), + '--external-data', + '--c-name', '_g_binary_gtkdemo', + '@INPUT@']) + + # Create object file containing resource data + gtkdemo_resources_binary = custom_target('gtkdemo_resources.o', + input : gtkdemo_gresource, + output : 'gtkdemo_resources.o', + command : [ld, ++ '-z', 'noexecstack', + '-r', + '-b','binary', + '@INPUT@', + '-o','@OUTPUT@']) + + # Rename symbol to match the one in the C file + gtkdemo_resources_o = custom_target('gtkdemo_resources2.o', + input : gtkdemo_resources_binary, + output : 'gtkdemo_resources2.o', + command : [objcopy, ++ '--strip-all', + '--add-symbol','_g_binary_gtkdemo_resource_data=.data:0', + '@INPUT@', + '@OUTPUT@']) +diff --git i/demos/widget-factory/meson.build w/demos/widget-factory/meson.build +index 800230b512..9a083eb1ac 100644 +--- i/demos/widget-factory/meson.build ++++ w/demos/widget-factory/meson.build +@@ -18,42 +18,46 @@ if build_machine.system() == 'linux' and objcopy.found() and objcopy_supports_ad + depfile: 'widgetfactory.gresource.d', + command : [glib_compile_resources, + '--generate', ++ '--internal', + '--target=@OUTPUT@', + '--dependency-file=@DEPFILE@', + '--sourcedir=' + meson.current_source_dir(), + '--sourcedir=' + meson.current_build_dir(), + '@INPUT@']) + + # Create resource data file + widgetfactory_resources_c = custom_target('widgetfactory_resources.c', + input : 'widget-factory.gresource.xml', + output : 'widgetfactory_resources.c', + depfile: 'widgetfactory_resources.c.d', + command : [glib_compile_resources, + '--generate-source', ++ '--internal', + '--target=@OUTPUT@', + '--dependency-file=@DEPFILE@', + '--sourcedir=' + meson.current_source_dir(), + '--sourcedir=' + meson.current_build_dir(), + '--external-data', + '--c-name', '_g_binary_widgetfactory', + '@INPUT@']) + + # Create object file containing resource data + widgetfactory_resources_binary = custom_target('widgetfactory_resources.o', + input : widgetfactory_gresource, + output : 'widgetfactory_resources.o', + command : [ld, ++ '-z', 'noexecstack', + '-r', + '-b','binary', + '@INPUT@', + '-o','@OUTPUT@']) + + # Rename symbol to match the one in the C file + widgetfactory_resources_o = custom_target('widgetfactory_resources2.o', + input : widgetfactory_resources_binary, + output : 'widgetfactory_resources2.o', + command : [objcopy, ++ '--strip-all', + '--add-symbol','_g_binary_widgetfactory_resource_data=.data:0', + '@INPUT@', + '@OUTPUT@'])
